aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lua/gruvbox/groups.lua136
-rw-r--r--lua/gruvbox/palette.lua80
2 files changed, 109 insertions, 107 deletions
diff --git a/lua/gruvbox/groups.lua b/lua/gruvbox/groups.lua
index fd4c760..2bdebd1 100644
--- a/lua/gruvbox/groups.lua
+++ b/lua/gruvbox/groups.lua
@@ -1,75 +1,4 @@
-local groups = {}
-
-local function get_base_colors(colors, contrast)
- local bg = vim.o.background
- local base_colors = {
- -- options (dark mode by default)
- bg0 = colors.dark0,
- bg1 = colors.dark1,
- bg2 = colors.dark2,
- bg3 = colors.dark3,
- bg4 = colors.dark4,
- fg0 = colors.light0,
- fg1 = colors.light1,
- fg2 = colors.light2,
- fg3 = colors.light3,
- fg4 = colors.light4,
- red = colors.bright_red,
- green = colors.bright_green,
- yellow = colors.bright_yellow,
- blue = colors.bright_blue,
- purple = colors.bright_purple,
- aqua = colors.bright_aqua,
- orange = colors.bright_orange,
- neutral_red = colors.neutral_red,
- neutral_green = colors.neutral_green,
- neutral_yellow = colors.neutral_yellow,
- neutral_blue = colors.neutral_blue,
- neutral_purple = colors.neutral_purple,
- neutral_aqua = colors.neutral_aqua,
- }
-
- local light_colors = {
- bg0 = colors.light0,
- bg1 = colors.light1,
- bg2 = colors.light2,
- bg3 = colors.light3,
- bg4 = colors.light4,
- fg0 = colors.dark0,
- fg1 = colors.dark1,
- fg2 = colors.dark2,
- fg3 = colors.dark3,
- fg4 = colors.dark4,
- red = colors.faded_red,
- green = colors.faded_green,
- yellow = colors.faded_yellow,
- blue = colors.faded_blue,
- purple = colors.faded_purple,
- aqua = colors.faded_aqua,
- orange = colors.faded_orange,
- neutral_red = colors.neutral_red,
- neutral_green = colors.neutral_green,
- neutral_yellow = colors.neutral_yellow,
- neutral_blue = colors.neutral_blue,
- neutral_purple = colors.neutral_purple,
- neutral_aqua = colors.neutral_aqua,
- }
-
- -- swap colors if light mode
- if bg == "light" then
- base_colors = light_colors
- end
-
- if contrast == "hard" then
- base_colors.bg0 = colors[bg .. "0_hard"]
- elseif contrast == "soft" then
- base_colors.bg0 = colors[bg .. "0_soft"]
- end
-
- base_colors.gray = colors.gray
-
- return base_colors
-end
+local M = {}
-- neovim terminal mode colors
local function set_terminal_colors(colors)
@@ -91,15 +20,10 @@ local function set_terminal_colors(colors)
vim.g.terminal_color_15 = colors.fg1
end
-groups.setup = function()
+M.setup = function()
local config = require("gruvbox").config
+ local colors = require("gruvbox.palette").get_base_colors(vim.o.background, config.contrast)
- local palette = require("gruvbox.palette")
- for k, v in pairs(config.palette_overrides) do
- palette[k] = v
- end
-
- local colors = get_base_colors(palette, config.contrast)
set_terminal_colors(colors)
local groups = {
@@ -344,24 +268,24 @@ groups.setup = function()
GitSignsChange = { link = "GruvboxAquaSign" },
GitSignsDelete = { link = "GruvboxRedSign" },
-- nvim-tree
- NvimTreeSymlink = { fg = palette.neutral_aqua },
- NvimTreeRootFolder = { fg = palette.neutral_purple, bold = true },
- NvimTreeFolderIcon = { fg = palette.neutral_blue, bold = true },
- NvimTreeFileIcon = { fg = palette.light2 },
- NvimTreeExecFile = { fg = palette.neutral_green, bold = true },
- NvimTreeOpenedFile = { fg = palette.bright_red, bold = true },
- NvimTreeSpecialFile = { fg = palette.neutral_yellow, bold = true, underline = true },
- NvimTreeImageFile = { fg = palette.neutral_purple },
- NvimTreeIndentMarker = { fg = palette.dark3 },
- NvimTreeGitDirty = { fg = palette.neutral_yellow },
- NvimTreeGitStaged = { fg = palette.neutral_yellow },
- NvimTreeGitMerge = { fg = palette.neutral_purple },
- NvimTreeGitRenamed = { fg = palette.neutral_purple },
- NvimTreeGitNew = { fg = palette.neutral_yellow },
- NvimTreeGitDeleted = { fg = palette.neutral_red },
- NvimTreeWindowPicker = { bg = palette.faded_aqua },
+ NvimTreeSymlink = { fg = colors.neutral_aqua },
+ NvimTreeRootFolder = { fg = colors.neutral_purple, bold = true },
+ NvimTreeFolderIcon = { fg = colors.neutral_blue, bold = true },
+ NvimTreeFileIcon = { fg = colors.light2 },
+ NvimTreeExecFile = { fg = colors.neutral_green, bold = true },
+ NvimTreeOpenedFile = { fg = colors.bright_red, bold = true },
+ NvimTreeSpecialFile = { fg = colors.neutral_yellow, bold = true, underline = true },
+ NvimTreeImageFile = { fg = colors.neutral_purple },
+ NvimTreeIndentMarker = { fg = colors.dark3 },
+ NvimTreeGitDirty = { fg = colors.neutral_yellow },
+ NvimTreeGitStaged = { fg = colors.neutral_yellow },
+ NvimTreeGitMerge = { fg = colors.neutral_purple },
+ NvimTreeGitRenamed = { fg = colors.neutral_purple },
+ NvimTreeGitNew = { fg = colors.neutral_yellow },
+ NvimTreeGitDeleted = { fg = colors.neutral_red },
+ NvimTreeWindowPicker = { bg = colors.faded_aqua },
-- termdebug
- debugPC = { bg = palette.faded_blue },
+ debugPC = { bg = colors.faded_blue },
debugBreakpoint = { link = "GruvboxRedSign" },
-- vim-startify
StartifyBracket = { link = "GruvboxFg3" },
@@ -837,17 +761,17 @@ groups.setup = function()
DashboardCenter = { link = "GruvboxYellow" },
DashboardFooter = { fg = colors.purple, italic = config.italic },
-- mason
- MasonHighlight = { fg = palette.neutral_blue },
- MasonHighlightBlock = { fg = palette.dark0, bg = palette.neutral_blue },
- MasonHighlightBlockBold = { fg = palette.dark0, bg = palette.neutral_blue, bold = true },
- MasonHighlightSecondary = { fg = palette.neutral_yellow },
- MasonHighlightBlockSecondary = { fg = palette.dark0, bg = palette.neutral_yellow },
- MasonHighlightBlockBoldSecondary = { fg = palette.dark0, bg = palette.neutral_yellow, bold = true },
+ MasonHighlight = { link = "GruvboxAqua" },
+ MasonHighlightBlock = { fg = colors.bg0, bg = colors.blue },
+ MasonHighlightBlockBold = { fg = colors.bg0, bg = colors.blue, bold = true },
+ MasonHighlightSecondary = { fg = colors.yellow },
+ MasonHighlightBlockSecondary = { fg = colors.bg0, bg = colors.yellow },
+ MasonHighlightBlockBoldSecondary = { fg = colors.bg0, bg = colors.yellow, bold = true },
MasonHeader = { link = "MasonHighlightBlockBoldSecondary" },
MasonHeaderSecondary = { link = "MasonHighlightBlockBold" },
- MasonMuted = { fg = palette.light4 },
- MasonMutedBlock = { fg = palette.dark0, bg = palette.light4 },
- MasonMutedBlockBold = { fg = palette.dark0, bg = palette.light4, bold = true },
+ MasonMuted = { fg = colors.fg4 },
+ MasonMutedBlock = { fg = colors.bg0, bg = colors.fg4 },
+ MasonMutedBlockBold = { fg = colors.bg0, bg = colors.fg4, bold = true },
-- lsp-inlayhints.nvim
LspInlayHint = { link = "comment" },
-- carbon.nvim
@@ -870,4 +794,4 @@ groups.setup = function()
return groups
end
-return groups
+return M
diff --git a/lua/gruvbox/palette.lua b/lua/gruvbox/palette.lua
index c9c55a2..59e771b 100644
--- a/lua/gruvbox/palette.lua
+++ b/lua/gruvbox/palette.lua
@@ -1,5 +1,7 @@
-- gruvbox palette
-return {
+local M = {}
+
+M.colors = {
dark0_hard = "#1d2021",
dark0 = "#282828",
dark0_soft = "#32302f",
@@ -37,3 +39,79 @@ return {
faded_orange = "#af3a03",
gray = "#928374",
}
+
+M.get_base_colors = function(bg, contrast)
+ local config = require("gruvbox").config
+ local p = M.colors
+
+ for k, v in pairs(config.palette_overrides) do
+ p[k] = v
+ end
+
+ if bg == nil then
+ bg = vim.o.background
+ end
+
+ local colors = {
+ dark = {
+ bg0 = p.dark0,
+ bg1 = p.dark1,
+ bg2 = p.dark2,
+ bg3 = p.dark3,
+ bg4 = p.dark4,
+ fg0 = p.light0,
+ fg1 = p.light1,
+ fg2 = p.light2,
+ fg3 = p.light3,
+ fg4 = p.light4,
+ 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,
+ gray = p.gray,
+ },
+ light = {
+ bg0 = p.light0,
+ bg1 = p.light1,
+ bg2 = p.light2,
+ bg3 = p.light3,
+ bg4 = p.light4,
+ fg0 = p.dark0,
+ fg1 = p.dark1,
+ 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,
+ 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,
+ gray = p.gray,
+ },
+ }
+
+ if contrast ~= nil and contrast ~= "" then
+ colors[bg].bg0 = p[bg .. string.format("0_%s", contrast)]
+ end
+
+ return colors[bg]
+end
+
+return M