mirror of
https://github.com/nix-community/nixvim.git
synced 2025-12-16 14:01:10 +01:00
plugins/illuminate: migrate to mkNeovimPlugin
This commit is contained in:
parent
35b7251d83
commit
ce149cac11
3 changed files with 126 additions and 165 deletions
|
|
@ -1,156 +1,31 @@
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
helpers,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib;
|
lib.nixvim.plugins.mkNeovimPlugin {
|
||||||
let
|
name = "illuminate";
|
||||||
cfg = config.plugins.illuminate;
|
package = "vim-illuminate";
|
||||||
|
setup = ".configure";
|
||||||
|
|
||||||
mkListStr = helpers.defaultNullOpts.mkListOf types.str;
|
maintainers = [ lib.maintainers.khaneliman ];
|
||||||
|
|
||||||
commonOptions = with helpers.defaultNullOpts; {
|
settingsExample = {
|
||||||
providers =
|
delay = 200;
|
||||||
mkListStr
|
providers = [
|
||||||
[
|
"lsp"
|
||||||
"lsp"
|
"treesitter"
|
||||||
"treesitter"
|
];
|
||||||
"regex"
|
filetypes_denylist = [
|
||||||
]
|
"dirbuf"
|
||||||
''
|
"fugitive"
|
||||||
Provider used to get references in the buffer, ordered by priority.
|
];
|
||||||
'';
|
under_cursor = false;
|
||||||
|
min_count_to_highlight = 2;
|
||||||
delay = mkInt 100 ''
|
|
||||||
Delay in milliseconds.
|
|
||||||
'';
|
|
||||||
|
|
||||||
modesDenylist = mkListStr [ ] ''
|
|
||||||
Modes to not illuminate, this overrides `modes_allowlist`.
|
|
||||||
See `:help mode()` for possible values.
|
|
||||||
'';
|
|
||||||
|
|
||||||
modesAllowlist = mkListStr [ ] ''
|
|
||||||
Modes to illuminate, this is overridden by `modes_denylist`.
|
|
||||||
See `:help mode()` for possible values.
|
|
||||||
'';
|
|
||||||
|
|
||||||
providersRegexSyntaxDenylist = mkListStr [ ] ''
|
|
||||||
Syntax to not illuminate, this overrides `providers_regex_syntax_allowlist`.
|
|
||||||
Only applies to the 'regex' provider.
|
|
||||||
Use `:echo synIDattr(synIDtrans(synID(line('.'), col('.'), 1)), 'name')`.
|
|
||||||
'';
|
|
||||||
|
|
||||||
providersRegexSyntaxAllowlist = mkListStr [ ] ''
|
|
||||||
Syntax to illuminate, this is overridden by `providers_regex_syntax_denylist`.
|
|
||||||
Only applies to the 'regex' provider.
|
|
||||||
Use `:echo synIDattr(synIDtrans(synID(line('.'), col('.'), 1)), 'name')`.
|
|
||||||
'';
|
|
||||||
|
|
||||||
underCursor = mkBool true ''
|
|
||||||
Whether or not to illuminate under the cursor.
|
|
||||||
'';
|
|
||||||
|
|
||||||
largeFileCutoff = helpers.mkNullOrOption types.int ''
|
|
||||||
Number of lines at which to use `large_file_config`.
|
|
||||||
The `under_cursor` option is disabled when this cutoff is hit.
|
|
||||||
'';
|
|
||||||
|
|
||||||
minCountToHighlight = mkInt 1 ''
|
|
||||||
Minimum number of matches required to perform highlighting.
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
filetypeOptions = {
|
# TODO: Deprecated 2025-10-04
|
||||||
filetypesDenylist =
|
inherit (import ./deprecations.nix)
|
||||||
mkListStr
|
optionsRenamedToSettings
|
||||||
[
|
deprecateExtraOptions
|
||||||
"dirvish"
|
;
|
||||||
"fugitive"
|
|
||||||
]
|
|
||||||
''
|
|
||||||
Filetypes to not illuminate, this overrides `filetypes_allowlist`.
|
|
||||||
'';
|
|
||||||
|
|
||||||
filetypesAllowlist = mkListStr [ ] ''
|
|
||||||
Filetypes to illuminate, this is overridden by `filetypes_denylist`.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.plugins.illuminate =
|
|
||||||
with helpers;
|
|
||||||
with defaultNullOpts;
|
|
||||||
lib.nixvim.plugins.neovim.extraOptionsOptions
|
|
||||||
// {
|
|
||||||
enable = mkEnableOption "vim-illuminate";
|
|
||||||
|
|
||||||
package = lib.mkPackageOption pkgs "vim-illuminate" {
|
|
||||||
default = [
|
|
||||||
"vimPlugins"
|
|
||||||
"vim-illuminate"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
filetypeOverrides =
|
|
||||||
helpers.defaultNullOpts.mkAttrsOf (types.submodule { options = commonOptions; }) { }
|
|
||||||
''
|
|
||||||
Filetype specific overrides.
|
|
||||||
The keys are strings to represent the filetype.
|
|
||||||
'';
|
|
||||||
|
|
||||||
largeFileOverrides = mkOption {
|
|
||||||
type = types.submodule { options = commonOptions // filetypeOptions; };
|
|
||||||
description = ''
|
|
||||||
Config to use for large files (based on large_file_cutoff).
|
|
||||||
Supports the same keys passed to .configure
|
|
||||||
If null, illuminate will be disabled for large files.
|
|
||||||
'';
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// commonOptions
|
|
||||||
// filetypeOptions;
|
|
||||||
|
|
||||||
config =
|
|
||||||
let
|
|
||||||
filetypeSetupOptions =
|
|
||||||
filetypeOptions: with filetypeOptions; {
|
|
||||||
filetypes_denylist = filetypesDenylist;
|
|
||||||
filetypes_allowlist = filetypesAllowlist;
|
|
||||||
};
|
|
||||||
commonSetupOptions =
|
|
||||||
opts: with opts; {
|
|
||||||
inherit providers;
|
|
||||||
inherit delay;
|
|
||||||
modes_denylist = modesDenylist;
|
|
||||||
modes_allowlist = modesAllowlist;
|
|
||||||
providers_regex_syntax_denylist = providersRegexSyntaxDenylist;
|
|
||||||
providers_regex_syntax_allowlist = providersRegexSyntaxAllowlist;
|
|
||||||
under_cursor = underCursor;
|
|
||||||
large_file_cutoff = largeFileCutoff;
|
|
||||||
min_count_to_highlight = minCountToHighlight;
|
|
||||||
};
|
|
||||||
setupOptions =
|
|
||||||
with cfg;
|
|
||||||
{
|
|
||||||
large_file_overrides =
|
|
||||||
(commonSetupOptions largeFileOverrides) // (filetypeSetupOptions largeFileOverrides);
|
|
||||||
|
|
||||||
filetype_overrides = helpers.ifNonNull' filetypeOverrides (
|
|
||||||
mapAttrs (_: commonSetupOptions) filetypeOverrides
|
|
||||||
);
|
|
||||||
}
|
|
||||||
// (filetypeSetupOptions cfg)
|
|
||||||
// (commonSetupOptions cfg);
|
|
||||||
in
|
|
||||||
mkIf cfg.enable {
|
|
||||||
extraPlugins = [ cfg.package ];
|
|
||||||
|
|
||||||
extraConfigLua = ''
|
|
||||||
require("illuminate").configure(${lib.nixvim.toLuaObject setupOptions})
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
62
plugins/by-name/illuminate/deprecations.nix
Normal file
62
plugins/by-name/illuminate/deprecations.nix
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
{
|
||||||
|
# TODO: added 2025-10-04
|
||||||
|
deprecateExtraOptions = true;
|
||||||
|
optionsRenamedToSettings = [
|
||||||
|
"providers"
|
||||||
|
"delay"
|
||||||
|
"modesDenylist"
|
||||||
|
"modesAllowlist"
|
||||||
|
"providersRegexSyntaxDenylist"
|
||||||
|
"providersRegexSyntaxAllowlist"
|
||||||
|
"underCursor"
|
||||||
|
"largeFileCutoff"
|
||||||
|
"minCountToHighlight"
|
||||||
|
"filetypesDenylist"
|
||||||
|
"filetypesAllowlist"
|
||||||
|
"filetypeOverrides"
|
||||||
|
[
|
||||||
|
"largeFileOverrides"
|
||||||
|
"providers"
|
||||||
|
]
|
||||||
|
[
|
||||||
|
"largeFileOverrides"
|
||||||
|
"delay"
|
||||||
|
]
|
||||||
|
[
|
||||||
|
"largeFileOverrides"
|
||||||
|
"modesDenylist"
|
||||||
|
]
|
||||||
|
[
|
||||||
|
"largeFileOverrides"
|
||||||
|
"modesAllowlist"
|
||||||
|
]
|
||||||
|
[
|
||||||
|
"largeFileOverrides"
|
||||||
|
"providersRegexSyntaxDenylist"
|
||||||
|
]
|
||||||
|
[
|
||||||
|
"largeFileOverrides"
|
||||||
|
"providersRegexSyntaxAllowlist"
|
||||||
|
]
|
||||||
|
[
|
||||||
|
"largeFileOverrides"
|
||||||
|
"underCursor"
|
||||||
|
]
|
||||||
|
[
|
||||||
|
"largeFileOverrides"
|
||||||
|
"largeFileCutoff"
|
||||||
|
]
|
||||||
|
[
|
||||||
|
"largeFileOverrides"
|
||||||
|
"minCountToHighlight"
|
||||||
|
]
|
||||||
|
[
|
||||||
|
"largeFileOverrides"
|
||||||
|
"filetypesDenylist"
|
||||||
|
]
|
||||||
|
[
|
||||||
|
"largeFileOverrides"
|
||||||
|
"filetypesAllowlist"
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -3,28 +3,52 @@
|
||||||
plugins.illuminate.enable = true;
|
plugins.illuminate.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
defaults = {
|
||||||
|
plugins.illuminate = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
providers = [
|
||||||
|
"lsp"
|
||||||
|
"treesitter"
|
||||||
|
"regex"
|
||||||
|
];
|
||||||
|
delay = 100;
|
||||||
|
filetype_overrides = { };
|
||||||
|
filetypes_denylist = [
|
||||||
|
"dirbuf"
|
||||||
|
"dirvish"
|
||||||
|
"fugitive"
|
||||||
|
];
|
||||||
|
filetypes_allowlist = [ ];
|
||||||
|
modes_denylist = [ ];
|
||||||
|
modes_allowlist = [ ];
|
||||||
|
providers_regex_syntax_denylist = [ ];
|
||||||
|
providers_regex_syntax_allowlist = [ ];
|
||||||
|
under_cursor = true;
|
||||||
|
large_file_cutoff = 10000;
|
||||||
|
large_file_overrides = null;
|
||||||
|
min_count_to_highlight = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
example = {
|
example = {
|
||||||
plugins.illuminate = {
|
plugins.illuminate = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
delay = 50;
|
settings = {
|
||||||
providers = [ "lsp" ];
|
delay = 200;
|
||||||
modesDenylist = [ "n" ];
|
providers = [
|
||||||
modesAllowlist = [ "v" ];
|
"lsp"
|
||||||
underCursor = false;
|
"treesitter"
|
||||||
largeFileCutoff = 10;
|
];
|
||||||
minCountToHighlight = 2;
|
filetypes_denylist = [
|
||||||
filetypesDenylist = [ "csharp" ];
|
"dirbuf"
|
||||||
filetypesAllowlist = [ "python" ];
|
"fugitive"
|
||||||
filetypeOverrides = {
|
];
|
||||||
x = {
|
under_cursor = false;
|
||||||
delay = 10;
|
min_count_to_highlight = 2;
|
||||||
providers = [ "treesitter" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
largeFileOverrides = {
|
|
||||||
delay = 20;
|
|
||||||
underCursor = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue