mirror of
https://github.com/NotAShelf/nvf.git
synced 2026-01-17 07:43:21 +00:00
Compare commits
5 commits
a3051d49aa
...
f830553166
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f830553166 | ||
|
|
8961142817 | ||
|
920f3c9670 |
|||
|
|
78efcd173c |
||
|
|
3b8595a263 |
6 changed files with 63 additions and 43 deletions
2
.github/workflows/check.yml
vendored
2
.github/workflows/check.yml
vendored
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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
6
flake.lock
generated
|
|
@ -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": {
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
env.RUSTC_BOOTSTRAP = true;
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-F1wh/TjYoiIbDY3J/prVF367MKk3vwM7LqOpRobOs7I=";
|
||||
cargoHash = "sha256-MWElqh7ENJ6CbLOnvz0DsP5YYu+e+y12GSUOfW1IKGU=";
|
||||
|
||||
nativeBuildInputs = [gitMinimal];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
'';
|
||||
};
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue