summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/wacky/plugins/linter-setup.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/wacky/plugins/linter-setup.lua')
-rw-r--r--.config/nvim/lua/wacky/plugins/linter-setup.lua30
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" }, {