dotfiles/.config/nvim/lua/plugins/extras/lsp/lens.lua
Sergio Laín 6b4097cb53
feat(nvim): added actions-preview and glance as lsp extras instead of dependencies
had a lot of trouble with the init function...
2023-11-26 13:33:48 +01:00

84 lines
2.5 KiB
Lua

local function h(name)
return vim.api.nvim_get_hl(0, { name = name })
end
-- hl-groups can have any name
vim.api.nvim_set_hl(0, "SymbolUsageRounding", { fg = h("CursorLine").bg, italic = true })
vim.api.nvim_set_hl(0, "SymbolUsageContent", { bg = h("CursorLine").bg, fg = h("Comment").fg, italic = true })
vim.api.nvim_set_hl(0, "SymbolUsageRef", { fg = h("Function").fg, bg = h("CursorLine").bg, italic = true })
vim.api.nvim_set_hl(0, "SymbolUsageDef", { fg = h("Type").fg, bg = h("CursorLine").bg, italic = true })
vim.api.nvim_set_hl(0, "SymbolUsageImpl", { fg = h("@keyword").fg, bg = h("CursorLine").bg, italic = true })
local function text_format(symbol)
local res = {}
local round_start = { "", "SymbolUsageRounding" }
local round_end = { "", "SymbolUsageRounding" }
if symbol.references then
local usage = symbol.references <= 1 and "usage" or "usages"
local num = symbol.references == 0 and "no" or symbol.references
table.insert(res, round_start)
table.insert(res, { "󰌹 ", "SymbolUsageRef" })
table.insert(res, { ("%s %s"):format(num, usage), "SymbolUsageContent" })
table.insert(res, round_end)
end
if symbol.definition then
if #res > 0 then
table.insert(res, { " ", "NonText" })
end
table.insert(res, round_start)
table.insert(res, { "󰳽 ", "SymbolUsageDef" })
table.insert(res, { symbol.definition .. " defs", "SymbolUsageContent" })
table.insert(res, round_end)
end
if symbol.implementation then
if #res > 0 then
table.insert(res, { " ", "NonText" })
end
table.insert(res, round_start)
table.insert(res, { "󰡱 ", "SymbolUsageImpl" })
table.insert(res, { symbol.implementation .. " impls", "SymbolUsageContent" })
table.insert(res, round_end)
end
return res
end
return {
{
"Wansmer/symbol-usage.nvim",
enabled = false,
event = function()
if vim.fn.has("nvim-0.10") == 1 then
return "LspAttach"
else
return "BufRead"
end
end,
opts = {
text_format = text_format,
},
},
{
"VidocqH/lsp-lens.nvim",
event = "LspAttach",
opts = {
sections = {
definition = false,
references = function(count)
return "󰌹 Ref: " .. count
end,
implements = function(count)
return "󰡱 Imp: " .. count
end,
git_authors = false,
},
},
keys = {
{ "<leader>ue", "<cmd>LspLensToggle<cr>", desc = "Toggle Lsp Lens" },
},
},
}