branch: externals/tempel
commit 2ba940809a249086a8cc6d461631d5c26ae7062a
Author: Daniel Mendler <[email protected]>
Commit: Daniel Mendler <[email protected]>
Add temple-abort (Fix #2)
Co-authored-by: Trey Peacock <[email protected]>
---
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)