Commit da4fcd22 authored by Roberto Raggi's avatar Roberto Raggi
Browse files

Pass the lookahead character to matching text.

parent 82b80b9e
...@@ -71,10 +71,31 @@ static bool isCompleteCharLiteral(const BackwardsScanner &tk, int index, int sta ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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();
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment