2022-09-18 11:19:23 +01:00
|
|
|
{
|
2023-02-20 11:42:13 +01:00
|
|
|
lib,
|
2023-11-06 15:04:08 +01:00
|
|
|
helpers,
|
|
|
|
config,
|
2023-02-20 11:42:13 +01:00
|
|
|
...
|
|
|
|
}:
|
2023-12-28 11:14:57 +01:00
|
|
|
with lib; let
|
|
|
|
optionsAttrs = {
|
|
|
|
options = {
|
|
|
|
prettyName = "options";
|
|
|
|
luaVariableName = "options";
|
|
|
|
luaApi = "opt";
|
2022-09-18 11:19:23 +01:00
|
|
|
description = "The configuration options, e.g. line numbers";
|
|
|
|
};
|
|
|
|
|
2023-12-28 11:14:57 +01:00
|
|
|
globalOptions = {
|
|
|
|
prettyName = "global options";
|
|
|
|
luaVariableName = "global_options";
|
|
|
|
luaApi = "opt_global";
|
2023-12-27 17:02:05 +01:00
|
|
|
description = "The configuration global options";
|
|
|
|
};
|
|
|
|
|
2023-12-28 11:14:57 +01:00
|
|
|
localOptions = {
|
|
|
|
prettyName = "local options";
|
|
|
|
luaVariableName = "local_options";
|
|
|
|
luaApi = "opt_local";
|
2023-12-27 17:02:05 +01:00
|
|
|
description = "The configuration local options";
|
|
|
|
};
|
|
|
|
|
2023-12-28 11:14:57 +01:00
|
|
|
globals = {
|
|
|
|
prettyName = "globals";
|
|
|
|
luaVariableName = "globals";
|
|
|
|
luaApi = "g";
|
2022-09-18 11:19:23 +01:00
|
|
|
description = "Global variables";
|
|
|
|
};
|
|
|
|
};
|
2023-12-28 11:14:57 +01:00
|
|
|
in {
|
|
|
|
options =
|
|
|
|
mapAttrs
|
|
|
|
(
|
|
|
|
_: {description, ...}:
|
|
|
|
mkOption {
|
|
|
|
type = with types; attrsOf anything;
|
|
|
|
default = {};
|
|
|
|
inherit description;
|
|
|
|
}
|
|
|
|
)
|
|
|
|
optionsAttrs;
|
2022-09-18 11:19:23 +01:00
|
|
|
|
|
|
|
config = {
|
2023-02-20 11:42:13 +01:00
|
|
|
extraConfigLuaPre =
|
2023-12-28 11:14:57 +01:00
|
|
|
concatLines
|
|
|
|
(
|
|
|
|
mapAttrsToList
|
|
|
|
(
|
|
|
|
optionName: {
|
|
|
|
prettyName,
|
|
|
|
luaVariableName,
|
|
|
|
luaApi,
|
|
|
|
...
|
|
|
|
}: let
|
|
|
|
varName = "nixvim_${luaVariableName}";
|
|
|
|
optionDefinitions = config.${optionName};
|
|
|
|
in
|
|
|
|
optionalString
|
|
|
|
(optionDefinitions != {})
|
|
|
|
''
|
|
|
|
-- Set up ${prettyName} {{{
|
|
|
|
do
|
|
|
|
local ${varName} = ${helpers.toLuaObject optionDefinitions}
|
2022-09-18 11:19:23 +01:00
|
|
|
|
2023-12-28 11:14:57 +01:00
|
|
|
for k,v in pairs(${varName}) do
|
|
|
|
vim.${luaApi}[k] = v
|
|
|
|
end
|
|
|
|
end
|
|
|
|
-- }}}
|
|
|
|
''
|
|
|
|
)
|
|
|
|
optionsAttrs
|
|
|
|
);
|
2022-09-18 11:19:23 +01:00
|
|
|
};
|
|
|
|
}
|