diff --git a/src/plugins/qmleditor/qmleditor.cpp b/src/plugins/qmleditor/qmleditor.cpp index 432c23de904a1951d7e9b786fa530e298873f1bc..8986f1eaf123c27a4ff72701befd8af0eaa190de 100644 --- a/src/plugins/qmleditor/qmleditor.cpp +++ b/src/plugins/qmleditor/qmleditor.cpp @@ -726,6 +726,28 @@ bool QmlTextEditor::contextAllowsAutoParentheses(const QTextCursor &cursor, cons if (! textToInsert.isEmpty()) ch = textToInsert.at(0); + switch (ch.unicode()) { + case '\'': + case '"': + + case '(': + case '[': + case '{': + + case ')': + case ']': + case '}': + + case ';': + break; + + default: + if (ch.isNull()) + break; + + return false; + } // end of switch + const QString blockText = cursor.block().text(); const int blockState = blockStartState(cursor.block()); @@ -736,8 +758,12 @@ bool QmlTextEditor::contextAllowsAutoParentheses(const QTextCursor &cursor, cons int tokenIndex = tokens.size() - 1; for (; tokenIndex != -1; --tokenIndex) { const QScriptIncrementalScanner::Token &token = tokens.at(tokenIndex); - if (pos >= token.begin() && pos <= token.end()) - break; + if (pos >= token.begin()) { + if (pos < token.end()) + break; + else if (pos == token.end() && token.is(QScriptIncrementalScanner::Token::Comment)) + break; + } } if (tokenIndex != -1) { @@ -760,27 +786,7 @@ bool QmlTextEditor::contextAllowsAutoParentheses(const QTextCursor &cursor, cons } // end of switch } - switch (ch.unicode()) { - case '\'': - case '"': - - case '(': - case '[': - case '{': - - case ')': - case ']': - case '}': - - case ';': - return true; - - default: - if (ch.isNull()) - return true; - } // end of switch - - return false; + return true; } bool QmlTextEditor::isInComment(const QTextCursor &) const diff --git a/src/plugins/qtscripteditor/qtscripteditor.cpp b/src/plugins/qtscripteditor/qtscripteditor.cpp index 6d235b5f0a254fce6784838cdd847a84511d2563..670c5c747e83849b0747354d85fa8c7116f2a5bf 100644 --- a/src/plugins/qtscripteditor/qtscripteditor.cpp +++ b/src/plugins/qtscripteditor/qtscripteditor.cpp @@ -409,8 +409,34 @@ bool ScriptEditor::contextAllowsAutoParentheses(const QTextCursor &cursor, const if (! textToInsert.isEmpty()) ch = textToInsert.at(0); + switch (ch.unicode()) { + case '\'': + case '"': + + case '(': + case '[': + case '{': + + case ')': + case ']': + case '}': + + case ';': + break; + + default: + if (ch.isNull()) + break; + + return false; + } // end of switch + const QString blockText = cursor.block().text(); - const int blockState = cursor.block().userState() & 0xFF; + int blockState = cursor.block().userState(); + if (blockState == -1) + blockState = 0; + else + blockState = blockState & 0xFF; QScriptIncrementalScanner tokenize; const QList<QScriptIncrementalScanner::Token> tokens = tokenize(blockText, blockState); @@ -419,8 +445,12 @@ bool ScriptEditor::contextAllowsAutoParentheses(const QTextCursor &cursor, const int tokenIndex = tokens.size() - 1; for (; tokenIndex != -1; --tokenIndex) { const QScriptIncrementalScanner::Token &token = tokens.at(tokenIndex); - if (pos >= token.begin() && pos <= token.end()) - break; + if (pos >= token.begin()) { + if (pos < token.end()) + break; + else if (pos == token.end() && token.is(QScriptIncrementalScanner::Token::Comment)) + break; + } } if (tokenIndex != -1) { @@ -443,27 +473,7 @@ bool ScriptEditor::contextAllowsAutoParentheses(const QTextCursor &cursor, const } // end of switch } - switch (ch.unicode()) { - case '\'': - case '"': - - case '(': - case '[': - case '{': - - case ')': - case ']': - case '}': - - case ';': - return true; - - default: - if (ch.isNull()) - return true; - } // end of switch - - return false; + return true; } bool ScriptEditor::isInComment(const QTextCursor &) const