mirror of
https://github.com/joaotavora/yasnippet.git
synced 2025-10-13 21:13:04 +00:00
Let snippets expand in strings/comments by default
* yasnippet.el (yas-buffer-local-condition): Change default to t. * doc/snippet-expansion.org: Update documentation.
This commit is contained in:
parent
c87afe0901
commit
4f37afd493
@ -178,29 +178,26 @@ In particular, the following things matter:
|
||||
(yas-activate-extra-mode 'rails-mode)))
|
||||
#+END_SRC
|
||||
|
||||
- Buffer-local
|
||||
[[sym:yas-buffer-local-condition][=yas-buffer-local-condition=]]
|
||||
variable
|
||||
- Buffer-local [[sym:yas-buffer-local-condition][=yas-buffer-local-condition=]] variable
|
||||
|
||||
This variable provides finer grained control over what snippets can
|
||||
be expanded in the current buffer. The default value won't let you
|
||||
expand snippets inside comments or string literals for example. See
|
||||
The condition system\_ for more info.
|
||||
be expanded in the current buffer. You could disable snippet
|
||||
expansion inside comments or string literals for example. See [[condition-system][the
|
||||
condition system]] for more info.
|
||||
|
||||
** The condition system
|
||||
** The condition system <<condition-system>>
|
||||
|
||||
Consider this scenario: you are an old Emacs hacker. You like the
|
||||
abbrev-way and bind [[sym:yas-expand][=yas-expand=]] to =SPC=. However, you don't want
|
||||
=if= to be expanded as a snippet when you are typing in a comment
|
||||
block or a string (e.g. in =python-mode=).
|
||||
|
||||
If you use the =# condition := directive (see
|
||||
[[./snippet-development.org][Writing Snippets]]) you could just specify
|
||||
the condition for =if= to be =(not (python-syntax-comment-or-string-p))=. But how
|
||||
about =while=, =for=, etc. ? Writing the same condition for all the
|
||||
snippets is just boring. So has a buffer local variable
|
||||
[[sym:yas-buffer-local-condition][=yas-buffer-local-condition=]]. You can set this variable to
|
||||
=(not (python-syntax-comment-or-string-p))= in =python-mode-hook=.
|
||||
If you use the =# condition := directive (see [[./snippet-development.org][Writing Snippets]]) you
|
||||
could just specify the condition for =if= to be =(not
|
||||
(python-syntax-comment-or-string-p))=. But how about =while=, =for=,
|
||||
etc? Writing the same condition for all the snippets is just boring.
|
||||
So you can instead set [[sym:yas-buffer-local-condition][=yas-buffer-local-condition=]] to =(not
|
||||
(python-syntax-comment-or-string-p))= in =python-mode-hook=.
|
||||
|
||||
Then, what if you really want some particular snippet to expand even
|
||||
inside a comment? Set [[sym:yas-buffer-local-condition][=yas-buffer-local-condition=]] like this
|
||||
@ -214,10 +211,10 @@ inside a comment? Set [[sym:yas-buffer-local-condition][=yas-buffer-local-condit
|
||||
t))))
|
||||
#+END_SRC
|
||||
|
||||
... and specify the condition for a snippet that you're going to expand
|
||||
in comment to be evaluated to the symbol =force-in-comment=. Then it can
|
||||
be expanded as you expected, while other snippets like =if= still can't
|
||||
expanded in comment.
|
||||
... and for a snippet that you want to expand in comments, specify a
|
||||
condition which evaluates to the symbol =force-in-comment=. Then it
|
||||
can be expanded as you expected, while other snippets like =if= still
|
||||
can't expanded in comments.
|
||||
|
||||
For the full set of possible conditions, see the documentation for
|
||||
[[sym:yas-buffer-local-condition][=yas-buffer-local-condition=]].
|
||||
|
15
yasnippet.el
15
yasnippet.el
@ -456,13 +456,7 @@ Attention: These hooks are not run when exiting nested/stacked snippet expansion
|
||||
'()
|
||||
"Hooks to run just before expanding a snippet.")
|
||||
|
||||
(defvar yas-buffer-local-condition
|
||||
'(if (and (let ((ppss (syntax-ppss)))
|
||||
(or (nth 3 ppss) (nth 4 ppss)))
|
||||
(memq this-command '(yas-expand yas-expand-from-trigger-key
|
||||
yas-expand-from-keymap)))
|
||||
'(require-snippet-condition . force-in-comment)
|
||||
t)
|
||||
(defvar yas-buffer-local-condition t
|
||||
"Snippet expanding condition.
|
||||
|
||||
This variable is a Lisp form which is evaluated every time a
|
||||
@ -509,12 +503,7 @@ conditions.
|
||||
(setq yas-buffer-local-condition
|
||||
\\='(if (python-syntax-comment-or-string-p)
|
||||
\\='(require-snippet-condition . force-in-comment)
|
||||
t))))
|
||||
|
||||
The default value is similar, it filters out potential snippet
|
||||
expansions inside comments and string literals, unless the
|
||||
snippet itself contains a condition that returns the symbol
|
||||
`force-in-comment'.")
|
||||
t))))")
|
||||
|
||||
|
||||
;;; Internal variables
|
||||
|
Loading…
x
Reference in New Issue
Block a user