return { { "mfussenegger/nvim-lint", event = { "BufReadPre", "BufNewFile" }, config = function() local lint = require("lint") lint.linters_by_ft = { -- brew install luacheck lua = { "luacheck" }, bash = { "shellcheck" }, sh = { "shellcheck" }, -- brew install tflint terraform = { "tflint" }, -- brew install markdownlint-cli2 markdown = { "markdownlint-cli2" }, -- go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.64.0 go = { "golangcilint" }, } 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", "d", function() if vim.diagnostic.config().virtual_lines then vim.diagnostic.config({ virtual_lines = false }) else vim.diagnostic.config({ virtual_lines = { current_line = true } }) end end, { desc = "Toggle inline diagnostics" }) end, }, }