forked from qt-creator/qt-creator
Pass the lookahead character to matching text.
This commit is contained in:
@@ -71,10 +71,31 @@ static bool isCompleteCharLiteral(const BackwardsScanner &tk, int index, int sta
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool shouldInsertMatchingText(const QChar &lookAhead)
|
||||||
|
{
|
||||||
|
if (lookAhead.isSpace())
|
||||||
|
return true;
|
||||||
|
else if (lookAhead == QLatin1Char('{'))
|
||||||
|
return true;
|
||||||
|
else if (lookAhead == QLatin1Char('}'))
|
||||||
|
return true;
|
||||||
|
else if (lookAhead == QLatin1Char(']'))
|
||||||
|
return true;
|
||||||
|
else if (lookAhead == QLatin1Char(')'))
|
||||||
|
return true;
|
||||||
|
else if (lookAhead == QLatin1Char(';'))
|
||||||
|
return true;
|
||||||
|
else if (lookAhead == QLatin1Char(','))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
MatchingText::MatchingText()
|
MatchingText::MatchingText()
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
QString MatchingText::insertMatchingBrace(const QTextCursor &cursor, const QString &textToProcess, int *skippedChars) const
|
QString MatchingText::insertMatchingBrace(const QTextCursor &cursor, const QString &textToProcess,
|
||||||
|
const QChar &la, int *skippedChars) const
|
||||||
{
|
{
|
||||||
*skippedChars = 0;
|
*skippedChars = 0;
|
||||||
|
|
||||||
@@ -101,7 +122,7 @@ QString MatchingText::insertMatchingBrace(const QTextCursor &cursor, const QStri
|
|||||||
text = textToProcess.mid(*skippedChars);
|
text = textToProcess.mid(*skippedChars);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (text.isEmpty())
|
if (text.isEmpty() || !shouldInsertMatchingText(la))
|
||||||
return QString();
|
return QString();
|
||||||
|
|
||||||
BackwardsScanner tk(tc, textToProcess.left(*skippedChars), MAX_NUM_LINES);
|
BackwardsScanner tk(tc, textToProcess.left(*skippedChars), MAX_NUM_LINES);
|
||||||
|
|||||||
@@ -41,7 +41,8 @@ class CPLUSPLUS_EXPORT MatchingText
|
|||||||
public:
|
public:
|
||||||
MatchingText();
|
MatchingText();
|
||||||
|
|
||||||
QString insertMatchingBrace(const QTextCursor &tc, const QString &text, int *skippedChars) const;
|
QString insertMatchingBrace(const QTextCursor &tc, const QString &text,
|
||||||
|
const QChar &la, int *skippedChars) const;
|
||||||
QString insertParagraphSeparator(const QTextCursor &tc) const;
|
QString insertParagraphSeparator(const QTextCursor &tc) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1275,11 +1275,13 @@ QString CPPEditor::autoComplete(QTextCursor &cursor, const QString &text) const
|
|||||||
if (!contextAllowsAutoParentheses(cursor))
|
if (!contextAllowsAutoParentheses(cursor))
|
||||||
return QString();
|
return QString();
|
||||||
|
|
||||||
|
QChar lookAhead = characterAt(cursor.selectionEnd());
|
||||||
|
|
||||||
QString autoText;
|
QString autoText;
|
||||||
int skippedChars = 0;
|
int skippedChars = 0;
|
||||||
|
|
||||||
MatchingText matchingText;
|
MatchingText matchingText;
|
||||||
autoText = matchingText.insertMatchingBrace(cursor, text, &skippedChars);
|
autoText = matchingText.insertMatchingBrace(cursor, text, lookAhead, &skippedChars);
|
||||||
|
|
||||||
if (skippedChars) {
|
if (skippedChars) {
|
||||||
const int pos = cursor.position();
|
const int pos = cursor.position();
|
||||||
|
|||||||
Reference in New Issue
Block a user