diff --git a/README.md b/README.md index 66897c0..6cb7751 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # cozybox.nvim -Cozybox is a warm, dark Neovim theme with nix-tuned blue and green accents, darker editor surfaces, and syntax overrides baked in. +Cozybox is a neo style darker gruvbox with havy blue and green accents, a nicer red, and a clean light mode (for outside). ## Install @@ -15,21 +15,8 @@ Neovim `0.8+`. ```vim set background=dark " or light if you want light mode colorscheme cozybox - -" explicit light entrypoint with the same cozybox accent palette -colorscheme cozybox-light ``` -## Override +## Config -```lua -require("cozybox").setup({ - transparent_mode = false, - palette_overrides = {}, - overrides = {}, -}) -vim.cmd("colorscheme cozybox") -``` - -The theme already defaults to the custom blue/green palette, hard contrast, darker editor surfaces, and syntax highlight tweaks from your nix config. See `:h cozybox.nvim` or `lua/cozybox.lua` for the full option surface. diff --git a/lua/cozybox.lua b/lua/cozybox.lua index 44472d1..2c58734 100644 --- a/lua/cozybox.lua +++ b/lua/cozybox.lua @@ -217,31 +217,32 @@ local function get_colors() fg2 = p.dark2, fg3 = p.dark3, fg4 = p.dark4, - red = p.faded_red, - green = p.faded_green, - yellow = p.faded_yellow, - blue = p.faded_blue, - purple = p.faded_purple, - aqua = p.faded_aqua, - orange = p.faded_orange, + red = p.bright_red, + green = p.bright_green, + yellow = p.bright_yellow, + blue = p.bright_blue, + purple = p.bright_purple, + aqua = p.bright_aqua, + orange = p.bright_orange, neutral_red = p.neutral_red, neutral_green = p.neutral_green, neutral_yellow = p.neutral_yellow, neutral_blue = p.neutral_blue, neutral_purple = p.neutral_purple, neutral_aqua = p.neutral_aqua, - dark_red = p.light_red, - dark_green = p.light_green, - dark_aqua = p.light_aqua, + dark_red = p.dark_red, + dark_green = p.dark_green, + dark_aqua = p.dark_aqua, gray = p.gray, }, } if contrast ~= nil and contrast ~= "" then color_groups[bg].bg0 = p[bg .. "0_" .. contrast] - color_groups[bg].dark_red = p[bg .. "_red_" .. contrast] - color_groups[bg].dark_green = p[bg .. "_green_" .. contrast] - color_groups[bg].dark_aqua = p[bg .. "_aqua_" .. contrast] + local overlay_bg = bg == "light" and "dark" or bg + color_groups[bg].dark_red = p[overlay_bg .. "_red_" .. contrast] + color_groups[bg].dark_green = p[overlay_bg .. "_green_" .. contrast] + color_groups[bg].dark_aqua = p[overlay_bg .. "_aqua_" .. contrast] end return color_groups[bg] diff --git a/lua/cozybox/light.lua b/lua/cozybox/light.lua index 4ad2f24..906a332 100644 --- a/lua/cozybox/light.lua +++ b/lua/cozybox/light.lua @@ -4,26 +4,6 @@ local selection = "#c3c7c9" return { contrast = "hard", - palette_overrides = { - bright_green = "#8ec97c", - neutral_green = "#8ec97c", - faded_green = "#8ec97c", - bright_yellow = "#d8a657", - neutral_yellow = "#d8a657", - faded_yellow = "#d8a657", - bright_blue = "#5b84de", - neutral_blue = "#5b84de", - faded_blue = "#5b84de", - bright_purple = "#d3869b", - neutral_purple = "#d3869b", - faded_purple = "#d3869b", - bright_aqua = "#8ec07c", - neutral_aqua = "#8ec07c", - faded_aqua = "#8ec07c", - bright_orange = "#e78a4e", - neutral_orange = "#e78a4e", - faded_orange = "#e78a4e", - }, overrides = { MatchParen = { bold = true, underline = true, fg = "#d8a657", bg = selection }, Normal = { bg = background }, @@ -31,23 +11,23 @@ return { SignColumn = { bg = background }, StatusLine = { bg = background }, StatusLineNC = { bg = background }, - GitSignsAdd = { fg = "#6fae70", bg = background }, - GitSignsChange = { fg = "#b57614", bg = background }, + GitSignsAdd = { fg = "#a9b665", bg = background }, + GitSignsChange = { fg = "#d8a657", bg = background }, GitSignsDelete = { fg = "#ea6962", bg = background }, GitSignsTopdelete = { fg = "#ea6962", bg = background }, - GitSignsChangedelete = { fg = "#b57614", bg = background }, - GitSignsUntracked = { fg = "#5b84de", bg = background }, - GitSignsStagedAdd = { fg = "#5f8b50", bg = background }, - GitSignsStagedChange = { fg = "#9d6b0f", bg = background }, - GitSignsStagedDelete = { fg = "#b85751", bg = background }, - GitSignsStagedTopdelete = { fg = "#b85751", bg = background }, - GitSignsStagedChangedelete = { fg = "#9d6b0f", bg = background }, + GitSignsChangedelete = { fg = "#d8a657", bg = background }, + GitSignsUntracked = { fg = "#7daea3", bg = background }, + GitSignsStagedAdd = { fg = "#6c7842", bg = background }, + GitSignsStagedChange = { fg = "#8a6d39", bg = background }, + GitSignsStagedDelete = { fg = "#94433f", bg = background }, + GitSignsStagedTopdelete = { fg = "#94433f", bg = background }, + GitSignsStagedChangedelete = { fg = "#8a6d39", bg = background }, LineNr = { bg = background }, CursorLineNr = { bg = background }, CursorLine = { bg = surface }, FoldColumn = { bg = background }, - DiffAdd = { bg = "#d9e8d2" }, - DiffChange = { bg = "#eee4c7" }, - DiffDelete = { bg = "#f1d6d2" }, + DiffAdd = { bg = "#1e2718" }, + DiffChange = { bg = "#1e1e18" }, + DiffDelete = { bg = "#2a1818" }, }, } diff --git a/tests/cozybox/cozybox_spec.lua b/tests/cozybox/cozybox_spec.lua index c0b7932..0cfd1ba 100644 --- a/tests/cozybox/cozybox_spec.lua +++ b/tests/cozybox/cozybox_spec.lua @@ -8,6 +8,11 @@ local function clear_term_colors() end end +local function highlight_attr(name, attr) + local group_id = vim.api.nvim_get_hl_id_by_name(name) + return vim.fn.synIDattr(group_id, attr, "gui") +end + describe("tests", function() it("works with default values", function() cozybox.setup() @@ -174,4 +179,69 @@ describe("tests", function() assert.are.same(vim.g.colors_name, "cozybox-light") end) + + it("keeps accent highlights consistent across dark and light themes", function() + cozybox.setup() + vim.opt.background = "dark" + cozybox.load() + + local dark = { + red = highlight_attr("CozyboxRed", "fg"), + green = highlight_attr("CozyboxGreen", "fg"), + yellow = highlight_attr("CozyboxYellow", "fg"), + blue = highlight_attr("CozyboxBlue", "fg"), + purple = highlight_attr("CozyboxPurple", "fg"), + aqua = highlight_attr("CozyboxAqua", "fg"), + orange = highlight_attr("CozyboxOrange", "fg"), + string = highlight_attr("String", "fg"), + git_add = highlight_attr("GitSignsAdd", "fg"), + git_change = highlight_attr("GitSignsChange", "fg"), + git_delete = highlight_attr("GitSignsDelete", "fg"), + git_untracked = highlight_attr("GitSignsUntracked", "fg"), + diff_add = highlight_attr("DiffAdd", "bg"), + diff_change = highlight_attr("DiffChange", "bg"), + diff_delete = highlight_attr("DiffDelete", "bg"), + } + + cozybox.setup(require("cozybox.light")) + vim.opt.background = "light" + cozybox.load("cozybox-light") + + local light = { + red = highlight_attr("CozyboxRed", "fg"), + green = highlight_attr("CozyboxGreen", "fg"), + yellow = highlight_attr("CozyboxYellow", "fg"), + blue = highlight_attr("CozyboxBlue", "fg"), + purple = highlight_attr("CozyboxPurple", "fg"), + aqua = highlight_attr("CozyboxAqua", "fg"), + orange = highlight_attr("CozyboxOrange", "fg"), + string = highlight_attr("String", "fg"), + git_add = highlight_attr("GitSignsAdd", "fg"), + git_change = highlight_attr("GitSignsChange", "fg"), + git_delete = highlight_attr("GitSignsDelete", "fg"), + git_untracked = highlight_attr("GitSignsUntracked", "fg"), + diff_add = highlight_attr("DiffAdd", "bg"), + diff_change = highlight_attr("DiffChange", "bg"), + diff_delete = highlight_attr("DiffDelete", "bg"), + normal_bg = highlight_attr("Normal", "bg"), + } + + assert.are.same(dark.red, light.red) + assert.are.same(dark.green, light.green) + assert.are.same(dark.yellow, light.yellow) + assert.are.same(dark.blue, light.blue) + assert.are.same(dark.purple, light.purple) + assert.are.same(dark.aqua, light.aqua) + assert.are.same(dark.orange, light.orange) + assert.are.same(dark.string, light.string) + assert.are.same(dark.git_add, light.git_add) + assert.are.same(dark.git_change, light.git_change) + assert.are.same(dark.git_delete, light.git_delete) + assert.are.same(dark.git_untracked, light.git_untracked) + assert.are.same(dark.diff_add, light.diff_add) + assert.are.same(dark.diff_change, light.diff_change) + assert.are.same(dark.diff_delete, light.diff_delete) + assert.are.same(light.normal_bg, "#e7e7e7") + assert.are.same(vim.g.colors_name, "cozybox-light") + end) end)