From 1862282bee2406ea4540ecc2f80b58bfc344a52b Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Tue, 31 Aug 2010 09:45:01 +0200 Subject: C++ indenter: Fix nested array/struct initializers. --- src/plugins/cpptools/cppcodeformatter.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/plugins/cpptools/cppcodeformatter.cpp') diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp index 591c1f2d16..a162488088 100644 --- a/src/plugins/cpptools/cppcodeformatter.cpp +++ b/src/plugins/cpptools/cppcodeformatter.cpp @@ -1008,6 +1008,9 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd const int tokenPosition = column(tk.begin()); const bool firstToken = (tokenIndex() == 0); const bool lastToken = (tokenIndex() == tokenCount() - 1); + int nextTokenStart = 0; + if (!lastToken) + nextTokenStart = column(tokenAt(tokenIndex() + 1).begin()); switch (newState) { case namespace_start: @@ -1136,10 +1139,14 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd break; case brace_list_open: - if (parentState.type != initializer) - *indentDepth = parentState.savedIndentDepth + m_indentSize; - else if (lastToken) { - *savedIndentDepth = state(1).savedIndentDepth; + if (!lastToken) { + if (parentState.type == initializer) + *savedIndentDepth = tokenPosition; + *indentDepth = nextTokenStart; + } else { + // avoid existing continuation indents + if (parentState.type == initializer) + *savedIndentDepth = state(1).savedIndentDepth; *indentDepth = *savedIndentDepth + m_indentSize; } break; @@ -1256,6 +1263,7 @@ void QtStyleCodeFormatter::adjustIndent(const QList &tokens, i } else if (topState.type != defun_open && topState.type != block_open && topState.type != substatement_open + && topState.type != brace_list_open && !topWasMaybeElse) { *indentDepth = topState.savedIndentDepth; } -- cgit v1.2.1