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