[backport release-0.9] backport #25464 (#25560)

feat(lsp): fallback to code-action command on resolve failure
This commit is contained in:
Christian Clason
2023-10-09 16:39:30 +02:00
committed by GitHub
parent 4f6e4c5447
commit 837f64f98a
2 changed files with 50 additions and 4 deletions

View File

@@ -3309,6 +3309,48 @@ describe('LSP', function()
end
}
end)
it("Fallback to command execution on resolve error", function()
clear()
exec_lua(create_server_definition)
local result = exec_lua([[
local server = _create_server({
capabilities = {
executeCommandProvider = {
commands = {"command:1"},
},
codeActionProvider = {
resolveProvider = true
}
},
handlers = {
["textDocument/codeAction"] = function()
return {
{
title = "Code Action 1",
command = {
title = "Command 1",
command = "command:1",
}
}
}
end,
["codeAction/resolve"] = function()
return nil, "resolve failed"
end,
}
})
local client_id = vim.lsp.start({
name = "dummy",
cmd = server.cmd,
})
vim.lsp.buf.code_action({ apply = true })
vim.lsp.stop_client(client_id)
return server.messages
]])
eq("codeAction/resolve", result[4].method)
eq("workspace/executeCommand", result[5].method)
eq("command:1", result[5].params.command)
end)
end)
describe('vim.lsp.commands', function()
it('Accepts only string keys', function()