Skip to content
Snippets Groups Projects
Commit b717d7a1 authored by Alan Mackenzie's avatar Alan Mackenzie
Browse files

C++ Mode: Fix some indentation bugs. FIxes bug#19867

1. Fix closing paren aligning with trailing comment on line
with matching open paren.
2. Fix indentation of first identifier inside a comma separated
list aligning with the type rather than the subsequent
identifiers.
3. Fix lambda expressions inside a brace list aligning like a
single statement.

* cc-align.el (c-lineup-arglist): Take into account any
preceding comments when lining up the arguments in the arglist.
(c-lineup-arglist-intro-after-paren): Handle comments properly,
and don't line up the closing parenthesis with a trailing
comment on the first line.
(c-lineup-item-after-paren-at-boi): Also allow a paren to count
as being at BOI when it is preceded only by open parens on that
line.
(c-lineup-runin-statements, c-lineup-ObjC-method-call): Hanle
comments better.

* cc-engine.el (c-forward-comments) Introduce an optional limit
parameter.  Use this limit in calls from cc-align.el and
cc-mode.el.
(c-just-after-func-arglist-p): Handle the presence of a
protection keyword such as "public".
(c-at-bracelist-p): Renamed from c-inside-bracelist-p, after
dropping the accept-in-paren parameter, having removed its
functionality.
(c-looking-at-statement-block-1): New function, based on the
old c-looking-at-statement-block.  Enhanced to handle C++
lambda expressions, and to return the symbol `maybe' when the
contents of a brace delimited block fail to determine whether
it is a statement block.
(c-looking-at-statement-block): Enhanced to examine the context
of a brace delimited block when the contents are ambiguous.
(c-looking-at-c++-lambda-expression): Check the character after
point is a < before calling c-forward-<>-arglist.
(c-add-stmt-syntax): Make the context more accurate by calling
c-looking-at-statement-block.
(c-guess-basic-syntax, CASE 5D.5): Replace the syntactic symbol
topmost-intro-cont with the new symbol class-field-cont,
additionally determining the position of the enclosing brace as
an extra anchor point.
(c-guess-basic-syntax, CASE 5V): New case for an identifier
following a type inside class braces.
(c-guess-basic-syntax, CASE 9): Use
c-looking-at-statement-block to detect a brace list more
accurately.

* cc-fonts.el (c-get-fontification-context): Rename the call to
c-inside-bracelist-p to c-at-bracelist-p.

* cc-langs.el (c-protection-kwds): Add an entry for java-mode.
(c-stmt-block-only-keywords-regexp): Prevent this regexp also
matching a character preceding the keyword.

* cc-mode.el (c-before-change-include-<>)
(c-after-change-include-<>): Use the new limit argument to
c-forward-comments.

* cc-styles.el (c-style-alist, "gnu" and "java" styles): Change
the offset for arglist-close to
c-lineup-arglist-close-under-paren.

* cc-vars.el (c-offsets-alist): Introduce the new syntactic
symbol class-field-cont, giving it default offset +.

* cc-mode.texi (Syntactic Symbols, Class Symbols): Document the
new syntactic symbol class-field-cont.
parent f99412bb
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment