aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp.lua
diff options
context:
space:
mode:
authorHirokazu Hata <h.hata.ai.t@gmail.com>2020-02-22 21:20:38 +0900
committerHirokazu Hata <h.hata.ai.t@gmail.com>2020-03-01 09:10:02 +0900
commit16262472cda88d0a4dc5c6729cfef36264569324 (patch)
treea2262b0ccd3a957c9f27114365dff0f835bbc71c /runtime/lua/vim/lsp.lua
parentf157fdef7eccba6601c6d3b1475847466b60c25b (diff)
downloadrneovim-16262472cda88d0a4dc5c6729cfef36264569324.tar.gz
rneovim-16262472cda88d0a4dc5c6729cfef36264569324.tar.bz2
rneovim-16262472cda88d0a4dc5c6729cfef36264569324.zip
lsp: add 'textDocument/documentSymbol’ callback
Spec: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_documentSymbol
Diffstat (limited to 'runtime/lua/vim/lsp.lua')
-rw-r--r--runtime/lua/vim/lsp.lua9
1 files changed, 5 insertions, 4 deletions
diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua
index 23eac45046..8af20ea1f9 100644
--- a/runtime/lua/vim/lsp.lua
+++ b/runtime/lua/vim/lsp.lua
@@ -525,14 +525,15 @@ function lsp.start_client(config)
callback = resolve_callback(method)
or error("not found: request callback for client "..client.name)
end
- local _ = log.debug() and log.debug(log_prefix, "client.request", client_id, method, params, callback)
+ local _ = log.debug() and log.debug(log_prefix, "client.request", client_id, method, params, callback, bufnr)
-- TODO keep these checks or just let it go anyway?
if (not client.resolved_capabilities.hover and method == 'textDocument/hover')
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.implementation and method == 'textDocument/implementation')
+ or (not client.resolved_capabilities.document_symbol and method == 'textDocument/documentSymbol')
then
- callback(unsupported_method(method), method, nil, client_id)
+ callback(unsupported_method(method), method, nil, client_id, bufnr)
return
end
return rpc.request(method, params, function(err, result)
@@ -874,7 +875,7 @@ end
function lsp.buf_request_sync(bufnr, method, params, timeout_ms)
local request_results = {}
local result_count = 0
- local function _callback(err, _method, result, client_id, bufnr)
+ local function _callback(err, _method, result, client_id)
request_results[client_id] = { error = err, result = result }
result_count = result_count + 1
end
@@ -905,7 +906,7 @@ function lsp.buf_notify(bufnr, method, params)
method = { method, 's' };
}
local resp = false
- for_each_buffer_client(bufnr, function(client, _client_id)
+ for_each_buffer_client(bufnr, function(client, _client_id, _resolved_bufnr)
if client.rpc.notify(method, params) then resp = true end
end)
return resp