diff options
author | Cédric Barreteau <cbarrete@users.noreply.github.com> | 2021-05-18 17:32:40 -0400 |
---|---|---|
committer | Cédric Barreteau <cbarrete@users.noreply.github.com> | 2021-05-19 11:55:03 -0400 |
commit | ca336c681d263cd52f2aba40a8d0b0646d5a9f3d (patch) | |
tree | c17d4e48a049a4b97f29935ac1fc6bb6c66c3f2e | |
parent | c46d9814619cee5183ea08989352d72fb9aaea5a (diff) | |
download | rneovim-ca336c681d263cd52f2aba40a8d0b0646d5a9f3d.tar.gz rneovim-ca336c681d263cd52f2aba40a8d0b0646d5a9f3d.tar.bz2 rneovim-ca336c681d263cd52f2aba40a8d0b0646d5a9f3d.zip |
lsp: handle unsupported call hierarchy call
-rw-r--r-- | runtime/lua/vim/lsp/buf.lua | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/runtime/lua/vim/lsp/buf.lua b/runtime/lua/vim/lsp/buf.lua index 341a3e82fc..5dd7109bb0 100644 --- a/runtime/lua/vim/lsp/buf.lua +++ b/runtime/lua/vim/lsp/buf.lua @@ -297,26 +297,30 @@ local function pick_call_hierarchy_item(call_hierarchy_items) return choice end +local function call_hierarchy(method) + local params = util.make_position_params() + request('textDocument/prepareCallHierarchy', params, function(err, _, result) + if err then + vim.notify(err.message, vim.log.levels.WARN) + return + end + local call_hierarchy_item = pick_call_hierarchy_item(result) + vim.lsp.buf_request(0, method, { item = call_hierarchy_item }) + end) +end + --- Lists all the call sites of the symbol under the cursor in the --- |quickfix| window. If the symbol can resolve to multiple --- items, the user can pick one in the |inputlist|. function M.incoming_calls() - local params = util.make_position_params() - request('textDocument/prepareCallHierarchy', params, function(_, _, result) - local call_hierarchy_item = pick_call_hierarchy_item(result) - vim.lsp.buf_request(0, 'callHierarchy/incomingCalls', { item = call_hierarchy_item }) - end) + call_hierarchy('callHierarchy/incomingCalls') end --- Lists all the items that are called by the symbol under the --- cursor in the |quickfix| window. If the symbol can resolve to --- multiple items, the user can pick one in the |inputlist|. function M.outgoing_calls() - local params = util.make_position_params() - request('textDocument/prepareCallHierarchy', params, function(_, _, result) - local call_hierarchy_item = pick_call_hierarchy_item(result) - vim.lsp.buf_request(0, 'callHierarchy/outgoingCalls', { item = call_hierarchy_item }) - end) + call_hierarchy('callHierarchy/outgoingCalls') end --- List workspace folders. |