Note current buffer and restore it in c-force-redisplay.

This fixes bug #52709.

* lisp/progmodes/cc-fonts.el (c-force-redisplay): New parameter BUFFER.  Set
current buffer to this before fontifying.
(c-fontify-new-found-type): Give the current buffer as argument to
run-with-timer.
This commit is contained in:
Alan Mackenzie 2022-02-10 17:03:50 +00:00
parent d64a1f7251
commit 6548286446

View file

@ -2253,12 +2253,13 @@ higher."
;; redisplay.
(defvar c-re-redisplay-timer nil)
(defun c-force-redisplay (start end)
(defun c-force-redisplay (buffer start end)
;; Force redisplay immediately. This assumes `font-lock-support-mode' is
;; 'jit-lock-mode. Set the variable `c-re-redisplay-timer' to nil.
(save-excursion (c-font-lock-fontify-region start end))
(jit-lock-force-redisplay (copy-marker start) (copy-marker end))
(setq c-re-redisplay-timer nil))
(with-current-buffer buffer
(save-excursion (c-font-lock-fontify-region start end))
(jit-lock-force-redisplay (copy-marker start) (copy-marker end))
(setq c-re-redisplay-timer nil)))
(defun c-fontify-new-found-type (type)
;; Cause the fontification of TYPE, a string, wherever it occurs in the
@ -2288,6 +2289,7 @@ higher."
(not c-re-redisplay-timer))
(setq c-re-redisplay-timer
(run-with-timer 0 nil #'c-force-redisplay
(current-buffer)
(match-beginning 0) (match-end 0)))))))))))