aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/emacs-lisp/syntax.el14
1 files changed, 9 insertions, 5 deletions
diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el
index 126c8d50dd9..6c897319433 100644
--- a/lisp/emacs-lisp/syntax.el
+++ b/lisp/emacs-lisp/syntax.el
@@ -83,10 +83,14 @@ point (where the PPSS is equivalent to nil).")
83 (setq syntax-ppss-cache (cdr syntax-ppss-cache))) 83 (setq syntax-ppss-cache (cdr syntax-ppss-cache)))
84 ;; Throw away `last' value if made invalid. 84 ;; Throw away `last' value if made invalid.
85 (when (< beg (or (car syntax-ppss-last) 0)) 85 (when (< beg (or (car syntax-ppss-last) 0))
86 (if (< beg (or (car (nth 10 syntax-ppss-last)) 86 ;; If syntax-begin-function jumped to BEG, then the old state at BEG can
87 (nth 9 syntax-ppss-last) 87 ;; depend on the text after BEG (which is presumably changed). So if
88 (nth 2 syntax-ppss-last) 88 ;; BEG=(car (nth 10 syntax-ppss-last)) don't reuse that data because the
89 0)) 89 ;; assumed nil state at BEG may not be valid any more.
90 (if (<= beg (or (car (nth 10 syntax-ppss-last))
91 (nth 9 syntax-ppss-last)
92 (nth 2 syntax-ppss-last)
93 0))
90 (setq syntax-ppss-last nil) 94 (setq syntax-ppss-last nil)
91 (setcar syntax-ppss-last nil))) 95 (setcar syntax-ppss-last nil)))
92 ;; Unregister if there's no cache left. Sadly this doesn't work 96 ;; Unregister if there's no cache left. Sadly this doesn't work
@@ -293,5 +297,5 @@ Point is at POS when this function returns."
293 297
294(provide 'syntax) 298(provide 'syntax)
295 299
296;;; arch-tag: 302f1eeb-e77c-4680-a8c5-c543e01161a5 300;; arch-tag: 302f1eeb-e77c-4680-a8c5-c543e01161a5
297;;; syntax.el ends here 301;;; syntax.el ends here