diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2006-05-07 14:11:05 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2006-05-07 14:11:05 +0000 |
commit | ad8a840d25775bd194419743a043309e4a0799af (patch) | |
tree | ab886186b6ecd337c54b39c527ec48d2c4aec2a1 /lisp/emacs-lisp | |
parent | fa115ed7255a9ea37a177510976484916776ba3c (diff) | |
download | emacs-ad8a840d25775bd194419743a043309e4a0799af.tar.gz emacs-ad8a840d25775bd194419743a043309e4a0799af.tar.bz2 emacs-ad8a840d25775bd194419743a043309e4a0799af.zip |
(syntax-ppss): Flush the cache before rather than after a buffer modification.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/syntax.el | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el index 1484c38a403..695d7877b38 100644 --- a/lisp/emacs-lisp/syntax.el +++ b/lisp/emacs-lisp/syntax.el @@ -27,9 +27,9 @@ ;; The main exported function is `syntax-ppss'. You might also need ;; to call `syntax-ppss-flush-cache' or to add it to -;; after-change-functions'(although this is automatically done by +;; before-change-functions'(although this is automatically done by ;; syntax-ppss when needed, but that might fail if syntax-ppss is -;; called in a context where after-change-functions is temporarily +;; called in a context where before-change-functions is temporarily ;; let-bound to nil). ;;; Todo: @@ -94,10 +94,9 @@ point (where the PPSS is equivalent to nil).") (setq syntax-ppss-last nil) (setcar syntax-ppss-last nil))) ;; Unregister if there's no cache left. Sadly this doesn't work - ;; because `after-change-functions' is temporarily bound to nil here. + ;; because `before-change-functions' is temporarily bound to nil here. ;; (unless syntax-ppss-cache - ;; (remove-hook 'after-change-functions - ;; 'syntax-ppss-after-change-function t)) + ;; (remove-hook 'before-change-functions 'syntax-ppss-flush-cache t)) ) (defvar syntax-ppss-stats @@ -148,7 +147,7 @@ Point is at POS when this function returns." ;; too far from `pos', we could try to use other positions ;; in (nth 9 old-ppss), but that doesn't seem to happen in ;; practice and it would complicate this code (and the - ;; after-change-function code even more). But maybe it + ;; before-change-function code even more). But maybe it ;; would be useful in "degenerate" cases such as when the ;; whole file is wrapped in a set of parenthesis. (setq pt-min (or (car (nth 9 old-ppss)) @@ -176,10 +175,10 @@ Point is at POS when this function returns." (setq cache (cdr cache))) (if cache (setq pt-min (caar cache) ppss (cdar cache))) - ;; Setup the after-change function if necessary. + ;; Setup the before-change function if necessary. (unless (or syntax-ppss-cache syntax-ppss-last) - (add-hook 'after-change-functions - 'syntax-ppss-flush-cache nil t)) + (add-hook 'before-change-functions + 'syntax-ppss-flush-cache t t)) ;; Use the best of OLD-POS and CACHE. (if (or (not old-pos) (< old-pos pt-min)) |