return { { "mfussenegger/nvim-lint", event = { "BufReadPre", "BufNewFile", }, config = function() require("mason-tool-installer").setup({ ensure_installed = { "prettier", -- prettier formatter -- "stylua", -- lua formatter "isort", -- python formatter "black", -- python formatter "pylint", -- python linter "biome", -- js linter }, }) local lint = require("lint") lint.linters_by_ft = { javascript = { "biomejs" }, typescript = { "biomejs" }, javascriptreact = { "biomejs" }, typescriptreact = { "biomejs" }, svelte = { "biomejs" }, python = { "pylint" }, markdown = { "proselint" }, } --###### ESLINT HACK ###### local eslint = lint.linters.eslint_d eslint.args = { "--no-warn-ignored", -- <-- this is the key argument "--format", "json", "--stdin", "--stdin-filename", function() return vim.api.nvim_buf_get_name(0) end, } --##### END ESLINT HACK ###### 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" }) vim.keymap.set("n", "L", function() vim.diagnostic.open_float() end, { desc = "Open diagnostic in pop-up" }) end, }, { "WhoIsSethDaniel/toggle-lsp-diagnostics.nvim", config = function() require("toggle_lsp_diagnostics").init({ start_on = true, }) end, }, }