Dotfiles/site-modules/core/files/vim/plugin/lint.lua

48 lines
1.1 KiB
Lua
Raw Normal View History

2022-06-12 19:25:17 +00:00
local lint = require('lint')
local severities = {
error = vim.diagnostic.severity.ERROR,
info = vim.diagnostic.severity.WARN,
}
lint.linters.psalm = {
cmd = 'psalm',
stdin = false,
args = {
'--output-format=json',
'--show-info=true'
},
-- ignore_exitcode = true,
parser = function(output, _)
if vim.trim(output) == '' then
return {}
end
local errors = vim.json.decode(output)
local diagnostics = {}
for _, err in ipairs(errors or {}) do
table.insert(diagnostics, {
lnum = err.line_from - 1,
end_lnum = err.line_to - 1,
col = err.column_from - 1,
end_col = err.column_to - 1,
message = err.message,
source = 'psalm',
severity = assert(severities[err.severity], 'missing mapping for severity ' .. err.severity),
})
end
return diagnostics
end
}
lint.linters_by_ft = {
php = {'phpcs'},
typescript = {'eslint'},
javascript = {'eslint'},
typescriptreact = {'eslint'},
javascriptreact = {'eslint'},
}