hokein created this revision. hokein added a reviewer: ilya-biryukov. Herald added subscribers: kadircet, arphaman, jkorous, MaskRay. Herald added a project: clang.
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. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D66592 Files: clang-tools-extra/clangd/ClangdLSPServer.cpp Index: clang-tools-extra/clangd/ClangdLSPServer.cpp =================================================================== --- clang-tools-extra/clangd/ClangdLSPServer.cpp +++ clang-tools-extra/clangd/ClangdLSPServer.cpp @@ -464,6 +464,16 @@ 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 liveral + // support (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 @@ {"firstTriggerCharacter", "\n"}, {"moreTriggerCharacter", {}}, }}, - {"codeActionProvider", true}, + {"codeActionProvider", std::move(CodeActionProvider)}, {"completionProvider", llvm::json::Object{ {"resolveProvider", false},
Index: clang-tools-extra/clangd/ClangdLSPServer.cpp =================================================================== --- clang-tools-extra/clangd/ClangdLSPServer.cpp +++ clang-tools-extra/clangd/ClangdLSPServer.cpp @@ -464,6 +464,16 @@ 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 liveral + // support (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 @@ {"firstTriggerCharacter", "\n"}, {"moreTriggerCharacter", {}}, }}, - {"codeActionProvider", true}, + {"codeActionProvider", std::move(CodeActionProvider)}, {"completionProvider", llvm::json::Object{ {"resolveProvider", false},
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits