mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 16:39:00 +02:00
Using mkOrder to ensure the options can be accessible to everything throughout the config. Setting right below global table available, so variables can reference stuff inside global table.
89 lines
2.1 KiB
Nix
89 lines
2.1 KiB
Nix
{
|
|
lib,
|
|
helpers,
|
|
config,
|
|
...
|
|
}:
|
|
with lib;
|
|
let
|
|
optionsAttrs = {
|
|
opts = {
|
|
prettyName = "options";
|
|
luaVariableName = "options";
|
|
luaApi = "opt";
|
|
description = "The configuration options, e.g. line numbers (`vim.opt.*`)";
|
|
};
|
|
|
|
globalOpts = {
|
|
prettyName = "global options";
|
|
luaVariableName = "global_options";
|
|
luaApi = "opt_global";
|
|
description = "The configuration global options (`vim.opt_global.*`)";
|
|
};
|
|
|
|
localOpts = {
|
|
prettyName = "local options";
|
|
luaVariableName = "local_options";
|
|
luaApi = "opt_local";
|
|
description = "The configuration local options (`vim.opt_local.*`)";
|
|
};
|
|
|
|
globals = {
|
|
prettyName = "globals";
|
|
luaVariableName = "globals";
|
|
luaApi = "g";
|
|
description = "Global variables (`vim.g.*`)";
|
|
};
|
|
};
|
|
in
|
|
{
|
|
options = mapAttrs (
|
|
_:
|
|
{ description, ... }:
|
|
mkOption {
|
|
type = with types; attrsOf anything;
|
|
default = { };
|
|
inherit description;
|
|
}
|
|
) optionsAttrs;
|
|
|
|
# Added 2024-03-29 (do not remove)
|
|
imports = mapAttrsToList (old: new: mkRenamedOptionModule [ old ] [ new ]) {
|
|
options = "opts";
|
|
globalOptions = "globalOpts";
|
|
localOptions = "localOpts";
|
|
};
|
|
|
|
config = {
|
|
extraConfigLuaPre =
|
|
let
|
|
content = helpers.concatNonEmptyLines (
|
|
mapAttrsToList (
|
|
optionName:
|
|
{
|
|
prettyName,
|
|
luaVariableName,
|
|
luaApi,
|
|
...
|
|
}:
|
|
let
|
|
varName = "nixvim_${luaVariableName}";
|
|
optionDefinitions = config.${optionName};
|
|
in
|
|
optionalString (optionDefinitions != { }) ''
|
|
-- Set up ${prettyName} {{{
|
|
do
|
|
local ${varName} = ${helpers.toLuaObject optionDefinitions}
|
|
|
|
for k,v in pairs(${varName}) do
|
|
vim.${luaApi}[k] = v
|
|
end
|
|
end
|
|
-- }}}
|
|
''
|
|
) optionsAttrs
|
|
);
|
|
in
|
|
mkIf (content != "") (mkOrder 600 content); # Move options to top of file below global table
|
|
};
|
|
}
|