mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 08:35:43 +02:00
colorschemes/base16: add settings
+ refactor
Added support for the plugin's "advanced" config settings. Removed the enum restriction and prefix concatenation, allowing anything to be passed through, including raw lua: fixes #1675 The theme list is now much shorter and is included directly in the option description. Some general cleanup, in particular to `extraConfig` and `customColorschemeType`.
This commit is contained in:
parent
6055d0f28c
commit
c0ea106b4b
3 changed files with 165 additions and 281 deletions
|
@ -6,25 +6,28 @@
|
|||
...
|
||||
}:
|
||||
with lib;
|
||||
# We configure this plugin manually (no `settings` option) so there is no point in using
|
||||
# `mkNeovimPlugin` here.
|
||||
helpers.vim-plugin.mkVimPlugin config {
|
||||
let
|
||||
name = "base16";
|
||||
isColorscheme = true;
|
||||
luaName = "base16-colorscheme";
|
||||
originalName = "base16.nvim";
|
||||
in
|
||||
helpers.neovim-plugin.mkNeovimPlugin config {
|
||||
inherit name luaName originalName;
|
||||
setup = ".with_config";
|
||||
defaultPackage = pkgs.vimPlugins.base16-nvim;
|
||||
isColorscheme = true;
|
||||
|
||||
maintainers = [ maintainers.GaetanLepage ];
|
||||
maintainers = with maintainers; [
|
||||
GaetanLepage
|
||||
MattSturgeon
|
||||
];
|
||||
|
||||
# We manually set the colorscheme if needed.
|
||||
colorscheme = null;
|
||||
|
||||
# TODO introduced 2024-03-12: remove 2024-05-12
|
||||
# TODO introduced 2024-03-12: remove after 24.11
|
||||
imports =
|
||||
let
|
||||
basePluginPath = [
|
||||
"colorschemes"
|
||||
"base16"
|
||||
name
|
||||
];
|
||||
in
|
||||
[
|
||||
|
@ -37,50 +40,69 @@ helpers.vim-plugin.mkVimPlugin config {
|
|||
])
|
||||
];
|
||||
|
||||
settingsExample = {
|
||||
telescope_borders = true;
|
||||
indentblankline = false;
|
||||
dapui = false;
|
||||
};
|
||||
|
||||
settingsOptions = {
|
||||
telescope = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to enable telescope integration.
|
||||
'';
|
||||
|
||||
telescope_borders = helpers.defaultNullOpts.mkBool false ''
|
||||
Whether to display borders around telescope's panel.
|
||||
'';
|
||||
|
||||
indentblankline = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to enable indentblankline integration.
|
||||
'';
|
||||
|
||||
notify = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to enable notify integration.
|
||||
'';
|
||||
|
||||
ts_rainbow = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to enable ts_rainbow integration.
|
||||
'';
|
||||
|
||||
cmp = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to enable cmp integration.
|
||||
'';
|
||||
|
||||
illuminate = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to enable illuminate integration.
|
||||
'';
|
||||
|
||||
lsp_semantic = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to enable lsp_semantic integration.
|
||||
'';
|
||||
|
||||
mini_completion = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to enable mini_completion integration.
|
||||
'';
|
||||
|
||||
dapui = helpers.defaultNullOpts.mkBool true ''
|
||||
Whether to enable dapui integration.
|
||||
'';
|
||||
};
|
||||
|
||||
extraOptions = {
|
||||
colorscheme =
|
||||
let
|
||||
customColorschemeType = types.submodule {
|
||||
options = listToAttrs (
|
||||
map
|
||||
(colorId: rec {
|
||||
name = "base0" + colorId;
|
||||
value = mkOption {
|
||||
type = types.str;
|
||||
description = "The value for color `${name}`.";
|
||||
example = "#16161D";
|
||||
};
|
||||
})
|
||||
[
|
||||
"0"
|
||||
"1"
|
||||
"2"
|
||||
"3"
|
||||
"4"
|
||||
"5"
|
||||
"6"
|
||||
"7"
|
||||
"8"
|
||||
"9"
|
||||
"A"
|
||||
"B"
|
||||
"C"
|
||||
"D"
|
||||
"E"
|
||||
"F"
|
||||
]
|
||||
);
|
||||
};
|
||||
in
|
||||
options = mapAttrs (
|
||||
name: example:
|
||||
mkOption {
|
||||
type = with types; either (enum (import ./theme-list.nix)) customColorschemeType;
|
||||
description = ''
|
||||
The base16 colorscheme to use.
|
||||
It can either be the name of a builtin colorscheme or an attrs specifying each color explicitly.
|
||||
type = with helpers.nixvimTypes; maybeRaw str;
|
||||
description = "The value for color `${name}`.";
|
||||
inherit example;
|
||||
}
|
||||
) customColorschemeExample;
|
||||
};
|
||||
|
||||
Example for the latter:
|
||||
```nix
|
||||
{
|
||||
customColorschemeExample = {
|
||||
base00 = "#16161D";
|
||||
base01 = "#2c313c";
|
||||
base02 = "#3e4451";
|
||||
|
@ -97,34 +119,72 @@ helpers.vim-plugin.mkVimPlugin config {
|
|||
base0D = "#0184bc";
|
||||
base0E = "#c678dd";
|
||||
base0F = "#a06949";
|
||||
}
|
||||
};
|
||||
|
||||
builtinColorschemeExamples = import ./theme-list.nix;
|
||||
in
|
||||
helpers.defaultNullOpts.mkNullable' {
|
||||
type = types.oneOf [
|
||||
types.str
|
||||
customColorschemeType
|
||||
helpers.nixvimTypes.rawLua
|
||||
];
|
||||
pluginDefault = literalMD ''`vim.env.BASE16_THEME` or `"schemer-dark"`'';
|
||||
description = ''
|
||||
The base16 colorscheme to use.
|
||||
|
||||
You may use the name of a builtin colorscheme or an attrs that specifies the colors explicitly.
|
||||
|
||||
Examples of builtin themes include:
|
||||
${concatStrings (
|
||||
map (e: ''
|
||||
- "${e}"
|
||||
'') builtinColorschemeExamples
|
||||
)}
|
||||
|
||||
`:h nvim-base16-builtin-colorschemes` includes a full list of builtin themes,
|
||||
however the [plugin's source code] may be more up to date.
|
||||
|
||||
You can access `require('${luaName}')` as `base16` in any raw lua,
|
||||
for example, you could reuse some colors from the builtin colorschemes:
|
||||
|
||||
```nix
|
||||
base03.__raw = "base16.colorschemes['catppuccin'].base06";
|
||||
```
|
||||
|
||||
[plugin's source code]: https://github.com/RRethy/base16-nvim/blob/master/lua/colors/init.lua
|
||||
'';
|
||||
example = "edge-light";
|
||||
example = customColorschemeExample;
|
||||
};
|
||||
|
||||
setUpBar = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
example = false;
|
||||
description = "Whether to set your status bar theme to 'base16'.";
|
||||
};
|
||||
};
|
||||
|
||||
extraConfig =
|
||||
cfg:
|
||||
mkMerge [
|
||||
{
|
||||
plugins.airline.settings.theme = mkIf cfg.setUpBar "base16";
|
||||
plugins.lualine.theme = mkIf cfg.setUpBar "base16";
|
||||
plugins.lightline.colorscheme = null;
|
||||
# We will manually set the colorscheme, using `setup`
|
||||
colorscheme = null;
|
||||
callSetup = false;
|
||||
|
||||
extraConfig = cfg: {
|
||||
plugins.airline.settings.theme = mkIf cfg.setUpBar (mkDefault name);
|
||||
plugins.lualine.theme = mkIf cfg.setUpBar (mkDefault name);
|
||||
plugins.lightline.colorscheme = mkDefault null;
|
||||
|
||||
opts.termguicolors = mkDefault true;
|
||||
}
|
||||
(mkIf (isString cfg.colorscheme) { colorscheme = "base16-${cfg.colorscheme}"; })
|
||||
(mkIf (isAttrs cfg.colorscheme) {
|
||||
|
||||
# `settings` can either be passed to `with_config` before calling `setup`,
|
||||
# or it can be passed as `setup`'s 2nd argument.
|
||||
# See https://github.com/RRethy/base16-nvim/blob/6ac181b5733518040a33017dde654059cd771b7c/lua/base16-colorscheme.lua#L107-L125
|
||||
extraConfigLuaPre = ''
|
||||
require('base16-colorscheme').setup(${helpers.toLuaObject cfg.colorscheme})
|
||||
do
|
||||
local base16 = require('${luaName}')
|
||||
base16.with_config(${helpers.toLuaObject cfg.settings})
|
||||
base16.setup(${helpers.toLuaObject cfg.colorscheme})
|
||||
end
|
||||
'';
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,107 +1,16 @@
|
|||
# This is a list of all base16 themes
|
||||
# Example base16 builtin themes to include in the docs
|
||||
[
|
||||
"3024"
|
||||
"apathy"
|
||||
"apprentice"
|
||||
"ashes"
|
||||
"atelier-cave"
|
||||
"atelier-cave-light"
|
||||
"atelier-dune"
|
||||
"atelier-dune-light"
|
||||
"atelier-estuary"
|
||||
"atelier-estuary-light"
|
||||
"atelier-forest"
|
||||
"atelier-forest-light"
|
||||
"atelier-heath"
|
||||
"atelier-heath-light"
|
||||
"atelier-lakeside"
|
||||
"atelier-lakeside-light"
|
||||
"atelier-plateau"
|
||||
"atelier-plateau-light"
|
||||
"atelier-savanna"
|
||||
"atelier-savanna-light"
|
||||
"atelier-seaside"
|
||||
"atelier-seaside-light"
|
||||
"atelier-sulphurpool"
|
||||
"atelier-sulphurpool-light"
|
||||
"atlas"
|
||||
"ayu-dark"
|
||||
"ayu-light"
|
||||
"ayu-mirage"
|
||||
"bespin"
|
||||
"black-metal"
|
||||
"black-metal-bathory"
|
||||
"black-metal-burzum"
|
||||
"black-metal-dark-funeral"
|
||||
"black-metal-gorgoroth"
|
||||
"black-metal-immortal"
|
||||
"black-metal-khold"
|
||||
"black-metal-marduk"
|
||||
"black-metal-mayhem"
|
||||
"black-metal-nile"
|
||||
"black-metal-venom"
|
||||
"blueforest"
|
||||
"blueish"
|
||||
"brewer"
|
||||
"bright"
|
||||
"brogrammer"
|
||||
"brushtrees"
|
||||
"brushtrees-dark"
|
||||
"catppuccin"
|
||||
"catppuccin-frappe"
|
||||
"catppuccin-latte"
|
||||
"catppuccin-macchiato"
|
||||
"catppuccin-mocha"
|
||||
"chalk"
|
||||
"circus"
|
||||
"classic-dark"
|
||||
"classic-light"
|
||||
"codeschool"
|
||||
"colors"
|
||||
"cupcake"
|
||||
"cupertino"
|
||||
"da-one-black"
|
||||
"da-one-gray"
|
||||
"da-one-ocean"
|
||||
"da-one-paper"
|
||||
"da-one-sea"
|
||||
"da-one-white"
|
||||
"danqing"
|
||||
"darcula"
|
||||
"darkmoss"
|
||||
"darktooth"
|
||||
"darkviolet"
|
||||
"decaf"
|
||||
"default-dark"
|
||||
"default-light"
|
||||
"dirtysea"
|
||||
"dracula"
|
||||
"edge-dark"
|
||||
"edge-light"
|
||||
"eighties"
|
||||
"embers"
|
||||
"emil"
|
||||
"equilibrium-dark"
|
||||
"equilibrium-gray-dark"
|
||||
"equilibrium-gray-light"
|
||||
"equilibrium-light"
|
||||
"espresso"
|
||||
"eva"
|
||||
"eva-dim"
|
||||
"evenok-dark"
|
||||
"everforest"
|
||||
"flat"
|
||||
"framer"
|
||||
"fruit-soda"
|
||||
"gigavolt"
|
||||
"github"
|
||||
"google-dark"
|
||||
"google-light"
|
||||
"gotham"
|
||||
"grayscale-dark"
|
||||
"grayscale-light"
|
||||
"greenscreen"
|
||||
"gruber"
|
||||
"gruvbox-dark-hard"
|
||||
"gruvbox-dark-medium"
|
||||
"gruvbox-dark-pale"
|
||||
|
@ -109,135 +18,26 @@
|
|||
"gruvbox-light-hard"
|
||||
"gruvbox-light-medium"
|
||||
"gruvbox-light-soft"
|
||||
"gruvbox-material-dark-hard"
|
||||
"gruvbox-material-dark-medium"
|
||||
"gruvbox-material-dark-soft"
|
||||
"gruvbox-material-light-hard"
|
||||
"gruvbox-material-light-medium"
|
||||
"gruvbox-material-light-soft"
|
||||
"hardcore"
|
||||
"harmonic-dark"
|
||||
"harmonic-light"
|
||||
"heetch"
|
||||
"heetch-light"
|
||||
"helios"
|
||||
"hopscotch"
|
||||
"horizon-dark"
|
||||
"horizon-light"
|
||||
"horizon-terminal-dark"
|
||||
"horizon-terminal-light"
|
||||
"humanoid-dark"
|
||||
"humanoid-light"
|
||||
"ia-dark"
|
||||
"ia-light"
|
||||
"icy"
|
||||
"irblack"
|
||||
"isotope"
|
||||
"kanagawa"
|
||||
"katy"
|
||||
"kimber"
|
||||
"lime"
|
||||
"macintosh"
|
||||
"marrakesh"
|
||||
"materia"
|
||||
"material"
|
||||
"material-darker"
|
||||
"material-lighter"
|
||||
"material-palenight"
|
||||
"material-vivid"
|
||||
"mellow-purple"
|
||||
"mexico-light"
|
||||
"mocha"
|
||||
"monokai"
|
||||
"mountain"
|
||||
"nebula"
|
||||
"nord"
|
||||
"nova"
|
||||
"ocean"
|
||||
"oceanicnext"
|
||||
"one-light"
|
||||
"onedark"
|
||||
"outrun-dark"
|
||||
"pandora"
|
||||
"papercolor-dark"
|
||||
"papercolor-light"
|
||||
"paraiso"
|
||||
"pasque"
|
||||
"phd"
|
||||
"pico"
|
||||
"pinky"
|
||||
"pop"
|
||||
"porple"
|
||||
"primer-dark"
|
||||
"primer-dark-dimmed"
|
||||
"primer-light"
|
||||
"purpledream"
|
||||
"qualia"
|
||||
"railscasts"
|
||||
"rebecca"
|
||||
"rose-pine"
|
||||
"rose-pine-dawn"
|
||||
"rose-pine-moon"
|
||||
"sagelight"
|
||||
"sakura"
|
||||
"sandcastle"
|
||||
"seti"
|
||||
"shades-of-purple"
|
||||
"shadesmear-dark"
|
||||
"shadesmear-light"
|
||||
"shapeshifter"
|
||||
"silk-dark"
|
||||
"silk-light"
|
||||
"snazzy"
|
||||
"solarflare"
|
||||
"solarflare-light"
|
||||
"solarized-dark"
|
||||
"solarized-light"
|
||||
"spaceduck"
|
||||
"spacemacs"
|
||||
"standardized-dark"
|
||||
"standardized-light"
|
||||
"stella"
|
||||
"still-alive"
|
||||
"summercamp"
|
||||
"summerfruit-dark"
|
||||
"summerfruit-light"
|
||||
"synth-midnight-dark"
|
||||
"synth-midnight-light"
|
||||
"tango"
|
||||
"tender"
|
||||
"tokyo-city-dark"
|
||||
"tokyo-city-light"
|
||||
"tokyo-city-terminal-dark"
|
||||
"tokyo-city-terminal-light"
|
||||
"tokyo-night-dark"
|
||||
"tokyo-night-light"
|
||||
"tokyo-night-storm"
|
||||
"tokyo-night-terminal-dark"
|
||||
"tokyo-night-terminal-light"
|
||||
"tokyo-night-terminal-storm"
|
||||
"tokyodark"
|
||||
"tokyodark-terminal"
|
||||
"tomorrow"
|
||||
"tomorrow-night"
|
||||
"tomorrow-night-eighties"
|
||||
"tube"
|
||||
"twilight"
|
||||
"unikitty-dark"
|
||||
"unikitty-light"
|
||||
"unikitty-reversible"
|
||||
"uwunicorn"
|
||||
"vice"
|
||||
"vulcan"
|
||||
"windows-10"
|
||||
"windows-10-light"
|
||||
"windows-95"
|
||||
"windows-95-light"
|
||||
"windows-highcontrast"
|
||||
"windows-highcontrast-light"
|
||||
"windows-nt"
|
||||
"windows-nt-light"
|
||||
"woodland"
|
||||
"xcode-dusk"
|
||||
"zenburn"
|
||||
]
|
||||
|
|
|
@ -1,12 +1,36 @@
|
|||
{
|
||||
# No empty test because not setting `colorscheme` would error
|
||||
empty = {
|
||||
colorschemes.base16.enable = true;
|
||||
};
|
||||
|
||||
defaults = {
|
||||
colorschemes.base16 = {
|
||||
enable = true;
|
||||
|
||||
colorscheme = "gruvbox-dark-hard";
|
||||
colorscheme = "schemer-dark";
|
||||
setUpBar = true;
|
||||
|
||||
settings = {
|
||||
telescope = true;
|
||||
telescope_borders = false;
|
||||
indentblankline = true;
|
||||
notify = true;
|
||||
ts_rainbow = true;
|
||||
cmp = true;
|
||||
illuminate = true;
|
||||
lsp_semantic = true;
|
||||
mini_completion = true;
|
||||
dapui = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
builtin-colorscheme = {
|
||||
colorschemes.base16 = {
|
||||
enable = true;
|
||||
|
||||
colorscheme = "gruvbox-dark-hard";
|
||||
setUpBar = false;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue