Mercurial > emacs
changeset 66266:f15e775dfb97
(syntax-ppss-flush-cache): Fix corner boundary case.
Suggested by Martin Rudalics <rudalics@gmx.at>.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Fri, 21 Oct 2005 06:01:22 +0000 |
parents | d077f2d7aa12 |
children | 2b7c12a97893 |
files | lisp/emacs-lisp/syntax.el |
diffstat | 1 files changed, 9 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/syntax.el Fri Oct 21 05:57:08 2005 +0000 +++ b/lisp/emacs-lisp/syntax.el Fri Oct 21 06:01:22 2005 +0000 @@ -83,10 +83,14 @@ (setq syntax-ppss-cache (cdr syntax-ppss-cache))) ;; Throw away `last' value if made invalid. (when (< beg (or (car syntax-ppss-last) 0)) - (if (< beg (or (car (nth 10 syntax-ppss-last)) - (nth 9 syntax-ppss-last) - (nth 2 syntax-ppss-last) - 0)) + ;; If syntax-begin-function jumped to BEG, then the old state at BEG can + ;; depend on the text after BEG (which is presumably changed). So if + ;; BEG=(car (nth 10 syntax-ppss-last)) don't reuse that data because the + ;; assumed nil state at BEG may not be valid any more. + (if (<= beg (or (car (nth 10 syntax-ppss-last)) + (nth 9 syntax-ppss-last) + (nth 2 syntax-ppss-last) + 0)) (setq syntax-ppss-last nil) (setcar syntax-ppss-last nil))) ;; Unregister if there's no cache left. Sadly this doesn't work @@ -293,5 +297,5 @@ (provide 'syntax) -;;; arch-tag: 302f1eeb-e77c-4680-a8c5-c543e01161a5 +;; arch-tag: 302f1eeb-e77c-4680-a8c5-c543e01161a5 ;;; syntax.el ends here