aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEllison Leão <ellisonleao@gmail.com>2023-09-23 22:20:15 -0300
committerEllison Leão <ellisonleao@gmail.com>2023-09-23 22:20:15 -0300
commitd5d9883fa1abb96450ab4d728f862f1ea9ac97fd (patch)
tree9bedf3b945d9448261d1d4ce0b34594481a64e18
parent31cc564a0c52355e32375efc574f412d9f1a7ea2 (diff)
downloadgruvbox-d5d9883fa1abb96450ab4d728f862f1ea9ac97fd.tar.gz
gruvbox-d5d9883fa1abb96450ab4d728f862f1ea9ac97fd.tar.xz
add terminal_colors config. Close #270
-rw-r--r--README.md1
-rw-r--r--lua/gruvbox/groups.lua45
-rw-r--r--lua/gruvbox/init.lua2
-rw-r--r--tests/gruvbox/gruvbox_spec.lua28
4 files changed, 51 insertions, 25 deletions
diff --git a/README.md b/README.md
index b91154a..b4d7962 100644
--- a/README.md
+++ b/README.md
@@ -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)