diff options
Diffstat (limited to 'clang-tools-extra/clangd/ClangdUnit.cpp')
| -rw-r--r-- | clang-tools-extra/clangd/ClangdUnit.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/clang-tools-extra/clangd/ClangdUnit.cpp b/clang-tools-extra/clangd/ClangdUnit.cpp index a476eeb72e2..14eac6c2e41 100644 --- a/clang-tools-extra/clangd/ClangdUnit.cpp +++ b/clang-tools-extra/clangd/ClangdUnit.cpp @@ -268,8 +268,8 @@ template <class T> bool futureIsReady(std::shared_future<T> const &Future) { namespace { -CompletionItemKind getKind(CXCursorKind K) { - switch (K) { +CompletionItemKind getKindOfDecl(CXCursorKind CursorKind) { + switch (CursorKind) { case CXCursor_MacroInstantiation: case CXCursor_MacroDefinition: return CompletionItemKind::Text; @@ -311,6 +311,22 @@ CompletionItemKind getKind(CXCursorKind K) { } } +CompletionItemKind getKind(CodeCompletionResult::ResultKind ResKind, + CXCursorKind CursorKind) { + switch (ResKind) { + case CodeCompletionResult::RK_Declaration: + return getKindOfDecl(CursorKind); + case CodeCompletionResult::RK_Keyword: + return CompletionItemKind::Keyword; + case CodeCompletionResult::RK_Macro: + return CompletionItemKind::Text; // unfortunately, there's no 'Macro' + // completion items in LSP. + case CodeCompletionResult::RK_Pattern: + return CompletionItemKind::Snippet; + } + llvm_unreachable("Unhandled CodeCompletionResult::ResultKind."); +} + std::string escapeSnippet(const llvm::StringRef Text) { std::string Result; Result.reserve(Text.size()); // Assume '$', '}' and '\\' are rare. @@ -395,7 +411,7 @@ private: ProcessChunks(CCS, Item); // Fill in the kind field of the CompletionItem. - Item.kind = getKind(Result.CursorKind); + Item.kind = getKind(Result.Kind, Result.CursorKind); FillSortText(CCS, Item); |

