Compare commits

...

5 commits

Author SHA1 Message Date
rice-cracker-dev
f830553166 nvim_lint: moved the function into a separate option "lint_function" 2025-04-14 18:01:52 +07:00
rice-cracker-dev
8961142817 Merge remote-tracking branch 'upstream/main' into lint-required-files 2025-04-14 16:54:37 +07:00
920f3c9670
ci: exclude npins directory in formatting check
Some checks are pending
Set up binary cache / cachix (default) (push) Waiting to run
Set up binary cache / cachix (maximal) (push) Waiting to run
Set up binary cache / cachix (nix) (push) Waiting to run
Treewide Checks / Validate flake (push) Waiting to run
Treewide Checks / Check formatting (push) Waiting to run
Treewide Checks / Check source tree for typos (push) Waiting to run
Treewide Checks / Validate documentation builds (push) Waiting to run
Treewide Checks / Validate hyperlinks in documentation sources (push) Waiting to run
Treewide Checks / Validate Editorconfig conformance (push) Waiting to run
2025-04-14 07:07:39 +03:00
Gerg-L
78efcd173c
flake: bump inputs (#831) 2025-04-14 04:06:24 +00:00
Alfarel
3b8595a263
completion/blink: fix fuzzy lib cargoHash (#829)
Some checks are pending
Set up binary cache / cachix (default) (push) Waiting to run
Set up binary cache / cachix (maximal) (push) Waiting to run
Set up binary cache / cachix (nix) (push) Waiting to run
Treewide Checks / Validate flake (push) Waiting to run
Treewide Checks / Check formatting (push) Waiting to run
Treewide Checks / Check source tree for typos (push) Waiting to run
Treewide Checks / Validate documentation builds (push) Waiting to run
Treewide Checks / Validate hyperlinks in documentation sources (push) Waiting to run
Treewide Checks / Validate Editorconfig conformance (push) Waiting to run
2025-04-13 18:20:30 +00:00
6 changed files with 63 additions and 43 deletions

View file

@ -37,7 +37,7 @@ jobs:
uses: DeterminateSystems/nix-installer-action@main
- name: Check formatting via Alejandra
run: nix run nixpkgs#alejandra -- -c .
run: nix run nixpkgs#alejandra -- --check . --exclude npins
check-typos:
name: "Check source tree for typos"

View file

@ -289,8 +289,9 @@
[rice-cracker-dev](https://github.com/rice-cracker-dev):
- `eslint_d` now checks for configuration files to load.
- Fixed an error where `eslint_d` fails to load.
- Added required files support for linters under `vim.diagnostics.nvim-lint.linters.*.required_files`.
- Fix an error where `eslint_d` fails to load.
- Add required files support for linters under `vim.diagnostics.nvim-lint.linters.*.required_files`.
- Add global function `nvf_lint` under `vim.diagnostics.nvim-lint.lint_function`.
[Sc3l3t0n](https://github.com/Sc3l3t0n):

6
flake.lock generated
View file

@ -38,11 +38,11 @@
},
"mnw": {
"locked": {
"lastModified": 1744497692,
"narHash": "sha256-ikWRNR/P/aKCCySZnUfF1W0u0t6rSoJgQgKeDdCBAK8=",
"lastModified": 1744592022,
"narHash": "sha256-QuWrCRiF3CUM99sgj3gXbIzB1IAVWS5IEfFHadbMA2g=",
"owner": "Gerg-L",
"repo": "mnw",
"rev": "c5322a2bf74c0066fd15ca35721561397a2e7eab",
"rev": "cf9e19413b6c2d995b55565cd99facf9c751b653",
"type": "github"
},
"original": {

View file

@ -14,7 +14,7 @@
env.RUSTC_BOOTSTRAP = true;
useFetchCargoVendor = true;
cargoHash = "sha256-F1wh/TjYoiIbDY3J/prVF367MKk3vwM7LqOpRobOs7I=";
cargoHash = "sha256-MWElqh7ENJ6CbLOnvz0DsP5YYu+e+y12GSUOfW1IKGU=";
nativeBuildInputs = [gitMinimal];
};

View file

@ -29,40 +29,7 @@ in {
end
end
function nvf_lint(buf)
local ft = vim.api.nvim_get_option_value("filetype", { buf = buf })
local linters = require("lint").linters
local linters_from_ft = require("lint").linters_by_ft[ft]
-- if no linter is configured for this filetype, stops linting
if linters_from_ft == nil then return end
for _, name in ipairs(linters_from_ft) do
local linter = linters[name]
assert(linter, 'Linter with name `' .. name .. '` not available')
if type(linter) == "function" then
linter = linter()
end
-- for require("lint").lint() to work, linter.name must be set
linter.name = linter.name or name
local cwd = linter.required_files
-- if no configuration files are configured, lint
if cwd == nil then
require("lint").lint(linter)
else
-- if configuration files are configured and present in the project, lint
for _, fn in ipairs(cwd) do
local path = vim.fs.joinpath(linter.cwd or vim.fn.getcwd(), fn);
if vim.uv.fs_stat(path) then
require("lint").lint(linter)
break
end
end
end
end
end
nvf_lint = ${toLuaObject cfg.lint_function}
'';
};
})

View file

@ -1,7 +1,8 @@
{lib, ...}: let
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.options) mkOption mkEnableOption literalExpression;
inherit (lib.types) nullOr attrsOf listOf str either submodule bool enum;
inherit (lib.nvim.types) luaInline;
inherit (lib.generators) mkLuaInline;
linterType = submodule {
options = {
@ -73,8 +74,11 @@
required_files = mkOption {
type = nullOr (listOf str);
default = null;
description = "Required files to lint. These files must exist relative to the cwd of the linter or else this linter will be skipped";
example = ["eslint.config.js"];
description = ''
Required files to lint. These files must exist relative to the cwd
of the linter or else this linter will be skipped
'';
};
};
};
@ -124,5 +128,53 @@ in {
};
lint_after_save = mkEnableOption "autocmd to lint after each save" // {default = true;};
lint_function = mkOption {
type = luaInline;
default = mkLuaInline ''
function(buf)
local ft = vim.api.nvim_get_option_value("filetype", { buf = buf })
local linters = require("lint").linters
local linters_from_ft = require("lint").linters_by_ft[ft]
-- if no linter is configured for this filetype, stops linting
if linters_from_ft == nil then return end
for _, name in ipairs(linters_from_ft) do
local linter = linters[name]
assert(linter, 'Linter with name `' .. name .. '` not available')
if type(linter) == "function" then
linter = linter()
end
-- for require("lint").lint() to work, linter.name must be set
linter.name = linter.name or name
local cwd = linter.required_files
-- if no configuration files are configured, lint
if cwd == nil then
require("lint").lint(linter)
else
-- if configuration files are configured and present in the project, lint
for _, fn in ipairs(cwd) do
local path = vim.fs.joinpath(linter.cwd or vim.fn.getcwd(), fn);
if vim.uv.fs_stat(path) then
require("lint").lint(linter)
break
end
end
end
end
end
'';
example = literalExpression ''
mkLuaInline '''
function(buf)
require("lint").try_lint()
end
'''
'';
description = "Define the global function nvf_lint which is used by nvf to lint.";
};
};
}