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("l", function() lint.try_lint() end, "Trigger linting for current file") end, }