From 9a799da6c90eb5bd163811ccb765590b2c059a85 Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Thu, 17 Sep 2009 18:54:12 +0200 Subject: [PATCH] Re-enable check for automatically inserted block end. --- src/libs/cplusplus/MatchingText.cpp | 3 +-- src/plugins/cppeditor/cppeditor.cpp | 13 +++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/libs/cplusplus/MatchingText.cpp b/src/libs/cplusplus/MatchingText.cpp index 76a6fe1ca71..0e11c9c047a 100644 --- a/src/libs/cplusplus/MatchingText.cpp +++ b/src/libs/cplusplus/MatchingText.cpp @@ -40,6 +40,7 @@ static bool maybeOverrideChar(const QChar &ch) { if (ch == QLatin1Char(')')) return true; else if (ch == QLatin1Char(']')) return true; + else if (ch == QLatin1Char(';')) return true; else if (ch == QLatin1Char('"')) return true; else if (ch == QLatin1Char('\'')) return true; else return false; @@ -97,8 +98,6 @@ MatchingText::MatchingText() QString MatchingText::insertMatchingBrace(const QTextCursor &cursor, const QString &textToProcess, const QChar &la, int *skippedChars) const { - *skippedChars = 0; - QTextCursor tc = cursor; QString text = textToProcess; diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index 083f6718715..276e5b24eb1 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -1270,16 +1270,25 @@ bool CPPEditor::isElectricCharacter(const QChar &ch) const } #if 1 -QString CPPEditor::autoComplete(QTextCursor &cursor, const QString &text) const +QString CPPEditor::autoComplete(QTextCursor &cursor, const QString &textToInsert) const { + bool checkBlockEnd = m_allowSkippingOfBlockEnd; + m_allowSkippingOfBlockEnd = false; + if (!contextAllowsAutoParentheses(cursor)) return QString(); - QChar lookAhead = characterAt(cursor.selectionEnd()); + QString text = textToInsert; + const QChar lookAhead = characterAt(cursor.selectionEnd()); QString autoText; int skippedChars = 0; + if (checkBlockEnd && (lookAhead == QChar::ParagraphSeparator && (! text.isEmpty() && text.at(0) == QLatin1Char('}')))) { + skippedChars = 2; + text = text.mid(1); + } + MatchingText matchingText; autoText = matchingText.insertMatchingBrace(cursor, text, lookAhead, &skippedChars);