mirror of
https://github.com/NotAShelf/nvf.git
synced 2026-05-19 05:24:22 +00:00
61 lines
1.5 KiB
Nix
61 lines
1.5 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib.options) mkEnableOption literalExpression mkOption;
|
|
inherit (lib.modules) mkIf mkMerge;
|
|
inherit (lib.attrsets) genAttrs;
|
|
inherit (lib.types) enum listOf;
|
|
|
|
cfg = config.vim.languages.env;
|
|
|
|
defaultDiagnosticsProvider = ["dotenv-linter"];
|
|
diagnosticsProviders = ["dotenv-linter"];
|
|
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.enableExtraDiagnostic";
|
|
};
|
|
|
|
types = mkOption {
|
|
type = listOf (enum diagnosticsProviders);
|
|
default = defaultDiagnosticsProvider;
|
|
description = "extra Env diagnostics providers";
|
|
};
|
|
};
|
|
};
|
|
|
|
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 = {
|
|
presets = genAttrs cfg.extraDiagnostics.types (_: {enable = true;});
|
|
nvim-lint = {
|
|
enable = true;
|
|
linters_by_ft.env = cfg.extraDiagnostics.types;
|
|
};
|
|
};
|
|
})
|
|
]);
|
|
}
|