branch: master
commit bceb65ba292f9d5800fd9aaa261ddb9863ff22a6
Author: James Nguyen <[email protected]>
Commit: Noam Postavsky <[email protected]>
Make backspace/DEL clear field (#957)
* yasnippet.el (yas-clear-field): New command.
(yas-maybe-clear-field): New conditional binding value.
(yas-keymap): Bind it to DEL.
---
yasnippet.el | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/yasnippet.el b/yasnippet.el
index a04372a..0ae0c2c 100644
--- a/yasnippet.el
+++ b/yasnippet.el
@@ -402,7 +402,15 @@ It must be set to nil before loading yasnippet to take
effect."
"A conditional key definition.
This can be used as a key definition in keymaps to bind a key to
`yas-skip-and-clear-field' only when at the beginning of an
-unmodified snippey field.")
+unmodified snippet field.")
+
+(defconst yas-maybe-clear-field
+ '(menu-item "" yas-clear-field
+ :filter yas--maybe-clear-field-filter)
+ "A conditional key definition.
+This can be used as a key definition in keymaps to bind a key to
+`yas-clear-field' only when at the beginning of an
+unmodified snippet field.")
(defvar yas-keymap (let ((map (make-sparse-keymap)))
(define-key map [(tab)]
'yas-next-field-or-maybe-expand)
@@ -411,6 +419,7 @@ unmodified snippey field.")
(define-key map [backtab] 'yas-prev-field)
(define-key map (kbd "C-g") 'yas-abort-snippet)
(define-key map (kbd "C-d")
yas-maybe-skip-and-clear-field)
+ (define-key map (kbd "DEL") yas-maybe-clear-field)
map)
"The active keymap while a snippet expansion is in progress.")
@@ -3678,6 +3687,11 @@ Use as a `:filter' argument for a conditional
keybinding."
(yas--skip-and-clear (or field (yas-current-field)))
(yas-next-field 1))
+(defun yas-clear-field (&optional field)
+ "Clears unmodified FIELD if at field start."
+ (interactive)
+ (yas--skip-and-clear (or field (yas-current-field))))
+
(defun yas-skip-and-clear-or-delete-char (&optional field)
"Clears unmodified field if at field start, skips to next tab.