This commit is contained in:
mewoocat 2026-02-03 17:46:18 -05:00 committed by GitHub
commit dd491fc82c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 63 additions and 3 deletions

View file

@ -49,7 +49,12 @@ isMaximal: {
enableExtraDiagnostics = true; enableExtraDiagnostics = true;
# Languages that will be supported in default and maximal configurations. # Languages that will be supported in default and maximal configurations.
nix.enable = true; nix = {
enable = true;
tabstop = 8;
softtabstop = 8;
shiftwidth = 8;
};
markdown.enable = true; markdown.enable = true;
# Languages that are enabled in the maximal configuration. # Languages that are enabled in the maximal configuration.

View file

@ -27,6 +27,7 @@
flake = { flake = {
lib = { lib = {
inherit (lib) nvim; inherit (lib) nvim;
inherit (lib) generators;
inherit (lib.nvim) neovimConfiguration; inherit (lib.nvim) neovimConfiguration;
}; };

View file

@ -4,6 +4,7 @@
inherit (lib.types) listOf bool str submodule attrsOf anything either nullOr uniq; inherit (lib.types) listOf bool str submodule attrsOf anything either nullOr uniq;
inherit (lib.nvim.attrsets) mapListToAttrs; inherit (lib.nvim.attrsets) mapListToAttrs;
inherit (lib.nvim.types) luaInline; inherit (lib.nvim.types) luaInline;
inherit (lib.generators) mkLuaInline;
in { in {
# TODO: remove # TODO: remove
diagnosticsToLua = { diagnosticsToLua = {
@ -77,4 +78,26 @@ in {
}; };
}; };
}; };
# maybe put generic function to set indent for provided langs
# Then we can just call it with the lib arg
setLanguageIndent = {language, tabstop, softtabstop, shiftwidth}: {
vim.autocmds = [
{
desc = "Sets indent for nix files";
event = [ "FileType" ];
pattern = [ language ];
callback = mkLuaInline ''
function()
${if tabstop != null then "vim.bo.tabstop = " + toString tabstop else ""}
${if softtabstop != null then "vim.bo.softtabstop = " + toString softtabstop else ""}
${if shiftwidth != null then "vim.bo.shiftwidth = " + toString shiftwidth else ""}
end
'';
once = true;
}
];
};
} }

View file

@ -13,6 +13,7 @@
inherit (lib.nvim.types) diagnostics 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.nvim.languages) setLanguageIndent;
inherit (lib.trivial) warn; inherit (lib.trivial) warn;
cfg = config.vim.languages.markdown; cfg = config.vim.languages.markdown;
@ -218,5 +219,8 @@ in {
cfg.extraDiagnostics.types); cfg.extraDiagnostics.types);
}; };
}) })
# todo
]); ]);
} }

View file

@ -4,14 +4,15 @@
lib, lib,
... ...
}: let }: let
inherit (builtins) attrNames; inherit (builtins) attrNames toString;
inherit (lib) concatStringsSep; inherit (lib) concatStringsSep;
inherit (lib.meta) getExe; inherit (lib.meta) getExe;
inherit (lib.options) mkEnableOption mkOption; inherit (lib.options) mkEnableOption mkOption;
inherit (lib.modules) mkIf mkMerge; inherit (lib.modules) mkIf mkMerge;
inherit (lib.types) enum; inherit (lib.types) enum int nullOr;
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf; inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf;
inherit (lib.nvim.attrsets) mapListToAttrs; inherit (lib.nvim.attrsets) mapListToAttrs;
inherit (lib.nvim.languages) setLanguageIndent;
cfg = config.vim.languages.nix; cfg = config.vim.languages.nix;
@ -106,6 +107,24 @@ in {
inherit defaultDiagnosticsProvider; inherit defaultDiagnosticsProvider;
}; };
}; };
tabstop = mkOption {
description = "Sets the tabstop size in spaces for .nix files";
type = nullOr int;
default = null;
};
softtabstop = mkOption {
description = "Sets the softtabstop size in spaces for .nix files";
type = nullOr int;
default = null;
};
shiftwidth = mkOption {
description = "Sets the shiftwidth in spaces for .nix files";
type = nullOr int;
default = null;
};
}; };
config = mkIf cfg.enable (mkMerge [ config = mkIf cfg.enable (mkMerge [
@ -160,5 +179,13 @@ in {
cfg.extraDiagnostics.types); cfg.extraDiagnostics.types);
}; };
}) })
(setLanguageIndent {
language = "nix";
tabstop = cfg.tabstop;
softtabstop = cfg.softtabstop;
shiftwidth = cfg.shiftwidth;
})
]); ]);
} }