feat(nvim): install symbol-usage.nvim
Some checks failed
Check Formatting of Files / Check-Formatting (push) Has been cancelled
Some checks failed
Check Formatting of Files / Check-Formatting (push) Has been cancelled
This commit is contained in:
parent
9df598b550
commit
7a96d46c76
@ -0,0 +1,75 @@
|
||||
return {
|
||||
{
|
||||
"Wansmer/symbol-usage.nvim",
|
||||
event = "LspAttach",
|
||||
config = function()
|
||||
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 })
|
||||
vim.api.nvim_set_hl(0, "SymbolUsageContent", { bg = h("CursorLine").bg, fg = h("Comment").fg })
|
||||
vim.api.nvim_set_hl(0, "SymbolUsageRef", { fg = h("Function").fg, bg = h("CursorLine").bg })
|
||||
vim.api.nvim_set_hl(0, "SymbolUsageDef", { fg = h("Type").fg, bg = h("CursorLine").bg })
|
||||
vim.api.nvim_set_hl(0, "SymbolUsageImpl", { fg = h("@keyword").fg, bg = h("CursorLine").bg })
|
||||
|
||||
local function text_format(symbol)
|
||||
local res = {}
|
||||
|
||||
local round_start = { "", "SymbolUsageRounding" }
|
||||
local round_end = { "", "SymbolUsageRounding" }
|
||||
|
||||
-- Indicator that shows if there are any other symbols in the same line
|
||||
local stacked_functions_content = symbol.stacked_count > 0 and ("+%s"):format(symbol.stacked_count)
|
||||
or ""
|
||||
|
||||
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
|
||||
|
||||
if stacked_functions_content ~= "" then
|
||||
if #res > 0 then
|
||||
table.insert(res, { " ", "NonText" })
|
||||
end
|
||||
table.insert(res, round_start)
|
||||
table.insert(res, { " ", "SymbolUsageImpl" })
|
||||
table.insert(res, { stacked_functions_content, "SymbolUsageContent" })
|
||||
table.insert(res, round_end)
|
||||
end
|
||||
|
||||
return res
|
||||
end
|
||||
|
||||
require("symbol-usage").setup({
|
||||
text_format = text_format,
|
||||
vt_position = "end_of_line",
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
Loading…
Reference in New Issue
Block a user