branch: elpa/evil-goggles
commit e65aa39749f7751e49d1e4631c72cc036531a678
Author: Evgeni Kolev <[email protected]>
Commit: Evgeni Kolev <[email protected]>

    Add support for block paste
---
 evil-goggles.el | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/evil-goggles.el b/evil-goggles.el
index a4a930b9e7..560a8e60aa 100644
--- a/evil-goggles.el
+++ b/evil-goggles.el
@@ -60,6 +60,18 @@
         (sit-for evil-goggles-duration)
       (delete-overlay ov))))
 
+(defun evil-goggles--show-block (beg end face)
+  "Show overlay in blcok from BEG to END with FACE."
+  (let ((ovs))
+    (unwind-protect
+        (progn
+          ;; create multiple overlays, one for each line in the block
+          (evil-apply-on-block (lambda (line-beg line-end)
+                                 (add-to-list 'ovs (evil-goggles--make-overlay 
line-beg line-end 'face face)))
+                               beg end nil)
+          (sit-for evil-goggles-duration))
+      (mapcar 'delete-overlay ovs))))
+
 (defun evil-goggles--make-overlay (beg end &rest properties)
   "Make overlay in region from BEG to END with PROPERTIES."
   (let ((ov (make-overlay beg end)))
@@ -252,13 +264,15 @@ COUNT REGISTER YANK-HANDLER are the arguments of the 
original function."
 The overlay region is derermined by evil's marks [ and ]
 Argument REGISTER is the evil register.
 Argument YANK-HANDLER is the yank hanler."
-  (unless (or evil-goggles--on (evil-goggles--evil-paste-block-p register 
yank-handler))
-    ;; TODO show the goggles overlay when the pasted text is a block
+  (unless evil-goggles--on
     (let* ((beg (save-excursion (evil-goto-mark ?\[) (point)))
            (end (save-excursion (evil-goto-mark ?\]) (point)))
            (is-beg-at-eol (save-excursion (goto-char beg) (eolp)))
-           (beg-corrected (if is-beg-at-eol (1+ beg) beg) ))
-      (evil-goggles--show beg-corrected end 'evil-goggles-paste-face))))
+           (beg-corrected (if is-beg-at-eol (1+ beg) beg))
+           (show-fn (if (evil-goggles--evil-paste-block-p register 
yank-handler)
+                        'evil-goggles--show-block
+                      'evil-goggles--show)))
+      (funcall show-fn beg-corrected end 'evil-goggles-paste-face))))
 
 (defun evil-goggles--evil-paste-block-p (register yank-handler)
   "Return t if the paste was a vertical block.

Reply via email to