summaryrefslogtreecommitdiffstatshomepage
path: root/runtime/lua/vim/lsp/client.lua
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/lua/vim/lsp/client.lua')
-rw-r--r--runtime/lua/vim/lsp/client.lua17
1 files changed, 13 insertions, 4 deletions
diff --git a/runtime/lua/vim/lsp/client.lua b/runtime/lua/vim/lsp/client.lua
index c027f6df47..957364d019 100644
--- a/runtime/lua/vim/lsp/client.lua
+++ b/runtime/lua/vim/lsp/client.lua
@@ -1204,7 +1204,15 @@ function Client:supports_method(method, bufnr)
bufnr = bufnr.bufnr
end
local required_capability = lsp.protocol._request_name_to_server_capability[method]
- if required_capability and vim.tbl_get(self.server_capabilities, unpack(required_capability)) then
+ local is_self_mapping = required_capability
+ and #required_capability == 1
+ and required_capability[1] == method
+
+ if
+ not is_self_mapping
+ and required_capability
+ and vim.tbl_get(self.server_capabilities, unpack(required_capability))
+ then
return true
end
@@ -1229,9 +1237,10 @@ function Client:supports_method(method, bufnr)
return false
end
- -- if we don't know about the method, assume that the client supports it.
- -- This needs to be at the end, so that dynamic_capabilities are checked first
- return required_capability == nil
+ -- If we don't know about the method, or if it is a self-mapping(method=required_capability)
+ -- assume that the client supports it.
+ -- This needs to be at the end, so that dynamic_capabilities are checked first.
+ return required_capability == nil or is_self_mapping
end
--- Executes callback fn for all registrations for a given LSP method.