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

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

[nongnu] elpa/evil-goggles fec8dfd7b5 088/225: Simplify undo/redo checks


From: ELPA Syncer
Subject: [nongnu] elpa/evil-goggles fec8dfd7b5 088/225: Simplify undo/redo checks
Date: Wed, 12 Jan 2022 08:58:57 -0500 (EST)

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

    Simplify undo/redo checks
---
 evil-goggles.el | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/evil-goggles.el b/evil-goggles.el
index 8d9bc6faf4..71ea46bbbe 100644
--- a/evil-goggles.el
+++ b/evil-goggles.el
@@ -245,25 +245,29 @@ ARG are the arguments of the original function."
     (advice-remove 'primitive-undo 'evil-goggles--primitive-undo-advice)))
 
 (defun evil-goggles--primitive-undo-advice (orig-fun n list)
-  (let* ((ulist (cl-remove-if #'null (mapcar #'evil-goggles--undo-elt list)))
-         (ulist-len (length ulist))
-         (single-text-block-was-removed
-          (and (eq 1 ulist-len) (eq 'text-removed (caar ulist))))
-         (single-text-block-was-inserted
-          (and (eq 1 ulist-len) (eq 'text-added (caar ulist))))
-         (uelt (car ulist))
-         (beg (nth 1 uelt))
-         (end (nth 2 uelt)))
+  (let ((undo-item (evil-goggles--get-undo-item list)))
 
     ;; show hint on the text which will be removed before undo/redo removes it
-    (when (and single-text-block-was-inserted (evil-goggles--show-p beg end))
-      (evil-goggles--show beg end 'evil-goggles-undo-redo-remove-face))
+    (pcase undo-item
+      (`(text-added ,beg ,end)
+       (when (evil-goggles--show-p beg end)
+         (evil-goggles--show beg end 'evil-goggles-undo-redo-remove-face))))
 
+    ;; call the undo/redo function
     (funcall orig-fun n list)
 
     ;; show hint on the text which will be added after undo/redo addes it
-    (when (and single-text-block-was-removed (evil-goggles--show-p beg end))
-      (evil-goggles--show beg end 'evil-goggles-undo-redo-add-face))))
+    (pcase undo-item
+      (`(text-removed ,beg ,end)
+       (when (evil-goggles--show-p beg end)
+         (evil-goggles--show beg end 'evil-goggles-undo-redo-add-face))))))
+
+(defun evil-goggles--get-undo-item (list)
+  "Process LIST and return the first item if it's only one, or nil."
+  (let* ((processed-list
+          (cl-remove-if #'null (mapcar #'evil-goggles--undo-elt list))))
+    (when (eq 1 (length processed-list))
+      (car processed-list))))
 
 (defun evil-goggles--undo-elt (elt)
   (pcase elt



reply via email to

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