kickstart.nvim/lua/kickstart/plugins/lint.lua

44 lines
1.4 KiB
Lua

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()
-- Only run the linter in buffers that you can modify in order to
-- avoid superfluous noise, notably within the handy LSP pop-ups that
-- describe the hovered symbol using Markdown.
if vim.bo.modifiable then
lint.try_lint()
end
end,
})
end,
},
}