1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-04 14:40:54 -08:00

* lisp/subr.el (combine-change-calls-1): Don't combine syntax-ppss flushes

This commit is contained in:
Stefan Monnier 2019-03-16 20:11:45 -04:00
parent cc06d76865
commit 3320fe2dee
2 changed files with 14 additions and 2 deletions

View file

@ -533,6 +533,11 @@ running the hook."
;; Setup the before-change function if necessary.
(unless (or ppss-cache ppss-last)
;; We should be either the very last function on
;; before-change-functions or the very first on
;; after-change-functions.
;; Note: combine-change-calls-1 needs to be kept in sync
;; with this!
(add-hook 'before-change-functions
'syntax-ppss-flush-cache t t))

View file

@ -3686,7 +3686,7 @@ the specified region. It must not change
`before-change-functions' or `after-change-functions'.
Additionally, the buffer modifications of BODY are recorded on
the buffer's undo list as a single \(apply ...) entry containing
the buffer's undo list as a single (apply ...) entry containing
the function `undo--wrap-and-run-primitive-undo'."
(let ((old-bul buffer-undo-list)
(end-marker (copy-marker end t))
@ -3699,7 +3699,14 @@ the function `undo--wrap-and-run-primitive-undo'."
(if (eq buffer-undo-list t)
(setq result (funcall body))
(let (;; (inhibit-modification-hooks t)
before-change-functions after-change-functions)
(before-change-functions
;; Ugly Hack: if the body uses syntax-ppss/syntax-propertize
;; (e.g. via a regexp-search or sexp-movement trigerring
;; on-the-fly syntax-propertize), make sure that this gets
;; properly refreshed after subsequent changes.
(if (memq #'syntax-ppss-flush-cache before-change-functions)
'(syntax-ppss-flush-cache)))
after-change-functions)
(setq result (funcall body)))
(let ((ap-elt
(list 'apply