summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/CodeComplete.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clangd/CodeComplete.cpp')
-rw-r--r--clang-tools-extra/clangd/CodeComplete.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/clang-tools-extra/clangd/CodeComplete.cpp b/clang-tools-extra/clangd/CodeComplete.cpp
index 36d0f21ed09..df438b4836d 100644
--- a/clang-tools-extra/clangd/CodeComplete.cpp
+++ b/clang-tools-extra/clangd/CodeComplete.cpp
@@ -1413,8 +1413,17 @@ CompletionItem CodeCompletion::render(const CodeCompleteOptions &Opts) const {
LSP.additionalTextEdits.push_back(FixIt);
}
}
- if (Opts.EnableSnippets)
- LSP.textEdit->newText += SnippetSuffix;
+ if (Opts.EnableSnippets && !SnippetSuffix.empty()) {
+ if (!Opts.EnableFunctionArgSnippets &&
+ ((Kind == CompletionItemKind::Function) ||
+ (Kind == CompletionItemKind::Method)) &&
+ (SnippetSuffix.front() == '(') && (SnippetSuffix.back() == ')'))
+ // Check whether function has any parameters or not.
+ LSP.textEdit->newText += SnippetSuffix.size() > 2 ? "(${0})" : "()";
+ else
+ LSP.textEdit->newText += SnippetSuffix;
+ }
+
// FIXME(kadircet): Do not even fill insertText after making sure textEdit is
// compatible with most of the editors.
LSP.insertText = LSP.textEdit->newText;
OpenPOWER on IntegriCloud