emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/evil-goggles e65aa39749 083/225: Add support for block pas


From: ELPA Syncer
Subject: [nongnu] elpa/evil-goggles e65aa39749 083/225: Add support for block paste
Date: Wed, 12 Jan 2022 08:58:53 -0500 (EST)

branch: elpa/evil-goggles
commit e65aa39749f7751e49d1e4631c72cc036531a678
Author: Evgeni Kolev <evgenysw@gmail.com>
Commit: Evgeni Kolev <evgenysw@gmail.com>

    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

[Prev in Thread] Current Thread [Next in Thread]