mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-28 11:30:06 +02:00
helpers: Add mkLua,mkLuaFn (defaultNullOpts or not) (#866)
This makes it such that defaultNullOpts.mkStr never represents a lua string, easing documenting where a string is a lua string vs lua code.
This commit is contained in:
parent
f2e808a519
commit
abd1c4007a
5 changed files with 70 additions and 45 deletions
|
@ -119,6 +119,27 @@ with lib; rec {
|
||||||
mkCompositeOption = desc: options:
|
mkCompositeOption = desc: options:
|
||||||
mkNullOrOption (types.submodule {inherit options;}) desc;
|
mkNullOrOption (types.submodule {inherit options;}) desc;
|
||||||
|
|
||||||
|
mkNullOrLua = desc:
|
||||||
|
lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
default = null;
|
||||||
|
description = desc;
|
||||||
|
apply = mkRaw;
|
||||||
|
};
|
||||||
|
|
||||||
|
mkNullOrLuaFn = desc: let
|
||||||
|
fnDesc = "(lua function)";
|
||||||
|
in
|
||||||
|
mkNullOrLua (
|
||||||
|
if desc == ""
|
||||||
|
then fnDesc
|
||||||
|
else ''
|
||||||
|
${desc}
|
||||||
|
|
||||||
|
${fnDesc}
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
defaultNullOpts = let
|
defaultNullOpts = let
|
||||||
maybeRaw = t: lib.types.either t rawType;
|
maybeRaw = t: lib.types.either t rawType;
|
||||||
in rec {
|
in rec {
|
||||||
|
@ -140,33 +161,38 @@ with lib; rec {
|
||||||
# documentation
|
# documentation
|
||||||
mkNullableWithRaw = type: mkNullable (maybeRaw type);
|
mkNullableWithRaw = type: mkNullable (maybeRaw type);
|
||||||
|
|
||||||
mkLuaFn = default: desc:
|
mkLua = default: desc: let
|
||||||
lib.mkOption {
|
defaultDesc = "default: `${default}`";
|
||||||
type = lib.types.nullOr lib.types.str;
|
in
|
||||||
default = null;
|
mkNullOrLua
|
||||||
description = let
|
(
|
||||||
defaultDesc = ''
|
(optionalString (desc != "") ''
|
||||||
default:
|
${desc}
|
||||||
```lua
|
|
||||||
${default}
|
'')
|
||||||
```
|
+ ''
|
||||||
'';
|
default: `${default}`
|
||||||
in
|
''
|
||||||
if desc == ""
|
);
|
||||||
then ''
|
|
||||||
(lua function)
|
|
||||||
|
|
||||||
${defaultDesc}
|
${defaultDesc}
|
||||||
''
|
''
|
||||||
else ''
|
);
|
||||||
${desc}
|
|
||||||
|
|
||||||
(lua function)
|
mkLuaFn = default: desc: let
|
||||||
|
defaultDesc = "default: `${default}`";
|
||||||
|
in
|
||||||
|
mkNullOrLuaFn
|
||||||
|
(
|
||||||
|
if desc == ""
|
||||||
|
then defaultDesc
|
||||||
|
else ''
|
||||||
|
${desc}
|
||||||
|
|
||||||
|
${defaultDesc}
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
${defaultDesc}
|
|
||||||
'';
|
|
||||||
apply = mkRaw;
|
|
||||||
};
|
|
||||||
mkNum = default: mkNullable (maybeRaw lib.types.number) (toString default);
|
mkNum = default: mkNullable (maybeRaw lib.types.number) (toString default);
|
||||||
mkInt = default: mkNullable (maybeRaw lib.types.int) (toString default);
|
mkInt = default: mkNullable (maybeRaw lib.types.int) (toString default);
|
||||||
# Positive: >0
|
# Positive: >0
|
||||||
|
@ -179,7 +205,7 @@ with lib; rec {
|
||||||
then "true"
|
then "true"
|
||||||
else "false"
|
else "false"
|
||||||
);
|
);
|
||||||
mkStr = default: mkNullable lib.types.str ''${builtins.toString default}'';
|
mkStr = default: mkNullable (maybeRaw lib.types.str) ''${builtins.toString default}'';
|
||||||
mkAttributeSet = default: mkNullable lib.types.attrs ''${default}'';
|
mkAttributeSet = default: mkNullable lib.types.attrs ''${default}'';
|
||||||
# Note that this function is _not_ to be used with submodule elements, as it may obstruct the
|
# Note that this function is _not_ to be used with submodule elements, as it may obstruct the
|
||||||
# documentation
|
# documentation
|
||||||
|
|
|
@ -69,7 +69,7 @@ in {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
inlayHints = {
|
inlayHints = {
|
||||||
inline = helpers.defaultNullOpts.mkStr ''vim.fn.has("nvim-0.10") == 1'' ''
|
inline = helpers.defaultNullOpts.mkLua ''vim.fn.has("nvim-0.10") == 1'' ''
|
||||||
Show hints inline.
|
Show hints inline.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ in {
|
||||||
setupOptions = with cfg;
|
setupOptions = with cfg;
|
||||||
{
|
{
|
||||||
inlay_hints = with inlayHints; {
|
inlay_hints = with inlayHints; {
|
||||||
inline = helpers.mkRaw inline;
|
inherit inline;
|
||||||
only_current_line = onlyCurrentLine;
|
only_current_line = onlyCurrentLine;
|
||||||
only_current_line_autocmd = onlyCurrentLineAutocmd;
|
only_current_line_autocmd = onlyCurrentLineAutocmd;
|
||||||
show_parameter_hints = showParameterHints;
|
show_parameter_hints = showParameterHints;
|
||||||
|
|
|
@ -200,7 +200,7 @@ in {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
notificationGroup =
|
notificationGroup =
|
||||||
helpers.defaultNullOpts.mkStr
|
helpers.defaultNullOpts.mkLuaFn
|
||||||
"function(msg) return msg.lsp_name end"
|
"function(msg) return msg.lsp_name end"
|
||||||
''
|
''
|
||||||
How to get a progress message's notification group key
|
How to get a progress message's notification group key
|
||||||
|
@ -321,7 +321,7 @@ in {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
formatMessage =
|
formatMessage =
|
||||||
helpers.defaultNullOpts.mkStr
|
helpers.defaultNullOpts.mkLua
|
||||||
"require('fidget.progress.display').default_format_message"
|
"require('fidget.progress.display').default_format_message"
|
||||||
''
|
''
|
||||||
How to format a progress message.
|
How to format a progress message.
|
||||||
|
@ -341,12 +341,12 @@ in {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
formatAnnote =
|
formatAnnote =
|
||||||
helpers.defaultNullOpts.mkStr
|
helpers.defaultNullOpts.mkLuaFn
|
||||||
"function(msg) return msg.title end"
|
"function(msg) return msg.title end"
|
||||||
"How to format a progress annotation.";
|
"How to format a progress annotation.";
|
||||||
|
|
||||||
formatGroupName =
|
formatGroupName =
|
||||||
helpers.defaultNullOpts.mkStr
|
helpers.defaultNullOpts.mkLuaFn
|
||||||
"function(group) return tostring(group) end"
|
"function(group) return tostring(group) end"
|
||||||
"How to format a progress notification group's name.";
|
"How to format a progress notification group's name.";
|
||||||
|
|
||||||
|
@ -653,7 +653,7 @@ in {
|
||||||
suppress_on_insert = suppressOnInsert;
|
suppress_on_insert = suppressOnInsert;
|
||||||
ignore_done_already = ignoreDoneAlready;
|
ignore_done_already = ignoreDoneAlready;
|
||||||
ignore_empty_message = ignoreEmptyMessage;
|
ignore_empty_message = ignoreEmptyMessage;
|
||||||
notification_group = helpers.mkRaw notificationGroup;
|
notification_group = notificationGroup;
|
||||||
clear_on_detach =
|
clear_on_detach =
|
||||||
if isString clearOnDetach
|
if isString clearOnDetach
|
||||||
then helpers.mkRaw clearOnDetach
|
then helpers.mkRaw clearOnDetach
|
||||||
|
@ -677,9 +677,9 @@ in {
|
||||||
icon_style = iconStyle;
|
icon_style = iconStyle;
|
||||||
inherit priority;
|
inherit priority;
|
||||||
skip_history = skipHistory;
|
skip_history = skipHistory;
|
||||||
format_message = helpers.mkRaw formatMessage;
|
format_message = formatMessage;
|
||||||
format_annote = helpers.mkRaw formatAnnote;
|
format_annote = formatAnnote;
|
||||||
format_group_name = helpers.mkRaw formatGroupName;
|
format_group_name = formatGroupName;
|
||||||
overrides =
|
overrides =
|
||||||
helpers.ifNonNull' overrides
|
helpers.ifNonNull' overrides
|
||||||
(
|
(
|
||||||
|
|
|
@ -100,7 +100,7 @@ in {
|
||||||
mapAttrs
|
mapAttrs
|
||||||
(
|
(
|
||||||
name: desc:
|
name: desc:
|
||||||
helpers.mkNullOrOption types.str "The code of the function that runs ${desc}."
|
helpers.mkNullOrLuaFn "The code of the function that runs ${desc}."
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
enabling = "when enabling auto-save";
|
enabling = "when enabling auto-save";
|
||||||
|
@ -123,13 +123,12 @@ in {
|
||||||
inherit (cfg) condition;
|
inherit (cfg) condition;
|
||||||
write_all_buffers = cfg.writeAllBuffers;
|
write_all_buffers = cfg.writeAllBuffers;
|
||||||
debounce_delay = cfg.debounceDelay;
|
debounce_delay = cfg.debounceDelay;
|
||||||
callbacks = with cfg.callbacks;
|
callbacks = with cfg.callbacks; {
|
||||||
mapAttrs (_: helpers.mkRaw) {
|
inherit enabling disabling;
|
||||||
inherit enabling disabling;
|
before_asserting_save = beforeAssertingSave;
|
||||||
before_asserting_save = beforeAssertingSave;
|
before_saving = beforeSaving;
|
||||||
before_saving = beforeSaving;
|
after_saving = afterSaving;
|
||||||
after_saving = afterSaving;
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
// cfg.extraOptions;
|
// cfg.extraOptions;
|
||||||
in
|
in
|
||||||
|
|
|
@ -33,7 +33,7 @@ in {
|
||||||
|
|
||||||
disableInReplaceMode = helpers.defaultNullOpts.mkBool true "Disable in replace mode.";
|
disableInReplaceMode = helpers.defaultNullOpts.mkBool true "Disable in replace mode.";
|
||||||
|
|
||||||
ignoredNextChar = helpers.defaultNullOpts.mkStr "[=[[%w%%%'%[%\"%.%`%$]]=]" ''
|
ignoredNextChar = helpers.defaultNullOpts.mkLua "[=[[%w%%%'%[%\"%.%`%$]]=]" ''
|
||||||
Regexp to ignore if it matches the next character.
|
Regexp to ignore if it matches the next character.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ in {
|
||||||
disable_in_macro = cfg.disableInMacro;
|
disable_in_macro = cfg.disableInMacro;
|
||||||
disable_in_visualblock = cfg.disableInVisualblock;
|
disable_in_visualblock = cfg.disableInVisualblock;
|
||||||
disable_in_replace_mode = cfg.disableInReplaceMode;
|
disable_in_replace_mode = cfg.disableInReplaceMode;
|
||||||
ignored_next_char = helpers.mkRaw cfg.ignoredNextChar;
|
ignored_next_char = cfg.ignoredNextChar;
|
||||||
enable_moveright = cfg.enableMoveright;
|
enable_moveright = cfg.enableMoveright;
|
||||||
enable_afterquote = cfg.enableAfterQuote;
|
enable_afterquote = cfg.enableAfterQuote;
|
||||||
enable_check_bracket_line = cfg.enableCheckBracketLine;
|
enable_check_bracket_line = cfg.enableCheckBracketLine;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue