diff --git a/nvim/init.lua b/nvim/init.lua index 77d43f1..a97f2e7 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -29,14 +29,6 @@ vim.opt.rtp:prepend(lazypath) -- NOTE: Here is where you install your plugins. require('lazy').setup({ - { - '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() - end, - }, - --------------------------------------------- -- Установлены из коробки в kickstart.nvim -- --------------------------------------------- @@ -105,6 +97,9 @@ require('lazy').setup({ -- Multicursor plugin require 'custom.plugins.multicursor', + -- Symbol usage plugin + require 'custom.plugins.symbol_usage', + -- Autoformat markdown tables { 'Kicamon/markdown-table-mode.nvim', diff --git a/nvim/lua/custom/plugins/symbol_usage.lua b/nvim/lua/custom/plugins/symbol_usage.lua new file mode 100644 index 0000000..e7fd090 --- /dev/null +++ b/nvim/lua/custom/plugins/symbol_usage.lua @@ -0,0 +1,39 @@ +-- 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, + }, +}