From 8772b124fa34b8e8ee35454afbe4c4f33ffd27f7 Mon Sep 17 00:00:00 2001 From: DACHXY Date: Sat, 26 Apr 2025 21:15:41 +0800 Subject: [PATCH] feat: verilog lsp --- home/config/nvim/lua/plugins/conform.lua | 12 +++++++++++ home/config/nvim/lua/plugins/lsp.lua | 2 +- home/config/nvim/lua/plugins/nvim-lint.lua | 24 ++++++++++++++++++++++ home/user/nvim.nix | 6 ++---- 4 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 home/config/nvim/lua/plugins/nvim-lint.lua diff --git a/home/config/nvim/lua/plugins/conform.lua b/home/config/nvim/lua/plugins/conform.lua index 523022b..2f67ff7 100644 --- a/home/config/nvim/lua/plugins/conform.lua +++ b/home/config/nvim/lua/plugins/conform.lua @@ -5,6 +5,18 @@ return { formatters_by_ft = { json = { "prettierd", "prettier", stop_after_first = true }, jsonc = { "prettierd", "prettier", stop_after_first = true }, + verilog = { "verible" }, + }, + formatters = { + verible = { + command = "verible-verilog-format", + args = { "-" }, + range_args = function(self, ctx) + return { "--lines", ctx.range.start[1] .. "-" .. ctx.range["end"][1] } + end, + stdin = true, + cwd = require("conform.util").root_file({ ".git" }), + }, }, }, }, diff --git a/home/config/nvim/lua/plugins/lsp.lua b/home/config/nvim/lua/plugins/lsp.lua index cd7079f..212bd50 100644 --- a/home/config/nvim/lua/plugins/lsp.lua +++ b/home/config/nvim/lua/plugins/lsp.lua @@ -100,7 +100,7 @@ return { root_dir = function(fname) return vim.fs.dirname(vim.fs.find(".git", { path = fname, upward = true })[1]) end, - cmd = { "svls" }, + cmd = { "verible-verilog-ls", "--rules_config_search" }, filetypes = { "verilog", "systemverilog" }, }, }, diff --git a/home/config/nvim/lua/plugins/nvim-lint.lua b/home/config/nvim/lua/plugins/nvim-lint.lua new file mode 100644 index 0000000..f358382 --- /dev/null +++ b/home/config/nvim/lua/plugins/nvim-lint.lua @@ -0,0 +1,24 @@ +local pattern = "[^:]+:(%d+):(%d+):(%w+):(.+)" +local groups = { "lnum", "col", "code", "message" } + +return { + { + "mfussenegger/nvim-lint", + opts = { + linters_by_ft = { + -- verilog = { "verible" }, + }, + linters = { + verible = { + cmd = "verible-verilog-lint", + stdin = false, + args = { "--rules_config_search" }, + stream = nil, + ignore_exitcode = false, + env = nil, + parser = require("lint.parser").from_pattern(pattern, groups), + }, + }, + }, + }, +} diff --git a/home/user/nvim.nix b/home/user/nvim.nix index 951ff53..d79898d 100644 --- a/home/user/nvim.nix +++ b/home/user/nvim.nix @@ -44,6 +44,8 @@ in prettierd black + # SystemVerilog + verible ]; programs.neovim = { @@ -87,10 +89,6 @@ in taplo zls vscode-js-debug - - # SystemVerilog - svls - svlint ]; plugins = with pkgs.vimPlugins; [