mirror of
https://github.com/NotAShelf/nvf.git
synced 2026-06-22 20:43:27 +00:00
Revert "Factor out diagnostics like LSPs"
This commit is contained in:
parent
9ba45374ef
commit
6cddf8560b
55 changed files with 662 additions and 1023 deletions
|
|
@ -346,11 +346,6 @@
|
||||||
|
|
||||||
- Added `phpantom` LSP preset and into `languages.php`.
|
- Added `phpantom` LSP preset and into `languages.php`.
|
||||||
|
|
||||||
- Moved extra diagnostic modules under `diagnostics.presets.<name>` this will
|
|
||||||
allow for more flexibility in the future for nvf.
|
|
||||||
|
|
||||||
- Added {option}`vim.diagnostics.presets.cpplint.enable`.
|
|
||||||
|
|
||||||
- Added {option}`vim.treesitter.queries` to support adding custom queries.
|
- Added {option}`vim.treesitter.queries` to support adding custom queries.
|
||||||
|
|
||||||
- Added injections for `query = '' ... ''` as `query` and `mkLualine '' ... ''`,
|
- Added injections for `query = '' ... ''` as `query` and `mkLualine '' ... ''`,
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@
|
||||||
typesPlugin = import ./plugins.nix {inherit lib self;};
|
typesPlugin = import ./plugins.nix {inherit lib self;};
|
||||||
typesLanguage = import ./languages.nix {inherit lib;};
|
typesLanguage = import ./languages.nix {inherit lib;};
|
||||||
typesLsp = import ./lsp.nix {inherit lib;};
|
typesLsp = import ./lsp.nix {inherit lib;};
|
||||||
typesDiagnostics = import ./diagnostics.nix {inherit lib;};
|
|
||||||
customTypes = import ./custom.nix {inherit lib;};
|
customTypes = import ./custom.nix {inherit lib;};
|
||||||
in {
|
in {
|
||||||
inherit (typesDag) dagOf;
|
inherit (typesDag) dagOf;
|
||||||
inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType;
|
inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType;
|
||||||
inherit (typesLanguage) mkGrammarOption mkTreesitterGrammarOption;
|
inherit (typesLanguage) diagnostics mkGrammarOption mkTreesitterGrammarOption;
|
||||||
inherit (typesLsp) mkLspPresetEnableOption;
|
inherit (typesLsp) mkLspPresetEnableOption;
|
||||||
inherit (typesDiagnostics) mkDiagnosticsPresetEnableOption;
|
|
||||||
inherit (customTypes) char hexColor mergelessListOf deprecatedSingleOrListOf enumWithRename;
|
inherit (customTypes) char hexColor mergelessListOf deprecatedSingleOrListOf enumWithRename;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
{lib}: let
|
|
||||||
inherit (lib.options) mkEnableOption;
|
|
||||||
|
|
||||||
mkDiagnosticsPresetEnableOption = option: display:
|
|
||||||
mkEnableOption ''
|
|
||||||
the ${display} Diagnostics Provider.
|
|
||||||
Use {option}`vim.diagnostics.nvim-lint.linters.${option}` for customization
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
inherit mkDiagnosticsPresetEnableOption;
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +1,32 @@
|
||||||
{lib}: let
|
{lib}: let
|
||||||
inherit (lib.options) mkPackageOption;
|
inherit (lib.options) mkOption mkPackageOption;
|
||||||
|
inherit (lib.attrsets) attrNames;
|
||||||
|
inherit (lib.types) listOf either enum submodule package;
|
||||||
|
|
||||||
|
diagnosticSubmodule = _: {
|
||||||
|
options = {
|
||||||
|
type = mkOption {
|
||||||
|
description = "Type of diagnostic to enable";
|
||||||
|
type = attrNames diagnostics;
|
||||||
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = package;
|
||||||
|
description = "Diagnostics package";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
diagnostics = {
|
||||||
|
langDesc,
|
||||||
|
diagnosticsProviders,
|
||||||
|
defaultDiagnosticsProvider,
|
||||||
|
}:
|
||||||
|
mkOption {
|
||||||
|
type = listOf (either (enum (attrNames diagnosticsProviders)) (submodule diagnosticSubmodule));
|
||||||
|
default = defaultDiagnosticsProvider;
|
||||||
|
description = "List of ${langDesc} diagnostics to enable";
|
||||||
|
};
|
||||||
|
|
||||||
mkGrammarOption = pkgs: grammar:
|
mkGrammarOption = pkgs: grammar:
|
||||||
mkPackageOption pkgs ["${grammar} treesitter"] {
|
mkPackageOption pkgs ["${grammar} treesitter"] {
|
||||||
|
|
@ -18,5 +45,5 @@
|
||||||
nullable = true;
|
nullable = true;
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
inherit mkGrammarOption mkTreesitterGrammarOption;
|
inherit diagnostics diagnosticSubmodule mkGrammarOption mkTreesitterGrammarOption;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -388,13 +388,5 @@ in {
|
||||||
nvim-tree.lua removed system_open and now uses Neovim's vim.ui.open().
|
nvim-tree.lua removed system_open and now uses Neovim's vim.ui.open().
|
||||||
'')
|
'')
|
||||||
]
|
]
|
||||||
|
|
||||||
# 2026-06-12
|
|
||||||
[
|
|
||||||
(mkRemovedOptionModule ["vim" "languages" "sql" "dialect"] ''
|
|
||||||
This option interfered with project level configurations.
|
|
||||||
Linters can still be customized via `vim.diagnostics.nvim-lint.<name>.args`
|
|
||||||
'')
|
|
||||||
]
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [./nvim-lint];
|
||||||
./nvim-lint
|
|
||||||
./presets
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.biomejs;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.biomejs = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "biomejs" "Biome";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.biomejs.cmd = getExe pkgs.biome;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.checkmake;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.checkmake = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "checkmake" "Checkmake";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.checkmake.cmd = getExe pkgs.checkmake;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.cpplint;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.cpplint = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "cpplint" "cpplint";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.cpplint.cmd = getExe pkgs.cpplint;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.deadnix;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.deadnix = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "deadnix" "Deadnix";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.deadnix.cmd = getExe pkgs.deadnix;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./biomejs.nix
|
|
||||||
./checkmake.nix
|
|
||||||
./cpplint.nix
|
|
||||||
./deadnix.nix
|
|
||||||
./djlint.nix
|
|
||||||
./dotenv-linter.nix
|
|
||||||
./eslint_d.nix
|
|
||||||
./golangci-lint.nix
|
|
||||||
./hadolint.nix
|
|
||||||
./htmlhint.nix
|
|
||||||
./ktlint.nix
|
|
||||||
./luacheck.nix
|
|
||||||
./markdownlint-cli2.nix
|
|
||||||
./mypy.nix
|
|
||||||
./phpstan.nix
|
|
||||||
./rubocop.nix
|
|
||||||
./rumdl.nix
|
|
||||||
./selene.nix
|
|
||||||
./shellcheck.nix
|
|
||||||
./sqlfluff.nix
|
|
||||||
./sqruff.nix
|
|
||||||
./statix.nix
|
|
||||||
./stylelint.nix
|
|
||||||
./taplo.nix
|
|
||||||
./tombi.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.djlint;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.djlint = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "djlint" "djLint";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.djlint.cmd = getExe pkgs.djlint;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.dotenv-linter;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.dotenv-linter = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "dotenv-linter" "Dotenv Linter";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.dotenv-linter.cmd = getExe pkgs.dotenv-linter;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.eslint_d;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.eslint_d = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "eslint_d" "Eslint Daemon";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.eslint_d = {
|
|
||||||
cmd = getExe pkgs.eslint_d;
|
|
||||||
required_files = [
|
|
||||||
"eslint.config.js"
|
|
||||||
"eslint.config.mjs"
|
|
||||||
".eslintrc"
|
|
||||||
".eslintrc.json"
|
|
||||||
".eslintrc.js"
|
|
||||||
".eslintrc.yml"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,114 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.generators) mkLuaInline;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.golangci-lint;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.golangci-lint = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "golangci-lint" "GolangCI Lint";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.golangci-lint = {
|
|
||||||
cmd = getExe pkgs.golangci-lint;
|
|
||||||
args = [
|
|
||||||
"run"
|
|
||||||
"--output.json.path=stdout"
|
|
||||||
"--issues-exit-code=0"
|
|
||||||
"--show-stats=false"
|
|
||||||
"--fix=false"
|
|
||||||
"--path-mode=abs"
|
|
||||||
# Overwrite values that could be configured and result in unwanted writes
|
|
||||||
"--output.text.path="
|
|
||||||
"--output.tab.path="
|
|
||||||
"--output.html.path="
|
|
||||||
"--output.checkstyle.path="
|
|
||||||
"--output.code-climate.path="
|
|
||||||
"--output.junit-xml.path="
|
|
||||||
"--output.teamcity.path="
|
|
||||||
"--output.sarif.path="
|
|
||||||
(mkLuaInline ''
|
|
||||||
-- Run on current file only if go.mod is missing
|
|
||||||
function()
|
|
||||||
local fnmod = ":p";
|
|
||||||
local cmd = {"${getExe pkgs.go}", "env", "GOMOD"};
|
|
||||||
local ok, gomod = pcall(vim.fn.system, cmd);
|
|
||||||
gomod = gomod:gsub("%s+", "")
|
|
||||||
if ok and gomod ~= "" and gomod ~= "/dev/null" then
|
|
||||||
fnmod = ":h";
|
|
||||||
end
|
|
||||||
return vim.fn.fnamemodify(vim.api.nvim_buf_get_name(0), fnmod)
|
|
||||||
end
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
append_fname = false;
|
|
||||||
parser = mkLuaInline ''
|
|
||||||
function(output, bufnr)
|
|
||||||
local SOURCE = "golangci-lint";
|
|
||||||
|
|
||||||
local function display_tool_error(msg)
|
|
||||||
return{
|
|
||||||
{
|
|
||||||
bufnr = bufnr,
|
|
||||||
lnum = 0,
|
|
||||||
col = 0,
|
|
||||||
message = string.format("[%s] %s", SOURCE, msg),
|
|
||||||
severity = vim.diagnostic.severity.ERROR,
|
|
||||||
source = SOURCE,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
if output == "" then
|
|
||||||
return display_tool_error("no output provided")
|
|
||||||
end
|
|
||||||
|
|
||||||
local ok, decoded = pcall(vim.json.decode, output)
|
|
||||||
if not ok then
|
|
||||||
return display_tool_error("failed to parse JSON output")
|
|
||||||
end
|
|
||||||
|
|
||||||
if not decoded or not decoded.Issues then
|
|
||||||
return display_tool_error("unexpected output format")
|
|
||||||
end
|
|
||||||
|
|
||||||
local severity_map = {
|
|
||||||
error = vim.diagnostic.severity.ERROR,
|
|
||||||
warning = vim.diagnostic.severity.WARN,
|
|
||||||
info = vim.diagnostic.severity.INFO,
|
|
||||||
hint = vim.diagnostic.severity.HINT,
|
|
||||||
}
|
|
||||||
local diagnostics = {}
|
|
||||||
for _, issue in ipairs(decoded.Issues) do
|
|
||||||
local sev = vim.diagnostic.severity.ERROR
|
|
||||||
if issue.Severity and issue.Severity ~= "" then
|
|
||||||
local normalized = issue.Severity:lower()
|
|
||||||
sev = severity_map[normalized] or vim.diagnostic.severity.ERROR
|
|
||||||
end
|
|
||||||
|
|
||||||
local buffer = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(bufnr), ":p")
|
|
||||||
if vim.fs.normalize(buffer) == vim.fs.normalize(issue.Pos.Filename) then
|
|
||||||
table.insert(diagnostics, {
|
|
||||||
bufnr = bufnr,
|
|
||||||
lnum = issue.Pos.Line - 1,
|
|
||||||
col = issue.Pos.Column - 1,
|
|
||||||
message = issue.Text,
|
|
||||||
code = issue.FromLinter,
|
|
||||||
severity = sev,
|
|
||||||
source = SOURCE,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return diagnostics
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.hadolint;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.hadolint = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "hadolint" "Hadolint";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.hadolint.cmd = getExe pkgs.hadolint;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.htmlhint;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.htmlhint = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "htmlhint" "HTMLHint";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.htmlhint.cmd = getExe pkgs.htmlhint;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.ktlint;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.ktlint = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "ktlint" "ktlint";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.ktlint.cmd = getExe pkgs.ktlint;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.luacheck;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.luacheck = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "luacheck" "Luacheck";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.luacheck.cmd = getExe pkgs.luajitPackages.luacheck;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.markdownlint-cli2;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.markdownlint-cli2 = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "markdownlint-cli2" "Markdownlint CLI 2";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.markdownlint-cli2.cmd = getExe pkgs.markdownlint-cli2;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe';
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.mypy;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.mypy = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "mypy" "Mypy";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.mypy.cmd = getExe' pkgs.mypy "mypy";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.phpstan;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.phpstan = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "phpstan" "PHPStan";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.phpstan.cmd = getExe pkgs.phpstan;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.rubocop;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.rubocop = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "rubocop" "RuboCop";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.rubocop.cmd = getExe pkgs.rubyPackages.rubocop;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.rumdl;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.rumdl = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "rumdl" "Rumdl";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.rumdl.cmd = getExe pkgs.rumdl;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.selene;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.selene = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "selene" "Selene";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.selene.cmd = getExe pkgs.selene;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.shellcheck;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.shellcheck = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "shellcheck" "Shellcheck";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.shellcheck.cmd = getExe pkgs.shellcheck;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.sqlfluff;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.sqlfluff = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "sqlfluff" "SQLFluff";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.sqlfluff = {
|
|
||||||
cmd = getExe pkgs.sqlfluff;
|
|
||||||
args = ["lint" "--format=json"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.sqruff;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.sqruff = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "sqruff" "Sqruff";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.sqruff = {
|
|
||||||
cmd = getExe pkgs.sqruff;
|
|
||||||
args = ["lint" "--format=json" "-"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.statix;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.statix = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "statix" "Statix";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.statix.cmd = getExe pkgs.statix;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.stylelint;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.stylelint = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "stylelint" "Stylelint";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.stylelint.cmd = getExe pkgs.stylelint;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.taplo;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.taplo = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "taplo" "Taplo";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.taplo = {
|
|
||||||
cmd = getExe pkgs.taplo;
|
|
||||||
args = ["lint"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
inherit (lib.nvim.types) mkDiagnosticsPresetEnableOption;
|
|
||||||
|
|
||||||
cfg = config.vim.diagnostics.presets.tombi;
|
|
||||||
in {
|
|
||||||
options.vim.diagnostics.presets.tombi = {
|
|
||||||
enable = mkDiagnosticsPresetEnableOption "tombi" "Tombi";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.diagnostics.nvim-lint.linters.tombi = {
|
|
||||||
cmd = getExe pkgs.tombi;
|
|
||||||
args = ["lint"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.types) enum coercedTo listOf;
|
inherit (lib.types) enum coercedTo listOf;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf enumWithRename;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf enumWithRename;
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.astro;
|
cfg = config.vim.languages.astro;
|
||||||
|
|
@ -35,7 +35,24 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["eslint_d"];
|
defaultDiagnosticsProvider = ["eslint_d"];
|
||||||
diagnosticsProviders = ["eslint_d"];
|
diagnosticsProviders = {
|
||||||
|
eslint_d = let
|
||||||
|
pkg = pkgs.eslint_d;
|
||||||
|
in {
|
||||||
|
package = pkg;
|
||||||
|
config = {
|
||||||
|
cmd = getExe pkg;
|
||||||
|
required_files = [
|
||||||
|
"eslint.config.js"
|
||||||
|
"eslint.config.mjs"
|
||||||
|
".eslintrc"
|
||||||
|
".eslintrc.json"
|
||||||
|
".eslintrc.js"
|
||||||
|
".eslintrc.yml"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
formatType =
|
formatType =
|
||||||
deprecatedSingleOrListOf
|
deprecatedSingleOrListOf
|
||||||
|
|
@ -96,16 +113,16 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Astro diagnostics via nvim-lint"
|
mkEnableOption "extra Astro diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
|
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Astro";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Astro diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -141,12 +158,12 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.astro = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters =
|
||||||
linters_by_ft.astro = cfg.extraDiagnostics.types;
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
||||||
};
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.types) enum bool listOf;
|
inherit (lib.types) enum bool listOf;
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf enumWithRename;
|
inherit (lib.nvim.types) diagnostics mkGrammarOption deprecatedSingleOrListOf enumWithRename;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.bash;
|
cfg = config.vim.languages.bash;
|
||||||
|
|
@ -26,7 +26,11 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["shellcheck"];
|
defaultDiagnosticsProvider = ["shellcheck"];
|
||||||
diagnosticsProviders = ["shellcheck"];
|
diagnosticsProviders = {
|
||||||
|
shellcheck = {
|
||||||
|
package = pkgs.shellcheck;
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.bash = {
|
options.vim.languages.bash = {
|
||||||
enable = mkEnableOption "Bash language support";
|
enable = mkEnableOption "Bash language support";
|
||||||
|
|
@ -76,16 +80,15 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Shell diagnostics via nvim-lint"
|
mkEnableOption "extra Bash diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
|
types = diagnostics {
|
||||||
types = mkOption {
|
langDesc = "Bash";
|
||||||
type = listOf (enum diagnosticsProviders);
|
inherit diagnosticsProviders;
|
||||||
default = defaultDiagnosticsProvider;
|
inherit defaultDiagnosticsProvider;
|
||||||
description = "extra Shell diagnostics providers";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -125,16 +128,13 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.sh = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters = mkMerge (map (name: {
|
||||||
linters_by_ft = {
|
${name}.cmd = getExe diagnosticsProviders.${name}.package;
|
||||||
sh = cfg.extraDiagnostics.types;
|
})
|
||||||
bash = cfg.extraDiagnostics.types;
|
cfg.extraDiagnostics.types);
|
||||||
zsh = cfg.extraDiagnostics.types;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -96,9 +96,6 @@
|
||||||
};
|
};
|
||||||
clang-format.command = getExe' pkgs.clang-tools "clang-format";
|
clang-format.command = getExe' pkgs.clang-tools "clang-format";
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["cpplint"];
|
|
||||||
diagnosticsProviders = ["cpplint"];
|
|
||||||
in {
|
in {
|
||||||
options.vim.languages.clang = {
|
options.vim.languages.clang = {
|
||||||
enable = mkEnableOption "C/C++ language support";
|
enable = mkEnableOption "C/C++ language support";
|
||||||
|
|
@ -171,21 +168,6 @@ in {
|
||||||
description = "C formatter to use";
|
description = "C formatter to use";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
extraDiagnostics = {
|
|
||||||
enable =
|
|
||||||
mkEnableOption "extra C/C++ diagnostics via nvim-lint"
|
|
||||||
// {
|
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
|
||||||
};
|
|
||||||
|
|
||||||
types = mkOption {
|
|
||||||
type = listOf (enum diagnosticsProviders);
|
|
||||||
default = defaultDiagnosticsProvider;
|
|
||||||
description = "extra C/C++ diagnostics providers";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
config = mkIf cfg.enable (mkMerge [
|
||||||
|
|
@ -229,18 +211,5 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
|
||||||
vim.diagnostics = {
|
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
|
||||||
nvim-lint = {
|
|
||||||
enable = true;
|
|
||||||
linters_by_ft = {
|
|
||||||
c = cfg.extraDiagnostics.types;
|
|
||||||
cpp = cfg.extraDiagnostics.types;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,13 @@
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.attrsets) attrNames genAttrs;
|
inherit (builtins) attrNames;
|
||||||
|
inherit (lib) genAttrs;
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.types) enum listOf;
|
inherit (lib.types) enum listOf;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.docker;
|
cfg = config.vim.languages.docker;
|
||||||
|
|
@ -25,7 +26,17 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["hadolint"];
|
defaultDiagnosticsProvider = ["hadolint"];
|
||||||
diagnosticsProviders = ["hadolint"];
|
diagnosticsProviders = {
|
||||||
|
hadolint = {
|
||||||
|
config.cmd = getExe (
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "hadolint";
|
||||||
|
runtimeInputs = [pkgs.hadolint];
|
||||||
|
text = "hadolint -";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.docker = {
|
options.vim.languages.docker = {
|
||||||
enable = mkEnableOption "Docker language support";
|
enable = mkEnableOption "Docker language support";
|
||||||
|
|
@ -70,16 +81,15 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Docker diagnostics via nvim-lint"
|
mkEnableOption "extra Dockerfile diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostic";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Dockerfile";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Docker diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -141,12 +151,15 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.dockerfile = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters = mkMerge (
|
||||||
linters_by_ft.dockerfile = cfg.extraDiagnostics.types;
|
map (name: {
|
||||||
};
|
${name} = diagnosticsProviders.${name}.config;
|
||||||
|
})
|
||||||
|
cfg.extraDiagnostics.types
|
||||||
|
);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -1,33 +1,42 @@
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.options) mkEnableOption literalExpression mkOption;
|
inherit (lib.options) mkEnableOption literalExpression;
|
||||||
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.attrsets) genAttrs;
|
inherit (lib.nvim.types) diagnostics;
|
||||||
inherit (lib.types) enum listOf;
|
|
||||||
|
|
||||||
cfg = config.vim.languages.env;
|
cfg = config.vim.languages.env;
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["dotenv-linter"];
|
defaultDiagnosticsProvider = ["dotenv-linter"];
|
||||||
diagnosticsProviders = ["dotenv-linter"];
|
diagnosticsProviders = {
|
||||||
|
dotenv-linter = let
|
||||||
|
pkg = pkgs.dotenv-linter;
|
||||||
|
in {
|
||||||
|
package = pkg;
|
||||||
|
config = {
|
||||||
|
cmd = getExe pkg;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.env = {
|
options.vim.languages.env = {
|
||||||
enable = mkEnableOption "Env language support";
|
enable = mkEnableOption "Env language support";
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Env diagnostics via nvim-lint"
|
mkEnableOption "extra Env diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostic";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
|
types = diagnostics {
|
||||||
types = mkOption {
|
langDesc = "Env";
|
||||||
type = listOf (enum diagnosticsProviders);
|
inherit diagnosticsProviders;
|
||||||
default = defaultDiagnosticsProvider;
|
inherit defaultDiagnosticsProvider;
|
||||||
description = "extra Env diagnostics providers";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -49,12 +58,12 @@ in {
|
||||||
}
|
}
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.env = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters =
|
||||||
linters_by_ft.env = cfg.extraDiagnostics.types;
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
||||||
};
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,9 @@
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
|
inherit (lib.generators) mkLuaInline;
|
||||||
inherit (lib.types) enum package str listOf;
|
inherit (lib.types) enum package str listOf;
|
||||||
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf mkPluginSetupOption;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf mkPluginSetupOption;
|
||||||
inherit (lib.nvim.dag) entryAfter;
|
inherit (lib.nvim.dag) entryAfter;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
|
|
@ -43,7 +44,107 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["golangci-lint"];
|
defaultDiagnosticsProvider = ["golangci-lint"];
|
||||||
diagnosticsProviders = ["golangci-lint"];
|
diagnosticsProviders = {
|
||||||
|
golangci-lint = let
|
||||||
|
pkg = pkgs.golangci-lint;
|
||||||
|
in {
|
||||||
|
package = pkg;
|
||||||
|
config = {
|
||||||
|
cmd = getExe pkg;
|
||||||
|
args = [
|
||||||
|
"run"
|
||||||
|
"--output.json.path=stdout"
|
||||||
|
"--issues-exit-code=0"
|
||||||
|
"--show-stats=false"
|
||||||
|
"--fix=false"
|
||||||
|
"--path-mode=abs"
|
||||||
|
# Overwrite values that could be configured and result in unwanted writes
|
||||||
|
"--output.text.path="
|
||||||
|
"--output.tab.path="
|
||||||
|
"--output.html.path="
|
||||||
|
"--output.checkstyle.path="
|
||||||
|
"--output.code-climate.path="
|
||||||
|
"--output.junit-xml.path="
|
||||||
|
"--output.teamcity.path="
|
||||||
|
"--output.sarif.path="
|
||||||
|
(mkLuaInline ''
|
||||||
|
-- Run on current file only if go.mod is missing
|
||||||
|
function()
|
||||||
|
local fnmod = ":p";
|
||||||
|
local cmd = {"${getExe pkgs.go}", "env", "GOMOD"};
|
||||||
|
local ok, gomod = pcall(vim.fn.system, cmd);
|
||||||
|
gomod = gomod:gsub("%s+", "")
|
||||||
|
if ok and gomod ~= "" and gomod ~= "/dev/null" then
|
||||||
|
fnmod = ":h";
|
||||||
|
end
|
||||||
|
return vim.fn.fnamemodify(vim.api.nvim_buf_get_name(0), fnmod)
|
||||||
|
end
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
append_fname = false;
|
||||||
|
parser = mkLuaInline ''
|
||||||
|
function(output, bufnr)
|
||||||
|
local SOURCE = "golangci-lint";
|
||||||
|
|
||||||
|
local function display_tool_error(msg)
|
||||||
|
return{
|
||||||
|
{
|
||||||
|
bufnr = bufnr,
|
||||||
|
lnum = 0,
|
||||||
|
col = 0,
|
||||||
|
message = string.format("[%s] %s", SOURCE, msg),
|
||||||
|
severity = vim.diagnostic.severity.ERROR,
|
||||||
|
source = SOURCE,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
if output == "" then
|
||||||
|
return display_tool_error("no output provided")
|
||||||
|
end
|
||||||
|
|
||||||
|
local ok, decoded = pcall(vim.json.decode, output)
|
||||||
|
if not ok then
|
||||||
|
return display_tool_error("failed to parse JSON output")
|
||||||
|
end
|
||||||
|
|
||||||
|
if not decoded or not decoded.Issues then
|
||||||
|
return display_tool_error("unexpected output format")
|
||||||
|
end
|
||||||
|
|
||||||
|
local severity_map = {
|
||||||
|
error = vim.diagnostic.severity.ERROR,
|
||||||
|
warning = vim.diagnostic.severity.WARN,
|
||||||
|
info = vim.diagnostic.severity.INFO,
|
||||||
|
hint = vim.diagnostic.severity.HINT,
|
||||||
|
}
|
||||||
|
local diagnostics = {}
|
||||||
|
for _, issue in ipairs(decoded.Issues) do
|
||||||
|
local sev = vim.diagnostic.severity.ERROR
|
||||||
|
if issue.Severity and issue.Severity ~= "" then
|
||||||
|
local normalized = issue.Severity:lower()
|
||||||
|
sev = severity_map[normalized] or vim.diagnostic.severity.ERROR
|
||||||
|
end
|
||||||
|
|
||||||
|
local buffer = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(bufnr), ":p")
|
||||||
|
if vim.fs.normalize(buffer) == vim.fs.normalize(issue.Pos.Filename) then
|
||||||
|
table.insert(diagnostics, {
|
||||||
|
bufnr = bufnr,
|
||||||
|
lnum = issue.Pos.Line - 1,
|
||||||
|
col = issue.Pos.Column - 1,
|
||||||
|
message = issue.Text,
|
||||||
|
code = issue.FromLinter,
|
||||||
|
severity = sev,
|
||||||
|
source = SOURCE,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return diagnostics
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.go = {
|
options.vim.languages.go = {
|
||||||
enable = mkEnableOption "Go language support";
|
enable = mkEnableOption "Go language support";
|
||||||
|
|
@ -125,16 +226,16 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Go diagnostics via nvim-lint"
|
mkEnableOption "extra Go diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostic";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostic";
|
||||||
};
|
};
|
||||||
|
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Go";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Go diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -256,12 +357,12 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.go = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters =
|
||||||
linters_by_ft.go = cfg.extraDiagnostics.types;
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
||||||
};
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,13 @@
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (builtins) attrNames;
|
inherit (builtins) attrNames;
|
||||||
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.options) literalExpression mkEnableOption mkOption;
|
inherit (lib.options) literalExpression mkEnableOption mkOption;
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.types) bool enum listOf;
|
inherit (lib.types) bool enum listOf;
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
inherit (lib.lists) optional;
|
inherit (lib.lists) optional;
|
||||||
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf;
|
||||||
inherit (lib.nvim.dag) entryAnywhere;
|
inherit (lib.nvim.dag) entryAnywhere;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
|
|
@ -28,7 +29,11 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["htmlhint"];
|
defaultDiagnosticsProvider = ["htmlhint"];
|
||||||
diagnosticsProviders = ["htmlhint"];
|
diagnosticsProviders = {
|
||||||
|
htmlhint = {
|
||||||
|
config.cmd = getExe pkgs.htmlhint;
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.html = {
|
options.vim.languages.html = {
|
||||||
enable = mkEnableOption "HTML language support";
|
enable = mkEnableOption "HTML language support";
|
||||||
|
|
@ -78,16 +83,16 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra HTML diagnostics via nvim-lint"
|
mkEnableOption "extra HTML diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
|
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "HTML";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra HTML diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -133,12 +138,13 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.html = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters = mkMerge (map (name: {
|
||||||
linters_by_ft.html = cfg.extraDiagnostics.types;
|
${name} = diagnosticsProviders.${name}.config;
|
||||||
};
|
})
|
||||||
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,11 @@
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.options) literalExpression mkEnableOption mkOption;
|
inherit (lib.options) literalExpression mkEnableOption mkOption;
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
inherit (lib.types) enum listOf;
|
inherit (lib.types) enum listOf;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics;
|
||||||
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.kotlin;
|
cfg = config.vim.languages.kotlin;
|
||||||
|
|
||||||
|
|
@ -16,7 +18,11 @@
|
||||||
servers = ["kotlin-language-server"];
|
servers = ["kotlin-language-server"];
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["ktlint"];
|
defaultDiagnosticsProvider = ["ktlint"];
|
||||||
diagnosticsProviders = ["ktlint"];
|
diagnosticsProviders = {
|
||||||
|
ktlint = {
|
||||||
|
package = pkgs.ktlint;
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.kotlin = {
|
options.vim.languages.kotlin = {
|
||||||
enable = mkEnableOption "Kotlin/HCL support";
|
enable = mkEnableOption "Kotlin/HCL support";
|
||||||
|
|
@ -47,16 +53,16 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Kotlin diagnostics via nvim-lint"
|
mkEnableOption "extra Kotlin diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
|
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Kotlin";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Kotlin diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -67,12 +73,13 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.kotlin = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters = mkMerge (map (name: {
|
||||||
linters_by_ft.kotlin = cfg.extraDiagnostics.types;
|
${name}.cmd = getExe diagnosticsProviders.${name}.package;
|
||||||
};
|
})
|
||||||
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
inherit (lib.types) bool enum listOf;
|
inherit (lib.types) bool enum listOf;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) diagnostics mkGrammarOption;
|
||||||
inherit (lib.nvim.dag) entryBefore;
|
inherit (lib.nvim.dag) entryBefore;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
|
|
@ -27,7 +27,14 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["luacheck"];
|
defaultDiagnosticsProvider = ["luacheck"];
|
||||||
diagnosticsProviders = ["luacheck" "selene"];
|
diagnosticsProviders = {
|
||||||
|
luacheck = {
|
||||||
|
package = pkgs.luajitPackages.luacheck;
|
||||||
|
};
|
||||||
|
selene = {
|
||||||
|
package = pkgs.selene;
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
(lib.mkRemovedOptionModule ["vim" "languages" "lua" "lsp" "neodev"] ''
|
(lib.mkRemovedOptionModule ["vim" "languages" "lua" "lsp" "neodev"] ''
|
||||||
|
|
@ -79,15 +86,15 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Lua diagnostics via nvim-lint"
|
mkEnableOption "extra Lua diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Lua";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Lua diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -136,12 +143,13 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.lua = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters = mkMerge (map (name: {
|
||||||
linters_by_ft.lua = cfg.extraDiagnostics.types;
|
${name}.cmd = getExe diagnosticsProviders.${name}.package;
|
||||||
};
|
})
|
||||||
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]))
|
]))
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@
|
||||||
}: let
|
}: let
|
||||||
inherit (builtins) attrNames;
|
inherit (builtins) attrNames;
|
||||||
inherit (lib.options) literalExpression mkEnableOption mkOption;
|
inherit (lib.options) literalExpression mkEnableOption mkOption;
|
||||||
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.types) listOf enum;
|
inherit (lib.types) listOf enum;
|
||||||
inherit (lib) genAttrs;
|
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.make;
|
cfg = config.vim.languages.make;
|
||||||
|
|
@ -22,7 +22,13 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["checkmake"];
|
defaultDiagnosticsProvider = ["checkmake"];
|
||||||
diagnosticsProviders = ["checkmake"];
|
diagnosticsProviders = {
|
||||||
|
checkmake = {
|
||||||
|
config = {
|
||||||
|
cmd = getExe pkgs.checkmake;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.make = {
|
options.vim.languages.make = {
|
||||||
enable = mkEnableOption "Make support";
|
enable = mkEnableOption "Make support";
|
||||||
|
|
@ -53,15 +59,15 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Make diagnostics via nvim-lint"
|
mkEnableOption "extra Make diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Make";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Make diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -90,12 +96,12 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.make = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters =
|
||||||
linters_by_ft.make = cfg.extraDiagnostics.types;
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
||||||
};
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
inherit (lib.options) literalExpression mkEnableOption mkOption;
|
inherit (lib.options) literalExpression mkEnableOption mkOption;
|
||||||
inherit (lib.types) bool enum listOf str nullOr;
|
inherit (lib.types) bool enum listOf str nullOr;
|
||||||
inherit (lib.nvim.lua) toLuaObject;
|
inherit (lib.nvim.lua) toLuaObject;
|
||||||
inherit (lib.nvim.types) mkGrammarOption mkPluginSetupOption deprecatedSingleOrListOf;
|
inherit (lib.nvim.types) diagnostics mkGrammarOption mkPluginSetupOption deprecatedSingleOrListOf;
|
||||||
inherit (lib.nvim.dag) entryAnywhere;
|
inherit (lib.nvim.dag) entryAnywhere;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
inherit (lib.trivial) warn;
|
inherit (lib.trivial) warn;
|
||||||
|
|
@ -46,7 +46,14 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
defaultDiagnosticsProvider = ["markdownlint-cli2"];
|
defaultDiagnosticsProvider = ["markdownlint-cli2"];
|
||||||
diagnosticsProviders = ["markdownlint-cli2" "rumdl"];
|
diagnosticsProviders = {
|
||||||
|
markdownlint-cli2 = {
|
||||||
|
package = pkgs.markdownlint-cli2;
|
||||||
|
};
|
||||||
|
rumdl = {
|
||||||
|
package = pkgs.rumdl;
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.markdown = {
|
options.vim.languages.markdown = {
|
||||||
enable = mkEnableOption "Markdown markup language support";
|
enable = mkEnableOption "Markdown markup language support";
|
||||||
|
|
@ -139,15 +146,15 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Markdown diagnostics via nvim-lint"
|
mkEnableOption "extra Markdown diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Markdown";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Markdown diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -207,12 +214,13 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.markdown = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters = mkMerge (map (name: {
|
||||||
linters_by_ft.markdown = cfg.extraDiagnostics.types;
|
${name}.cmd = getExe diagnosticsProviders.${name}.package;
|
||||||
};
|
})
|
||||||
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.types) enum listOf;
|
inherit (lib.types) enum listOf;
|
||||||
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.nix;
|
cfg = config.vim.languages.nix;
|
||||||
|
|
@ -30,7 +30,31 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["statix" "deadnix"];
|
defaultDiagnosticsProvider = ["statix" "deadnix"];
|
||||||
diagnosticsProviders = ["statix" "deadnix"];
|
diagnosticsProviders = {
|
||||||
|
statix = {
|
||||||
|
package = pkgs.statix;
|
||||||
|
nullConfig = pkg: ''
|
||||||
|
table.insert(
|
||||||
|
ls_sources,
|
||||||
|
null_ls.builtins.diagnostics.statix.with({
|
||||||
|
command = "${pkg}/bin/statix",
|
||||||
|
})
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
deadnix = {
|
||||||
|
package = pkgs.deadnix;
|
||||||
|
nullConfig = pkg: ''
|
||||||
|
table.insert(
|
||||||
|
ls_sources,
|
||||||
|
null_ls.builtins.diagnostics.deadnix.with({
|
||||||
|
command = "${pkg}/bin/deadnix",
|
||||||
|
})
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.nix = {
|
options.vim.languages.nix = {
|
||||||
enable = mkEnableOption "Nix language support";
|
enable = mkEnableOption "Nix language support";
|
||||||
|
|
@ -76,16 +100,16 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Nix diagnostics via nvim-lint"
|
mkEnableOption "extra Nix diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
|
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Nix";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Nix diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -196,12 +220,13 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.nix = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters = mkMerge (map (name: {
|
||||||
linters_by_ft.nix = cfg.extraDiagnostics.types;
|
${name}.cmd = getExe diagnosticsProviders.${name}.package;
|
||||||
};
|
})
|
||||||
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,14 @@
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (builtins) attrNames;
|
inherit (builtins) attrNames toString;
|
||||||
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.types) enum int attrs listOf;
|
inherit (lib.types) enum int attrs listOf;
|
||||||
inherit (lib.nvim.lua) toLuaObject;
|
inherit (lib.nvim.lua) toLuaObject;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.php;
|
cfg = config.vim.languages.php;
|
||||||
|
|
@ -35,7 +35,12 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["phpstan"];
|
defaultDiagnosticsProvider = ["phpstan"];
|
||||||
diagnosticsProviders = ["phpstan"];
|
|
||||||
|
diagnosticsProviders = {
|
||||||
|
phpstan = {
|
||||||
|
config.cmd = getExe pkgs.phpstan;
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.php = {
|
options.vim.languages.php = {
|
||||||
enable = mkEnableOption "PHP language support";
|
enable = mkEnableOption "PHP language support";
|
||||||
|
|
@ -109,15 +114,16 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra PHP diagnostics via nvim-lint"
|
mkEnableOption "extra PHP diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostic";
|
||||||
};
|
};
|
||||||
types = mkOption {
|
|
||||||
type = listOf (enum diagnosticsProviders);
|
types = diagnostics {
|
||||||
default = defaultDiagnosticsProvider;
|
langDesc = "PHP";
|
||||||
description = "extra PHP diagnostics providers";
|
inherit diagnosticsProviders;
|
||||||
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -173,12 +179,12 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.php = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters =
|
||||||
linters_by_ft.php = cfg.extraDiagnostics.types;
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
||||||
};
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
||||||
inherit (lib.lists) flatten;
|
inherit (lib.lists) flatten;
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe getExe';
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.types) enum package bool listOf;
|
inherit (lib.types) enum package bool listOf;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
inherit (lib.nvim.types) deprecatedSingleOrListOf;
|
inherit (lib.nvim.types) deprecatedSingleOrListOf diagnostics;
|
||||||
inherit (lib.trivial) warn;
|
inherit (lib.trivial) warn;
|
||||||
|
|
||||||
cfg = config.vim.languages.python;
|
cfg = config.vim.languages.python;
|
||||||
|
|
@ -112,7 +112,13 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
defaultDiagnosticsProvider = ["mypy"];
|
defaultDiagnosticsProvider = ["mypy"];
|
||||||
diagnosticsProviders = ["mypy"];
|
diagnosticsProviders = {
|
||||||
|
mypy = {
|
||||||
|
config = {
|
||||||
|
cmd = getExe' pkgs.mypy "mypy";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.python = {
|
options.vim.languages.python = {
|
||||||
enable = mkEnableOption "Python language support";
|
enable = mkEnableOption "Python language support";
|
||||||
|
|
@ -189,15 +195,15 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Python diagnostics via nvim-lint"
|
mkEnableOption "extra Python diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Python";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Python diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -255,12 +261,12 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.python = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters =
|
||||||
linters_by_ft.python = cfg.extraDiagnostics.types;
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
||||||
};
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf enumWithRename;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf enumWithRename;
|
||||||
inherit (lib.types) enum listOf;
|
inherit (lib.types) enum listOf;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
|
|
@ -28,7 +28,11 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["rubocop"];
|
defaultDiagnosticsProvider = ["rubocop"];
|
||||||
diagnosticsProviders = ["rubocop"];
|
diagnosticsProviders = {
|
||||||
|
rubocop = {
|
||||||
|
package = pkgs.rubyPackages.rubocop;
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.ruby = {
|
options.vim.languages.ruby = {
|
||||||
enable = mkEnableOption "Ruby language support";
|
enable = mkEnableOption "Ruby language support";
|
||||||
|
|
@ -75,13 +79,13 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "Ruby extra diagnostics via nvim-lint"
|
mkEnableOption "Ruby extra diagnostics support"
|
||||||
// {default = config.vim.languages.enableExtraDiagnostics;};
|
// {default = config.vim.languages.enableExtraDiagnostics;};
|
||||||
|
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Ruby";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Ruby diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -117,15 +121,13 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.ruby = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters = mkMerge (map (name: {
|
||||||
linters_by_ft = {
|
${name}.cmd = getExe diagnosticsProviders.${name}.package;
|
||||||
ruby = cfg.extraDiagnostics.types;
|
})
|
||||||
eruby = cfg.extraDiagnostics.types;
|
cfg.extraDiagnostics.types);
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.types) enum listOf;
|
inherit (lib.types) enum listOf;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.scss;
|
cfg = config.vim.languages.scss;
|
||||||
|
|
@ -30,7 +30,13 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["stylelint"];
|
defaultDiagnosticsProvider = ["stylelint"];
|
||||||
diagnosticsProviders = ["stylelint"];
|
diagnosticsProviders = {
|
||||||
|
stylelint = {
|
||||||
|
config = {
|
||||||
|
cmd = getExe pkgs.stylelint;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.scss = {
|
options.vim.languages.scss = {
|
||||||
enable = mkEnableOption "SCSS/SASS language support";
|
enable = mkEnableOption "SCSS/SASS language support";
|
||||||
|
|
@ -76,15 +82,15 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra SCSS/SASS diagnostics via nvim-lint"
|
mkEnableOption "extra SCSS/SASS diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "SCSS";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra SCSS/SASS diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -124,15 +130,13 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.scss = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters_by_ft.sass = cfg.extraDiagnostics.types;
|
||||||
linters_by_ft = {
|
linters =
|
||||||
scss = cfg.extraDiagnostics.types;
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
||||||
sass = cfg.extraDiagnostics.types;
|
cfg.extraDiagnostics.types);
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.types) enum package listOf;
|
inherit (lib.types) enum package str listOf;
|
||||||
inherit (lib.nvim.types) deprecatedSingleOrListOf;
|
inherit (lib.nvim.types) diagnostics deprecatedSingleOrListOf;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.sql;
|
cfg = config.vim.languages.sql;
|
||||||
|
|
@ -24,18 +24,41 @@
|
||||||
formats = {
|
formats = {
|
||||||
sqlfluff = {
|
sqlfluff = {
|
||||||
command = getExe sqlfluffDefault;
|
command = getExe sqlfluffDefault;
|
||||||
|
append_args = ["--dialect=${cfg.dialect}"];
|
||||||
};
|
};
|
||||||
sqruff = {
|
sqruff = {
|
||||||
command = getExe sqruffDefault;
|
command = getExe sqruffDefault;
|
||||||
|
append_args = ["--dialect=${cfg.dialect}"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["sqlfluff"];
|
defaultDiagnosticsProvider = ["sqlfluff"];
|
||||||
diagnosticsProviders = ["sqlfluff" "sqruff"];
|
diagnosticsProviders = {
|
||||||
|
sqlfluff = {
|
||||||
|
package = sqlfluffDefault;
|
||||||
|
config = {
|
||||||
|
cmd = getExe sqlfluffDefault;
|
||||||
|
args = ["lint" "--format=json" "--dialect=${cfg.dialect}"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
sqruff = {
|
||||||
|
package = sqruffDefault;
|
||||||
|
config = {
|
||||||
|
cmd = getExe sqruffDefault;
|
||||||
|
args = ["lint" "--format=json" "--dialect=${cfg.dialect}" "-"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.sql = {
|
options.vim.languages.sql = {
|
||||||
enable = mkEnableOption "SQL language support";
|
enable = mkEnableOption "SQL language support";
|
||||||
|
|
||||||
|
dialect = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "ansi";
|
||||||
|
description = "SQL dialect for formatters and diagnostics (if used)";
|
||||||
|
};
|
||||||
|
|
||||||
treesitter = {
|
treesitter = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "SQL treesitter"
|
mkEnableOption "SQL treesitter"
|
||||||
|
|
@ -83,16 +106,16 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra SQL diagnostics via nvim-lint"
|
mkEnableOption "extra SQL diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
|
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "SQL";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra SQL diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -130,14 +153,12 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {
|
enable = true;
|
||||||
enable = true;
|
linters_by_ft.sql = cfg.extraDiagnostics.types;
|
||||||
});
|
linters =
|
||||||
nvim-lint = {
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
||||||
enable = true;
|
cfg.extraDiagnostics.types);
|
||||||
linters_by_ft.sql = cfg.extraDiagnostics.types;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.types) enum coercedTo listOf;
|
inherit (lib.types) enum coercedTo listOf;
|
||||||
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.svelte;
|
cfg = config.vim.languages.svelte;
|
||||||
|
|
@ -35,8 +35,26 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# TODO: specify packages
|
||||||
defaultDiagnosticsProvider = ["eslint_d"];
|
defaultDiagnosticsProvider = ["eslint_d"];
|
||||||
diagnosticsProviders = ["eslint_d"];
|
diagnosticsProviders = {
|
||||||
|
eslint_d = let
|
||||||
|
pkg = pkgs.eslint_d;
|
||||||
|
in {
|
||||||
|
package = pkg;
|
||||||
|
config = {
|
||||||
|
cmd = getExe pkg;
|
||||||
|
required_files = [
|
||||||
|
"eslint.config.js"
|
||||||
|
"eslint.config.mjs"
|
||||||
|
".eslintrc"
|
||||||
|
".eslintrc.json"
|
||||||
|
".eslintrc.js"
|
||||||
|
".eslintrc.yml"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
formatType =
|
formatType =
|
||||||
deprecatedSingleOrListOf
|
deprecatedSingleOrListOf
|
||||||
|
|
@ -93,16 +111,16 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Svelte diagnostics via nvim-lint"
|
mkEnableOption "extra Svelte diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
|
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Svelte";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Svelte diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -138,12 +156,12 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.svelte = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters =
|
||||||
linters_by_ft.svelte = cfg.extraDiagnostics.types;
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
||||||
};
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
||||||
inherit (lib.types) enum listOf;
|
inherit (lib.types) enum listOf;
|
||||||
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf;
|
inherit (lib.nvim.types) diagnostics mkGrammarOption deprecatedSingleOrListOf;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.toml;
|
cfg = config.vim.languages.toml;
|
||||||
|
|
@ -39,7 +39,12 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
defaultDiagnosticsProvider = ["tombi"];
|
defaultDiagnosticsProvider = ["tombi"];
|
||||||
diagnosticsProviders = ["tombi" "taplo"];
|
diagnosticsProviders = {
|
||||||
|
tombi = {
|
||||||
|
package = pkgs.tombi;
|
||||||
|
args = ["lint"];
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.toml = {
|
options.vim.languages.toml = {
|
||||||
enable = mkEnableOption "TOML configuration language support";
|
enable = mkEnableOption "TOML configuration language support";
|
||||||
|
|
@ -86,15 +91,15 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra TOML diagnostics via nvim-lint"
|
mkEnableOption "extra TOML diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "TOML";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra TOML diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -132,12 +137,15 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.toml = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters = mkMerge (
|
||||||
linters_by_ft.toml = cfg.extraDiagnostics.types;
|
map (name: {
|
||||||
};
|
${name}.cmd = getExe diagnosticsProviders.${name}.package;
|
||||||
|
})
|
||||||
|
cfg.extraDiagnostics.types
|
||||||
|
);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
inherit (lib.attrsets) attrNames genAttrs;
|
inherit (lib.attrsets) attrNames genAttrs;
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics;
|
||||||
|
|
||||||
cfg = config.vim.languages.tsx;
|
cfg = config.vim.languages.tsx;
|
||||||
|
|
||||||
|
|
@ -41,7 +41,16 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["biomejs"];
|
defaultDiagnosticsProvider = ["biomejs"];
|
||||||
diagnosticsProviders = ["biomejs"];
|
diagnosticsProviders = {
|
||||||
|
biomejs = let
|
||||||
|
pkg = pkgs.biome;
|
||||||
|
in {
|
||||||
|
package = pkg;
|
||||||
|
config = {
|
||||||
|
cmd = getExe pkg;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.tsx = {
|
options.vim.languages.tsx = {
|
||||||
enable = mkEnableOption "Typescript XML (TSX) language support";
|
enable = mkEnableOption "Typescript XML (TSX) language support";
|
||||||
|
|
@ -86,12 +95,12 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable = mkEnableOption "extra Typescript XML (TSX) diagnostics via nvim-lint" // {default = config.vim.languages.enableExtraDiagnostics;};
|
enable = mkEnableOption "extra Typescript XML (TSX) diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;};
|
||||||
|
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Typescript XML (TSX)";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Typescript XML (TSX) diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -135,15 +144,15 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft = {
|
||||||
enable = true;
|
typescriptreact = cfg.extraDiagnostics.types;
|
||||||
linters_by_ft = {
|
javascriptreact = cfg.extraDiagnostics.types;
|
||||||
typescriptreact = cfg.extraDiagnostics.types;
|
|
||||||
javascriptreact = cfg.extraDiagnostics.types;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
linters =
|
||||||
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
||||||
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.types) listOf enum;
|
inherit (lib.types) listOf enum;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.twig;
|
cfg = config.vim.languages.twig;
|
||||||
|
|
@ -26,8 +26,14 @@
|
||||||
# TODO: if twig-cs-fixer gets packaged for nix, add it and default to it.
|
# TODO: if twig-cs-fixer gets packaged for nix, add it and default to it.
|
||||||
};
|
};
|
||||||
defaultDiagnosticsProvider = ["djlint"];
|
defaultDiagnosticsProvider = ["djlint"];
|
||||||
# TODO: if curlylint gets packaged for nix, add it.
|
diagnosticsProviders = {
|
||||||
diagnosticsProviders = ["djlint"];
|
djlint = {
|
||||||
|
config = {
|
||||||
|
cmd = getExe pkgs.djlint;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# TODO: if curlylint gets packaged for nix, add it.
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.twig = {
|
options.vim.languages.twig = {
|
||||||
enable = mkEnableOption "Twig templating language support";
|
enable = mkEnableOption "Twig templating language support";
|
||||||
|
|
@ -72,15 +78,15 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Twig diagnostics via nvim-lint"
|
mkEnableOption "extra Twig diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Twig";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Twig diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -116,12 +122,12 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.twig = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters =
|
||||||
linters_by_ft.twig = cfg.extraDiagnostics.types;
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
||||||
};
|
cfg.extraDiagnostics.types);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
inherit (lib.types) enum bool listOf;
|
inherit (lib.types) enum bool listOf;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
inherit (lib.nvim.lua) toLuaObject;
|
inherit (lib.nvim.lua) toLuaObject;
|
||||||
inherit (lib.nvim.types) mkGrammarOption mkPluginSetupOption enumWithRename;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics mkPluginSetupOption enumWithRename;
|
||||||
inherit (lib.nvim.dag) entryAnywhere;
|
inherit (lib.nvim.dag) entryAnywhere;
|
||||||
|
|
||||||
cfg = config.vim.languages.typescript;
|
cfg = config.vim.languages.typescript;
|
||||||
|
|
@ -44,8 +44,35 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# TODO: specify packages
|
||||||
defaultDiagnosticsProvider = ["eslint_d"];
|
defaultDiagnosticsProvider = ["eslint_d"];
|
||||||
diagnosticsProviders = ["eslint_d" "biomejs"];
|
diagnosticsProviders = {
|
||||||
|
eslint_d = let
|
||||||
|
pkg = pkgs.eslint_d;
|
||||||
|
in {
|
||||||
|
package = pkg;
|
||||||
|
config = {
|
||||||
|
cmd = getExe pkg;
|
||||||
|
required_files = [
|
||||||
|
"eslint.config.js"
|
||||||
|
"eslint.config.mjs"
|
||||||
|
".eslintrc"
|
||||||
|
".eslintrc.cjs"
|
||||||
|
".eslintrc.json"
|
||||||
|
".eslintrc.js"
|
||||||
|
".eslintrc.yml"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
biomejs = let
|
||||||
|
pkg = pkgs.biome;
|
||||||
|
in {
|
||||||
|
package = pkg;
|
||||||
|
config = {
|
||||||
|
cmd = getExe pkg;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.typescript = {
|
options.vim.languages.typescript = {
|
||||||
enable = mkEnableOption "Typescript/Javascript language support";
|
enable = mkEnableOption "Typescript/Javascript language support";
|
||||||
|
|
@ -101,10 +128,10 @@ in {
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable = mkEnableOption "extra Typescript/Javascript diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;};
|
enable = mkEnableOption "extra Typescript/Javascript diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;};
|
||||||
|
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Typescript/Javascript";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Typescript/Javascript diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -170,14 +197,12 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.typescript = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters =
|
||||||
linters_by_ft = {
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
||||||
typescript = cfg.extraDiagnostics.types;
|
cfg.extraDiagnostics.types);
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
inherit (lib) genAttrs;
|
inherit (lib) genAttrs;
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.types) enum listOf;
|
inherit (lib.types) enum listOf;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption diagnostics;
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
|
|
||||||
cfg = config.vim.languages.vue;
|
cfg = config.vim.languages.vue;
|
||||||
|
|
@ -34,7 +34,16 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultDiagnosticsProvider = ["biomejs"];
|
defaultDiagnosticsProvider = ["biomejs"];
|
||||||
diagnosticsProviders = ["biomejs"];
|
diagnosticsProviders = {
|
||||||
|
biomejs = let
|
||||||
|
pkg = pkgs.biome;
|
||||||
|
in {
|
||||||
|
package = pkg;
|
||||||
|
config = {
|
||||||
|
cmd = getExe pkg;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.vue = {
|
options.vim.languages.vue = {
|
||||||
enable = mkEnableOption "Vue.js language support";
|
enable = mkEnableOption "Vue.js language support";
|
||||||
|
|
@ -82,16 +91,16 @@ in {
|
||||||
|
|
||||||
extraDiagnostics = {
|
extraDiagnostics = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption "extra Vue.js diagnostics via nvim-lint"
|
mkEnableOption "extra Vue.js diagnostics"
|
||||||
// {
|
// {
|
||||||
default = config.vim.languages.enableExtraDiagnostics;
|
default = config.vim.languages.enableExtraDiagnostics;
|
||||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
||||||
};
|
};
|
||||||
|
|
||||||
types = mkOption {
|
types = diagnostics {
|
||||||
type = listOf (enum diagnosticsProviders);
|
langDesc = "Vue.js";
|
||||||
default = defaultDiagnosticsProvider;
|
inherit diagnosticsProviders;
|
||||||
description = "extra Vue.js diagnostics providers";
|
inherit defaultDiagnosticsProvider;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -127,12 +136,15 @@ in {
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.extraDiagnostics.enable {
|
(mkIf cfg.extraDiagnostics.enable {
|
||||||
vim.diagnostics = {
|
vim.diagnostics.nvim-lint = {
|
||||||
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
enable = true;
|
||||||
nvim-lint = {
|
linters_by_ft.vue = cfg.extraDiagnostics.types;
|
||||||
enable = true;
|
linters = mkMerge (
|
||||||
linters_by_ft.vue = cfg.extraDiagnostics.types;
|
map (name: {
|
||||||
};
|
${name}.cmd = getExe diagnosticsProviders.${name}.package;
|
||||||
|
})
|
||||||
|
cfg.extraDiagnostics.types
|
||||||
|
);
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue