diff options
author | Dheepak Krishnamurthy <me@kdheepak.com> | 2020-06-04 06:52:44 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-04 08:52:44 -0400 |
commit | 6f4f38cd54693ca99c887756e6179cc0775377d0 (patch) | |
tree | 04b42466117f14f06c92b69f8a6afc8bc991c70d /runtime/lua/vim/lsp/protocol.lua | |
parent | ac5a3f2c56775040a1b7de438cfd592c0dc26400 (diff) | |
download | rneovim-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.lua | 22 |
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 |