aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/protocol.lua
diff options
context:
space:
mode:
authorDheepak Krishnamurthy <me@kdheepak.com>2020-06-04 06:52:44 -0600
committerGitHub <noreply@github.com>2020-06-04 08:52:44 -0400
commit6f4f38cd54693ca99c887756e6179cc0775377d0 (patch)
tree04b42466117f14f06c92b69f8a6afc8bc991c70d /runtime/lua/vim/lsp/protocol.lua
parentac5a3f2c56775040a1b7de438cfd592c0dc26400 (diff)
downloadrneovim-6f4f38cd54693ca99c887756e6179cc0775377d0.tar.gz
rneovim-6f4f38cd54693ca99c887756e6179cc0775377d0.tar.bz2
rneovim-6f4f38cd54693ca99c887756e6179cc0775377d0.zip
lsp: Add check for `declaration` and `typeDefinition` support in vim lsp server before making `request` (#12421)
* Add check for typeDefinition support in vim lsp server * Check for typeDefinitionProvider in server * Check for declarationProvider in server * Add check for client support * Fix typo
Diffstat (limited to 'runtime/lua/vim/lsp/protocol.lua')
-rw-r--r--runtime/lua/vim/lsp/protocol.lua22
1 files changed, 22 insertions, 0 deletions
diff --git a/runtime/lua/vim/lsp/protocol.lua b/runtime/lua/vim/lsp/protocol.lua
index 7d5f8f5ef1..64911fe7bb 100644
--- a/runtime/lua/vim/lsp/protocol.lua
+++ b/runtime/lua/vim/lsp/protocol.lua
@@ -923,6 +923,28 @@ function protocol.resolve_capabilities(server_capabilities)
error("The server sent invalid codeActionProvider")
end
+ if server_capabilities.declarationProvider == nil then
+ general_properties.declaration = false
+ elseif type(server_capabilities.declarationProvider) == 'boolean' then
+ general_properties.declaration = server_capabilities.declarationProvider
+ elseif type(server_capabilities.declarationProvider) == 'table' then
+ -- TODO: support more detailed declarationProvider options.
+ general_properties.declaration = false
+ else
+ error("The server sent invalid declarationProvider")
+ end
+
+ if server_capabilities.typeDefinitionProvider == nil then
+ general_properties.type_definition = false
+ elseif type(server_capabilities.typeDefinitionProvider) == 'boolean' then
+ general_properties.type_definition = server_capabilities.typeDefinitionProvider
+ elseif type(server_capabilities.typeDefinitionProvider) == 'table' then
+ -- TODO: support more detailed typeDefinitionProvider options.
+ general_properties.type_definition = false
+ else
+ error("The server sent invalid typeDefinitionProvider")
+ end
+
if server_capabilities.implementationProvider == nil then
general_properties.implementation = false
elseif type(server_capabilities.implementationProvider) == 'boolean' then