C++ indenter: Improve member initializer indent.

If you indent the first initializer differently, that will now stick
for the following ones.

Change-Id: Ib08dfbf64282eda41202528b7255e693c350f7c6
Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
This commit is contained in:
Christian Kamm
2011-12-08 13:25:46 +01:00
parent 8480c3837b
commit 0ba1234108
3 changed files with 82 additions and 5 deletions

View File

@@ -189,7 +189,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
case T_SEMICOLON: leave(true); break;
case T_EQUAL: enter(assign_open_or_initializer); break;
case T_LBRACE: enter(defun_open); break;
case T_COLON: enter(member_init_open); enter(member_init); break;
case T_COLON: enter(member_init_open); enter(member_init_expected); break;
case T_OPERATOR: enter(operator_declaration); break;
default: tryExpression(true); break;
} break;
@@ -263,7 +263,14 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
case member_init_open:
switch (kind) {
case T_LBRACE: turnInto(defun_open); break;
case T_COMMA: enter(member_init); break;
case T_COMMA: enter(member_init_expected); break;
case T_SEMICOLON: leave(); continue; // try to recover
} break;
case member_init_expected:
switch (kind) {
case T_IDENTIFIER: turnInto(member_init); break;
case T_LBRACE:
case T_SEMICOLON: leave(); continue; // try to recover
} break;
@@ -1185,14 +1192,25 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd
// undo the continuation indent of the parent
*savedPaddingDepth = 0;
// The paddingDepth is the expected location of the ',' and
// identifiers are padded +2 from that in member_init_expected.
if (firstToken)
*paddingDepth = tokenPosition-*indentDepth;
else
*paddingDepth = m_tabSettings.m_indentSize - 2; // they'll get another 2 from member_init
*paddingDepth = m_tabSettings.m_indentSize - 2;
break;
case member_init_expected:
*paddingDepth += 2;
break;
case member_init:
*paddingDepth += 2; // savedIndentDepth is the position of ':'
// make continuation indents relative to identifier start
*paddingDepth = tokenPosition - *indentDepth;
if (firstToken) {
// see comment in member_init_open
*savedPaddingDepth = *paddingDepth - 2;
}
break;
case case_cont: