From e37ce9e48847bdaad52e55f4d78ddaa0e18c4216 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Tue, 26 Apr 2016 22:54:47 -0400 Subject: [PATCH] Disable region wrapping for trigger key expansion It's too awkward to highlight the relevant text while maneuvering point in front of the trigger key. * yasnippet.el (yas-expand-from-trigger-key): Let-bind yas-wrap-around-region to nil if it was t. * doc/snippet-expansion.org: Document it. --- doc/snippet-expansion.org | 6 +++++- yasnippet.el | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/doc/snippet-expansion.org b/doc/snippet-expansion.org index f57df95..47a857a 100644 --- a/doc/snippet-expansion.org +++ b/doc/snippet-expansion.org @@ -29,7 +29,7 @@ - Expanding from emacs-lisp code -** Trigger key +** <> [[sym:yas-expand][=yas-expand=]] tries to expand a /snippet abbrev/ (also known as /snippet key/) before point. @@ -91,6 +91,10 @@ the region contents into the =$0= placeholder of a snippet expanded by [[#yas-insert-snippet][=yas-insert-snippet=]]. Setting it to a character value (e.g. =?0=) will insert the contents of corresponding register. +Note a setting of t is disabled when expanding via [[trigger key]] since +it's too awkward to highlight the relevant text while maneuvering +point in front of the trigger key. + Older (versions 0.9.1 and below) of Yasnippet, supported a setting of =cua= that is equivalent to =?0= but only worked with =cua-mode= turned on. This setting is still supported for backwards diff --git a/yasnippet.el b/yasnippet.el index 423f58a..caef9ca 100644 --- a/yasnippet.el +++ b/yasnippet.el @@ -2160,7 +2160,12 @@ Optional argument FIELD is for non-interactive use and is an object satisfying `yas--field-p' to restrict the expansion to." (interactive) (setq yas--condition-cache-timestamp (current-time)) - (let (templates-and-pos) + (let ((templates-and-pos nil) + ;; Disable region wrapping for trigger key expansion: it's too + ;; awkward to have point after the trigger while managing the + ;; region contents anyway. + (yas-wrap-around-region (if (eq yas-wrap-around-region t) nil + yas-wrap-around-region))) (unless (and yas-expand-only-for-last-commands (not (member last-command yas-expand-only-for-last-commands))) (setq templates-and-pos (if field