diff --git a/lua/plugins/lang/nvim-lint.lua b/lua/plugins/lang/nvim-lint.lua index 613a72f..f179271 100644 --- a/lua/plugins/lang/nvim-lint.lua +++ b/lua/plugins/lang/nvim-lint.lua @@ -1,6 +1,5 @@ local lint = require('lint') --- Filetype to linters mapping lint.linters_by_ft = { javascript = { 'eslint_d' }, typescript = { 'eslint_d' }, @@ -14,35 +13,33 @@ lint.linters_by_ft = { yaml = { 'actionlint' }, } -local function lint(bufnr) - local linters = - vim.list_extend({ 'codespell', 'editorconfig-checker' }, require('lint')._resolve_linter_by_ft(vim.bo.filetype)) +local function run_lint(bufnr) + bufnr = bufnr or 0 + local ft = vim.bo[bufnr].filetype - local ctx = { filename = vim.api.nvim_buf_get_name(bufnr or 0) } + local linters = vim.list_extend({ 'codespell', 'editorconfig-checker' }, require('lint')._resolve_linter_by_ft(ft)) + + local ctx = { filename = vim.api.nvim_buf_get_name(bufnr) } ctx.dirname = vim.fn.fnamemodify(ctx.filename, ':h') linters = vim.tbl_filter(function(name) - local linter = require('lint').linters[name] + local linter = lint.linters[name] return vim.fn.executable(linter.cmd) == 1 - ---@diagnostic disable-next-line: undefined-field and not (type(linter) == 'table' and linter.condition and not linter.condition(ctx)) end, linters) if #linters > 0 then - require('lint').try_lint(linters) + lint.try_lint(linters) end end -lint() - local timer = assert(vim.uv.new_timer()) vim.api.nvim_create_autocmd({ 'BufReadPost', 'BufWritePost', 'InsertLeave' }, { callback = function(args) timer:start(100, 0, function() timer:stop() - vim.schedule(function() - lint(args.buf) + run_lint(args.buf) end) end) end,