From ce149cac11440e4f325b7a11a3bf21df2858e6b4 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Sat, 4 Oct 2025 11:39:11 -0500 Subject: [PATCH] plugins/illuminate: migrate to mkNeovimPlugin --- plugins/by-name/illuminate/default.nix | 169 +++--------------- plugins/by-name/illuminate/deprecations.nix | 62 +++++++ .../plugins/by-name/illuminate/default.nix | 60 +++++-- 3 files changed, 126 insertions(+), 165 deletions(-) create mode 100644 plugins/by-name/illuminate/deprecations.nix diff --git a/plugins/by-name/illuminate/default.nix b/plugins/by-name/illuminate/default.nix index 277292f4..c2c16387 100644 --- a/plugins/by-name/illuminate/default.nix +++ b/plugins/by-name/illuminate/default.nix @@ -1,156 +1,31 @@ { lib, - helpers, - config, - pkgs, ... }: -with lib; -let - cfg = config.plugins.illuminate; +lib.nixvim.plugins.mkNeovimPlugin { + name = "illuminate"; + package = "vim-illuminate"; + setup = ".configure"; - mkListStr = helpers.defaultNullOpts.mkListOf types.str; + maintainers = [ lib.maintainers.khaneliman ]; - commonOptions = with helpers.defaultNullOpts; { - providers = - mkListStr - [ - "lsp" - "treesitter" - "regex" - ] - '' - Provider used to get references in the buffer, ordered by priority. - ''; - - 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. - ''; + settingsExample = { + delay = 200; + providers = [ + "lsp" + "treesitter" + ]; + filetypes_denylist = [ + "dirbuf" + "fugitive" + ]; + under_cursor = false; + min_count_to_highlight = 2; }; - filetypeOptions = { - filetypesDenylist = - mkListStr - [ - "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}) - ''; - }; + # TODO: Deprecated 2025-10-04 + inherit (import ./deprecations.nix) + optionsRenamedToSettings + deprecateExtraOptions + ; } diff --git a/plugins/by-name/illuminate/deprecations.nix b/plugins/by-name/illuminate/deprecations.nix new file mode 100644 index 00000000..3dca01c9 --- /dev/null +++ b/plugins/by-name/illuminate/deprecations.nix @@ -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" + ] + ]; +} diff --git a/tests/test-sources/plugins/by-name/illuminate/default.nix b/tests/test-sources/plugins/by-name/illuminate/default.nix index f75c0884..4dc99def 100644 --- a/tests/test-sources/plugins/by-name/illuminate/default.nix +++ b/tests/test-sources/plugins/by-name/illuminate/default.nix @@ -3,28 +3,52 @@ 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 = { plugins.illuminate = { enable = true; - delay = 50; - providers = [ "lsp" ]; - modesDenylist = [ "n" ]; - modesAllowlist = [ "v" ]; - underCursor = false; - largeFileCutoff = 10; - minCountToHighlight = 2; - filetypesDenylist = [ "csharp" ]; - filetypesAllowlist = [ "python" ]; - filetypeOverrides = { - x = { - delay = 10; - providers = [ "treesitter" ]; - }; - }; - largeFileOverrides = { - delay = 20; - underCursor = true; + settings = { + delay = 200; + providers = [ + "lsp" + "treesitter" + ]; + filetypes_denylist = [ + "dirbuf" + "fugitive" + ]; + under_cursor = false; + min_count_to_highlight = 2; }; }; };