feat(lsp): add client command support to codelens (#15820)

Also adds a check against the server capabilities to fix
https://github.com/neovim/neovim/issues/15183
This commit is contained in:
Mathias Fußenegger
2021-09-28 18:19:19 +02:00
committed by GitHub
parent ff18a8bcc4
commit 19a77cd5a7
2 changed files with 43 additions and 1 deletions

View File

@@ -58,5 +58,33 @@ describe('vim.lsp.codelens', function()
]], bufnr)
eq({[1] = {'Lens1', 'LspCodeLens'}}, virtual_text_chunks)
end)
it('codelens uses client commands', function()
local fake_uri = "file:///fake/uri"
local cmd = exec_lua([[
fake_uri = ...
local bufnr = vim.uri_to_bufnr(fake_uri)
vim.fn.bufload(bufnr)
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, {'One line'})
local lenses = {
{
range = {
start = { line = 0, character = 0, },
['end'] = { line = 0, character = 8 }
},
command = { title = 'Lens1', command = 'Dummy' }
},
}
vim.lsp.codelens.on_codelens(nil, lenses, {method='textDocument/codeLens', client_id=1, bufnr=bufnr})
local cmd_called = nil
vim.lsp.commands['Dummy'] = function(command)
cmd_called = command
end
vim.api.nvim_set_current_buf(bufnr)
vim.lsp.codelens.run()
return cmd_called
]], fake_uri)
eq({ command = 'Dummy', title = 'Lens1' }, cmd)
end)
end)