48 lines
1.0 KiB
Lua

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_linter()
local cwd = vim.fn.getcwd()
if file_exists(cwd .. "/biome.json") then
return "biomejs"
else
return "eslint_d"
end
end
local lint = require("lint")
lint.linters_by_ft = {
javascript = { decide_linter() },
javascriptreact = { decide_linter() },
markdown = { "markdownlint" },
python = { "flake8" },
sh = { "shellcheck" },
typescript = { decide_linter() },
typescriptreact = { decide_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,
})
vim.keymap.set("n", "<leader>l", function()
lint.try_lint()
end, { desc = "Trigger linting for current file" })
end,
}