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

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

[nongnu] elpa/evil-goggles 5b9a3af1af 080/225: Make pasting from a regis


From: ELPA Syncer
Subject: [nongnu] elpa/evil-goggles 5b9a3af1af 080/225: Make pasting from a register show the goggles overlay
Date: Wed, 12 Jan 2022 08:58:51 -0500 (EST)

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

    Make pasting from a register show the goggles overlay
    
    Without this fix, `p` would show the overlay, but `"ap` wouldn't
---
 evil-goggles.el | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/evil-goggles.el b/evil-goggles.el
index 61df99bdf3..6c3d9b27d7 100644
--- a/evil-goggles.el
+++ b/evil-goggles.el
@@ -232,7 +232,7 @@ COUNT REGISTER YANK-HANDLER are the arguments of the 
original function."
   (let ((was-in-normal-state (evil-normal-state-p))
         (orig-fun-result (evil-goggles--funcall-preserve-interactive orig-fun 
count register yank-handler)))
     (when was-in-normal-state
-      (evil-goggles--evil-paste-show))
+      (evil-goggles--evil-paste-show register yank-handler))
     orig-fun-result))
 
 (defun evil-goggles--evil-paste-before-advice (orig-fun count &optional 
register yank-handler)
@@ -243,20 +243,32 @@ COUNT REGISTER YANK-HANDLER are the arguments of the 
original function."
   (let ((was-in-normal-state (evil-normal-state-p))
         (orig-fun-result (evil-goggles--funcall-preserve-interactive orig-fun 
count register yank-handler)))
     (when was-in-normal-state
-      (evil-goggles--evil-paste-show))
+      (evil-goggles--evil-paste-show register yank-handler))
     orig-fun-result))
 
-(defun evil-goggles--evil-paste-show ()
+(defun evil-goggles--evil-paste-show (register yank-handler)
   "Helper fun to show the goggles overlay on the last pasted text.
 
 The overlay region is derermined by evil's variable `evil-last-paste'"
-  (unless (or evil-goggles--on (null evil-last-paste))
-    (let* ((beg (nth 3 evil-last-paste))
-           (end (nth 4 evil-last-paste))
+  (message "evil-goggles--evil-paste-block-p: %s" 
(evil-goggles--evil-paste-block-p register yank-handler))
+  (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
+    (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))))
 
+(defun evil-goggles--evil-paste-block-p (register yank-handler)
+  (let* ((text (if register
+                   (evil-get-register register)
+                 (current-kill 0)))
+         (yh (or yank-handler
+                 (when (stringp text)
+                   (car-safe (get-text-property
+                              0 'yank-handler text))))))
+    (eq yh 'evil-yank-block-handler)))
+
 ;; shift left & right
 
 (evil-goggles--define-switch-and-face



reply via email to

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