plugins/ui: normalize plugin defaults

This commit is contained in:
Matt Sturgeon 2024-06-11 16:54:41 +01:00
parent d7b0cf8014
commit b10a391bd0
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
8 changed files with 288 additions and 243 deletions

View file

@ -56,9 +56,12 @@ in
};
in
mapAttrs mkIntegrationOptions {
markdown = ''["markdown" "vimwiki"]'';
neorg = ''["norg"]'';
syslang = ''["syslang"]'';
markdown = [
"markdown"
"vimwiki"
];
neorg = [ "norg" ];
syslang = [ "syslang" ];
};
maxWidth = helpers.mkNullOrOption types.ints.unsigned "Image maximum width.";
@ -78,7 +81,12 @@ in
'';
windowOverlapClearFtIgnore =
helpers.defaultNullOpts.mkListOf types.str ''["cmp_menu" "cmp_docs" ""]''
helpers.defaultNullOpts.mkListOf types.str
[
"cmp_menu"
"cmp_docs"
""
]
''
Toggles images when windows are overlapped.
'';
@ -92,7 +100,14 @@ in
'';
hijackFilePatterns =
helpers.defaultNullOpts.mkListOf types.str ''["*.png" "*.jpg" "*.jpeg" "*.gif" "*.webp"]''
helpers.defaultNullOpts.mkListOf types.str
[
"*.png"
"*.jpg"
"*.jpeg"
"*.gif"
"*.webp"
]
''
Render image files as images when opened.
'';

View file

@ -16,19 +16,17 @@ helpers.neovim-plugin.mkNeovimPlugin config {
settingsOptions = {
mappings =
helpers.defaultNullOpts.mkListOf types.str
''
[
"<C-u>"
"<C-d>"
"<C-b>"
"<C-f>"
"<C-y>"
"<C-e>"
"zt"
"zz"
"zb"
]
''
[
"<C-u>"
"<C-d>"
"<C-b>"
"<C-f>"
"<C-y>"
"<C-e>"
"zt"
"zz"
"zb"
]
''
All the keys defined in this option will be mapped to their corresponding default
scrolling animation. To no map any key pass an empty table:

View file

@ -22,20 +22,43 @@ with lib;
cmdline = {
enabled = helpers.defaultNullOpts.mkBool true "enables Noice cmdline UI";
view = helpers.defaultNullOpts.mkStr "cmdline_popup" "";
opts = helpers.defaultNullOpts.mkNullable types.anything "{}" "";
opts = helpers.defaultNullOpts.mkAttrsOf types.anything { } "";
format =
helpers.defaultNullOpts.mkNullable (types.attrsOf types.anything)
''
{
cmdline = {pattern = "^:"; icon = ""; lang = "vim";};
search_down = {kind = "search"; pattern = "^/"; icon = " "; lang = "regex";};
search_up = {kind = "search"; pattern = "?%?"; icon = " "; lang = "regex";};
filter = {pattern = "^:%s*!"; icon = "$"; lang = "bash";};
lua = {pattern = "^:%s*lua%s+"; icon = ""; lang = "lua";};
help = {pattern = "^:%s*he?l?p?%s+"; icon = "";};
input = {};
}
''
helpers.defaultNullOpts.mkAttrsOf types.anything
{
cmdline = {
pattern = "^:";
icon = "";
lang = "vim";
};
search_down = {
kind = "search";
pattern = "^/";
icon = " ";
lang = "regex";
};
search_up = {
kind = "search";
pattern = "?%?";
icon = " ";
lang = "regex";
};
filter = {
pattern = "^:%s*!";
icon = "$";
lang = "bash";
};
lua = {
pattern = "^:%s*lua%s+";
icon = "";
lang = "lua";
};
help = {
pattern = "^:%s*he?l?p?%s+";
icon = "";
};
input = { };
}
''
conceal: (default=true) This will hide the text in the cmdline that matches the pattern.
view: (default is cmdline view)
@ -64,55 +87,80 @@ with lib;
"nui"
"cmp"
] "";
kindIcons = helpers.defaultNullOpts.mkNullable (types.either types.bool (
types.attrsOf types.anything
)) "{}" "Icons for completion item kinds. set to `false` to disable icons";
kindIcons = helpers.defaultNullOpts.mkNullable (
with types; either bool (attrsOf anything)
) { } "Icons for completion item kinds. set to `false` to disable icons";
};
redirect = helpers.defaultNullOpts.mkNullable (types.attrsOf types.anything) ''
{
view = "popup";
filter = {event = "msg_show";};
}
'' "default options for require('noice').redirect";
redirect = helpers.defaultNullOpts.mkAttrsOf types.anything {
view = "popup";
filter = {
event = "msg_show";
};
} "default options for require('noice').redirect";
commands = helpers.defaultNullOpts.mkNullable (types.attrsOf types.anything) ''
{
history = {
view = "split";
opts = {enter = true; format = "details";};
filter = {
any = [
{event = "notify";}
{error = true;}
{warning = true;}
{event = "msg_show"; kind = [""];}
{event = "lsp"; kind = "message";}
];
};
commands = helpers.defaultNullOpts.mkAttrsOf types.anything {
history = {
view = "split";
opts = {
enter = true;
format = "details";
};
last = {
view = "popup";
opts = {enter = true; format = "details";};
filter = {
any = [
{event = "notify";}
{error = true;}
{warning = true;}
{event = "msg_show"; kind = [""];}
{event = "lsp"; kind = "message";}
];
};
filter_opts = {count = 1;};
filter = {
any = [
{ event = "notify"; }
{ error = true; }
{ warning = true; }
{
event = "msg_show";
kind = [ "" ];
}
{
event = "lsp";
kind = "message";
}
];
};
errors = {
view = "popup";
opts = {enter = true; format = "details";};
filter = {error = true;};
filter_opts = {reverse = true;};
};
last = {
view = "popup";
opts = {
enter = true;
format = "details";
};
}
'' "You can add any custom commands that will be available with `:Noice command`";
filter = {
any = [
{ event = "notify"; }
{ error = true; }
{ warning = true; }
{
event = "msg_show";
kind = [ "" ];
}
{
event = "lsp";
kind = "message";
}
];
};
filter_opts = {
count = 1;
};
};
errors = {
view = "popup";
opts = {
enter = true;
format = "details";
};
filter = {
error = true;
};
filter_opts = {
reverse = true;
};
};
} "You can add any custom commands that will be available with `:Noice command`";
notify = {
enabled = helpers.defaultNullOpts.mkBool true ''
@ -131,35 +179,27 @@ with lib;
progress = {
enabled = helpers.defaultNullOpts.mkBool true "enable LSP progress";
format =
helpers.defaultNullOpts.mkNullable (types.either types.str types.anything) ''"lsp_progress"''
''
Lsp Progress is formatted using the builtins for lsp_progress
'';
formatDone =
helpers.defaultNullOpts.mkNullable (types.either types.str types.anything) ''"lsp_progress"''
"";
format = helpers.defaultNullOpts.mkNullable (with types; either str anything) "lsp_progress" ''
Lsp Progress is formatted using the builtins for lsp_progress
'';
formatDone = helpers.defaultNullOpts.mkNullable (with types; either str anything) "lsp_progress" "";
throttle = helpers.defaultNullOpts.mkNum "1000 / 30" "frequency to update lsp progress message";
throttle = helpers.defaultNullOpts.mkNum (literalExpression "1000 / 30") "frequency to update lsp progress message";
view = helpers.defaultNullOpts.mkStr "mini" "";
};
override = helpers.defaultNullOpts.mkNullable (types.attrsOf types.bool) ''
{
"vim.lsp.util.convert_input_to_markdown_lines" = false;
"vim.lsp.util.stylize_markdown" = false;
"cmp.entry.get_documentation" = false;
}
'' "";
override = helpers.defaultNullOpts.mkAttrsOf types.bool {
"vim.lsp.util.convert_input_to_markdown_lines" = false;
"vim.lsp.util.stylize_markdown" = false;
"cmp.entry.get_documentation" = false;
} "";
hover = {
enabled = helpers.defaultNullOpts.mkBool true "enable hover UI";
view =
helpers.defaultNullOpts.mkNullable types.str null
"when null, use defaults from documentation";
view = helpers.defaultNullOpts.mkStr (literalMD "use defaults from documentation") ""; # TODO: description
opts =
helpers.defaultNullOpts.mkNullable types.anything "{}"
helpers.defaultNullOpts.mkAttrsOf types.anything { }
"merged with defaults from documentation";
};
@ -175,11 +215,9 @@ with lib;
'';
};
view =
helpers.defaultNullOpts.mkNullable types.str null
"when null, use defaults from documentation";
view = helpers.defaultNullOpts.mkStr null "when null, use defaults from documentation";
opts =
helpers.defaultNullOpts.mkNullable types.anything "{}"
helpers.defaultNullOpts.mkAttrsOf types.anything { }
"merged with defaults from documentation";
};
@ -187,42 +225,39 @@ with lib;
enabled = helpers.defaultNullOpts.mkBool true "enable display of messages";
view = helpers.defaultNullOpts.mkStr "notify" "";
opts = helpers.defaultNullOpts.mkNullable types.anything "{}" "";
opts = helpers.defaultNullOpts.mkAttrsOf types.anything { } "";
};
documentation = {
view = helpers.defaultNullOpts.mkStr "hover" "";
opts = helpers.defaultNullOpts.mkNullable types.anything ''
{
lang = "markdown";
replace = true;
render = "plain";
format = ["{message}"];
win_options = { concealcursor = "n"; conceallevel = 3; };
}
'' "";
opts = helpers.defaultNullOpts.mkAttrsOf types.anything {
lang = "markdown";
replace = true;
render = "plain";
format = [ "{message}" ];
win_options = {
concealcursor = "n";
conceallevel = 3;
};
} "";
};
};
markdown = {
hover = helpers.defaultNullOpts.mkNullable (types.attrsOf types.str) ''
{
"|(%S-)|" = helpers.mkRaw "vim.cmd.help"; // vim help links
"%[.-%]%((%S-)%)" = helpers.mkRaw "require("noice.util").open"; // markdown links
}
'' "set handlers for hover (lua code)";
hover = helpers.defaultNullOpts.mkAttrsOf types.str {
"|(%S-)|".__raw = "vim.cmd.help"; # vim help links
"%[.-%]%((%S-)%)".__raw = "require('noice.util').open"; # markdown links
} "set handlers for hover (lua code)";
highlights = helpers.defaultNullOpts.mkNullable (types.attrsOf types.str) ''
{
"|%S-|" = "@text.reference";
"@%S+" = "@parameter";
"^%s*(Parameters:)" = "@text.title";
"^%s*(Return:)" = "@text.title";
"^%s*(See also:)" = "@text.title";
"{%S-}" = "@parameter";
}
'' "set highlight groups";
highlights = helpers.defaultNullOpts.mkAttrsOf types.str {
"|%S-|" = "@text.reference";
"@%S+" = "@parameter";
"^%s*(Parameters:)" = "@text.title";
"^%s*(Return:)" = "@text.title";
"^%s*(See also:)" = "@text.title";
"{%S-}" = "@parameter";
} "set highlight groups";
};
health = {
@ -235,37 +270,40 @@ with lib;
You can disable this behaviour here
'';
excludedFiletypes =
helpers.defaultNullOpts.mkNullable (types.listOf types.str) ''[ "cmp_menu" "cmp_docs" "notify"]''
helpers.defaultNullOpts.mkListOf types.str
[
"cmp_menu"
"cmp_docs"
"notify"
]
''
add any filetypes here, that shouldn't trigger smart move
'';
};
presets =
helpers.defaultNullOpts.mkNullable (types.either types.bool types.anything)
''
{
bottom_search = false;
command_palette = false;
long_message_to_split = false;
inc_rename = false;
lsp_doc_border = false;
}
''
helpers.defaultNullOpts.mkNullable (with types; either bool anything)
{
bottom_search = false;
command_palette = false;
long_message_to_split = false;
inc_rename = false;
lsp_doc_border = false;
}
"
you can enable a preset by setting it to true, or a table that will override the preset
config. you can also add custom presets that you can enable/disable with enabled=true
";
throttle = helpers.defaultNullOpts.mkNum "1000 / 30" ''
throttle = helpers.defaultNullOpts.mkNum (literalExpression "1000 / 30") ''
how frequently does Noice need to check for ui updates? This has no effect when in blocking
mode
'';
views = helpers.defaultNullOpts.mkNullable (types.attrsOf types.anything) "{}" "";
routes = helpers.defaultNullOpts.mkNullable (types.listOf (types.attrsOf types.anything)) "[]" "";
status = helpers.defaultNullOpts.mkNullable (types.attrsOf types.anything) "{}" "";
format = helpers.defaultNullOpts.mkNullable (types.attrsOf types.anything) "{}" "";
views = helpers.defaultNullOpts.mkAttrsOf types.anything { } "";
routes = helpers.defaultNullOpts.mkListOf (types.attrsOf types.anything) [ ] "";
status = helpers.defaultNullOpts.mkAttrsOf types.anything { } "";
format = helpers.defaultNullOpts.mkAttrsOf types.anything { } "";
};
config =

View file

@ -21,7 +21,7 @@ helpers.neovim-plugin.mkNeovimPlugin config {
benefit from the performance optimizations in this plugin.
'';
thousands = helpers.defaultNullOpts.mkNullable (with types; either str (enum [ false ])) "false" ''
thousands = helpers.defaultNullOpts.mkNullable (with types; either str (enum [ false ])) false ''
`false` or line number thousands separator string ("." / ",").
'';
@ -62,15 +62,15 @@ helpers.neovim-plugin.mkNeovimPlugin config {
) "Table of booleans or functions returning a boolean.";
sign = {
name = helpers.defaultNullOpts.mkListOf types.str "[]" ''
name = helpers.defaultNullOpts.mkListOf types.str [ ] ''
List of lua patterns to match the sign name against.
'';
text = helpers.defaultNullOpts.mkListOf types.str "[]" ''
text = helpers.defaultNullOpts.mkListOf types.str [ ] ''
List of lua patterns to match the extmark sign text against.
'';
namespace = helpers.defaultNullOpts.mkListOf types.str "[]" ''
namespace = helpers.defaultNullOpts.mkListOf types.str [ ] ''
List of lua patterns to match the extmark sign namespace against.
'';
@ -98,29 +98,27 @@ helpers.neovim-plugin.mkNeovimPlugin config {
};
};
in
helpers.defaultNullOpts.mkListOf segmentType ''
[
{
text = ["%C"];
click = "v:lua.ScFa";
}
{
text = ["%s"];
click = "v:lua.ScSa";
}
{
text = [
{__raw = "require('statuscol.builtin').lnumfunc";}
" "
];
condition = [
true
{__raw = "require('statuscol.builtin').not_empty";}
];
click = "v:lua.ScLa";
}
]
'' "The statuscolumn can be customized through the `segments` option.";
helpers.defaultNullOpts.mkListOf segmentType [
{
text = [ "%C" ];
click = "v:lua.ScFa";
}
{
text = [ "%s" ];
click = "v:lua.ScSa";
}
{
text = [
{ __raw = "require('statuscol.builtin').lnumfunc"; }
" "
];
condition = [
true
{ __raw = "require('statuscol.builtin').not_empty"; }
];
click = "v:lua.ScLa";
}
] "The statuscolumn can be customized through the `segments` option.";
clickmod = helpers.defaultNullOpts.mkStr "c" ''
Modifier used for certain actions in the builtin clickhandlers:

View file

@ -16,44 +16,42 @@ helpers.neovim-plugin.mkNeovimPlugin config {
settingsOptions = {
groups =
helpers.defaultNullOpts.mkListOf types.str
''
[
"Normal"
"NormalNC"
"Comment"
"Constant"
"Special"
"Identifier"
"Statement"
"PreProc"
"Type"
"Underlined"
"Todo"
"String"
"Function"
"Conditional"
"Repeat"
"Operator"
"Structure"
"LineNr"
"NonText"
"SignColumn"
"CursorLine"
"CursorLineNr"
"StatusLine"
"StatusLineNC"
"EndOfBuffer"
]
''
[
"Normal"
"NormalNC"
"Comment"
"Constant"
"Special"
"Identifier"
"Statement"
"PreProc"
"Type"
"Underlined"
"Todo"
"String"
"Function"
"Conditional"
"Repeat"
"Operator"
"Structure"
"LineNr"
"NonText"
"SignColumn"
"CursorLine"
"CursorLineNr"
"StatusLine"
"StatusLineNC"
"EndOfBuffer"
]
''
The list of transparent groups.
'';
extra_groups = helpers.defaultNullOpts.mkListOf types.str "[]" ''
extra_groups = helpers.defaultNullOpts.mkListOf types.str [ ] ''
Additional groups that should be cleared.
'';
exclude_groups = helpers.defaultNullOpts.mkListOf types.str "[]" ''
exclude_groups = helpers.defaultNullOpts.mkListOf types.str [ ] ''
Groups that you don't want to clear.
'';
};

View file

@ -15,13 +15,19 @@ helpers.neovim-plugin.mkNeovimPlugin config {
settingsOptions = {
dimming = {
alpha = helpers.defaultNullOpts.mkNullable (types.numbers.between 0.0 1.0) "0.25" ''
alpha = helpers.defaultNullOpts.mkNullable (types.numbers.between 0.0 1.0) 0.25 ''
Amount of dimming.
'';
color = helpers.defaultNullOpts.mkListOf types.str ''["Normal" "#ffffff"]'' ''
Highlight groups / colors to use.
'';
color =
helpers.defaultNullOpts.mkListOf types.str
[
"Normal"
"#ffffff"
]
''
Highlight groups / colors to use.
'';
term_bg = helpers.defaultNullOpts.mkStr "#000000" ''
If `guibg=NONE`, this will be used to calculate text color.
@ -42,16 +48,14 @@ helpers.neovim-plugin.mkNeovimPlugin config {
the types of nodes that should always be fully expanded.
'';
expand = helpers.defaultNullOpts.mkListOf types.str ''
[
"function"
"method"
"table"
"if_statement"
]
'' "For treesitter, we will always try to expand to the top-most ancestor with these types.";
expand = helpers.defaultNullOpts.mkListOf types.str [
"function"
"method"
"table"
"if_statement"
] "For treesitter, we will always try to expand to the top-most ancestor with these types.";
exclude = helpers.defaultNullOpts.mkListOf types.str "[]" ''
exclude = helpers.defaultNullOpts.mkListOf types.str [ ] ''
Exclude these filetypes.
'';
};

View file

@ -18,7 +18,7 @@ helpers.neovim-plugin.mkNeovimPlugin config {
Enables or disables virt-column.
'';
char = helpers.defaultNullOpts.mkNullable (with types; either str (listOf str)) ''[""]'' ''
char = helpers.defaultNullOpts.mkNullable (with types; either str (listOf str)) [ "" ] ''
Character, or list of characters, that get used to display the virtual column.
Each character has to have a display width of 0 or 1.
'';
@ -32,26 +32,22 @@ helpers.neovim-plugin.mkNeovimPlugin config {
'';
exclude = {
filetypes = helpers.defaultNullOpts.mkListOf types.str ''
[
"lspinfo"
"packer"
"checkhealth"
"help"
"man"
"TelescopePrompt"
"TelescopeResults"
]
'' "List of `filetype`s for which virt-column is disabled.";
filetypes = helpers.defaultNullOpts.mkListOf types.str [
"lspinfo"
"packer"
"checkhealth"
"help"
"man"
"TelescopePrompt"
"TelescopeResults"
] "List of `filetype`s for which virt-column is disabled.";
buftypes = helpers.defaultNullOpts.mkListOf types.str ''
[
"nofile"
"quickfix"
"terminal"
"prompt"
]
'' "List of `buftype`s for which virt-column is disabled.";
buftypes = helpers.defaultNullOpts.mkListOf types.str [
"nofile"
"quickfix"
"terminal"
"prompt"
] "List of `buftype`s for which virt-column is disabled.";
};
};

View file

@ -16,7 +16,7 @@ helpers.neovim-plugin.mkNeovimPlugin config {
# Optionally, explicitly declare some options. You don't have to.
settingsOptions = {
window = {
backdrop = helpers.defaultNullOpts.mkNullable (types.numbers.between 0.0 1.0) "0.95" ''
backdrop = helpers.defaultNullOpts.mkNullable (types.numbers.between 0.0 1.0) 0.95 ''
Shade the backdrop of the Zen window.
Set to 1 to keep the same as Normal.
'';
@ -31,7 +31,7 @@ helpers.neovim-plugin.mkNeovimPlugin config {
rawLua
]
)
"120"
120
''
Width of the zen window.
@ -51,7 +51,7 @@ helpers.neovim-plugin.mkNeovimPlugin config {
rawLua
]
)
"1"
1
''
Height of the Zen window.
@ -61,7 +61,7 @@ helpers.neovim-plugin.mkNeovimPlugin config {
- a function that returns the width or the height
'';
options = helpers.defaultNullOpts.mkAttrsOf types.anything "{}" ''
options = helpers.defaultNullOpts.mkAttrsOf types.anything { } ''
By default, no options are changed for the Zen window.
You can set any `vim.wo` option here.
@ -82,14 +82,12 @@ helpers.neovim-plugin.mkNeovimPlugin config {
plugins = {
options =
helpers.defaultNullOpts.mkAttrsOf types.anything
''
{
enabled = true;
ruler = false;
showcmd = false;
laststatus = 0;
}
''
{
enabled = true;
ruler = false;
showcmd = false;
laststatus = 0;
}
''
Disable some global vim options (`vim.o`...).
'';