mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
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:
parent
ac5a3f2c56
commit
6f4f38cd54
@ -507,6 +507,8 @@ function lsp.start_client(config)
|
|||||||
or (not client.resolved_capabilities.signature_help and method == 'textDocument/signatureHelp')
|
or (not client.resolved_capabilities.signature_help and method == 'textDocument/signatureHelp')
|
||||||
or (not client.resolved_capabilities.goto_definition and method == 'textDocument/definition')
|
or (not client.resolved_capabilities.goto_definition and method == 'textDocument/definition')
|
||||||
or (not client.resolved_capabilities.implementation and method == 'textDocument/implementation')
|
or (not client.resolved_capabilities.implementation and method == 'textDocument/implementation')
|
||||||
|
or (not client.resolved_capabilities.declaration and method == 'textDocument/declaration')
|
||||||
|
or (not client.resolved_capabilities.type_definition and method == 'textDocument/typeDefinition')
|
||||||
or (not client.resolved_capabilities.document_symbol and method == 'textDocument/documentSymbol')
|
or (not client.resolved_capabilities.document_symbol and method == 'textDocument/documentSymbol')
|
||||||
or (not client.resolved_capabilities.workspace_symbol and method == 'textDocument/workspaceSymbol')
|
or (not client.resolved_capabilities.workspace_symbol and method == 'textDocument/workspaceSymbol')
|
||||||
then
|
then
|
||||||
|
@ -923,6 +923,28 @@ function protocol.resolve_capabilities(server_capabilities)
|
|||||||
error("The server sent invalid codeActionProvider")
|
error("The server sent invalid codeActionProvider")
|
||||||
end
|
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
|
if server_capabilities.implementationProvider == nil then
|
||||||
general_properties.implementation = false
|
general_properties.implementation = false
|
||||||
elseif type(server_capabilities.implementationProvider) == 'boolean' then
|
elseif type(server_capabilities.implementationProvider) == 'boolean' then
|
||||||
|
Loading…
Reference in New Issue
Block a user