return { 'mfussenegger/nvim-lint', lazy = false, config = function() local lint = require('lint') lint.linters_by_ft = { -- c = { 'clangtidy' }, -- cpp = { 'clangtidy' }, -- go = { 'golangcilint' }, -- python = { 'flake8' }, -- json = { 'jsonlint' }, -- bash = { 'shellcheck' }, } vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave', 'TextChanged', 'TextChangedI' }, { group = vim.api.nvim_create_augroup('nvim-lint', { clear = true }), callback = function() require('lint').try_lint() end, }) -- NOTE: most if not all of clangt-idy warnings are -- also reported by clangd, so this function filters clang-tidy warnings -- to avoid duplication of warnings -- local clangtidy_parser = lint.linters.clangtidy.parser -- lint.linters.clangtidy.parser = function(output, bufnr, linter_cwd) -- local diagnostics = clangtidy_parser(output, bufnr, linter_cwd) -- diagnostics = vim.tbl_filter(function(diagnostic) -- if diagnostic.severity == vim.diagnostic.severity.WARN then -- return false -- end -- if diagnostic.severity == vim.diagnostic.severity.ERROR then -- return false -- end -- -- return true -- end, diagnostics) -- return diagnostics -- end end, }