diff --git a/colors/neobones.lua b/colors/neobones.lua index 4448bff..1438d6d 100644 --- a/colors/neobones.lua +++ b/colors/neobones.lua @@ -1,10 +1,9 @@ vim.g.colors_name = "neobones" --- reset specs package.loaded["zenbones.neobones"] = nil - --- include our theme file and pass it to lush to apply require "lush"(require "zenbones.neobones") -local base_name = require("zenbones.util").bg_to_base_name() -require("zenbones.neobones.term").setup(base_name) +local util = require "zenbones.util" +local base_name = util.bg_to_base_name() +local p = require("zenbones.neobones.palette")[base_name] +require("zenbones.term").apply_colors(p) diff --git a/colors/rosebones.lua b/colors/rosebones.lua index 6c161aa..492f9c5 100644 --- a/colors/rosebones.lua +++ b/colors/rosebones.lua @@ -3,11 +3,10 @@ vim.g.colors_name = "rosebones" -- reset specs package.loaded["zenbones.rosebones"] = nil -local util = require "zenbones.util" -local base_name = util.bg_to_base_name() - -- include our theme file and pass it to lush to apply require "lush"(require "zenbones.rosebones") -local base_name = require("zenbones.util").bg_to_base_name() -require("zenbones.rosebones.term").setup(base_name) +local util = require "zenbones.util" +local base_name = util.bg_to_base_name() +local p = require("zenbones.rosebones.palette")[base_name] +require("zenbones.term").apply_colors(p) diff --git a/lua/zenbones/build.lua b/lua/zenbones/build.lua index 2e95a71..decae40 100644 --- a/lua/zenbones/build.lua +++ b/lua/zenbones/build.lua @@ -1,14 +1,35 @@ local util = require "zenbones.util" -local function build() +local function write_template(path, template, values) + print("[write template] " .. path) + local content = util.interp(template, values) + local file = io.open(path, "w") + file:write(content) + file:close() +end + +function build(name, specs, palette, terminal, options) + local exclude = options.exclude or {} + local templates = { "vim", "iterm", "kitty", "alacritty", "wezterm", "lualine", "lightline", "tmux" } + for _, t in ipairs(templates) do + if not vim.tbl_contains(exclude, t) then + write_template(unpack(require("zenbones.template." .. t)(name, specs, palette, terminal))) + end + end +end + +local M = {} + +function M.run() -- default package.loaded["zenbones"] = nil - util.build("zenbones", require "zenbones", require "zenbones.palette", require("zenbones.term").colors, {}) + local p = require "zenbones.palette" + build("zenbones", require "zenbones", p, require("zenbones.term").colors, {}) -- bright package.loaded["zenbones"] = nil vim.g.zenbones_lightness = "bright" - util.build( + build( "zenbones_bright", require "zenbones", require "zenbones.palette", @@ -20,7 +41,7 @@ local function build() -- dim package.loaded["zenbones"] = nil vim.g.zenbones_lightness = "dim" - util.build( + build( "zenbones_dim", require "zenbones", require "zenbones.palette", @@ -31,12 +52,12 @@ local function build() -- default package.loaded["zenflesh"] = nil - util.build("zenflesh", require "zenflesh", require "zenflesh.palette", require("zenflesh.term").colors, {}) + build("zenflesh", require "zenflesh", require "zenflesh.palette", require("zenflesh.term").colors, {}) -- stark package.loaded["zenflesh"] = nil vim.g.zenflesh_darkness = "stark" - util.build( + build( "zenflesh_stark", require "zenflesh", require "zenflesh.palette", @@ -48,7 +69,7 @@ local function build() -- warm package.loaded["zenflesh"] = nil vim.g.zenflesh_darkness = "warm" - util.build( + build( "zenflesh_warm", require "zenflesh", require "zenflesh.palette", @@ -60,7 +81,7 @@ local function build() -- neobones light package.loaded["zenbones.neobones"] = nil vim.opt.background = "light" - util.build( + build( "neobones_light", require "zenbones.neobones", require "zenbones.neobones.palette", @@ -71,7 +92,7 @@ local function build() -- neobones dark package.loaded["zenbones.neobones"] = nil vim.opt.background = "dark" - util.build( + build( "neobones_dark", require "zenbones.neobones", require "zenbones.neobones.palette", @@ -80,4 +101,4 @@ local function build() ) end -return { build = build } +return M diff --git a/lua/zenbones/neobones/palette.lua b/lua/zenbones/neobones/palette.lua index 0e3fd44..c5d516c 100644 --- a/lua/zenbones/neobones/palette.lua +++ b/lua/zenbones/neobones/palette.lua @@ -1,23 +1,20 @@ +local util = require "zenbones.util" local lush = require "lush" local hsluv = lush.hsluv local M = {} -local zenbones_p = require "zenbones.palette" -local zenbones = vim.tbl_extend("keep", { +M.zenbones = util.palette_extend({ -- bg = hsluv "#d3e4db" -- --accent-bg-color bg = hsluv "#e7eee8", -- --bg-color fg = hsluv "#202e18", -- --accent-color - leaf = hsluv "#8fff6d", -- need to make green more prominent - leaf = zenbones_p.leaf.sa(24).li(8), -- need to make green more prominent -}, zenbones_p) -M.zenbones = zenbones +}, "zenbones") +M.zenbones.leaf = M.zenbones.leaf.sa(24).li(8) -- need to make green more prominent -local zenflesh = vim.tbl_extend("keep", { +M.zenflesh = util.palette_extend({ bg = hsluv "#0f191f", -- --bg-color fg = hsluv "#c7d6d0", -- --fg-color leaf = hsluv "#8fff6d", -- --accent-color -}, require "zenflesh.palette") -M.zenflesh = zenflesh +}, "zenflesh") return M diff --git a/lua/zenbones/neobones/term.lua b/lua/zenbones/neobones/term.lua deleted file mode 100644 index 3170b39..0000000 --- a/lua/zenbones/neobones/term.lua +++ /dev/null @@ -1,51 +0,0 @@ -local palette = require "zenbones.neobones.palette" - -local M = { colors = {} } - -local p = palette.zenbones -M.colors.zenbones = { - p.bg, - p.rose, - p.leaf, - p.wood, - p.water, - p.blossom, - p.sky, - p.fg, - p.bg.sa(4).da(16), - p.rose.sa(20).da(16), - p.leaf.sa(20).da(16), - p.wood.sa(18).da(16), - p.water.sa(20).da(16), - p.blossom.sa(24).da(16), - p.sky.sa(20).da(16), - p.fg.li(22), -} - -p = palette.zenflesh -M.colors.zenflesh = { - p.bg, - p.rose, - p.leaf, - p.wood, - p.water, - p.blossom, - p.sky, - p.fg, - p.bg.sa(4).li(16), - p.rose.sa(20).li(16), - p.leaf.sa(20).li(16), - p.wood.sa(18).li(16), - p.water.sa(20).li(16), - p.blossom.sa(24).li(16), - p.sky.sa(20).li(16), - p.fg.da(22), -} - -function M.setup(base_name) - for i, v in ipairs(M.colors[base_name]) do - vim.g["terminal_color_" .. (i - 1)] = v.hex - end -end - -return M diff --git a/lua/zenbones/palette.lua b/lua/zenbones/palette.lua index acbcaf5..9d751ff 100644 --- a/lua/zenbones/palette.lua +++ b/lua/zenbones/palette.lua @@ -1,18 +1,5 @@ +local util = require "zenbones.util" local lush = require "lush" local hsluv = lush.hsluv -local palette = { - bg = hsluv(39, 12, 94), -- sand - fg = hsluv(230, 30, 22), -- stone - leaf = hsluv(112, 72, 42), - water = hsluv(236, 84, 40), - rose = hsluv(4, 70, 40), - wood = hsluv(26, 80, 40), - blossom = hsluv(318, 42, 42), - sky = hsluv(204, 80, 53), -} - -palette.bg_bright = palette.bg.abs_li(3).sa(6) -palette.bg_dim = palette.bg.abs_da(3).de(12) - -return palette +return util.palette_extend({}, "zenbones") diff --git a/lua/zenbones/rosebones/palette.lua b/lua/zenbones/rosebones/palette.lua index e922721..b0c9c6e 100644 --- a/lua/zenbones/rosebones/palette.lua +++ b/lua/zenbones/rosebones/palette.lua @@ -1,9 +1,10 @@ +local util = require "zenbones.util" local lush = require "lush" local hsluv = lush.hsluv local M = {} -local zenbones = { +M.zenbones = util.palette_extend({ bg = hsluv(57.9, 49.8, 96.5), -- base fg = hsluv(14.5, 32, 36), -- rose, base: 14.5, 51.1, 63.3 rose = hsluv(355.6, 38.5, 51.9), -- love @@ -13,13 +14,11 @@ local zenbones = { blossom = hsluv(283.8, 30.2, 54.8), -- iris sky = hsluv(208.6, 65.3, 57.7), -- foam text = hsluv(270.1, 22.9, 36.8), -- text, base: 270.1, 22.9, 36.8 -} -zenbones.bg_bright = zenbones.bg.abs_li(3).sa(6) -zenbones.bg_dim = zenbones.bg.abs_da(3) -M.zenbones = zenbones +}, "zenbones") -local zenflesh = { +M.zenflesh = util.palette_extend({ bg = hsluv(271.2, 20.2, 8.5), -- base + bg_warm = hsluv(268.9, 24.5, 13.9), -- base moon fg = hsluv(14.8, 21, 82), -- rose, base: 2, 55, 83 rose = hsluv(357.2, 75.7, 62.6), -- love leaf = hsluv(227.7, 81.8, 45.8), -- pine @@ -28,9 +27,6 @@ local zenflesh = { blossom = hsluv(283.1, 67.3, 73), -- iris sky = hsluv(206.7, 42.9, 80), -- foam text = hsluv(269.4, 56, 89.2), -- text, base: 269.4, 63.6, 89.2 -} -zenflesh.bg_stark = zenflesh.bg.abs_da(3).sa(8) -zenflesh.bg_warm = hsluv(268.9, 24.5, 13.9) -- base moon -M.zenflesh = zenflesh +}, "zenflesh") return M diff --git a/lua/zenbones/rosebones/term.lua b/lua/zenbones/rosebones/term.lua deleted file mode 100644 index 5b20fab..0000000 --- a/lua/zenbones/rosebones/term.lua +++ /dev/null @@ -1,51 +0,0 @@ -local palette = require "zenbones.rosebones.palette" - -local M = { colors = {} } - -local p = palette.zenbones -M.colors.zenbones = { - p.bg, - p.rose, - p.leaf, - p.wood, - p.water, - p.blossom, - p.sky, - p.fg, - p.bg.sa(4).da(16), - p.rose.sa(20).da(16), - p.leaf.sa(20).da(16), - p.wood.sa(18).da(16), - p.water.sa(20).da(16), - p.blossom.sa(24).da(16), - p.sky.sa(20).da(16), - p.fg.li(22), -} - -p = palette.zenflesh -M.colors.zenflesh = { - p.bg, - p.rose, - p.leaf, - p.wood, - p.water, - p.blossom, - p.sky, - p.fg, - p.bg.sa(4).li(16), - p.rose.sa(20).li(16), - p.leaf.sa(20).li(16), - p.wood.sa(18).li(16), - p.water.sa(20).li(16), - p.blossom.sa(24).li(16), - p.sky.sa(20).li(16), - p.fg.da(22), -} - -function M.setup(base_name) - for i, v in ipairs(M.colors[base_name]) do - vim.g["terminal_color_" .. (i - 1)] = v.hex - end -end - -return M diff --git a/lua/zenbones/term.lua b/lua/zenbones/term.lua index eeb090f..4136d27 100644 --- a/lua/zenbones/term.lua +++ b/lua/zenbones/term.lua @@ -1,29 +1,28 @@ -local p = require "zenbones.palette" - -local colors = { - p.bg, - p.rose, - p.leaf, - p.wood, - p.water, - p.blossom, - p.sky, - p.fg, - p.bg.sa(4).da(16), - p.rose.sa(20).da(16), - p.leaf.sa(20).da(16), - p.wood.sa(18).da(16), - p.water.sa(20).da(16), - p.blossom.sa(24).da(16), - p.sky.sa(20).da(16), - p.fg.li(22), -} - local M = {} -M.colors = colors +function M.colors_map(p) + return { + p.bg, + p.rose, + p.leaf, + p.wood, + p.water, + p.blossom, + p.sky, + p.fg, + p.bg1, + p.rose1, + p.leaf1, + p.wood1, + p.water1, + p.blossom1, + p.sky1, + p.fg1, + } +end -function M.setup() +function M.apply_colors(p) + local colors = M.colors_map(p) for i, v in ipairs(colors) do vim.g["terminal_color_" .. (i - 1)] = v.hex end diff --git a/lua/zenbones/util.lua b/lua/zenbones/util.lua index ed27974..f1cb281 100644 --- a/lua/zenbones/util.lua +++ b/lua/zenbones/util.lua @@ -1,3 +1,5 @@ +local lush = require "lush" +local hsluv = lush.hsluv local M = {} -- got from http://lua-users.org/wiki/StringInterpolation @@ -11,24 +13,6 @@ function M.bg_to_base_name() return vim.opt.background:get() == "light" and "zenbones" or "zenflesh" end -local function write_template(path, template, values) - print("[write template] " .. path) - local content = M.interp(template, values) - local file = io.open(path, "w") - file:write(content) - file:close() -end - -function M.build(name, specs, palette, terminal, options) - local exclude = options.exclude or {} - local templates = { "vim", "iterm", "kitty", "alacritty", "wezterm", "lualine", "lightline", "tmux" } - for _, t in ipairs(templates) do - if not vim.tbl_contains(exclude, t) then - write_template(unpack(require("zenbones.template." .. t)(name, specs, palette, terminal))) - end - end -end - function M.resolve_config(base_name) if base_name == "zenbones" then return { @@ -49,4 +33,58 @@ function M.resolve_config(base_name) end end +function M.palette_extend(p, base_name) + if base_name == "zenbones" then + p = vim.tbl_extend("keep", p, { + bg = hsluv(39, 12, 94), -- sand + fg = hsluv(230, 30, 22), -- stone + leaf = hsluv(112, 72, 42), + water = hsluv(236, 84, 40), + rose = hsluv(4, 70, 40), + wood = hsluv(26, 80, 40), + blossom = hsluv(318, 42, 42), + sky = hsluv(204, 80, 53), + }) + return vim.tbl_extend("keep", p, { + bg1 = p.bg.sa(4).da(16), + bg_bright = p.bg.abs_li(3).sa(6), + bg_dim = p.bg.abs_da(3).de(12), + rose1 = p.rose.sa(20).da(16), + leaf1 = p.leaf.sa(20).da(16), + wood1 = p.wood.sa(18).da(16), + water1 = p.water.sa(20).da(16), + blossom1 = p.blossom.sa(24).da(16), + sky1 = p.sky.sa(20).da(16), + fg1 = p.fg.li(22), + }) + elseif base_name == "zenflesh" then + -- default + p = vim.tbl_extend("keep", p, { + bg = hsluv(39, 9, 9), -- sand + fg = hsluv(230, 10, 76), -- stone + rose = hsluv(6, 62, 60), + leaf = hsluv(111, 47, 61), + wood = hsluv(32, 47, 58), + water = hsluv(236, 64, 61), + blossom = hsluv(318, 32, 58), + sky = hsluv(204, 61, 64), + }) + -- extended + return vim.tbl_extend("keep", p, { + bg1 = p.bg.sa(4).li(16), + bg_stark = p.bg.abs_da(3).sa(8), + bg_warm = p.bg.abs_li(3).de(12), + rose1 = p.rose.sa(20).li(16), + leaf1 = p.leaf.sa(20).li(16), + wood1 = p.wood.sa(18).li(16), + water1 = p.water.sa(20).li(16), + blossom1 = p.blossom.sa(24).li(16), + sky1 = p.sky.sa(20).li(16), + fg1 = p.fg.da(22), + }) + else + error "Unknown base_name" + end +end + return M diff --git a/lua/zenflesh/init.lua b/lua/zenflesh/init.lua index 62c5d3b..82ecf16 100644 --- a/lua/zenflesh/init.lua +++ b/lua/zenflesh/init.lua @@ -1,5 +1,6 @@ +local util = require "zenbones.util" local specs = require "zenflesh.specs" local p = require "zenflesh.palette" -local config = require("zenbones.util").resolve_config "zenflesh" +local config = util.resolve_config "zenflesh" return specs.generate(p, config) diff --git a/lua/zenflesh/palette.lua b/lua/zenflesh/palette.lua index 687f59e..580864d 100644 --- a/lua/zenflesh/palette.lua +++ b/lua/zenflesh/palette.lua @@ -1,18 +1,5 @@ +local util = require "zenbones.util" local lush = require "lush" local hsluv = lush.hsluv -local palette = { - bg = hsluv(39, 9, 9), -- sand - fg = hsluv(230, 10, 76), -- stone - rose = hsluv(6, 62, 60), - leaf = hsluv(111, 47, 61), - wood = hsluv(32, 47, 58), - water = hsluv(236, 64, 61), - blossom = hsluv(318, 32, 58), - sky = hsluv(204, 61, 64), -} - -palette.bg_stark = palette.bg.abs_da(3).sa(8) -palette.bg_warm = palette.bg.abs_li(3).de(12) - -return palette +return util.palette_extend({}, "zenflesh") diff --git a/lua/zenflesh/term.lua b/lua/zenflesh/term.lua deleted file mode 100644 index 06b2e99..0000000 --- a/lua/zenflesh/term.lua +++ /dev/null @@ -1,32 +0,0 @@ -local p = require "zenflesh.palette" - -local colors = { - p.bg, - p.rose, - p.leaf, - p.wood, - p.water, - p.blossom, - p.sky, - p.fg, - p.bg.sa(4).li(16), - p.rose.sa(20).li(16), - p.leaf.sa(20).li(16), - p.wood.sa(18).li(16), - p.water.sa(20).li(16), - p.blossom.sa(24).li(16), - p.sky.sa(20).li(16), - p.fg.da(22), -} - -local M = {} - -M.colors = colors - -function M.setup() - for i, v in ipairs(colors) do - vim.g["terminal_color_" .. (i - 1)] = v.hex - end -end - -return M diff --git a/makefile b/makefile index f7aee84..e8cab3d 100644 --- a/makefile +++ b/makefile @@ -1,4 +1,4 @@ make: nvim --headless -u NORC \ - --cmd 'lua require("zenbones.build").build()' \ + --cmd 'lua require("zenbones.build").run()' \ --cmd 'q'