Fix fontification bugs with constructors and const.
* progmodes/cc-engine.el (c-forward-decl-or-cast-1): (Just after CASE 2) Remove the check for the absence of a suffix construct after a function declaration with only types (no identifiers) in the parentheses. Also, accept a function declaration with just a type inside the parentheses, if this type can be positively recognised as such, or if a prefix keyword like "explicit" nails down the construct as a declaration.
This commit is contained in:
parent
8d02f0ad3b
commit
033f22ddad
2 changed files with 40 additions and 18 deletions
|
@ -1,3 +1,15 @@
|
|||
2013-10-19 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
Fix fontification bugs with constructors and const.
|
||||
|
||||
* progmodes/cc-engine.el (c-forward-decl-or-cast-1): (Just after
|
||||
CASE 2) Remove the check for the absence of a suffix construct
|
||||
after a function declaration with only types (no identifiers) in
|
||||
the parentheses. Also, accept a function declaration with just a
|
||||
type inside the parentheses, if this type can be positively
|
||||
recognised as such, or if a prefix keyword like "explicit" nails
|
||||
down the construct as a declaration.
|
||||
|
||||
2013-10-19 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* menu-bar.el (tty-menu-navigation-map): Bind mouse-N to perform
|
||||
|
|
|
@ -6917,7 +6917,9 @@ comment at the start of cc-engine.el for more info."
|
|||
;; can happen since we don't know if
|
||||
;; `c-restricted-<>-arglists' will be correct inside the
|
||||
;; arglist paren that gets entered.
|
||||
c-parse-and-markup-<>-arglists)
|
||||
c-parse-and-markup-<>-arglists
|
||||
;; Start of the identifier for which `got-identifier' was set.
|
||||
name-start)
|
||||
|
||||
(goto-char id-start)
|
||||
|
||||
|
@ -6935,7 +6937,9 @@ comment at the start of cc-engine.el for more info."
|
|||
;; If the third submatch matches in C++ then
|
||||
;; we're looking at an identifier that's a
|
||||
;; prefix only if it specifies a member pointer.
|
||||
(when (setq got-identifier (c-forward-name))
|
||||
(when (progn (setq pos (point))
|
||||
(setq got-identifier (c-forward-name)))
|
||||
(setq name-start pos)
|
||||
(if (looking-at "\\(::\\)")
|
||||
;; We only check for a trailing "::" and
|
||||
;; let the "*" that should follow be
|
||||
|
@ -6961,7 +6965,9 @@ comment at the start of cc-engine.el for more info."
|
|||
;; Skip over an identifier.
|
||||
(or got-identifier
|
||||
(and (looking-at c-identifier-start)
|
||||
(setq got-identifier (c-forward-name))))
|
||||
(setq pos (point))
|
||||
(setq got-identifier (c-forward-name))
|
||||
(setq name-start pos)))
|
||||
|
||||
;; Skip over type decl suffix operators.
|
||||
(while (if (looking-at c-type-decl-suffix-key)
|
||||
|
@ -7052,23 +7058,27 @@ comment at the start of cc-engine.el for more info."
|
|||
;; declaration.
|
||||
(throw 'at-decl-or-cast t))
|
||||
|
||||
(when (and got-parens
|
||||
(not got-prefix)
|
||||
(not got-suffix-after-parens)
|
||||
(or backup-at-type
|
||||
maybe-typeless
|
||||
backup-maybe-typeless))
|
||||
;; Got a declaration of the form "foo bar (gnu);" where we've
|
||||
;; recognized "bar" as the type and "gnu" as the declarator.
|
||||
;; In this case it's however more likely that "bar" is the
|
||||
;; declarator and "gnu" a function argument or initializer (if
|
||||
;; `c-recognize-paren-inits' is set), since the parens around
|
||||
;; "gnu" would be superfluous if it's a declarator. Shift the
|
||||
;; type one step backward.
|
||||
(c-fdoc-shift-type-backward)))
|
||||
|
||||
;; Found no identifier.
|
||||
(when (and got-parens
|
||||
(not got-prefix)
|
||||
;; (not got-suffix-after-parens)
|
||||
(or backup-at-type
|
||||
maybe-typeless
|
||||
backup-maybe-typeless
|
||||
(eq at-decl-or-cast t)
|
||||
(save-excursion
|
||||
(goto-char name-start)
|
||||
(not (memq (c-forward-type) '(nil maybe))))))
|
||||
;; Got a declaration of the form "foo bar (gnu);" or "bar
|
||||
;; (gnu);" where we've recognized "bar" as the type and "gnu"
|
||||
;; as the declarator. In this case it's however more likely
|
||||
;; that "bar" is the declarator and "gnu" a function argument
|
||||
;; or initializer (if `c-recognize-paren-inits' is set),
|
||||
;; since the parens around "gnu" would be superfluous if it's
|
||||
;; a declarator. Shift the type one step backward.
|
||||
(c-fdoc-shift-type-backward)))
|
||||
|
||||
;; Found no identifier.
|
||||
(if backup-at-type
|
||||
(progn
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue