From 2c375130122033c8ffb9a3bed1a333b68e92d8af Mon Sep 17 00:00:00 2001 From: Pei Yang Ching Date: Sun, 5 May 2024 02:10:14 +0200 Subject: [PATCH 1/3] colorizer: fix nonsense options --- modules/plugins/ui/colorizer/colorizer.nix | 118 ++++++--------------- modules/plugins/ui/colorizer/config.nix | 2 +- 2 files changed, 35 insertions(+), 85 deletions(-) diff --git a/modules/plugins/ui/colorizer/colorizer.nix b/modules/plugins/ui/colorizer/colorizer.nix index 364abb9..bbbad37 100644 --- a/modules/plugins/ui/colorizer/colorizer.nix +++ b/modules/plugins/ui/colorizer/colorizer.nix @@ -4,100 +4,50 @@ ... }: let inherit (lib.options) mkOption mkEnableOption; - inherit (lib.types) attrsOf attrs bool enum; + inherit (lib.types) attrsOf enum nullOr submodule; inherit (lib.modules) mkRenamedOptionModule; - inherit (lib.nvim.types) mkPluginSetupOption; + inherit (lib.nvim.config) mkBool; + + settingSubmodule = submodule { + options = { + RGB = mkBool true "Colorize #RGB hex codes"; + RRGGBB = mkBool true "Colorize #RRGGBB hex codes"; + names = mkBool true ''Colorize "Name" codes like Blue''; + RRGGBBAA = mkBool false "Colorize #RRGGBBAA hex codes"; + rgb_fn = mkBool false "Colorize CSS rgb() and rgba() functions"; + hsl_fn = mkBool false "Colorize CSS hsl() and hsla() functions"; + css = mkBool false "Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB"; + css_fn = mkBool false "Enable all CSS *functions*: rgb_fn, hsl_fn"; + mode = mkOption { + description = "Set the display mode"; + type = nullOr (enum ["foreground" "background"]); + default = null; + }; + }; + }; in { imports = [ - (mkRenamedOptionModule ["vim" "ui" "colorizer" "options"] ["vim" "ui" "colorizer" "setupOpts" "user_default_options"]) + (mkRenamedOptionModule ["vim" "ui" "colorizer" "options"] ["vim" "ui" "colorizer" "setupOpts" "defaultOptions"]) (mkRenamedOptionModule ["vim" "ui" "colorizer" "filetypes"] ["vim" "ui" "colorizer" "setupOpts" "filetypes"]) ]; options.vim.ui.colorizer = { enable = mkEnableOption "color highlighting [nvim-colorizer.lua]"; - setupOpts = mkPluginSetupOption "nvim-colorizer" { - filetypes = mkOption { - type = attrsOf attrs; - default = { - css = {}; - scss = {}; - }; - description = "Filetypes to highlight on"; - }; + defaultOptions = mkOption { + description = '' + Default options that apply to all filetypes. Filetype specific settings from + [filetypeSettings](#opt-vim.ui.colorizer.filetypeSettings) take precedence. + ''; + default = {}; + type = settingSubmodule; + }; - user_default_options = { - rgb = mkOption { - type = bool; - default = true; - description = "#RGB hex codes"; - }; - - rrggbb = mkOption { - type = bool; - default = true; - description = "#RRGGBB hex codes"; - }; - - names = mkOption { - type = bool; - default = true; - description = ''"Name" codes such as "Blue"''; - }; - - rgb_fn = mkOption { - type = bool; - default = false; - description = "CSS rgb() and rgba() functions"; - }; - - rrggbbaa = mkOption { - type = bool; - default = false; - description = "#RRGGBBAA hex codes"; - }; - - hsl_fn = mkOption { - type = bool; - default = false; - description = "CSS hsl() and hsla() functions"; - }; - - css = mkOption { - type = bool; - default = false; - description = "Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB"; - }; - - css_fn = mkOption { - type = bool; - default = false; - description = "Enable all CSS *functions*: rgb_fn, hsl_fn"; - }; - - mode = mkOption { - type = enum ["foreground" "background"]; - default = "background"; - description = "Set the display mode"; - }; - - tailwind = mkOption { - type = bool; - default = false; - description = "Enable tailwind colors"; - }; - - sass = mkOption { - type = bool; - default = false; - description = "Enable sass colors"; - }; - - alwaysUpdate = mkOption { - type = bool; - default = false; - description = "Update color values even if buffer is not focused, like when using cmp_menu, cmp_docs"; - }; + filetypeOptions = mkOption { + description = "Filetype specific settings"; + default = {}; + type = submodule { + freeformType = attrsOf settingSubmodule; }; }; }; diff --git a/modules/plugins/ui/colorizer/config.nix b/modules/plugins/ui/colorizer/config.nix index 1ff45f6..d96920d 100644 --- a/modules/plugins/ui/colorizer/config.nix +++ b/modules/plugins/ui/colorizer/config.nix @@ -15,7 +15,7 @@ in { ]; vim.luaConfigRC.colorizer = entryAnywhere '' - require('colorizer').setup(${toLuaObject cfg.setupOpts}) + require('colorizer').setup(${toLuaObject cfg.filetypeOptions}, ${toLuaObject cfg.defaultOptions}) ''; }; } From 2cec6178abacc864c5988c99527d0fbb0c003b26 Mon Sep 17 00:00:00 2001 From: Pei Yang Ching Date: Sun, 5 May 2024 02:16:12 +0200 Subject: [PATCH 2/3] colorizer: revert setupOpts name changes --- modules/plugins/ui/colorizer/colorizer.nix | 11 ++++++----- modules/plugins/ui/colorizer/config.nix | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/plugins/ui/colorizer/colorizer.nix b/modules/plugins/ui/colorizer/colorizer.nix index bbbad37..084f91d 100644 --- a/modules/plugins/ui/colorizer/colorizer.nix +++ b/modules/plugins/ui/colorizer/colorizer.nix @@ -27,23 +27,24 @@ }; in { imports = [ - (mkRenamedOptionModule ["vim" "ui" "colorizer" "options"] ["vim" "ui" "colorizer" "setupOpts" "defaultOptions"]) - (mkRenamedOptionModule ["vim" "ui" "colorizer" "filetypes"] ["vim" "ui" "colorizer" "setupOpts" "filetypes"]) + (mkRenamedOptionModule ["vim" "ui" "colorizer" "setupOpts" "defaultOptions"] ["vim" "ui" "colorizer" "options"]) + (mkRenamedOptionModule ["vim" "ui" "colorizer" "setupOpts" "filetypes"] ["vim" "ui" "colorizer" "filetypes"]) ]; options.vim.ui.colorizer = { enable = mkEnableOption "color highlighting [nvim-colorizer.lua]"; - defaultOptions = mkOption { + # colorizer has a non-standard setup function (takes two args), so we're not using setupOpts + options = mkOption { description = '' Default options that apply to all filetypes. Filetype specific settings from - [filetypeSettings](#opt-vim.ui.colorizer.filetypeSettings) take precedence. + [filetypes](#opt-vim.ui.colorizer.filetypes) take precedence. ''; default = {}; type = settingSubmodule; }; - filetypeOptions = mkOption { + filetypes = mkOption { description = "Filetype specific settings"; default = {}; type = submodule { diff --git a/modules/plugins/ui/colorizer/config.nix b/modules/plugins/ui/colorizer/config.nix index d96920d..7adace2 100644 --- a/modules/plugins/ui/colorizer/config.nix +++ b/modules/plugins/ui/colorizer/config.nix @@ -15,7 +15,7 @@ in { ]; vim.luaConfigRC.colorizer = entryAnywhere '' - require('colorizer').setup(${toLuaObject cfg.filetypeOptions}, ${toLuaObject cfg.defaultOptions}) + require('colorizer').setup(${toLuaObject cfg.filetypes}, ${toLuaObject cfg.options}) ''; }; } From ac97885f575ae5164a967db13b58e9e82765c418 Mon Sep 17 00:00:00 2001 From: Ching Pei Yang Date: Sun, 12 May 2024 01:43:03 +0200 Subject: [PATCH 3/3] colorizer: allow null for all options --- modules/plugins/ui/colorizer/colorizer.nix | 59 ++++++++++++++++++---- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/modules/plugins/ui/colorizer/colorizer.nix b/modules/plugins/ui/colorizer/colorizer.nix index 084f91d..bd37673 100644 --- a/modules/plugins/ui/colorizer/colorizer.nix +++ b/modules/plugins/ui/colorizer/colorizer.nix @@ -4,20 +4,59 @@ ... }: let inherit (lib.options) mkOption mkEnableOption; - inherit (lib.types) attrsOf enum nullOr submodule; + inherit (lib.types) attrsOf enum nullOr submodule bool; inherit (lib.modules) mkRenamedOptionModule; - inherit (lib.nvim.config) mkBool; settingSubmodule = submodule { options = { - RGB = mkBool true "Colorize #RGB hex codes"; - RRGGBB = mkBool true "Colorize #RRGGBB hex codes"; - names = mkBool true ''Colorize "Name" codes like Blue''; - RRGGBBAA = mkBool false "Colorize #RRGGBBAA hex codes"; - rgb_fn = mkBool false "Colorize CSS rgb() and rgba() functions"; - hsl_fn = mkBool false "Colorize CSS hsl() and hsla() functions"; - css = mkBool false "Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB"; - css_fn = mkBool false "Enable all CSS *functions*: rgb_fn, hsl_fn"; + RGB = mkOption { + description = "Colorize #RGB hex codes"; + default = null; + type = nullOr bool; + }; + + RRGGBB = mkOption { + description = "Colorize #RRGGBB hex codes"; + default = null; + type = nullOr bool; + }; + + names = mkOption { + description = ''Colorize "Name" codes like Blue''; + default = null; + type = nullOr bool; + }; + + RRGGBBAA = mkOption { + description = "Colorize #RRGGBBAA hex codes"; + default = null; + type = nullOr bool; + }; + + rgb_fn = mkOption { + description = "Colorize CSS rgb() and rgba() functions"; + default = null; + type = nullOr bool; + }; + + hsl_fn = mkOption { + description = "Colorize CSS hsl() and hsla() functions"; + default = null; + type = nullOr bool; + }; + + css = mkOption { + description = "Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB"; + default = null; + type = nullOr bool; + }; + + css_fn = mkOption { + description = "Enable all CSS *functions*: rgb_fn, hsl_fn"; + default = null; + type = nullOr bool; + }; + mode = mkOption { description = "Set the display mode"; type = nullOr (enum ["foreground" "background"]);