mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
feat(lsp): show server name in code actions #30830
Problem: If there are multiple LSP clients, it's not clear which actions are provided by which servers. #30710 Solution: Show the server name next to each action (only if there are multiple clients).
This commit is contained in:
parent
e265363a88
commit
ce678043e3
@ -182,6 +182,8 @@ LSP
|
||||
• |vim.lsp.buf.format()| now supports passing a list of ranges
|
||||
via the `range` parameter (this requires support for the
|
||||
`textDocument/rangesFormatting` request).
|
||||
• |vim.lsp.buf.code_action()| actions show client name when there are multiple
|
||||
clients.
|
||||
|
||||
LUA
|
||||
|
||||
|
@ -827,11 +827,19 @@ local function on_code_action_results(results, opts)
|
||||
return
|
||||
end
|
||||
|
||||
---@param item {action: lsp.Command|lsp.CodeAction}
|
||||
---@param item {action: lsp.Command|lsp.CodeAction, ctx: lsp.HandlerContext}
|
||||
local function format_item(item)
|
||||
local title = item.action.title:gsub('\r\n', '\\r\\n')
|
||||
return title:gsub('\n', '\\n')
|
||||
local clients = vim.lsp.get_clients({ bufnr = item.ctx.bufnr })
|
||||
local title = item.action.title:gsub('\r\n', '\\r\\n'):gsub('\n', '\\n')
|
||||
|
||||
if #clients == 1 then
|
||||
return title
|
||||
end
|
||||
|
||||
local source = vim.lsp.get_client_by_id(item.ctx.client_id).name
|
||||
return ('%s [%s]'):format(title, source)
|
||||
end
|
||||
|
||||
local select_opts = {
|
||||
prompt = 'Code actions:',
|
||||
kind = 'codeaction',
|
||||
|
Loading…
Reference in New Issue
Block a user