branch: master commit 14819c931f35aaa8d6ee0e60431801a7709ad93e Author: Noam Postavsky <npost...@users.sourceforge.net> Commit: Noam Postavsky <npost...@users.sourceforge.net>
Make yas-buffer-local-condition into a defcustom * yasnippet.el (yas-not-string-or-comment-condition): New constant, holding the previous default value of `yas-buffer-local-condition'. (yas-buffer-local-condition): Make into defcustom. --- doc/snippet-expansion.org | 5 +++-- yasnippet.el | 22 ++++++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/doc/snippet-expansion.org b/doc/snippet-expansion.org index 9b9f45b..3ee0adf 100644 --- a/doc/snippet-expansion.org +++ b/doc/snippet-expansion.org @@ -181,8 +181,9 @@ In particular, the following things matter: - 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. You could disable snippet - expansion inside comments or string literals for example. See [[condition-system][the + be expanded in the current buffer. For example, the constant + [[sym:yas-not-string-or-comment-condition][=yas-not-string-or-comment-condition=]] has a value that disables + snippet expansion inside comments or string literals. See [[condition-system][the condition system]] for more info. ** The condition system <<condition-system>> diff --git a/yasnippet.el b/yasnippet.el index 933f4ac..7b871b9 100644 --- a/yasnippet.el +++ b/yasnippet.el @@ -456,7 +456,17 @@ 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 t +(defconst yas-not-string-or-comment-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) + "Disables snippet expansion in strings and comments. +To use, set `yas-buffer-local-condition' to this value.") + +(defcustom yas-buffer-local-condition t "Snippet expanding condition. This variable is a Lisp form which is evaluated every time a @@ -503,7 +513,15 @@ conditions. (setq yas-buffer-local-condition \\='(if (python-syntax-comment-or-string-p) \\='(require-snippet-condition . force-in-comment) - t))))") + t))))" + :type + `(choice + (const :tag "Disable snippet expansion inside strings and comments" + ,yas-not-string-or-comment-condition) + (const :tag "Expand all snippets regardless of conditions" always) + (const :tag "Expand snippets unless their condition is nil" t) + (const :tag "Disable all snippet expansion" nil) + sexp)) ;;; Internal variables