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

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

[elpa] externals/tempel 5907674686 3/3: Enable recursive field modificat


From: ELPA Syncer
Subject: [elpa] externals/tempel 5907674686 3/3: Enable recursive field modification hooks (Fix #32, #34, #60, #102)
Date: Wed, 10 May 2023 13:59:33 -0400 (EDT)

branch: externals/tempel
commit 5907674686661a141612d0b7b7de712fbe7f2176
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Enable recursive field modification hooks (Fix #32, #34, #60, #102)
---
 tempel.el | 38 ++++++++++++++++++++------------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/tempel.el b/tempel.el
index 555c88a922..0f7115d391 100644
--- a/tempel.el
+++ b/tempel.el
@@ -216,30 +216,32 @@ REGION are the current region bounds."
 (defun tempel--range-modified (ov &rest _)
   "Range overlay OV modified."
   (when (and (not tempel--inhibit-hooks) (= (overlay-start ov) (overlay-end 
ov)))
-    (tempel--disable (overlay-get ov 'tempel--range))))
+    (let (inhibit-modification-hooks)
+      (tempel--disable (overlay-get ov 'tempel--range)))))
 
 (defun tempel--field-modified (ov after beg end &optional _len)
   "Update field overlay OV.
 AFTER is non-nil after the modification.
 BEG and END are the boundaries of the modification."
   (unless tempel--inhibit-hooks
-    (cond
-     ;; Erase default before modification if at beginning or end
-     ((and (not after) (overlay-get ov 'tempel--default)
-           (or (= beg (overlay-start ov)) (= end (overlay-end ov))))
-      (delete-region (overlay-start ov) (overlay-end ov)))
-     ;; Update field after modification
-     (after
-      (let ((st (overlay-get ov 'tempel--field)))
-        (unless undo-in-progress
-          (move-overlay ov (overlay-start ov) (max end (overlay-end ov))))
-        (when-let (name (overlay-get ov 'tempel--name))
-          (setf (alist-get name (cdr st))
-                (buffer-substring-no-properties
-                 (overlay-start ov) (overlay-end ov))))
-        (unless undo-in-progress
-          (tempel--synchronize-fields st ov)))))
-    (tempel--update-mark ov)))
+    (let (inhibit-modification-hooks)
+      (cond
+       ;; Erase default before modification if at beginning or end
+       ((and (not after) (overlay-get ov 'tempel--default)
+             (or (= beg (overlay-start ov)) (= end (overlay-end ov))))
+        (delete-region (overlay-start ov) (overlay-end ov)))
+       ;; Update field after modification
+       (after
+        (let ((st (overlay-get ov 'tempel--field)))
+          (unless undo-in-progress
+            (move-overlay ov (overlay-start ov) (max end (overlay-end ov))))
+          (when-let (name (overlay-get ov 'tempel--name))
+            (setf (alist-get name (cdr st))
+                  (buffer-substring-no-properties
+                   (overlay-start ov) (overlay-end ov))))
+          (unless undo-in-progress
+            (tempel--synchronize-fields st ov)))))
+      (tempel--update-mark ov))))
 
 (defun tempel--synchronize-fields (st current)
   "Synchronize fields of ST, except CURRENT overlay."



reply via email to

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