mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2026-05-11 08:28:04 +02:00
70 lines
1.6 KiB
Nix
70 lines
1.6 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib.options) mkEnableOption literalExpression;
|
|
inherit (lib.meta) getExe;
|
|
inherit (lib.modules) mkIf mkMerge;
|
|
inherit (lib.nvim.types) diagnostics;
|
|
|
|
cfg = config.vim.languages.env;
|
|
|
|
defaultDiagnosticsProvider = ["dotenv-linter"];
|
|
diagnosticsProviders = {
|
|
dotenv-linter = let
|
|
pkg = pkgs.dotenv-linter;
|
|
in {
|
|
package = pkg;
|
|
config = {
|
|
cmd = getExe pkg;
|
|
};
|
|
};
|
|
};
|
|
in {
|
|
options.vim.languages.env = {
|
|
enable = mkEnableOption "Env language support";
|
|
|
|
extraDiagnostics = {
|
|
enable =
|
|
mkEnableOption "extra Env diagnostics"
|
|
// {
|
|
default = config.vim.languages.enableExtraDiagnostics;
|
|
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics";
|
|
};
|
|
types = diagnostics {
|
|
langDesc = "Env";
|
|
inherit diagnosticsProviders;
|
|
inherit defaultDiagnosticsProvider;
|
|
};
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable (mkMerge [
|
|
{
|
|
vim.autocmds = [
|
|
{
|
|
event = ["BufRead" "BufNewFile"];
|
|
pattern = [
|
|
# support common names like `dist.env`
|
|
"*.env"
|
|
# support weird env files names like symfony ones.
|
|
".env.*"
|
|
];
|
|
command = "set filetype=env";
|
|
}
|
|
];
|
|
}
|
|
|
|
(mkIf cfg.extraDiagnostics.enable {
|
|
vim.diagnostics.nvim-lint = {
|
|
enable = true;
|
|
linters_by_ft.env = cfg.extraDiagnostics.types;
|
|
linters =
|
|
mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;})
|
|
cfg.extraDiagnostics.types);
|
|
};
|
|
})
|
|
]);
|
|
}
|