forked from qt-creator/qt-creator
C++: Handle curly braces like other brace types
Unless it balances the curly braces
* typing '{' leads to auto insertion of '}'.
* typing '}' skips already present '}'.
* removing '{' leads to auto removal of '}'.
This prevents unbalanced curly braces, which are problematic for clang.
Concrete use cases are: typing of initializer lists, lambdas, function
definitions.
Task-number: QTCREATORBUG-15073
Change-Id: Iec8c6aa5aca054455c1e1bfde3a65c4fd1f579c3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -238,8 +238,7 @@ bool TextBlockUserData::findPreviousBlockOpenParenthesis(QTextCursor *cursor, bo
|
||||
if (!parenList.isEmpty() && !TextDocumentLayout::ifdefedOut(block)) {
|
||||
for (int i = parenList.count()-1; i >= 0; --i) {
|
||||
Parenthesis paren = parenList.at(i);
|
||||
if (paren.chr != QLatin1Char('{') && paren.chr != QLatin1Char('}')
|
||||
&& paren.chr != QLatin1Char('+') && paren.chr != QLatin1Char('-'))
|
||||
if (paren.chr != QLatin1Char('+') && paren.chr != QLatin1Char('-'))
|
||||
continue;
|
||||
if (block == cursor->block()) {
|
||||
if (position - block.position() <= paren.pos + (paren.type == Parenthesis::Closed ? 1 : 0))
|
||||
@@ -300,8 +299,7 @@ bool TextBlockUserData::findNextBlockClosingParenthesis(QTextCursor *cursor)
|
||||
if (!parenList.isEmpty() && !TextDocumentLayout::ifdefedOut(block)) {
|
||||
for (int i = 0; i < parenList.count(); ++i) {
|
||||
Parenthesis paren = parenList.at(i);
|
||||
if (paren.chr != QLatin1Char('{') && paren.chr != QLatin1Char('}')
|
||||
&& paren.chr != QLatin1Char('+') && paren.chr != QLatin1Char('-'))
|
||||
if (paren.chr != QLatin1Char('+') && paren.chr != QLatin1Char('-'))
|
||||
continue;
|
||||
if (block == cursor->block() &&
|
||||
(position - block.position() > paren.pos - (paren.type == Parenthesis::Opened ? 1 : 0)))
|
||||
|
||||
Reference in New Issue
Block a user