• Alan Mackenzie's avatar
    Correct the indentation of CC Mode brace lists · aa1a4cce
    Alan Mackenzie authored
    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.
    aa1a4cce