CC Mode: Fontify foo in "const auto foo :" correctly
* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): While attempting to find a declaration's identifier, recast the latest found id. as that identifier when there is no other type identifier and the result of the most recent c-forward-type call is 'maybe or 'found. In the latter case, remove the id. from the found types list, too.
This commit is contained in:
parent
aff8bca77c
commit
884b68ca2c
1 changed files with 24 additions and 4 deletions
|
@ -9275,9 +9275,10 @@ This function might do hidden buffer changes."
|
||||||
;;
|
;;
|
||||||
;; The third element of the return value is non-nil when the declaration
|
;; The third element of the return value is non-nil when the declaration
|
||||||
;; parsed might be an expression. The fourth element is the position of
|
;; parsed might be an expression. The fourth element is the position of
|
||||||
;; the start of the type identifier. The fifth element is t if either
|
;; the start of the type identifier, or the same as the first element when
|
||||||
;; CONTEXT was 'top, or the declaration is detected to be treated as top
|
;; there is no type identifier. The fifth element is t if either CONTEXT
|
||||||
;; level (e.g. with the keyword "extern").
|
;; was 'top, or the declaration is detected to be treated as top level
|
||||||
|
;; (e.g. with the keyword "extern").
|
||||||
;;
|
;;
|
||||||
;; If a cast is parsed:
|
;; If a cast is parsed:
|
||||||
;;
|
;;
|
||||||
|
@ -9680,7 +9681,26 @@ This function might do hidden buffer changes."
|
||||||
(setq got-identifier (c-forward-name))
|
(setq got-identifier (c-forward-name))
|
||||||
(setq name-start pos))
|
(setq name-start pos))
|
||||||
(when (looking-at "[0-9]")
|
(when (looking-at "[0-9]")
|
||||||
(setq got-number t))) ; We've probably got an arithmetic expression.
|
(setq got-number t)) ; We probably have an arithmetic expression.
|
||||||
|
(and maybe-typeless
|
||||||
|
(or (eq at-type 'maybe)
|
||||||
|
(when (eq at-type 'found)
|
||||||
|
;; Remove the ostensible type from the found types list.
|
||||||
|
(when type-start
|
||||||
|
(c-unfind-type
|
||||||
|
(buffer-substring-no-properties
|
||||||
|
type-start
|
||||||
|
(save-excursion
|
||||||
|
(goto-char type-start)
|
||||||
|
(c-end-of-token)
|
||||||
|
(point)))))
|
||||||
|
t))
|
||||||
|
;; The token which we assumed to be a type is actually the
|
||||||
|
;; identifier, and we have no explicit type.
|
||||||
|
(setq at-type nil
|
||||||
|
name-start type-start
|
||||||
|
id-start type-start
|
||||||
|
got-identifier t)))
|
||||||
|
|
||||||
;; Skip over type decl suffix operators and trailing noise macros.
|
;; Skip over type decl suffix operators and trailing noise macros.
|
||||||
(while
|
(while
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue