diff options
Diffstat (limited to '.config/nvim/lua/wacky/plugins/linter-setup.lua')
| -rw-r--r-- | .config/nvim/lua/wacky/plugins/linter-setup.lua | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/.config/nvim/lua/wacky/plugins/linter-setup.lua b/.config/nvim/lua/wacky/plugins/linter-setup.lua index f00ab2c..1ddbbb5 100644 --- a/.config/nvim/lua/wacky/plugins/linter-setup.lua +++ b/.config/nvim/lua/wacky/plugins/linter-setup.lua @@ -5,6 +5,36 @@ require("lint").linters_by_ft = { typescript = { "eslint_d" }, javascriptreact = { "eslint_d" }, typescriptreact = { "eslint_d" }, + jac = { "jaclint" }, +} + +require("lint").linters.jaclint = { + cmd = "sh", + args = { "-c", 'jac lint --no-fix "$1" || true', "--" }, + stdin = false, + parser = function(output, bufnr) + if not output or output == "" then + return {} + end + local diagnostics = {} + local cleaned = output:gsub("✖ Error: ", ""):gsub("\ncol ", " col ") + for line in vim.gsplit(cleaned, "\n", { plain = true }) do + local file, line_num, col, message = line:match("(.+), line (%d+), col (%d+): (.+)") + if file and line_num and col and message then + table.insert(diagnostics, { + bufnr = bufnr, + lnum = tonumber(line_num) - 1, + col = tonumber(col) - 1, + end_lnum = tonumber(line_num) - 1, + end_col = tonumber(col), + severity = vim.diagnostic.severity.ERROR, + message = message, + source = "jaclint", + }) + end + end + return diagnostics + end, } vim.api.nvim_create_autocmd({ "BufWritePost" }, { |
