chore: adapt lsp request handler for nvim >= 0.5.1

https://github.com/neovim/neovim/pull/15504
This commit is contained in:
Omar Zeghouani
2021-09-07 11:55:46 +01:00
parent 02ce2dab13
commit 962ad42512
5 changed files with 36 additions and 7 deletions

View File

@@ -1,6 +1,7 @@
local vim = vim local vim = vim
local main = require('symbols-outline') local main = require('symbols-outline')
local buf_request = require('symbols-outline.utils.lsp_utils').request
local M = {} local M = {}
@@ -24,7 +25,7 @@ function M.show_code_actions()
local params = get_action_params(node, main.state.code_win) local params = get_action_params(node, main.state.code_win)
vim.lsp.buf_request(params.bufnr, "textDocument/codeAction", params, buf_request(params.bufnr, "textDocument/codeAction", params,
vim.lsp.handlers["textDocument/codeAction"]) vim.lsp.handlers["textDocument/codeAction"])
end end

View File

@@ -2,6 +2,7 @@ local vim = vim
local main = require('symbols-outline') local main = require('symbols-outline')
local util = vim.lsp.util local util = vim.lsp.util
local buf_request = require('symbols-outline.utils.lsp_utils').request
local M = {} local M = {}
@@ -23,8 +24,8 @@ function M.show_hover()
local hover_params = get_hover_params(node, main.state.code_win) local hover_params = get_hover_params(node, main.state.code_win)
vim.lsp.buf_request(hover_params.bufnr, "textDocument/hover", hover_params, buf_request(hover_params.bufnr, "textDocument/hover", hover_params,
function(_, _, result, _, _, config) function(_, result, _, config)
if not (result and result.contents) then if not (result and result.contents) then
-- return { 'No information available' } -- return { 'No information available' }

View File

@@ -1,6 +1,7 @@
local vim = vim local vim = vim
local main = require('symbols-outline') local main = require('symbols-outline')
local config = require('symbols-outline.config') local config = require('symbols-outline.config')
local buf_request = require('symbols-outline.utils.lsp_utils').request
local M = {} local M = {}
@@ -103,8 +104,8 @@ local function update_hover()
if not node then return end if not node then return end
local params = get_hover_params(node, main.state.code_win) local params = get_hover_params(node, main.state.code_win)
vim.lsp.buf_request(params.bufnr, "textDocument/hover", params, buf_request(params.bufnr, "textDocument/hover", params,
function(err, _, result) function(err, result)
if err then print(vim.inspect(err)) end if err then print(vim.inspect(err)) end
local markdown_lines = {} local markdown_lines = {}
if result ~= nil then if result ~= nil then

View File

@@ -1,6 +1,7 @@
local vim = vim local vim = vim
local main = require('symbols-outline') local main = require('symbols-outline')
local buf_request = require('symbols-outline.utils.lsp_utils').request
local M = {} local M = {}
@@ -26,8 +27,8 @@ function M.rename()
params.newName = new_name params.newName = new_name
vim.lsp.buf_request(params.bufnr, "textDocument/rename", params, buf_request(params.bufnr, "textDocument/rename", params,
function(_, _, result) function(_, result)
if result ~= nil then if result ~= nil then
vim.lsp.util.apply_workspace_edit(result) vim.lsp.util.apply_workspace_edit(result)
end end

View File

@@ -2,6 +2,31 @@ local vim = vim
local M = {} local M = {}
-- callback args changed in Neovim 0.5.1/0.6. See:
-- https://github.com/neovim/neovim/pull/15504
local function mk_handler(fn)
return function(...)
local config_or_client_id = select(4, ...)
local is_new = type(config_or_client_id) ~= "number"
if is_new then
fn(...)
else
local err = select(1, ...)
local method = select(2, ...)
local result = select(3, ...)
local client_id = select(4, ...)
local bufnr = select(5, ...)
local config = select(6, ...)
fn(err, result, { method = method, client_id = client_id, bufnr = bufnr }, config)
end
end
end
-- from mfussenegger/nvim-lsp-compl@29a81f3
function M.request(bufnr, method, params, handler)
return vim.lsp.buf_request(bufnr, method, params, mk_handler(handler))
end
function M.is_buf_attached_to_lsp(bufnr) function M.is_buf_attached_to_lsp(bufnr)
local clients = vim.lsp.buf_get_clients(bufnr or 0) local clients = vim.lsp.buf_get_clients(bufnr or 0)
return clients ~= nil and #clients > 0 return clients ~= nil and #clients > 0