return { { -- Linting 'mfussenegger/nvim-lint', event = { 'BufReadPre', 'BufNewFile' }, config = function() local lint = require 'lint' lint.linters_by_ft = { markdown = { 'markdownlint' }, javascript = { 'eslint' }, javascriptreact = { 'eslint' }, typescript = { 'eslint' }, typescriptreact = { 'eslint' }, } -- Check if eslint is installed before setting it as a linter local function is_executable(name) return vim.fn.executable(name) == 1 end if not is_executable 'eslint' then lint.linters_by_ft.javascript = nil lint.linters_by_ft.javascriptreact = nil lint.linters_by_ft.typescript = nil lint.linters_by_ft.typescriptreact = nil end -- Create autocommand which carries out the actual linting -- on the specified events. local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true }) vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, { group = lint_augroup, callback = function() require('lint').try_lint() end, }) end, }, }