From 07de1fe92e5354079aa2690584596af62b457852 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Sun, 7 Apr 2024 18:18:49 +0200 Subject: [PATCH] colorschemes/palette: switch to mkNeovimPlugin --- plugins/colorschemes/palette.nix | 101 +++++++++--------- .../plugins/colorschemes/palette.nix | 66 ++++++------ 2 files changed, 83 insertions(+), 84 deletions(-) diff --git a/plugins/colorschemes/palette.nix b/plugins/colorschemes/palette.nix index bff01e8b..5ff14f64 100644 --- a/plugins/colorschemes/palette.nix +++ b/plugins/colorschemes/palette.nix @@ -5,18 +5,34 @@ pkgs, ... }: -with lib; let - cfg = config.colorschemes.palette; -in { - meta.maintainers = [maintainers.GaetanLepage]; +with lib; + helpers.neovim-plugin.mkNeovimPlugin config { + name = "palette"; + isColorscheme = true; + originalName = "palette.nvim"; + defaultPackage = pkgs.vimPlugins.palette-nvim; - options.colorschemes.palette = - helpers.neovim-plugin.extraOptionsOptions - // { - enable = mkEnableOption "palette.nvim"; + maintainers = [maintainers.GaetanLepage]; - package = helpers.mkPackageOption "palette.nvim" pkgs.vimPlugins.palette-nvim; + extraPlugins = [ + # Annoyingly, lspconfig is required, otherwise this line is breaking: + # https://github.com/roobert/palette.nvim/blob/a808c190a4f74f73782302152ebf323660d8db5f/lua/palette/init.lua#L45 + # An issue has been opened upstream to warn the maintainer: https://github.com/roobert/palette.nvim/issues/2 + pkgs.vimPlugins.nvim-lspconfig + ]; + # TODO introduced 2024-04-07: remove 2024-06-07 + deprecateExtraOptions = true; + optionsRenamedToSettings = [ + "palettes" + "customPalettes" + "italics" + "transparentBackground" + "caching" + "cacheDir" + ]; + + settingsOptions = { palettes = { main = helpers.defaultNullOpts.mkStr "dark" '' Palette for the main colors. @@ -89,7 +105,7 @@ in { Whether to use italics. ''; - transparentBackground = helpers.defaultNullOpts.mkBool false '' + transparent_background = helpers.defaultNullOpts.mkBool false '' Whether to use transparent background. ''; @@ -97,54 +113,33 @@ in { Whether to enable caching. ''; - cacheDir = + cache_dir = helpers.defaultNullOpts.mkStr ''{__raw = "vim.fn.stdpath('cache') .. '/palette'";}'' "Cache directory."; }; - config = mkIf cfg.enable { - assertions = - mapAttrsToList ( - name: defaultPaletteNames: let - palette = cfg.palettes.${name}; - allowedPaletteNames = (attrNames cfg.customPalettes.${name}) ++ defaultPaletteNames; - in { - assertion = isString palette -> elem palette allowedPaletteNames; - message = '' - Nixvim: `colorschemes.palette.palettes.${name}` (${palette}") is not part of the allowed ${name} palette names (${concatStringsSep " " allowedPaletteNames}). - ''; - } - ) - { - main = ["dark" "light"]; - accent = ["pastel" "dark" "bright"]; - state = ["pastel" "dark" "bright"]; - }; + settingsExample = {}; - colorscheme = "palette"; + extraConfig = cfg: { + assertions = + mapAttrsToList ( + name: defaultPaletteNames: let + customPalettesNames = attrNames cfg.settings.custom_palettes.${name}; + allowedPaletteNames = customPalettesNames ++ defaultPaletteNames; - extraPlugins = [ - cfg.package - # Annoyingly, lspconfig is required, otherwise this line is breaking: - # https://github.com/roobert/palette.nvim/blob/a808c190a4f74f73782302152ebf323660d8db5f/lua/palette/init.lua#L45https://github.com/roobert/palette.nvim/blob/a808c190a4f74f73782302152ebf323660d8db5f/lua/palette/init.lua#L45 - # An issue has been opened upstream to warn the maintainer: https://github.com/roobert/palette.nvim/issues/2 - pkgs.vimPlugins.nvim-lspconfig - ]; - - extraConfigLuaPre = let - setupOptions = with cfg; + palette = cfg.settings.palettes.${name}; + in { + assertion = isString palette -> elem palette allowedPaletteNames; + message = '' + Nixvim (colorschemes.palette): `settings.palettes.${name}` (${palette}") is not part of the allowed ${name} palette names (${concatStringsSep " " allowedPaletteNames}). + ''; + } + ) { - inherit palettes; - custom_palettes = customPalettes; - inherit italics; - transparent_background = transparentBackground; - inherit caching; - cache_dir = cacheDir; - } - // cfg.extraOptions; - in '' - require('palette').setup(${helpers.toLuaObject setupOptions}) - ''; - }; -} + main = ["dark" "light"]; + accent = ["pastel" "dark" "bright"]; + state = ["pastel" "dark" "bright"]; + }; + }; + } diff --git a/tests/test-sources/plugins/colorschemes/palette.nix b/tests/test-sources/plugins/colorschemes/palette.nix index d8ae57fc..8bef483b 100644 --- a/tests/test-sources/plugins/colorschemes/palette.nix +++ b/tests/test-sources/plugins/colorschemes/palette.nix @@ -7,20 +7,22 @@ colorschemes.palette = { enable = true; - palettes = { - main = "dark"; - accent = "pastel"; - state = "pastel"; + settings = { + palettes = { + main = "dark"; + accent = "pastel"; + state = "pastel"; + }; + custom_palettes = { + main = {}; + accent = {}; + state = {}; + }; + italics = true; + transparent_background = false; + caching = true; + cache_dir.__raw = "vim.fn.stdpath('cache') .. '/palette'"; }; - customPalettes = { - main = {}; - accent = {}; - state = {}; - }; - italics = true; - transparentBackground = false; - caching = true; - cacheDir.__raw = "vim.fn.stdpath('cache') .. '/palette'"; }; }; @@ -28,28 +30,30 @@ colorschemes.palette = { enable = true; - palettes = { - main = "dust_dusk"; - }; + settings = { + palettes = { + main = "dust_dusk"; + }; - customPalettes = { - main = { - dust_dusk = { - color0 = "#121527"; - color1 = "#1A1E39"; - color2 = "#232A4D"; - color3 = "#3E4D89"; - color4 = "#687BBA"; - color5 = "#A4B1D6"; - color6 = "#bdbfc9"; - color7 = "#DFE5F1"; - color8 = "#e9e9ed"; + custom_palettes = { + main = { + dust_dusk = { + color0 = "#121527"; + color1 = "#1A1E39"; + color2 = "#232A4D"; + color3 = "#3E4D89"; + color4 = "#687BBA"; + color5 = "#A4B1D6"; + color6 = "#bdbfc9"; + color7 = "#DFE5F1"; + color8 = "#e9e9ed"; + }; }; }; - }; - italics = true; - transparentBackground = false; + italics = true; + transparent_background = false; + }; }; }; }