From 55d1f98c5deda557ae0e2ce86afc1b2e2f38f5aa Mon Sep 17 00:00:00 2001 From: saygo-png Date: Mon, 21 Jul 2025 20:32:27 +0200 Subject: [PATCH] plugins/rainbow: init Signed-off-by: saygo-png --- plugins/by-name/rainbow/default.nix | 38 +++++ .../plugins/by-name/rainbow/default.nix | 145 ++++++++++++++++++ 2 files changed, 183 insertions(+) create mode 100644 plugins/by-name/rainbow/default.nix create mode 100644 tests/test-sources/plugins/by-name/rainbow/default.nix diff --git a/plugins/by-name/rainbow/default.nix b/plugins/by-name/rainbow/default.nix new file mode 100644 index 00000000..18bc2088 --- /dev/null +++ b/plugins/by-name/rainbow/default.nix @@ -0,0 +1,38 @@ +{ lib, ... }: +lib.nixvim.plugins.mkVimPlugin { + name = "rainbow"; + package = "rainbow"; + description = "Rainbow parentheses improved — shorter code, no level limit, smooth and fast with powerful configuration."; + maintainers = [ lib.maintainers.saygo-png ]; + globalPrefix = "rainbow_"; + + settingsExample = { + active = 1; + conf = { + guifgs = [ + "#7d8618" + "darkorange3" + "seagreen3" + "firebrick" + ]; + operators = "_,_"; + parentheses = [ + "start=/(/ end=/)/ fold" + "start=/\\[/ end=/\\]/ fold" + ]; + separately = { + "*" = { }; + markdown = { + parentheses_options = "containedin=markdownCode contained"; + }; + haskell = { + parentheses = [ + "start=/\\[/ end=/\\]/ fold" + "start=/\v\{\ze[^-]/ end=/}/ fold" + ]; + }; + css = 0; + }; + }; + }; +} diff --git a/tests/test-sources/plugins/by-name/rainbow/default.nix b/tests/test-sources/plugins/by-name/rainbow/default.nix new file mode 100644 index 00000000..1b66bb5f --- /dev/null +++ b/tests/test-sources/plugins/by-name/rainbow/default.nix @@ -0,0 +1,145 @@ +{ + empty = { + plugins.rainbow.enable = true; + }; + + default = { + plugins.rainbow = { + enable = true; + settings = { + conf = { + guifgs = [ + "royalblue3" + "darkorange3" + "seagreen3" + "firebrick" + ]; + ctermfgs = [ + "lightblue" + "lightyellow" + "lightcyan" + "lightmagenta" + ]; + guis = [ "" ]; + cterms = [ "" ]; + operators = "_,_"; + contains_prefix = "TOP"; + parentheses_options = ""; + parentheses = [ + "start=/(/ end=/)/ fold" + "start=/\\[/ end=/\\]/ fold" + "start=/{/ end=/}/ fold" + ]; + separately = { + markdown = { + parentheses_options = "containedin=markdownCode contained"; + }; + lisp = { + guifgs = [ + "royalblue3" + "darkorange3" + "seagreen3" + "firebrick" + "darkorchid3" + ]; + }; + haskell = { + parentheses = [ + "start=/(/ end=/)/ fold" + "start=/\\[/ end=/\\]/ fold" + "start=/\v\{\ze[^-]/ end=/}/ fold" + ]; + }; + tex = { + parentheses_options = "containedin=texDocZone"; + parentheses = [ + "start=/(/ end=/)/" + "start=/\\[/ end=/\\]/" + ]; + }; + vim = { + parentheses_options = "containedin=vimFuncBody,vimExecute"; + parentheses = [ + "start=/(/ end=/)/" + "start=/\\[/ end=/\\]/" + "start=/{/ end=/}/ fold" + ]; + }; + perl = { + syn_name_prefix = "perlBlockFoldRainbow"; + }; + stylus = { + parentheses = [ "start=/{/ end=/}/ fold contains=@colorableGroup" ]; + }; + css = 0; + sh = 0; + vimwiki = 0; + }; + }; + }; + }; + }; + + example = { + plugins.rainbow = { + enable = true; + settings = { + active = 1; + conf = { + guifgs = [ + "#7d8618" + "darkorange3" + "seagreen3" + "firebrick" + ]; + ctermfgs = [ + "lightblue" + "lightyellow" + "lightcyan" + "lightmagenta" + ]; + guis = [ "" ]; + cterms = [ "" ]; + operators = "_,_"; + parentheses = [ + "start=/(/ end=/)/ fold" + "start=/\\[/ end=/\\]/ fold" + "start=/{/ end=/}/ fold" + ]; + separately = { + "*" = { }; + markdown = { + parentheses_options = "containedin=markdownCode contained"; + }; + lisp = { + guifgs = [ + "royalblue3" + "darkorange3" + "seagreen3" + "firebrick" + "darkorchid3" + ]; + }; + haskell = { + parentheses = [ + "start=/(/ end=/)/ fold" + "start=/\\[/ end=/\\]/ fold" + "start=/\v\{\ze[^-]/ end=/}/ fold" + ]; + }; + vim = { + parentheses_options = "containedin=vimFuncBody"; + }; + perl = { + syn_name_prefix = "perlBlockFoldRainbow"; + }; + stylus = { + parentheses = [ "start=/{/ end=/}/ fold contains=@colorableGroup" ]; + }; + css = 0; + }; + }; + }; + }; + }; +}