diff options
author | Haojian Wu <hokein@google.com> | 2019-08-22 14:53:45 +0000 |
---|---|---|
committer | Haojian Wu <hokein@google.com> | 2019-08-22 14:53:45 +0000 |
commit | 08d93f1ed3b65d962552e5b3b9a288078a0b740e (patch) | |
tree | 8534d5e7c374bbe2ae4efd656e0013662c3879b4 | |
parent | b17d6c52fd4eaa5ae26b1ec5eea642d6d933ee37 (diff) | |
download | llvm-08d93f1ed3b65d962552e5b3b9a288078a0b740e.zip llvm-08d93f1ed3b65d962552e5b3b9a288078a0b740e.tar.gz llvm-08d93f1ed3b65d962552e5b3b9a288078a0b740e.tar.bz2 |
[clangd] Send suppported codeActionKinds to the client.
Summary:
This would make client know which codeActionKinds that clangd may
return.
VSCode will add a new entry "Refactor..." (which shows all
refactoring-kind code actions) in the right-click menu.
Reviewers: ilya-biryukov
Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66592
llvm-svn: 369656
-rw-r--r-- | clang-tools-extra/clangd/ClangdLSPServer.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/clang-tools-extra/clangd/ClangdLSPServer.cpp b/clang-tools-extra/clangd/ClangdLSPServer.cpp index a838a90..928bd25 100644 --- a/clang-tools-extra/clangd/ClangdLSPServer.cpp +++ b/clang-tools-extra/clangd/ClangdLSPServer.cpp @@ -464,6 +464,16 @@ void ClangdLSPServer::onInitialize(const InitializeParams &Params, if (!Params.capabilities.RenamePrepareSupport) // Only boolean allowed per LSP RenameProvider = true; + // Per LSP, codeActionProvide can be either boolean or CodeActionOptions. + // CodeActionOptions is only valid if the client supports action literal + // via textDocument.codeAction.codeActionLiteralSupport. + llvm::json::Value CodeActionProvider = true; + if (Params.capabilities.CodeActionStructure) + CodeActionProvider = llvm::json::Object{ + {"codeActionKinds", + {CodeAction::QUICKFIX_KIND, CodeAction::REFACTOR_KIND, + CodeAction::INFO_KIND}}}; + llvm::json::Object Result{ {{"capabilities", llvm::json::Object{ @@ -475,7 +485,7 @@ void ClangdLSPServer::onInitialize(const InitializeParams &Params, {"firstTriggerCharacter", "\n"}, {"moreTriggerCharacter", {}}, }}, - {"codeActionProvider", true}, + {"codeActionProvider", std::move(CodeActionProvider)}, {"completionProvider", llvm::json::Object{ {"resolveProvider", false}, |