forked from qt-creator/qt-creator
Clang: fix regression in paren autocompletion
Limit the cases when paren is not added after function name completion Task-number: QTCREATORBUG-18656 Change-Id: Ibdf1e9c1d7d7b400c1c853e0bb81622e52729cfa Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
@@ -66,6 +66,14 @@ bool ClangAssistProposalItem::implicitlyApplies() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void moveToPrevChar(TextEditor::TextDocumentManipulatorInterface &manipulator,
|
||||||
|
QTextCursor &cursor)
|
||||||
|
{
|
||||||
|
cursor.movePosition(QTextCursor::PreviousCharacter);
|
||||||
|
while (manipulator.characterAt(cursor.position()).isSpace())
|
||||||
|
cursor.movePosition(QTextCursor::PreviousCharacter);
|
||||||
|
}
|
||||||
|
|
||||||
void ClangAssistProposalItem::apply(TextEditor::TextDocumentManipulatorInterface &manipulator,
|
void ClangAssistProposalItem::apply(TextEditor::TextDocumentManipulatorInterface &manipulator,
|
||||||
int basePosition) const
|
int basePosition) const
|
||||||
{
|
{
|
||||||
@@ -116,7 +124,17 @@ void ClangAssistProposalItem::apply(TextEditor::TextDocumentManipulatorInterface
|
|||||||
cursor.movePosition(QTextCursor::PreviousWord);
|
cursor.movePosition(QTextCursor::PreviousWord);
|
||||||
while (manipulator.characterAt(cursor.position()) == ':')
|
while (manipulator.characterAt(cursor.position()) == ':')
|
||||||
cursor.movePosition(QTextCursor::PreviousWord, QTextCursor::MoveAnchor, 2);
|
cursor.movePosition(QTextCursor::PreviousWord, QTextCursor::MoveAnchor, 2);
|
||||||
if (manipulator.characterAt(cursor.position()) != '&') {
|
|
||||||
|
// Move to the last character in the previous word
|
||||||
|
cursor.movePosition(QTextCursor::NextWord);
|
||||||
|
moveToPrevChar(manipulator, cursor);
|
||||||
|
bool abandonParen = false;
|
||||||
|
if (manipulator.characterAt(cursor.position()) == '&') {
|
||||||
|
moveToPrevChar(manipulator, cursor);
|
||||||
|
const QChar prevChar = manipulator.characterAt(cursor.position());
|
||||||
|
abandonParen = QString("(;,{}").contains(prevChar);
|
||||||
|
}
|
||||||
|
if (!abandonParen) {
|
||||||
if (completionSettings.m_spaceAfterFunctionName)
|
if (completionSettings.m_spaceAfterFunctionName)
|
||||||
extraCharacters += QLatin1Char(' ');
|
extraCharacters += QLatin1Char(' ');
|
||||||
extraCharacters += QLatin1Char('(');
|
extraCharacters += QLatin1Char('(');
|
||||||
|
|||||||
Reference in New Issue
Block a user