Skip to content

Commit b3292aa

Browse files
authored
npm-groovy-lint: Support stdin; add column number (#901)
1 parent ad83c4c commit b3292aa

File tree

1 file changed

+47
-8
lines changed

1 file changed

+47
-8
lines changed
Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,52 @@
1-
local pattern = "^%s+(%d+)%s+[^a-z]+m([a-z]+)[^a-z]+m%s+(.*)%s+(%w+)"
2-
local groups = { "lnum", "severity", "message", "code" }
31
local severity_map = {
4-
["info"] = vim.diagnostic.severity.INFO,
5-
["warning"] = vim.diagnostic.severity.WARN,
6-
["error"] = vim.diagnostic.severity.ERROR,
2+
info = vim.diagnostic.severity.INFO,
3+
warning = vim.diagnostic.severity.WARN,
4+
error = vim.diagnostic.severity.ERROR,
75
}
6+
local bin = "npm-groovy-lint"
87

98
return {
10-
cmd = "npm-groovy-lint",
11-
stdin = false,
12-
parser = require("lint.parser").from_pattern(pattern, groups, severity_map, { ["source"] = "npm-groovy-lint" }),
9+
cmd = bin,
10+
args = { "-o", "json", "-" },
11+
stdin = true,
12+
ignore_exitcode = true,
13+
parser = function(output, _)
14+
local diagnostics = {}
15+
if output == "" then
16+
return diagnostics
17+
end
18+
19+
local ok, decoded = pcall(vim.json.decode, output)
20+
if not ok or not decoded or not decoded.files then
21+
return diagnostics
22+
end
23+
24+
for _, file_data in pairs(decoded.files) do
25+
for _, err in ipairs(file_data.errors or {}) do
26+
local lnum = (err.line or 1) - 1
27+
local col = 0
28+
local end_lnum = nil
29+
local end_col = nil
30+
31+
if err.range then
32+
col = err.range.start.character or 0
33+
end_lnum = (err.range["end"].line or err.line) - 1
34+
end_col = err.range["end"].character
35+
end
36+
37+
table.insert(diagnostics, {
38+
source = bin,
39+
lnum = lnum,
40+
col = col,
41+
end_lnum = end_lnum,
42+
end_col = end_col,
43+
severity = severity_map[err.severity] or vim.diagnostic.severity.WARN,
44+
message = err.msg,
45+
code = err.rule,
46+
})
47+
end
48+
end
49+
50+
return diagnostics
51+
end,
1352
}

0 commit comments

Comments
 (0)