branch: master
commit 17fe7904ae422a5ae4ddfd561fc506c2791bdb18
Author: Noam Postavsky <[email protected]>
Commit: Noam Postavsky <[email protected]>
Fix #515; only clear field on self-insert
* yasnippet.el (yas--on-field-overlay-modification): Only clear field if
`this-command' is `self-insert-command'. Clean up docstring.
Close #639.
---
yasnippet.el | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/yasnippet.el b/yasnippet.el
index f468aab..592742f 100644
--- a/yasnippet.el
+++ b/yasnippet.el
@@ -3385,9 +3385,8 @@ Move the overlay, or create it if it does not exit."
(defun yas--on-field-overlay-modification (overlay after? _beg _end &optional
_length)
"Clears the field and updates mirrors, conditionally.
-Only clears the field if it hasn't been modified and it point it
-at field start. This hook doesn't do anything if an undo is in
-progress."
+Only clears the field if it hasn't been modified and point is at
+field start. This hook does nothing if an undo is in progress."
(unless (or yas--inhibit-overlay-hooks
(not (overlayp yas--active-field-overlay)) ; Avoid Emacs bug
#21824.
(yas--undo-in-progress))
@@ -3399,7 +3398,8 @@ progress."
(yas--field-update-display field))
(yas--update-mirrors snippet))
(field
- (when (and (not (yas--field-modified-p field))
+ (when (and (eq this-command 'self-insert-command)
+ (not (yas--field-modified-p field))
(= (point) (yas--field-start field)))
(yas--skip-and-clear field))
(setf (yas--field-modified-p field) t))))))