]> code.delx.au - gnu-emacs/commitdiff
* lisp/emacs-lisp/syntax.el (syntax-ppss-table): New var
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 16 Jan 2016 20:06:04 +0000 (15:06 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sat, 16 Jan 2016 20:06:04 +0000 (15:06 -0500)
(syntax-ppss):
* lisp/font-lock.el (font-lock-fontify-syntactically-region): Use it.

etc/NEWS
lisp/emacs-lisp/syntax.el
lisp/font-lock.el

index 42654457573d71f5908d005d089b9ac418a750dd..cb9397912c847aeb16c5d8e76556d1a8499fc7f9 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -73,6 +73,8 @@ different group ID.
 \f
 * Lisp Changes in Emacs 25.2
 
+** New var syntax-ppss-table to control the syntax-table used in syntax-ppss
+
 ** Autoload files can be generated without timestamps,
 by setting `autoload-timestamps' to nil.
 
index e20a210de715e3bbe76a2be801d708838acefd2e..c221a017f5127334ab6670f70a42b4b9e533189b 100644 (file)
@@ -416,6 +416,9 @@ point (where the PPSS is equivalent to nil).")
              (error nil)))
          syntax-ppss-stats))
 
+(defvar-local syntax-ppss-table nil
+  "Syntax-table to use during `syntax-ppss', if any.")
+
 (defun syntax-ppss (&optional pos)
   "Parse-Partial-Sexp State at POS, defaulting to point.
 The returned value is the same as that of `parse-partial-sexp'
@@ -431,6 +434,7 @@ running the hook."
   (unless pos (setq pos (point)))
   (syntax-propertize pos)
   ;;
+  (with-syntax-table (or syntax-ppss-table (syntax-table))
   (let ((old-ppss (cdr syntax-ppss-last))
        (old-pos (car syntax-ppss-last))
        (ppss nil)
@@ -567,7 +571,7 @@ running the hook."
        ;; we may end up calling parse-partial-sexp with a position before
        ;; point-min.  In that case, just parse from point-min assuming
        ;; a nil state.
-       (parse-partial-sexp (point-min) pos)))))
+       (parse-partial-sexp (point-min) pos))))))
 
 ;; Debugging functions
 
index 3c1f01d58860b0b847e5d78d5a014bc69085bb3e..c79835dda4965f57f5ee40c4b8eadd13e53412a1 100644 (file)
@@ -1564,6 +1564,7 @@ START should be at the beginning of a line."
   "Put proper face on each string and comment between START and END.
 START should be at the beginning of a line."
   (syntax-propertize end)  ; Apply any needed syntax-table properties.
+  (with-syntax-table (or syntax-ppss-table (syntax-table))
   (let ((comment-end-regexp
         (or font-lock-comment-end-skip
             (regexp-quote
@@ -1598,7 +1599,7 @@ START should be at the beginning of a line."
                                     font-lock-comment-delimiter-face))))
          (< (point) end))
       (setq state (parse-partial-sexp (point) end nil nil state
-                                     'syntax-table)))))
+                                     'syntax-table))))))
 
 ;;; End of Syntactic fontification functions.
 \f