summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/cpptools/cppcodeformatter.cpp14
-rw-r--r--src/plugins/cpptools/cppcodeformatter.h8
2 files changed, 22 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp
index 8ab36724ff..1bfb0a574a 100644
--- a/src/plugins/cpptools/cppcodeformatter.cpp
+++ b/src/plugins/cpptools/cppcodeformatter.cpp
@@ -794,6 +794,7 @@ void CodeFormatter::dump()
QtStyleCodeFormatter::QtStyleCodeFormatter()
: m_indentSize(4)
+ , m_style(QtStyle)
{
}
@@ -805,6 +806,14 @@ void QtStyleCodeFormatter::setIndentSize(int size)
}
}
+void QtStyleCodeFormatter::setCompoundStyle(CompoundStyle style)
+{
+ if (style != m_style) {
+ m_style = style;
+ invalidateCache();
+ }
+}
+
void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedIndentDepth) const
{
const State &parentState = state();
@@ -878,6 +887,8 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd
break;
case substatement_open:
+ if (m_style == WhitesmithsStyle)
+ break;
if (parentState.type != switch_statement)
*indentDepth += m_indentSize;
break;
@@ -908,6 +919,9 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd
// undo the continuation indent of the parent
*indentDepth = parentState.savedIndentDepth;
*savedIndentDepth = *indentDepth;
+ // these styles want to indent braces
+ if (m_style == GnuStyle || m_style == WhitesmithsStyle)
+ *savedIndentDepth += m_indentSize;
break;
case maybe_else: {
diff --git a/src/plugins/cpptools/cppcodeformatter.h b/src/plugins/cpptools/cppcodeformatter.h
index 051b5f2aac..75a9c31095 100644
--- a/src/plugins/cpptools/cppcodeformatter.h
+++ b/src/plugins/cpptools/cppcodeformatter.h
@@ -182,12 +182,20 @@ public:
void setIndentSize(int size);
+ enum CompoundStyle {
+ QtStyle, // don't indent braces, add indent for contained statements
+ WhitesmithsStyle, // add indent for braces, don't for the contained statements
+ GnuStyle // add indent for braces and again for contained statements
+ };
+ void setCompoundStyle(CompoundStyle style);
+
protected:
virtual void onEnter(int newState, int *indentDepth, int *savedIndentDepth) const;
virtual void adjustIndent(const QList<CPlusPlus::Token> &tokens, int lexerState, int *indentDepth) const;
private:
int m_indentSize;
+ CompoundStyle m_style;
};
} // namespace CppTools