diff options
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | lua/gruvbox/groups.lua | 45 | ||||
| -rw-r--r-- | lua/gruvbox/init.lua | 2 | ||||
| -rw-r--r-- | tests/gruvbox/gruvbox_spec.lua | 28 |
4 files changed, 51 insertions, 25 deletions
@@ -54,6 +54,7 @@ Additional settings for gruvbox are: -- setup must be called before loading the colorscheme -- Default options: require("gruvbox").setup({ + terminal_colors = true, -- add neovim terminal colors undercurl = true, underline = true, bold = true, diff --git a/lua/gruvbox/groups.lua b/lua/gruvbox/groups.lua index 15b8788..86b439d 100644 --- a/lua/gruvbox/groups.lua +++ b/lua/gruvbox/groups.lua @@ -1,32 +1,33 @@ local M = {} --- set terminal mode colors ----@param colors table -local function set_terminal_colors(colors) - vim.g.terminal_color_0 = colors.bg0 - vim.g.terminal_color_8 = colors.gray - vim.g.terminal_color_1 = colors.neutral_red - vim.g.terminal_color_9 = colors.red - vim.g.terminal_color_2 = colors.neutral_green - vim.g.terminal_color_10 = colors.green - vim.g.terminal_color_3 = colors.neutral_yellow - vim.g.terminal_color_11 = colors.yellow - vim.g.terminal_color_4 = colors.neutral_blue - vim.g.terminal_color_12 = colors.blue - vim.g.terminal_color_5 = colors.neutral_purple - vim.g.terminal_color_13 = colors.purple - vim.g.terminal_color_6 = colors.neutral_aqua - vim.g.terminal_color_14 = colors.aqua - vim.g.terminal_color_7 = colors.fg4 - vim.g.terminal_color_15 = colors.fg1 -end - -- setup Gruvbox groups ---@param config GruvboxConfig M.setup = function(config) local colors = require("gruvbox.palette").get_base_colors(config.palette_overrides, vim.o.background, config.contrast) - set_terminal_colors(colors) + if config.terminal_colors then + local term_colors = { + colors.bg0, + colors.neutral_red, + colors.neutral_green, + colors.neutral_yellow, + colors.neutral_blue, + colors.neutral_purple, + colors.neutral_aqua, + colors.fg4, + colors.gray, + colors.red, + colors.green, + colors.yellow, + colors.blue, + colors.purple, + colors.aqua, + colors.fg1, + } + for index, value in ipairs(term_colors) do + vim.g["terminal_color_"..index-1] = value + end + end local groups = { GruvboxFg0 = { fg = colors.fg0 }, diff --git a/lua/gruvbox/init.lua b/lua/gruvbox/init.lua index 4d98a5f..f033792 100644 --- a/lua/gruvbox/init.lua +++ b/lua/gruvbox/init.lua @@ -28,6 +28,7 @@ local Gruvbox = {} ---@field nocombine boolean? ---@class GruvboxConfig +---@field terminal_colors boolean? ---@field undercurl boolean? ---@field underline boolean? ---@field bold boolean? @@ -42,6 +43,7 @@ local Gruvbox = {} ---@field overrides table<string, HighlightDefinition>? ---@field palette_overrides table<string, string>? Gruvbox.config = { + terminal_colors = true, undercurl = true, underline = true, bold = true, diff --git a/tests/gruvbox/gruvbox_spec.lua b/tests/gruvbox/gruvbox_spec.lua index 088e3aa..387a034 100644 --- a/tests/gruvbox/gruvbox_spec.lua +++ b/tests/gruvbox/gruvbox_spec.lua @@ -2,7 +2,13 @@ require("plenary.reload").reload_module("gruvbox", true) local gruvbox = require("gruvbox") local default = gruvbox.config -describe("setup", function() +local function clear_term_colors() + for item = 0, 15 do + vim.g["terminal_color_" .. item] = nil + end +end + +describe("tests", function() it("works with default values", function() gruvbox.setup() assert.are.same(gruvbox.config, default) @@ -10,6 +16,7 @@ describe("setup", function() it("works with config overrides", function() local expected = { + terminal_colors = true, undercurl = false, underline = false, bold = true, @@ -36,9 +43,7 @@ describe("setup", function() gruvbox.setup({ undercurl = false, underline = false }) assert.are.same(gruvbox.config, expected) end) -end) -describe("highlight overrides", function() it("should override a hightlight color", function() local config = { overrides = { @@ -129,4 +134,21 @@ describe("highlight overrides", function() } assert.are.same(values, { fg = "#ff9900" }) end) + + it("does not set terminal colors when terminal_colors is false", function() + clear_term_colors() + print("vim.g color before =>", vim.g.terminal_color_0, type(vim.g.terminal_color_0)) + gruvbox.setup({ terminal_colors = false }) + gruvbox.load() + print("vim.g color after =>", vim.g.terminal_color_0, type(vim.g.terminal_color_0)) + assert.is_nil(vim.g.terminal_color_0) + end) + + it("sets terminal colors when terminal_colors is true", function() + clear_term_colors() + gruvbox.setup({ terminal_colors = true }) + gruvbox.load() + local colors = require("gruvbox.palette").get_base_colors({}, "dark", "") + assert.are.same(vim.g.terminal_color_0, colors.bg0) + end) end) |
