diff options
Diffstat (limited to '.config/nvim/lsp/svlangserver.lua')
-rw-r--r-- | .config/nvim/lsp/svlangserver.lua | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/.config/nvim/lsp/svlangserver.lua b/.config/nvim/lsp/svlangserver.lua new file mode 100644 index 0000000..83fc35b --- /dev/null +++ b/.config/nvim/lsp/svlangserver.lua @@ -0,0 +1,42 @@ +---@brief +--- +--- https://github.com/imc-trading/svlangserver +--- +--- Language server for SystemVerilog. +--- +--- `svlangserver` can be installed via `npm`: +--- +--- ```sh +--- $ npm install -g @imc-trading/svlangserver +--- ``` + +---@type vim.lsp.Config +return { + cmd = { 'svlangserver' }, + filetypes = { 'verilog', 'systemverilog' }, + root_markers = { '.svlangserver', '.git' }, + settings = { + systemverilog = { + includeIndexing = { '*.{v,vh,sv,svh}', '**/*.{v,vh,sv,svh}' }, + }, + }, + on_attach = function(client, bufnr) + vim.api.nvim_buf_create_user_command(bufnr, 'LspSvlangserverBuildIndex', function() + client:exec_cmd({ + title = 'Build Index', + command = 'systemverilog.build_index', + }, { bufnr = bufnr }) + end, { + desc = 'Instructs language server to rerun indexing', + }) + vim.api.nvim_buf_create_user_command(bufnr, 'LspSvlangserverReportHierarchy', function() + client:exec_cmd({ + title = 'Build Index', + command = 'systemverilog.build_index', + arguments = { vim.fn.expand '<cword>' }, + }, { bufnr = bufnr }) + end, { + desc = 'Generates hierarchy for the given module', + }) + end, +} |