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

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

[elpa] externals/tempel 9c2302fda6: Move range overlay, fix range overla


From: ELPA Syncer
Subject: [elpa] externals/tempel 9c2302fda6: Move range overlay, fix range overlay position
Date: Fri, 11 Feb 2022 10:57:48 -0500 (EST)

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

    Move range overlay, fix range overlay position
---
 tempel.el | 31 ++++++++++++++++++-------------
 1 file changed, 18 insertions(+), 13 deletions(-)

diff --git a/tempel.el b/tempel.el
index 2c63f27ead..f26e61b991 100644
--- a/tempel.el
+++ b/tempel.el
@@ -208,14 +208,18 @@ BEG and END are the boundaries of the modification."
 
 (defun tempel--synchronize-fields (st current)
   "Synchronize fields of ST, except CURRENT overlay."
-  (dolist (ov (cdar st))
-    (unless (eq ov current)
-      (save-excursion
-        (goto-char (overlay-start ov))
-        (let (x)
-          (setq x (or (and (setq x (overlay-get ov 'tempel--form)) (eval x 
(cdr st)))
-                      (and (setq x (overlay-get ov 'tempel--name)) (alist-get 
x (cdr st)))))
-          (when x (tempel--replace (overlay-start ov) (overlay-end ov) ov 
x)))))))
+  (let ((range (caar st)))
+    (dolist (ov (cdar st))
+      (unless (eq ov current)
+        (save-excursion
+          (goto-char (overlay-start ov))
+          (let (x)
+            (setq x (or (and (setq x (overlay-get ov 'tempel--form)) (eval x 
(cdr st)))
+                        (and (setq x (overlay-get ov 'tempel--name)) 
(alist-get x (cdr st)))))
+            (when x (tempel--replace (overlay-start ov) (overlay-end ov) ov 
x)))))
+      ;; Move range overlay
+      (move-overlay range (overlay-start range)
+                    (max (overlay-end range) (overlay-end ov))))))
 
 (defun tempel--replace (beg end ov str)
   "Replace region beween BEG and END with STR.
@@ -343,13 +347,14 @@ PROMPT is the optional prompt/default value."
       ;; Activate template
       (let ((st (cons nil nil))
             (inhibit-modification-hooks t)
-            (beg (point)))
+            (range (point)))
         (while (and template (not (keywordp (car template))))
           (tempel--element st region (pop template)))
-        (push (make-overlay beg (point) nil t) (car st))
-        (overlay-put (caar st) 'modification-hooks (list 
#'tempel--range-modified))
-        (overlay-put (caar st) 'tempel--range st)
-        ;;(overlay-put (caar st) 'face 'region) ;; TODO debug
+        (setq range (make-overlay range (point) nil t))
+        (push range (car st))
+        (overlay-put range 'modification-hooks (list #'tempel--range-modified))
+        (overlay-put range 'tempel--range st)
+        ;;(overlay-put range 'face 'region) ;; TODO debug
         (push st tempel--active)))
     (cond
      ((cl-loop for ov in (caar tempel--active)



reply via email to

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