mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-28 07:45:00 +00:00
progmodes/cc-fonts.el (c-font-lock-declarations): Cache the result of
`c-beginning-of-decl-1' between invocations of a lambda function (Bug #7265).
This commit is contained in:
parent
de635afe1b
commit
10f5e3e60c
@ -1,3 +1,9 @@
|
||||
2010-10-24 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
* progmodes/cc-fonts.el (c-font-lock-declarations): Cache the
|
||||
result of `c-beginning-of-decl-1' between invocations of a lambda
|
||||
function (Bug #7265).
|
||||
|
||||
2010-10-24 Daiki Ueno <ueno@unixuser.org>
|
||||
|
||||
* epg-config.el (epg-gpg-program): Try to use "gpg2" if "gpg"
|
||||
|
@ -1045,6 +1045,9 @@ casts and declarations are fontified. Used on level 2 and higher."
|
||||
;; The position of the next token after the closing paren of
|
||||
;; the last detected cast.
|
||||
last-cast-end
|
||||
;; Start of containing declaration (if any); limit for searching
|
||||
;; backwards for it.
|
||||
decl-start decl-search-lim
|
||||
;; The result from `c-forward-decl-or-cast-1'.
|
||||
decl-or-cast
|
||||
;; The maximum of the end positions of all the checked type
|
||||
@ -1184,20 +1187,29 @@ casts and declarations are fontified. Used on level 2 and higher."
|
||||
match-pos context last-cast-end))
|
||||
|
||||
(if (not decl-or-cast)
|
||||
;; Are we at a declarator?
|
||||
;; Try to go back to the declaration to check this.
|
||||
(let (paren-state bod-res lim encl-pos is-typedef)
|
||||
;; Are we at a declarator? Try to go back to the declaration
|
||||
;; to check this. Note that `c-beginning-of-decl-1' is slow,
|
||||
;; so we cache its result between calls.
|
||||
(let (paren-state bod-res encl-pos is-typedef)
|
||||
(goto-char start-pos)
|
||||
(save-excursion
|
||||
(setq lim (and (c-syntactic-skip-backward "^;" nil t)
|
||||
(point))))
|
||||
(unless (and decl-search-lim
|
||||
(eq decl-search-lim
|
||||
(save-excursion
|
||||
(c-syntactic-skip-backward "^;" nil t)
|
||||
(point))))
|
||||
(setq decl-search-lim
|
||||
(and (c-syntactic-skip-backward "^;" nil t) (point)))
|
||||
(setq bod-res (car (c-beginning-of-decl-1 decl-search-lim)))
|
||||
(if (and (eq bod-res 'same)
|
||||
(progn
|
||||
(c-backward-syntactic-ws)
|
||||
(eq (char-before) ?\})))
|
||||
(c-beginning-of-decl-1 decl-search-lim))
|
||||
(setq decl-start (point))))
|
||||
|
||||
(save-excursion
|
||||
(setq bod-res (car (c-beginning-of-decl-1 lim)))
|
||||
(if (and (eq bod-res 'same)
|
||||
(progn
|
||||
(c-backward-syntactic-ws)
|
||||
(eq (char-before) ?\})))
|
||||
(c-beginning-of-decl-1 lim))
|
||||
(goto-char decl-start)
|
||||
;; We're now putatively at the declaration.
|
||||
(setq paren-state (c-parse-state))
|
||||
;; At top level or inside a "{"?
|
||||
|
Loading…
Reference in New Issue
Block a user