Merge pull request #4 from timmypidashev/3-feature-request-customize-colors

v1.0.0
This commit is contained in:
2025-02-03 13:30:04 -08:00
committed by GitHub
13 changed files with 1467 additions and 404 deletions

BIN
.github/darkbox.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

BIN
.github/screenshot.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 547 KiB

BIN
.github/screenshot_classic.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 KiB

BIN
.github/screenshot_dim.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 KiB

BIN
.github/screenshot_retro.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

25
.github/workflows/doc.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
on:
push:
branches:
- main
name: docs
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: panvimdoc
uses: kdheepak/panvimdoc@main
with:
vimdoc: gruvbox.nvim
version: "Neovim >= 0.8.0"
demojify: true
treesitter: true
- name: Push changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: "auto-generate vimdoc"
commit_user_name: "github-actions[bot]"
commit_user_email: "github-actions[bot]@users.noreply.github.com"
commit_author: "github-actions[bot] <github-actions[bot]@users.noreply.github.com>"

24
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,24 @@
---
on: [push, pull_request]
name: default
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
nvim-versions: ["stable", "nightly"]
name: test
steps:
- name: checkout
uses: actions/checkout@v3
- uses: rhysd/action-setup-vim@v1
with:
neovim: true
version: ${{ matrix.nvim-versions }}
- name: run tests
run: make test
env:
PLENARY_DIR: vendor/plenary.nvim

11
Makefile Normal file
View File

@@ -0,0 +1,11 @@
TESTS_INIT=tests/init.lua
TESTS_DIR=tests/
.PHONY: test
test:
@nvim \
--headless \
--noplugin \
-u ${TESTS_INIT} \
-c "PlenaryBustedDirectory ${TESTS_DIR} { minimal_init = '${TESTS_INIT}' }"

View File

@@ -9,6 +9,17 @@ A pure-black refresh of the retro-groove aesthetic for modern displays. Darkbox
- Retro-groove inspired color palette with modern refinements - Retro-groove inspired color palette with modern refinements
- Built-in support for tree-sitter - Built-in support for tree-sitter
## 📸 Screenshots
### Classic
![Screenshot](.github/screenshot_classic.png)
### Retro
![Screenshot](.github/screenshot_retro.png)
### Dim
![Screenshot](.github/screenshot_dim.png)
## 🚀 Installation ## 🚀 Installation
### Using [lazy.nvim](https://github.com/folke/lazy.nvim) ### Using [lazy.nvim](https://github.com/folke/lazy.nvim)
@@ -25,9 +36,54 @@ return {
} }
``` ```
## 📸 Screenshot ## ✏️ Configuration
![Screenshot](.github/screenshot.png) Additional settings for darkbox are available:
```lua
-- Default options:
require("darkbox").setup({
terminal_colors = true, -- add neovim terminal colors
undercurl = true,
underline = true,
bold = true,
italic = {
strings = true,
emphasis = true,
comments = true,
operators = false,
folds = true,
},
strikethrough = true,
invert_selection = false,
invert_signs = false,
invert_tabline = false,
invert_intend_guides = false,
inverse = true, -- invert background for search, diffs, statuslines and errors
contrast = "", -- can be "retro", "dim" or empty string for classic
palette_overrides = {},
overrides = {},
dim_inactive = false,
transparent_mode = false,
})
vim.cmd("colorscheme darkbox")
```
**VERY IMPORTANT**: Make sure to call setup() **BEFORE** calling the colorscheme command, to use your custom configs
## 🔧 Overrides
### Palette
You can specify your own palette colors. For example:
```lua
require("darkbox").setup({
palette_overrides = {
base_red = "#991900",
}
})
vim.cmd("colorscheme darkbox")
```
## 🤝 Contributing ## 🤝 Contributing

File diff suppressed because it is too large Load Diff

6
stylua.toml Normal file
View File

@@ -0,0 +1,6 @@
column_width = 120
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferDouble"
no_call_parentheses = false

View File

@@ -0,0 +1,144 @@
require("plenary.reload").reload_module("darkbox", true)
local darkbox = require("darkbox")
local default = darkbox.config
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()
darkbox.setup()
assert.are.same(darkbox.config, default)
end)
it("works with config overrides", function()
local expected = {
terminal_colors = true,
undercurl = false,
underline = false,
bold = true,
italic = {
strings = true,
emphasis = true,
comments = true,
operators = false,
folds = true,
},
strikethrough = true,
inverse = true,
invert_selection = false,
invert_signs = false,
invert_tabline = false,
invert_intend_guides = false,
contrast = "",
palette_overrides = {},
overrides = {},
dim_inactive = false,
transparent_mode = false,
}
darkbox.setup({ undercurl = false, underline = false })
assert.are.same(darkbox.config, expected)
end)
it("should override a hightlight color", function()
local config = {
overrides = {
Search = { fg = "#ff9900", bg = "#000000" },
ColorColumn = { bg = "#ff9900" },
},
}
darkbox.setup(config)
darkbox.load()
local search_group_id = vim.api.nvim_get_hl_id_by_name("Search")
local search_values = {
background = vim.fn.synIDattr(search_group_id, "bg", "gui"),
foreground = vim.fn.synIDattr(search_group_id, "fg", "gui"),
}
assert.are.same(search_values, { background = "#000000", foreground = "#ff9900" })
local color_column_group_id = vim.api.nvim_get_hl_id_by_name("ColorColumn")
local color_column_values = {
background = vim.fn.synIDattr(color_column_group_id, "bg", "gui"),
}
assert.are.same(color_column_values, { background = "#ff9900" })
end)
it("should create new hightlights colors if they dont exist", function()
local config = {
overrides = {
Search = { fg = "#ff9900", bg = "#000000" },
New = { bg = "#ff9900" },
},
}
darkbox.setup(config)
darkbox.load()
local search_group_id = vim.api.nvim_get_hl_id_by_name("Search")
local search_values = {
background = vim.fn.synIDattr(search_group_id, "bg", "gui"),
foreground = vim.fn.synIDattr(search_group_id, "fg", "gui"),
}
assert.are.same(search_values, { background = "#000000", foreground = "#ff9900" })
local new_group_id = vim.api.nvim_get_hl_id_by_name("New")
local new_group_values = {
background = vim.fn.synIDattr(new_group_id, "bg", "gui"),
}
assert.are.same(new_group_values, { background = "#ff9900" })
end)
it("should override links", function()
local config = {
overrides = {
TelescopePreviewBorder = { fg = "#990000", bg = nil },
},
}
darkbox.setup(config)
darkbox.load()
local group_id = vim.api.nvim_get_hl_id_by_name("TelescopePreviewBorder")
local values = {
fg = vim.fn.synIDattr(group_id, "fg", "gui"),
}
local expected = {
fg = "#990000",
}
assert.are.same(expected, values)
end)
it("should override palette", function()
local config = {
palette_overrides = {
gray = "#ff9900",
},
}
darkbox.setup(config)
darkbox.load()
local group_id = vim.api.nvim_get_hl_id_by_name("Comment")
local values = {
fg = vim.fn.synIDattr(group_id, "fg", "gui"),
}
assert.are.same(values, { fg = "#ff9900" })
end)
it("does not set terminal colors when terminal_colors is false", function()
clear_term_colors()
darkbox.setup({ terminal_colors = false })
darkbox.load()
assert.is_nil(vim.g.terminal_color_0)
end)
end)

11
tests/init.lua Normal file
View File

@@ -0,0 +1,11 @@
local plenary_dir = os.getenv("PLENARY_DIR") or "/tmp/plenary.nvim"
local is_not_a_directory = vim.fn.isdirectory(plenary_dir) == 0
if is_not_a_directory then
vim.fn.system({ "git", "clone", "https://github.com/nvim-lua/plenary.nvim", plenary_dir })
end
vim.opt.rtp:append(".")
vim.opt.rtp:append(plenary_dir)
vim.cmd("runtime plugin/plenary.vim")
require("plenary.busted")