]> code.delx.au - gnu-emacs/commitdiff
(internal--syntax-propertize): Save match-data here (bug#21766)
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 29 Oct 2015 02:18:47 +0000 (22:18 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 29 Oct 2015 02:18:47 +0000 (22:18 -0400)
* lisp/emacs-lisp/syntax.el (internal--syntax-propertize): Save match-data.
* lisp/simple.el (delete-trailing-whitespace): Undo last change.

lisp/emacs-lisp/syntax.el
lisp/simple.el

index 95ed775f6b43567a08ffc072f72947d0eb67c3ba..d446a2c0af7736823d4e8f9b9511e40faff5cd71 100644 (file)
@@ -328,7 +328,7 @@ The return value is a function suitable for `syntax-propertize-function'."
 ;;; Link syntax-propertize with syntax.c.
 
 (defvar syntax-propertize-chunks
-  ;; We're not sure how far we'll go.  In my tests, using chunks of 20000
+  ;; We're not sure how far we'll go.  In my tests, using chunks of 2000
   ;; brings to overhead to something negligible.  Passing ‘charpos’ directly
   ;; also works (basically works line-by-line) but results in an overhead which
   ;; I thought was a bit too high (like around 50%).
@@ -336,7 +336,8 @@ The return value is a function suitable for `syntax-propertize-function'."
 
 (defun internal--syntax-propertize (charpos)
   ;; FIXME: Called directly from C.
-  (syntax-propertize (min (+ syntax-propertize-chunks charpos) (point-max))))
+  (save-match-data
+    (syntax-propertize (min (+ syntax-propertize-chunks charpos) (point-max)))))
 
 ;;; Incrementally compute and memoize parser state.
 
@@ -376,12 +377,10 @@ This function should move the cursor back to some syntactically safe
 point (where the PPSS is equivalent to nil).")
 (make-obsolete-variable 'syntax-begin-function nil "25.1")
 
-(defvar syntax-ppss-cache nil
+(defvar-local syntax-ppss-cache nil
   "List of (POS . PPSS) pairs, in decreasing POS order.")
-(make-variable-buffer-local 'syntax-ppss-cache)
-(defvar syntax-ppss-last nil
+(defvar-local syntax-ppss-last nil
   "Cache of (LAST-POS . LAST-PPSS).")
-(make-variable-buffer-local 'syntax-ppss-last)
 
 (defalias 'syntax-ppss-after-change-function 'syntax-ppss-flush-cache)
 (defun syntax-ppss-flush-cache (beg &rest ignored)
index f6c580ffcd6e955a88cc125047a15cba747d9cbd..338a0600829e8ad7f939c7b3f2ab8d371739e33a 100644 (file)
@@ -609,8 +609,7 @@ buffer if the variable `delete-trailing-lines' is non-nil."
             (start (or start (point-min))))
         (goto-char start)
         (while (re-search-forward "\\s-$" end-marker t)
-          (save-match-data
-            (skip-syntax-backward "-" (line-beginning-position)))
+          (skip-syntax-backward "-" (line-beginning-position))
           ;; Don't delete formfeeds, even if they are considered whitespace.
           (if (looking-at-p ".*\f")
               (goto-char (match-end 0)))