1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-30 12:21:25 -08:00

Fix fontification of C++ declaration with type FOO::FOO.

* lisp/progmodes/cc-engine.el (c-find-decl-spots): Initialize
cfd-top-level properly.
(c-forward-decl-or-cast-1): On finding FOO::FOO, check it is followed by "("
before deciding it is a constructor.

* lisp/progmodes/cc-fonts.el (c-font-lock-complex-decl-prepare): Negate the
result of the c-bs-at-toplevel-p call passed to c-font-lock-declarators
(simple bug fix).
This commit is contained in:
Alan Mackenzie 2017-04-22 14:45:24 +00:00
parent eb52828a43
commit d354fc3828
2 changed files with 7 additions and 3 deletions

View file

@ -5681,7 +5681,7 @@ comment at the start of cc-engine.el for more info."
;; Whether the last position returned from `c-find-decl-prefix-search'
;; is at the top-level (including directly in a class or namespace,
;; etc.).
cfd-top-level)
(cfd-top-level (c-bs-at-toplevel-p (point))))
;; Initialize by finding a syntactically relevant start position
;; before the point, and do the first `c-decl-prefix-or-start-re'
@ -8379,7 +8379,11 @@ comment at the start of cc-engine.el for more info."
(c-simple-skip-symbol-backward))
(>= (point) type-start)
(equal (buffer-substring-no-properties (point) end-1)
name))
name)
(goto-char end-2)
(progn
(c-forward-syntactic-ws)
(eq (char-after) ?\()))
;; It is a (con|de)structor name. In that case the
;; declaration is typeless so zap out any preceding
;; identifier(s) that we might have taken as types.

View file

@ -900,7 +900,7 @@ casts and declarations are fontified. Used on level 2 and higher."
(when (memq prop '(c-decl-id-start c-decl-type-start))
(c-forward-syntactic-ws limit)
(c-font-lock-declarators limit t (eq prop 'c-decl-type-start)
(c-bs-at-toplevel-p (point)))))
(not (c-bs-at-toplevel-p (point))))))
(setq c-font-lock-context ;; (c-guess-font-lock-context)
(save-excursion