aboutsummaryrefslogtreecommitdiff
path: root/store/config/nvim/lua/setup/plugins/lint.lua
diff options
context:
space:
mode:
Diffstat (limited to 'store/config/nvim/lua/setup/plugins/lint.lua')
-rw-r--r--store/config/nvim/lua/setup/plugins/lint.lua32
1 files changed, 28 insertions, 4 deletions
diff --git a/store/config/nvim/lua/setup/plugins/lint.lua b/store/config/nvim/lua/setup/plugins/lint.lua
index 23ede70..b33db22 100644
--- a/store/config/nvim/lua/setup/plugins/lint.lua
+++ b/store/config/nvim/lua/setup/plugins/lint.lua
@@ -1,3 +1,7 @@
+--- spellchecker: words markdownlintrc
+
+---@alias CruLinter { name: string, config_patterns: string[], filetypes: string[] | nil, fast: boolean }
+
local cspell = {
name = "cspell",
config_patterns = {
@@ -29,8 +33,29 @@ local markdownlint = {
fast = true,
}
-local linters = { cspell, markdownlint }
+local linters = { cspell = cspell, markdownlint = markdownlint }
+
+---@param linter CruLinter
+---@param buf integer
+---@return string | nil
+local function find_config(linter, buf)
+ local files = vim.fs.find(linter.config_patterns, {
+ path = vim.api.nvim_buf_get_name(buf), upward = true })
+ if #files ~= 0 then
+ return files[1];
+ end
+ return nil
+end
+
+vim.list_extend(require("lint.linters.markdownlint").args, {
+ "--config",
+ function()
+ return find_config(markdownlint, 0);
+ end
+})
+---@param linter CruLinter
+---@param buf integer
function vim.crupest.lint(linter, buf)
if linter.filetypes then
local filetype = vim.api.nvim_get_option_value("filetype", { buf = buf })
@@ -39,14 +64,13 @@ function vim.crupest.lint(linter, buf)
end
end
- if 0 ~= #vim.fs.find(linter.config_patterns, {
- path = vim.api.nvim_buf_get_name(buf), upward = true }) then
+ if find_config(linter, buf) then
require("lint").try_lint(linter.name)
end
end
function vim.crupest.lint_all(buf, fast)
- for _, linter in ipairs(linters) do
+ for _, linter in pairs(linters) do
if not fast or linter.fast then
vim.crupest.lint(linter, buf)
end