-- Symbol usage plugin local SymbolKind = vim.lsp.protocol.SymbolKind local function text_format(symbol) local fragments = {} -- Indicator that shows if there are any other symbols in the same line local stacked_functions = 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(fragments, ('%s %s'):format(num, usage)) end if symbol.definition then table.insert(fragments, symbol.definition .. ' defs') end if symbol.implementation then table.insert(fragments, symbol.implementation .. ' impls') end return table.concat(fragments, ', ') .. stacked_functions end return { { 'Wansmer/symbol-usage.nvim', event = 'LspAttach', -- need run before LspAttach if you use nvim 0.9. On 0.10 use 'LspAttach' config = function() require('symbol-usage').setup { text_format = text_format, kinds = { SymbolKind.Function, SymbolKind.Method, SymbolKind.Class, SymbolKind.Struct, SymbolKind.Variable, SymbolKind.Constant }, } end, }, }