emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 1b8f5b7 29/36: Don't use major-mode syntax-propertize-func


From: Noam Postavsky
Subject: [elpa] master 1b8f5b7 29/36: Don't use major-mode syntax-propertize-function
Date: Sat, 11 Jun 2016 19:21:11 +0000 (UTC)

branch: master
commit 1b8f5b7a72c13d1daadc8af2ca6a27403830146d
Author: Noam Postavsky <address@hidden>
Commit: Noam Postavsky <address@hidden>

    Don't use major-mode syntax-propertize-function
    
    during snippet creation.  The snippet creation manipulates the
    syntax-table which can lead to conflicts (see also
    http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23443).
    
    * yasnippet.el (yas-expand-snippet): Let-bind syntax-propertize-function
    to nil and then call syntax-ppss-flush-cache afterwards.
---
 yasnippet.el |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/yasnippet.el b/yasnippet.el
index ca19d24..4514f1b 100644
--- a/yasnippet.el
+++ b/yasnippet.el
@@ -3566,14 +3566,21 @@ considered when expanding the snippet."
              ;; them mostly to make the undo information
              ;;
              (setq yas--start-column (current-column))
-             (let ((yas--inhibit-overlay-hooks t))
+             (let ((yas--inhibit-overlay-hooks t)
+                   ;; Avoid major-mode's syntax propertizing function,
+                   ;; since we mess with the syntax-table and also
+                   ;; insert things that are not valid in the
+                   ;; major-mode language syntax anyway.
+                   (syntax-propertize-function nil))
                (setq snippet
                      (if expand-env
                          (eval `(let* ,expand-env
                                   (insert content)
                                   (yas--snippet-create start (point))))
                        (insert content)
-                       (yas--snippet-create start (point))))))
+                       (yas--snippet-create start (point)))))
+             ;; Invalidate any syntax-propertizing done while 
`syntax-propertize-function' was nil
+             (syntax-ppss-flush-cache start))
 
            ;; stacked-expansion: This checks for stacked expansion, save the
            ;; `yas--previous-active-field' and advance its boundary.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]