我正在寻找在 Neovim 的 lualine 中添加当前的 lsp 客户端。我以为我会使用
vim.lsp.get_active_clients()
但我无法从该数据中获取名称。看起来名字应该在里面...
我引用了这些文档: https://neovim.io/doc/user/lsp.html#vim.lsp.get_active_clients() https://neovim.io/doc/user/lsp.html#lsp-client
我正在我的代码中尝试这个:
local function lsp_client()
local clients = vim.lsp.get_active_clients()
if (clients ~= nil) then
return dump(clients)
else
return "No Client Found"
end
end
-- Table to String for printing
function dump(o)
if type(o) == 'table' then
local s = '{ '
for k, v in pairs(o) do
if type(k) ~= 'number' then k = '"' .. k .. '"' end
s = s .. '[' .. k .. '] = ' .. dump(v) .. ','
end
return s .. '} '
else
return tostring(o)
end
end
转储功能在我的
utilities.lua
文件中。我可以访问它,它从表中给我一个字符串,但我只想要 lsp 客户端的名称。我可以做些什么不同的事情?
我使用以下
lualine
插件配置来显示当前缓冲区的 LSP 客户端:
-- LSP clients attached to buffer
local clients_lsp = function ()
local bufnr = vim.api.nvim_get_current_buf()
local clients = vim.lsp.buf_get_clients(bufnr)
if next(clients) == nil then
return ''
end
local c = {}
for _, client in pairs(clients) do
table.insert(c, client.name)
end
return '\u{f085} ' .. table.concat(c, '|')
end
local config = {
(...)
sections = {
lualine_a = { 'mode' },
lualine_b = { branch, filename },
lualine_c = { clients_lsp, diagnostics, },
(...)
},
}
lualine.setup(config)
好的,这就是我所做的:
在我的 lualine.lua 文件中
local function lsp_clients()
local clients = vim.lsp.get_active_clients()
local clients_list = {}
for _, client in pairs(clients) do
table.insert(clients_list, client.name)
end
return 'LSP: ' .. utils.dump(clients_list)
end
在我的utils.lua文件中
-- Table to String for printing
function M.dump(o)
if type(o) == 'table' then
local s = ''
for k, v in pairs(o) do
if type(k) ~= 'number' then k = '"' .. k .. '"' end
--s = s .. '[' .. k .. '] = ' .. M.dump(v) .. ','
s = s .. M.dump(v) .. ','
end
return s
else
return tostring(o)
end
end