CC Mode: Optimize c-fontify-new-found-type and amend a debug spec

* lisp/progmodes/cc-fonts.el (c-fontify-new-found-type): Write the `face'
property directly, rather than removing `fontified' properties and letting
font-lock do the work.

* lisp/progmodes/cc-defs.el (cc-eval-when-compile): Amend the debug spec from
t to (&rest body), in line with the fix to bug #16184.
This commit is contained in:
Alan Mackenzie 2022-10-04 16:19:33 +00:00
parent a36ecc408a
commit 4bd8ad2bc5
2 changed files with 7 additions and 3 deletions

View file

@ -125,7 +125,7 @@ The result of the body appears to the compiler as a quoted constant.
This variant works around bugs in `eval-when-compile' in various
\(X)Emacs versions. See cc-defs.el for details."
(declare (indent 0) (debug t))
(declare (indent 0) (debug (&rest def-form)))
(if c-inside-eval-when-compile
;; XEmacs 21.4.6 has a bug in `eval-when-compile' in that it
;; evaluates its body at macro expansion time if it's nested

View file

@ -2479,8 +2479,12 @@ higher."
(widen)
(goto-char (point-min))
(while (re-search-forward target-re nil t)
(put-text-property (match-beginning 0) (match-end 0)
'fontified nil)
(when (and
(get-text-property (match-beginning 0) 'fontified)
(not (memq (c-get-char-property (match-beginning 0) 'face)
c-literal-faces)))
(c-put-font-lock-face (match-beginning 0) (match-end 0)
font-lock-type-face))
(dolist (win-boundary window-boundaries)
(when (and (< (match-beginning 0) (cdr win-boundary))
(> (match-end 0) (car win-boundary))