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
This commit is contained in:
Dheepak Krishnamurthy
2020-06-04 06:52:44 -06:00
committed by GitHub
parent ac5a3f2c56
commit 6f4f38cd54
2 changed files with 24 additions and 0 deletions

View File

@@ -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