summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcodeformatter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cppcodeformatter.cpp')
-rw-r--r--src/plugins/cpptools/cppcodeformatter.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp
index 2f71be2f65..c8ba07fbe0 100644
--- a/src/plugins/cpptools/cppcodeformatter.cpp
+++ b/src/plugins/cpptools/cppcodeformatter.cpp
@@ -273,7 +273,13 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block)
case T_RBRACKET: // '[', ']' and '->' can be part of lambda declarator
case T_LBRACKET:
case T_ARROW: break;
- default: leave(); continue;
+ default:
+ if (m_tokenIndex > 0 && tokenAt(m_tokenIndex - 1).kind() == T_ARROW) {
+ break;
+ } else {
+ leave();
+ continue;
+ }
} break;
case lambda_declarator:
@@ -629,7 +635,6 @@ void CodeFormatter::updateStateUntil(const QTextBlock &endBlock)
break;
if (loadLexerState(it) == -1)
break;
-
previousState = blockData.m_endState;
}
@@ -667,6 +672,16 @@ void CodeFormatter::updateLineStateChange(const QTextBlock &block)
saveBlockData(&next, BlockData());
}
+bool CodeFormatter::isInStringLiteral(const QTextBlock &block) const
+{
+ if (!block.previous().isValid())
+ return false;
+ BlockData blockData;
+ if (!loadBlockData(block.previous(), &blockData))
+ return false;
+ return !blockData.m_endState.isEmpty() && blockData.m_endState.top().type == string_open;
+}
+
CodeFormatter::State CodeFormatter::state(int belowTop) const
{
if (belowTop < m_currentState.size())