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

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

[elpa] externals/tempel 2ba940809a 42/82: Add temple-abort (Fix #2)


From: ELPA Syncer
Subject: [elpa] externals/tempel 2ba940809a 42/82: Add temple-abort (Fix #2)
Date: Sun, 9 Jan 2022 20:58:43 -0500 (EST)

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

    Add temple-abort (Fix #2)
    
    Co-authored-by: Trey Peacock <git@treypeacock.com>
---
 tempel.el | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/tempel.el b/tempel.el
index 64cc25e00b..c4c4e59fbb 100644
--- a/tempel.el
+++ b/tempel.el
@@ -84,6 +84,8 @@ may be named with `tempel--name' or carry an evaluatable Lisp 
expression
   (let ((map (make-sparse-keymap)))
     (define-key map [remap forward-paragraph] #'tempel-next)
     (define-key map [remap backward-paragraph] #'tempel-previous)
+    (define-key map [remap keyboard-quit] #'tempel-abort)
+    (define-key map [remap keyboard-escape-quit] #'tempel-abort)
     map)
   "Keymap to navigate across template markers.")
 
@@ -324,6 +326,18 @@ INIT is the optional initial input."
   (interactive "p")
   (tempel-next (- arg)))
 
+(defun tempel-abort ()
+  "Abort template insertion."
+  (interactive)
+  ;; TODO quit only the topmost template?
+  (when tempel--active
+    (let ((beg (cl-loop for st in tempel--active minimize
+                        (cl-loop for ov in (car st) minimize (overlay-start 
ov))))
+          (end (cl-loop for st in tempel--active maximize
+                        (cl-loop for ov in (car st) maximize (overlay-end 
ov)))))
+      (tempel-done)
+      (delete-region beg end))))
+
 (defun tempel-done ()
   "Template completion is done."
   (interactive)



reply via email to

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