mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 08:35:43 +02:00
lib/options: defaultNullOpts
don't require having a default
Made the `default` and `description` arguments optional for all prime variants of `defaultNullOpts` functions. If neither `default` nor `description` are provided, the option will have no description. The "Plugin default" line is only added when a `default` argument is present (`args ? default`).
This commit is contained in:
parent
94a452074f
commit
ade4539b3f
1 changed files with 36 additions and 35 deletions
|
@ -80,14 +80,18 @@ rec {
|
||||||
let
|
let
|
||||||
# Convert `defaultNullOpts`-style arguments into normal `mkOption`-style arguments,
|
# Convert `defaultNullOpts`-style arguments into normal `mkOption`-style arguments,
|
||||||
# i.e. moves `default` into `description` using `defaultNullOpts.mkDesc`
|
# i.e. moves `default` into `description` using `defaultNullOpts.mkDesc`
|
||||||
|
#
|
||||||
|
# "Plugin default" is only added if `args` has a `default` attribute
|
||||||
convertArgs =
|
convertArgs =
|
||||||
{ default, description, ... }@args:
|
args:
|
||||||
(
|
(
|
||||||
args
|
args
|
||||||
// {
|
// {
|
||||||
default = null;
|
default = null;
|
||||||
description = defaultNullOpts.mkDesc default description;
|
|
||||||
}
|
}
|
||||||
|
// (optionalAttrs (args ? default) {
|
||||||
|
description = defaultNullOpts.mkDesc args.default (args.description or "");
|
||||||
|
})
|
||||||
);
|
);
|
||||||
in
|
in
|
||||||
rec {
|
rec {
|
||||||
|
@ -141,7 +145,7 @@ rec {
|
||||||
${defaultDesc}
|
${defaultDesc}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
mkNullable' = { default, description, ... }@args: mkNullOrOption' (convertArgs args);
|
mkNullable' = args: mkNullOrOption' (convertArgs args);
|
||||||
mkNullable =
|
mkNullable =
|
||||||
type: default: description:
|
type: default: description:
|
||||||
mkNullable' { inherit type default description; };
|
mkNullable' { inherit type default description; };
|
||||||
|
@ -152,20 +156,20 @@ rec {
|
||||||
type: default: description:
|
type: default: description:
|
||||||
mkNullableWithRaw' { inherit type default description; };
|
mkNullableWithRaw' { inherit type default description; };
|
||||||
|
|
||||||
mkStrLuaOr' = { default, description, ... }@args: mkNullOrStrLuaOr' (convertArgs args);
|
mkStrLuaOr' = args: mkNullOrStrLuaOr' (convertArgs args);
|
||||||
mkStrLuaOr =
|
mkStrLuaOr =
|
||||||
type: default: description:
|
type: default: description:
|
||||||
mkStrLuaOr' { inherit type default description; };
|
mkStrLuaOr' { inherit type default description; };
|
||||||
|
|
||||||
mkStrLuaFnOr' = { default, description, ... }@args: mkNullOrStrLuaFnOr' (convertArgs args);
|
mkStrLuaFnOr' = args: mkNullOrStrLuaFnOr' (convertArgs args);
|
||||||
mkStrLuaFnOr =
|
mkStrLuaFnOr =
|
||||||
type: default: description:
|
type: default: description:
|
||||||
mkStrLuaFnOr' { inherit type default description; };
|
mkStrLuaFnOr' { inherit type default description; };
|
||||||
|
|
||||||
mkLua' = { default, description, ... }@args: mkNullOrLua' (convertArgs args);
|
mkLua' = args: mkNullOrLua' (convertArgs args);
|
||||||
mkLua = default: description: mkLua' { inherit default description; };
|
mkLua = default: description: mkLua' { inherit default description; };
|
||||||
|
|
||||||
mkLuaFn' = { default, description, ... }@args: mkNullOrLuaFn' (convertArgs args);
|
mkLuaFn' = args: mkNullOrLuaFn' (convertArgs args);
|
||||||
mkLuaFn = default: description: mkLuaFn' { inherit default description; };
|
mkLuaFn = default: description: mkLuaFn' { inherit default description; };
|
||||||
|
|
||||||
mkNum' = args: mkNullableWithRaw' (args // { type = types.number; });
|
mkNum' = args: mkNullableWithRaw' (args // { type = types.number; });
|
||||||
|
@ -181,14 +185,14 @@ rec {
|
||||||
mkBool' = args: mkNullableWithRaw' (args // { type = types.bool; });
|
mkBool' = args: mkNullableWithRaw' (args // { type = types.bool; });
|
||||||
mkBool = default: description: mkBool' { inherit default description; };
|
mkBool = default: description: mkBool' { inherit default description; };
|
||||||
mkStr' =
|
mkStr' =
|
||||||
{ default, ... }@args:
|
args:
|
||||||
mkNullableWithRaw' (
|
mkNullableWithRaw' (
|
||||||
args
|
args
|
||||||
// {
|
// {
|
||||||
# TODO we should remove this once `mkDesc` no longer has a special case
|
|
||||||
default = generators.toPretty { } default;
|
|
||||||
type = types.str;
|
type = types.str;
|
||||||
}
|
}
|
||||||
|
# TODO we should remove this once `mkDesc` no longer has a special case
|
||||||
|
// (optionalAttrs (args ? default) { default = generators.toPretty { } args.default; })
|
||||||
);
|
);
|
||||||
mkStr = default: description: mkStr' { inherit default description; };
|
mkStr = default: description: mkStr' { inherit default description; };
|
||||||
|
|
||||||
|
@ -208,26 +212,27 @@ rec {
|
||||||
mkAttrsOf' { inherit type default description; };
|
mkAttrsOf' { inherit type default description; };
|
||||||
|
|
||||||
mkEnum' =
|
mkEnum' =
|
||||||
{
|
{ values, ... }@args:
|
||||||
values,
|
# `values` is a list. If `default` is present, then it is either null or one of `values`
|
||||||
default ? head values,
|
|
||||||
...
|
|
||||||
}@args:
|
|
||||||
# `values` is a list and `default` is one of the values (or null)
|
|
||||||
assert isList values;
|
assert isList values;
|
||||||
assert default == null || elem default values;
|
assert args ? default -> (args.default == null || elem args.default values);
|
||||||
mkNullableWithRaw' (
|
mkNullableWithRaw' (
|
||||||
(filterAttrs (n: v: n != "values") args)
|
(filterAttrs (n: v: n != "values") args)
|
||||||
// {
|
// {
|
||||||
# TODO we should remove this once `mkDesc` no longer has a special case
|
|
||||||
default = if isString default then generators.toPretty { } default else default;
|
|
||||||
type = types.enum values;
|
type = types.enum values;
|
||||||
}
|
}
|
||||||
|
# TODO we should remove this once `mkDesc` no longer has a special case
|
||||||
|
// (optionalAttrs (args ? default) { default = generators.toPretty { } args.default; })
|
||||||
);
|
);
|
||||||
mkEnum =
|
mkEnum =
|
||||||
values: default: description:
|
values: default: description:
|
||||||
mkEnum' { inherit values default description; };
|
mkEnum' { inherit values default description; };
|
||||||
mkEnumFirstDefault = values: description: mkEnum' { inherit values description; };
|
mkEnumFirstDefault =
|
||||||
|
values: description:
|
||||||
|
mkEnum' {
|
||||||
|
inherit values description;
|
||||||
|
default = head values;
|
||||||
|
};
|
||||||
|
|
||||||
mkBorder' =
|
mkBorder' =
|
||||||
{
|
{
|
||||||
|
@ -240,8 +245,8 @@ rec {
|
||||||
// {
|
// {
|
||||||
type = nixvimTypes.border;
|
type = nixvimTypes.border;
|
||||||
description = concatStringsSep "\n" (
|
description = concatStringsSep "\n" (
|
||||||
filter (s: s != "") [
|
(optional (description != "") description)
|
||||||
description
|
++ [
|
||||||
"Defines the border to use for ${name}."
|
"Defines the border to use for ${name}."
|
||||||
"Accepts same border values as `nvim_open_win()`. See `:help nvim_open_win()` for more info."
|
"Accepts same border values as `nvim_open_win()`. See `:help nvim_open_win()` for more info."
|
||||||
]
|
]
|
||||||
|
@ -310,24 +315,20 @@ rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
mkPackageOption =
|
mkPackageOption =
|
||||||
{
|
args:
|
||||||
name ? null, # Can be omitted if a custom description is given.
|
# A default package is required
|
||||||
description ? null,
|
assert args ? default;
|
||||||
default, # `default` is not optional
|
# `name` must be present if `description` is missing
|
||||||
...
|
assert (!args ? description) -> args ? name;
|
||||||
}@args:
|
|
||||||
mkNullOrOption' (
|
mkNullOrOption' (
|
||||||
(filterAttrs (n: _: n != "name") args)
|
(filterAttrs (n: _: n != "name") args)
|
||||||
// {
|
// {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
description =
|
description =
|
||||||
if description == null then
|
args.description or ''
|
||||||
''
|
Which package to use for `${args.name}`.
|
||||||
Which package to use for `${name}`.
|
Set to `null` to disable its automatic installation.
|
||||||
Set to `null` to disable its automatic installation.
|
'';
|
||||||
''
|
|
||||||
else
|
|
||||||
description;
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue