summaryrefslogtreecommitdiff
path: root/lisp/progmodes/cc-styles.el
diff options
context:
space:
mode:
authorAlan Mackenzie <acm@muc.de>2019-03-12 18:33:31 +0000
committerAlan Mackenzie <acm@muc.de>2019-03-12 18:33:31 +0000
commitaa1a4cceca2d93d83c721ce83950230739073727 (patch)
tree5ee9e4a1722b1ffd6b5b545c62e96dafd0ebafe8 /lisp/progmodes/cc-styles.el
parentd58c29b345b40b836eeb0d9452a5940beda01fff (diff)
downloademacs-aa1a4cceca2d93d83c721ce83950230739073727.tar.gz
Correct the indentation of CC Mode brace lists
while preserving the indentation of nested C++ uniform initialization. * lisp/progmodes/cc-align.el (c-lineup-2nd-brace-entry-in-arglist) (c-lineup-class-decl-init-+, c-lineup-class-decl-init-after-brace): New indentation functions. * lisp/progmodes/cc-engine.el (c-forward-class-decl): New function. (c-do-declarators): New function, partially extracted from c-font-lock-declarators, which now calls the new function. (c-inside-bracelist-p): Amend the introductory comment. (c-add-stmt-syntax): Add code to prevent the spurious recognition of a 'defun-block-intro when a brace pair is used as an initializer. (c-evaluate-offset): No longer ignore vectors of length >= 2. (c-calc-offset): Refactor clumsily nested `if'/`or' into a cond form. * lisp/progmodes/cc-fonts.el (c-font-lock-declarators): Replace the bulk of this function by a call to the new c-forward-class-decl. * lisp/progmodes/cc-langs.el (c-type-decl-prefix-key): Recognize "~" as a type decl operator. * lisp/progmodes/cc-mode.el (c-fl-decl-start): While searching backward for a "}" at an EOD, deal with actually finding the end of a brace list. * doc/misc/cc-mode.texi (List Line-Up): document c-lineup-2nd-brace-entry-in-arglist, c-lineup-class-decl-init-+, and c-lineup-class-decl-init-after-brace. * lisp/progmodes/cc-styles.el (c-style-alist): In styles "gnu", "bsd", "stroustrup", "python", and "java", change the offset for brace-list-intro from the default value or c-lineup-arglist-intro-after-paren to a list beginning with the symbol first, followed by two of the new alignment functions, followed by +. * lisp/progmodes/cc-vars.el (c-offset-alist): Change the default value of brace-list-entry from c-lineup-under-anchor back to 0.
Diffstat (limited to 'lisp/progmodes/cc-styles.el')
-rw-r--r--lisp/progmodes/cc-styles.el16
1 files changed, 15 insertions, 1 deletions
diff --git a/lisp/progmodes/cc-styles.el b/lisp/progmodes/cc-styles.el
index d2c41008711..92ea67128f4 100644
--- a/lisp/progmodes/cc-styles.el
+++ b/lisp/progmodes/cc-styles.el
@@ -68,7 +68,9 @@
(arglist-close . c-lineup-arglist)
(inline-open . 0)
(brace-list-open . +)
- (brace-list-intro . c-lineup-arglist-intro-after-paren)
+ (brace-list-intro . (first
+ c-lineup-2nd-brace-entry-in-arglist
+ c-lineup-class-decl-init-+ +))
(topmost-intro-cont
. (first c-lineup-topmost-intro-cont
c-lineup-gnu-DEFUN-intro-cont))))
@@ -95,6 +97,9 @@
(label . 0)
(statement-cont . +)
(inline-open . 0)
+ (brace-list-intro . (first
+ c-lineup-2nd-brace-entry-in-arglist
+ c-lineup-class-decl-init-+ +))
(inexpr-class . 0))))
("stroustrup"
@@ -104,6 +109,9 @@
(substatement-open . 0)
(substatement-label . 0)
(label . 0)
+ (brace-list-intro . (first
+ c-lineup-2nd-brace-entry-in-arglist
+ c-lineup-class-decl-init-+ +))
(statement-cont . +))))
("whitesmith"
@@ -194,6 +202,9 @@
(c-offsets-alist . ((substatement-open . 0)
(inextern-lang . 0)
(arglist-intro . +)
+ (brace-list-intro . (first
+ c-lineup-2nd-brace-entry-in-arglist
+ c-lineup-class-decl-init-+ +))
(knr-argdecl-intro . +)))
(c-hanging-braces-alist . ((brace-list-open)
(brace-list-intro)
@@ -219,6 +230,9 @@
(statement-cont . +)
(arglist-intro . c-lineup-arglist-intro-after-paren)
(arglist-close . c-lineup-arglist)
+ (brace-list-intro . (first
+ c-lineup-2nd-brace-entry-in-arglist
+ c-lineup-class-decl-init-+ +))
(access-label . 0)
(inher-cont . c-lineup-java-inher)
(func-decl-cont . c-lineup-java-throws))))