From 6d21f82d89491b1acd6ef5d5b68b00f0733f0fa3 Mon Sep 17 00:00:00 2001 From: Michael Chris Lopez Date: Sun, 10 Oct 2021 15:02:17 +0800 Subject: [PATCH] update gruvbones example --- doc/zenbones.md | 90 +++++++++++++++++++++---------------------------- 1 file changed, 39 insertions(+), 51 deletions(-) diff --git a/doc/zenbones.md b/doc/zenbones.md index 9549a51..8cbfbc9 100644 --- a/doc/zenbones.md +++ b/doc/zenbones.md @@ -99,70 +99,58 @@ Let's define our ```lua vim.g.colors_name = "gruvbones" --- let's base bg=dark, bg=light on zenflesh, zenbones specs respectively -local base_name = vim.opt.background:get() == "dark" and "zenflesh" or "zenbones" - --- reset base palette and specs -package.loaded[base_name .. ".palette"] = nil -package.loaded[base_name] = nil - local lush = require "lush" -local hsl = lush.hsl +local hsluv = lush.hsluv -- human-friendly hsl +local util = require "zenbones.util" --- modify base palette (before requiring specs) --- and we can also define our own --- note: non-exhaustive copy of gruvbox palette. Ref: https://github.com/gruvbox-community/gruvbox#palette -local base = require(base_name .. ".palette") -local gruv +-- let's base bg=dark, bg=light on zenflesh, zenbones specs respectively +local base_name = util.bg_to_base_name() + +-- create a palette. Use palette_extend to fill unspecified colors +-- based on https://github.com/gruvbox-community/gruvbox#palette +local palette if base_name == "zenbones" then - base.bg = hsl "#fbf1c7" - base.fg = hsl "#3c3836" - gruv = { - gray = hsl "#7c6f64", - fg0 = hsl "#282828", - fg1 = hsl "#3c3836", - fg2 = hsl "#504945", - fg3 = hsl "#665c54", - fg4 = hsl "#7c6f64", - } + palette = util.palette_extend({ + bg = hsluv "#fbf1c7", + fg = hsluv "#3c3836", + rose = hsluv "#9d0006", + leaf = hsluv "#79740e", + wood = hsluv "#b57614", + water = hsluv "#076678", + blossom = hsluv "#8f3f71", + sky = hsluv "#427b58", + }, "zenbones") else - base.bg = hsl "#282828" - base.fg = hsl "#ebdbb2" - gruv = { - gray = hsl "#a89984", - fg0 = hsl "#fbf1c7", - fg1 = hsl "#ebdbb2", - fg2 = hsl "#d5c4a1", - fg3 = hsl "#d5c4a1", - fg4 = hsl "#a89984", - } + palette = util.palette_extend({ + bg = hsluv "#282828", + fg = hsluv "#ebdbb2", + rose = hsluv "#fb4934", + leaf = hsluv "#b8bb26", + wood = hsluv "#fabd2f", + water = hsluv "#83a598", + blossom = hsluv "#d3869b", + sky = hsluv "#83c07c", + }, "zenflesh") end -base.rose = hsl "#cc241d" -base.leaf = hsl "#98971a" -base.wood = hsl "#d79921" -base.water = hsl "#458588" -base.blossom = hsl "#b16286" -base.sky = hsl "#689d6a" +-- generate the lush specs using the generator util +local generator = require(base_name .. ".specs") +local base_specs = generator.generate(palette, generator.get_global_config(base_name)) --- extend specs using Lush -local theme = require(base_name) -local specs = lush.extends({ theme }).with(function() +-- optionally extend specs using Lush +local specs = lush.extends({ base_specs }).with(function() return { - Constant { fg = gruv.fg4, gui = "italic" }, - Identifier { fg = gruv.fg2, gui = "italic" }, - Special { fg = gruv.fg3, gui = "bold" }, - Delimiter { fg = gruv.gray }, - Comment { fg = gruv.gray, gui = "italic" }, - LineNr { fg = Comment.fg }, + Statement { base_specs.Statement, fg = palette.rose }, + Special { fg = palette.water }, + Type { fg = palette.sky, gui = "italic" }, } end) --- apply terminal colors -require(base_name .. ".term").setup() - -- include our theme file and pass it to lush to apply lush(specs) + +-- optionally, set term colors +require("zenbones.term").apply_colors(palette) ``` And there you have it. Just call `colorscheme gruvbones` to use your new