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

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

[nongnu] elpa/ws-butler 7553d6392a 36/64: Handle adding back text during


From: Stefan Kangas
Subject: [nongnu] elpa/ws-butler 7553d6392a 36/64: Handle adding back text during undo correctly.
Date: Fri, 31 Dec 2021 11:09:30 -0500 (EST)

branch: elpa/ws-butler
commit 7553d6392a0527bad904c45259eed8a7cc361987
Author: Le Wang <le.wang@agworld.com.au>
Commit: Le Wang <le.wang@agworld.com.au>

    Handle adding back text during undo correctly.
---
 ws-butler.el | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/ws-butler.el b/ws-butler.el
index 6ff1bbe726..c778d63fbc 100644
--- a/ws-butler.el
+++ b/ws-butler.el
@@ -209,13 +209,20 @@ ensure point doesn't jump due to white space trimming."
     (ws-butler-map-changes (lambda (_prop start end)
                              (remove-list-of-text-properties start end 
'(ws-butler-chg))))))
 
-(defun ws-butler-after-change (beg end leng-before &optional)
-  (unless undo-in-progress
-    (with-silent-modifications
-      (when (and (= beg end) (> leng-before 0))
-        ;; deletion
-        (setq end (min (+ end 1) (point-max))))
-      (put-text-property beg end 'ws-butler-chg t))))
+(defun ws-butler-after-change (beg end length-before)
+  (let ((type (if (and (= beg end) (> length-before 0))
+                  'delete
+                'chg)))
+    (if undo-in-progress
+        ;; add back deleted text during undo
+        (if (and (zerop length-before)
+               (> end beg)
+               (eq (get-text-property end 'ws-butler-chg) 'delete))
+            (remove-list-of-text-properties end (1+ end) '(ws-butler-chg)))
+      (with-silent-modifications
+        (when (eq type 'delete)
+          (setq end (min (+ end 1) (point-max))))
+        (put-text-property beg end 'ws-butler-chg type)))))
 
 (defun ws-butler-after-save ()
   "Restore trimmed whitespace before point."



reply via email to

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