local utils = require("utils") return { "mfussenegger/nvim-lint", config = function() local lint = require("lint") local function decide_js_linter() if utils.cwd_is_biome() then return "biomejs" else return "eslint_d" end end lint.linters_by_ft = { haskell = { "hlint" }, 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, }) vim.api.nvim_create_autocmd({ "BufWritePost", "BufEnter" }, { group = vim.api.nvim_create_augroup("lint", { clear = true }), callback = function(args) if not utils.buf_is_obsidian(args.buf) then lint.try_lint() end end, }) utils.nmapkey("l", function() lint.try_lint() end, "Trigger linting for current file") end, }