forked from qt-creator/qt-creator
ClangCodeModel: Treat function-like macros like functions
... when completing with clangd. Change-Id: I8ffc0ff7a4a0f819f2ae48aabbb16609eb178178 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -2938,8 +2938,12 @@ void ClangdCompletionItem::apply(TextDocumentManipulatorInterface &manipulator,
|
|||||||
|
|
||||||
const auto kind = static_cast<CompletionItemKind::Kind>(
|
const auto kind = static_cast<CompletionItemKind::Kind>(
|
||||||
item.kind().value_or(CompletionItemKind::Text));
|
item.kind().value_or(CompletionItemKind::Text));
|
||||||
|
const bool isMacroCall = kind == CompletionItemKind::Text && item.label().contains('(')
|
||||||
|
&& item.label().contains(')'); // Heuristic
|
||||||
const bool isFunctionLike = kind == CompletionItemKind::Function
|
const bool isFunctionLike = kind == CompletionItemKind::Function
|
||||||
|| kind == CompletionItemKind::Method || kind == CompletionItemKind::Constructor;
|
|| kind == CompletionItemKind::Method || kind == CompletionItemKind::Constructor
|
||||||
|
|| isMacroCall;
|
||||||
|
|
||||||
QString rawInsertText = edit->newText();
|
QString rawInsertText = edit->newText();
|
||||||
|
|
||||||
// Some preparation for our magic involving (non-)insertion of parentheses and
|
// Some preparation for our magic involving (non-)insertion of parentheses and
|
||||||
@@ -2981,8 +2985,8 @@ void ClangdCompletionItem::apply(TextDocumentManipulatorInterface &manipulator,
|
|||||||
}
|
}
|
||||||
if (!abandonParen)
|
if (!abandonParen)
|
||||||
abandonParen = isAtUsingDeclaration(manipulator, rangeStart);
|
abandonParen = isAtUsingDeclaration(manipulator, rangeStart);
|
||||||
if (!abandonParen && matchPreviousWord(manipulator, cursor, detail)) // function definition?
|
if (!abandonParen && !isMacroCall && matchPreviousWord(manipulator, cursor, detail))
|
||||||
abandonParen = true;
|
abandonParen = true; // function definition
|
||||||
if (!abandonParen) {
|
if (!abandonParen) {
|
||||||
if (completionSettings.m_spaceAfterFunctionName)
|
if (completionSettings.m_spaceAfterFunctionName)
|
||||||
extraCharacters += ' ';
|
extraCharacters += ' ';
|
||||||
|
Reference in New Issue
Block a user