49 lines
1.1 KiB
Lua
49 lines
1.1 KiB
Lua
local utils = require("utils")
|
|
|
|
return {
|
|
"mfussenegger/nvim-lint",
|
|
config = function()
|
|
local function file_exists(name)
|
|
local f = io.open(name, "r")
|
|
if f ~= nil then
|
|
io.close(f)
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
local function decide_js_linter()
|
|
local cwd = vim.fn.getcwd()
|
|
if file_exists(cwd .. "/biome.json") or file_exists(cwd .. "/biome.jsonc") then
|
|
return "biomejs"
|
|
else
|
|
return "eslint_d"
|
|
end
|
|
end
|
|
|
|
local lint = require("lint")
|
|
|
|
lint.linters_by_ft = {
|
|
javascript = { decide_js_linter() },
|
|
javascriptreact = { decide_js_linter() },
|
|
markdown = { "markdownlint" },
|
|
python = { "flake8" },
|
|
sh = { "shellcheck" },
|
|
typescript = { decide_js_linter() },
|
|
typescriptreact = { decide_js_linter() },
|
|
}
|
|
|
|
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
|
|
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
|
|
group = lint_augroup,
|
|
callback = function()
|
|
lint.try_lint()
|
|
end,
|
|
})
|
|
|
|
utils.nmapkey("<leader>l", function()
|
|
lint.try_lint()
|
|
end, "Trigger linting for current file")
|
|
end,
|
|
}
|