mirror of
https://github.com/nix-community/nixvim.git
synced 2025-07-02 21:34:33 +02:00
66 lines
1.7 KiB
Nix
66 lines
1.7 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
...
|
|
}:
|
|
with lib; let
|
|
helpers = import ../../helpers.nix {inherit lib;};
|
|
in {
|
|
options.plugins.treesitter-rainbow =
|
|
helpers.extraOptionsOptions
|
|
// {
|
|
enable = mkEnableOption "treesitter-rainbow";
|
|
|
|
package = helpers.mkPackageOption "treesitter-rainbow" pkgs.vimPlugins.nvim-ts-rainbow2;
|
|
|
|
disable =
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
|
"List of languages you want to disable the plugin for.";
|
|
|
|
query =
|
|
helpers.defaultNullOpts.mkStr "rainbow-parens"
|
|
"The query to use for finding delimiters.";
|
|
|
|
strategy =
|
|
helpers.defaultNullOpts.mkStr "require('ts-rainbow').strategy.global"
|
|
"The query to use for finding delimiters. Directly provide lua code.";
|
|
|
|
hlgroups =
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
|
''
|
|
[
|
|
"TSRainbowRed"
|
|
"TSRainbowYellow"
|
|
"TSRainbowBlue"
|
|
"TSRainbowOrange"
|
|
"TSRainbowGreen"
|
|
"TSRainbowViolet"
|
|
"TSRainbowCyan"
|
|
]
|
|
''
|
|
"The list of highlight groups to apply.";
|
|
};
|
|
|
|
config = let
|
|
cfg = config.plugins.treesitter-rainbow;
|
|
in
|
|
mkIf cfg.enable {
|
|
warnings = mkIf (!config.plugins.treesitter.enable) [
|
|
"Nixvim: treesitter-rainbow needs treesitter to function as intended"
|
|
];
|
|
|
|
extraPlugins = [cfg.package];
|
|
|
|
plugins.treesitter.moduleConfig.rainbow =
|
|
{
|
|
enable = true;
|
|
|
|
inherit (cfg) disable;
|
|
inherit (cfg) query;
|
|
strategy = helpers.ifNonNull' cfg.strategy (helpers.mkRaw cfg.strategy);
|
|
inherit (cfg) hlgroups;
|
|
}
|
|
// cfg.extraOptions;
|
|
};
|
|
}
|