Compare commits

...

6 Commits

Author SHA1 Message Date
github-actions[bot] 98aaef0cdc auto-generate vimdoc 2026-04-16 08:14:57 +00:00
timmypidashev 822ee3ad68 feat: blink.cmp highlight groups; fix: flatten Pmenu/Sign/StatusLine bg to Normal
- Add BlinkCmp* highlights (Menu, Border, Doc, Signature, Label*, Kind*)
    mirroring CmpItemKind conventions so blink.cmp users get themed UI without
    any plugin-side wiring.
  - Add FloatBorder and FloatTitle defaults (dim border on Normal bg) so LSP
    hovers, completion docs, and diagnostic floats inherit consistent styling.
  - Pmenu, PmenuSel, PmenuSbar, PmenuThumb: drop background_2 fill; sit on
    background so popups blend with the editor canvas instead of showing a
    gray block.
  - Darkbox*Sign groups: remove background_1 gutter strip; diagnostic, Coc,
    and dap signs now render as plain colored glyphs on the editor bg.
  - StatusLine / StatusLineNC: use foreground on background instead of the
    reversed background_2/foreground_1 pair — no more gray status bar.
2026-04-16 01:14:27 -07:00
timmypidashev 01dd5703fa feat: add barbar.nvim highlight groups; fix: flatten TabLineFill/TabLineSel bg to match Normal 2026-04-15 16:23:27 -07:00
timmypidashev c9851bc173 fix: flatten SignColumn and GitSigns backgrounds to match Normal 2026-04-15 11:16:38 -07:00
github-actions[bot] d69165b433 auto-generate vimdoc 2026-04-15 17:50:59 +00:00
timmypidashev 999748927d Add vim.pack config for Neovim 0.12 2026-04-15 10:50:33 -07:00
3 changed files with 193 additions and 60 deletions
+41 -14
View File
@@ -22,25 +22,48 @@ A pure-black refresh of the retro-groove aesthetic for modern displays. Darkbox
## 🚀 Installation
### Using [lazy.nvim](https://github.com/folke/lazy.nvim)
### Using vim.pack (Neovim 0.12+)
Add the following to your Neovim configuration:
The built-in package manager. Recommended.
```lua
vim.pack.add({
{ src = "https://github.com/timmypidashev/darkbox.nvim" },
})
require("darkbox").setup({
contrast = "retro",
})
vim.cmd.colorscheme("darkbox")
```
### Using [lazy.nvim](https://github.com/folke/lazy.nvim)
```lua
return {
"timmypidashev/darkbox.nvim",
lazy = false,
priority = 1000,
config = function()
require("darkbox").load()
end
require("darkbox").setup({
contrast = "retro",
})
vim.cmd.colorscheme("darkbox")
end,
}
```
> The examples below use the `vim.pack` pattern. If you use lazy.nvim, place the `setup()` and `colorscheme` calls inside the `config` function instead.
## ✏️ Configuration
Additional settings for darkbox are available:
All available options with their defaults:
```lua
-- Default options:
vim.pack.add({
{ src = "https://github.com/timmypidashev/darkbox.nvim" },
})
require("darkbox").setup({
terminal_colors = true, -- add neovim terminal colors
undercurl = true,
@@ -65,24 +88,28 @@ require("darkbox").setup({
dim_inactive = false,
transparent_mode = false,
})
vim.cmd("colorscheme darkbox")
vim.cmd.colorscheme("darkbox")
```
**VERY IMPORTANT**: Make sure to call setup() **BEFORE** calling the colorscheme command, to use your custom configs
**VERY IMPORTANT**: Call `setup()` **BEFORE** the colorscheme command to apply custom configs.
## 🔧 Overrides
### Palette
You can specify your own palette colors. For example:
Specify your own palette colors:
```lua
require("darkbox").setup({
palette_overrides = {
base_red = "#991900",
}
vim.pack.add({
{ src = "https://github.com/timmypidashev/darkbox.nvim" },
})
vim.cmd("colorscheme darkbox")
require("darkbox").setup({
palette_overrides = {
base_red = "#991900",
},
})
vim.cmd.colorscheme("darkbox")
```
## 🤝 Contributing
+45 -16
View File
@@ -1,4 +1,5 @@
*darkbox.nvim.txt* For Neovim >= 0.8.0 Last change: 2025 March 25
*darkbox.nvim.txt*
For Neovim >= 0.8.0 Last change: 2026 April 16
==============================================================================
Table of Contents *darkbox.nvim-table-of-contents*
@@ -40,27 +41,51 @@ DIM ~
INSTALLATION *darkbox.nvim-installation*
USING LAZY.NVIM ~
USING VIM.PACK (NEOVIM 0.12+) ~
Add the following to your Neovim configuration:
The built-in package manager. Recommended.
>lua
vim.pack.add({
{ src = "https://github.com/timmypidashev/darkbox.nvim" },
})
require("darkbox").setup({
contrast = "retro",
})
vim.cmd.colorscheme("darkbox")
<
USING LAZY.NVIM ~
>lua
return {
"timmypidashev/darkbox.nvim",
lazy = false,
priority = 1000,
config = function()
require("darkbox").load()
end
require("darkbox").setup({
contrast = "retro",
})
vim.cmd.colorscheme("darkbox")
end,
}
<
The examples below use the `vim.pack` pattern. If you use lazy.nvim, place the
`setup()` and `colorscheme` calls inside the `config` function instead.
CONFIGURATION *darkbox.nvim-configuration*
Additional settings for darkbox are available:
All available options with their defaults:
>lua
-- Default options:
vim.pack.add({
{ src = "https://github.com/timmypidashev/darkbox.nvim" },
})
require("darkbox").setup({
terminal_colors = true, -- add neovim terminal colors
undercurl = true,
@@ -85,11 +110,11 @@ Additional settings for darkbox are available:
dim_inactive = false,
transparent_mode = false,
})
vim.cmd("colorscheme darkbox")
vim.cmd.colorscheme("darkbox")
<
**VERY IMPORTANT**Make sure to call setup() **BEFORE** calling the colorscheme
command, to use your custom configs
**VERY IMPORTANT**: Call `setup()` **BEFORE** the colorscheme command to apply
custom configs.
OVERRIDES *darkbox.nvim-overrides*
@@ -97,15 +122,19 @@ OVERRIDES *darkbox.nvim-overrides*
PALETTE ~
You can specify your own palette colors. For example:
Specify your own palette colors:
>lua
require("darkbox").setup({
palette_overrides = {
base_red = "#991900",
}
vim.pack.add({
{ src = "https://github.com/timmypidashev/darkbox.nvim" },
})
vim.cmd("colorscheme darkbox")
require("darkbox").setup({
palette_overrides = {
base_red = "#991900",
},
})
vim.cmd.colorscheme("darkbox")
<
+105 -28
View File
@@ -201,20 +201,15 @@ local function get_groups()
DarkboxAquaBold = { fg = colors.aqua, bold = config.bold },
DarkboxOrange = { fg = colors.orange },
DarkboxOrangeBold = { fg = colors.orange, bold = config.bold },
DarkboxRedSign = config.transparent_mode and { fg = colors.red, reverse = config.invert_signs }
or { fg = colors.red, bg = colors.background_1, reverse = config.invert_signs },
DarkboxGreenSign = config.transparent_mode and { fg = colors.green, reverse = config.invert_signs }
or { fg = colors.green, bg = colors.background_1, reverse = config.invert_signs },
DarkboxYellowSign = config.transparent_mode and { fg = colors.yellow, reverse = config.invert_signs }
or { fg = colors.yellow, bg = colors.background_1, reverse = config.invert_signs },
DarkboxBlueSign = config.transparent_mode and { fg = colors.blue, reverse = config.invert_signs }
or { fg = colors.blue, bg = colors.background_1, reverse = config.invert_signs },
DarkboxPurpleSign = config.transparent_mode and { fg = colors.purple, reverse = config.invert_signs }
or { fg = colors.purple, bg = colors.background_1, reverse = config.invert_signs },
DarkboxAquaSign = config.transparent_mode and { fg = colors.aqua, reverse = config.invert_signs }
or { fg = colors.aqua, bg = colors.background_1, reverse = config.invert_signs },
DarkboxOrangeSign = config.transparent_mode and { fg = colors.orange, reverse = config.invert_signs }
or { fg = colors.orange, bg = colors.background_1, reverse = config.invert_signs },
-- Sign groups inherit the editor background; adding a gray block contradicts
-- the pure-black `background` and creates disjoint gutter chrome.
DarkboxRedSign = { fg = colors.red, bg = colors.background, reverse = config.invert_signs },
DarkboxGreenSign = { fg = colors.green, bg = colors.background, reverse = config.invert_signs },
DarkboxYellowSign = { fg = colors.yellow, bg = colors.background, reverse = config.invert_signs },
DarkboxBlueSign = { fg = colors.blue, bg = colors.background, reverse = config.invert_signs },
DarkboxPurpleSign = { fg = colors.purple, bg = colors.background, reverse = config.invert_signs },
DarkboxAquaSign = { fg = colors.aqua, bg = colors.background, reverse = config.invert_signs },
DarkboxOrangeSign = { fg = colors.orange, bg = colors.background, reverse = config.invert_signs },
DarkboxRedUnderline = { undercurl = config.undercurl, sp = colors.red },
DarkboxGreenUnderline = { undercurl = config.undercurl, sp = colors.green },
DarkboxYellowUnderline = { undercurl = config.undercurl, sp = colors.yellow },
@@ -229,8 +224,8 @@ local function get_groups()
NormalNC = config.dim_inactive and { fg = colors.foreground_1, bg = colors.background_1 } or { link = "Normal" },
CursorLine = { bg = colors.background_1 },
CursorColumn = { link = "CursorLine" },
TabLineFill = { fg = colors.background_4, bg = colors.background_1, reverse = config.invert_tabline },
TabLineSel = { fg = colors.green, bg = colors.background_1, reverse = config.invert_tabline },
TabLineFill = { fg = colors.background_4, bg = colors.background, reverse = config.invert_tabline },
TabLineSel = { fg = colors.green, bg = colors.background, reverse = config.invert_tabline },
TabLine = { link = "TabLineFill" },
MatchParen = { bg = colors.background_3, bold = config.bold },
ColorColumn = { bg = colors.background_1 },
@@ -245,12 +240,12 @@ local function get_groups()
CurSearch = { link = "IncSearch" },
QuickFixLine = { link = "DarkboxPurple" },
Underlined = { fg = colors.blue, underline = config.underline },
StatusLine = { fg = colors.background_2, bg = colors.foreground_1, reverse = config.inverse },
StatusLineNC = { fg = colors.background_1, bg = colors.foreground_4, reverse = config.inverse },
StatusLine = { fg = colors.foreground, bg = colors.background },
StatusLineNC = { fg = colors.foreground_4, bg = colors.background },
WinBar = { fg = colors.foreground_4, bg = colors.background },
WinBarNC = { fg = colors.foreground_3, bg = colors.background_1 },
WinSeparator = config.transparent_mode and { fg = colors.background_3, bg = nil }
or { fg = colors.background_3, bg = colors.background },
WinSeparator = config.transparent_mode and { fg = colors.background_2, bg = nil }
or { fg = colors.background_2, bg = colors.background },
WildMenu = { fg = colors.blue, bg = colors.background_2, bold = config.bold },
Directory = { link = "DarkboxGreenBold" },
Title = { link = "DarkboxGreenBold" },
@@ -260,7 +255,7 @@ local function get_groups()
Question = { link = "DarkboxOrangeBold" },
WarningMsg = { link = "DarkboxRedBold" },
LineNr = { fg = colors.background_4 },
SignColumn = config.transparent_mode and { bg = nil } or { bg = colors.background_1 },
SignColumn = { bg = nil },
Folded = { fg = colors.gray, bg = colors.background_1, italic = config.italic.folds },
FoldColumn = config.transparent_mode and { fg = colors.gray, bg = nil }
or { fg = colors.gray, bg = colors.background_1 },
@@ -297,10 +292,12 @@ local function get_groups()
StorageClass = { link = "DarkboxOrange" },
Structure = { link = "DarkboxAqua" },
Typedef = { link = "DarkboxYellow" },
Pmenu = { fg = colors.foreground_1, bg = colors.background_2 },
PmenuSel = { fg = colors.background_2, bg = colors.blue, bold = config.bold },
PmenuSbar = { bg = colors.background_2 },
PmenuThumb = { bg = colors.background_4 },
Pmenu = { fg = colors.foreground, bg = colors.background },
PmenuSel = { fg = colors.background, bg = colors.blue, bold = config.bold },
PmenuSbar = { bg = colors.background },
PmenuThumb = { bg = colors.background_2 },
FloatBorder = { fg = colors.background_2, bg = colors.background },
FloatTitle = { fg = colors.foreground, bg = colors.background, bold = config.bold },
DiffDelete = { bg = colors.dark_red },
DiffAdd = { bg = colors.dark_green },
DiffChange = { bg = colors.dark_aqua },
@@ -340,9 +337,46 @@ local function get_groups()
LspSignatureActiveParameter = { link = "Search" },
gitcommitSelectedFile = { link = "DarkboxGreen" },
gitcommitDiscardedFile = { link = "DarkboxRed" },
GitSignsAdd = { link = "DarkboxGreen" },
GitSignsChange = { link = "DarkboxOrange" },
GitSignsDelete = { link = "DarkboxRed" },
GitSignsAdd = { fg = colors.green },
GitSignsChange = { fg = colors.orange },
GitSignsDelete = { fg = colors.red },
-- barbar.nvim
BufferCurrent = { fg = colors.foreground, bg = colors.background, bold = true },
BufferCurrentIndex = { fg = colors.foreground, bg = colors.background, bold = true },
BufferCurrentMod = { fg = colors.orange, bg = colors.background },
BufferCurrentSign = { fg = colors.yellow, bg = colors.background },
BufferCurrentIcon = { link = "BufferCurrent" },
BufferCurrentTarget = { fg = colors.red, bg = colors.background, bold = true },
BufferCurrentADDED = { fg = colors.green, bg = colors.background },
BufferCurrentCHANGED = { fg = colors.orange, bg = colors.background },
BufferCurrentDELETED = { fg = colors.red, bg = colors.background },
BufferVisible = { fg = colors.foreground_2, bg = colors.background },
BufferVisibleIndex = { fg = colors.foreground_3, bg = colors.background },
BufferVisibleMod = { fg = colors.orange, bg = colors.background },
BufferVisibleSign = { fg = colors.foreground_3, bg = colors.background },
BufferVisibleIcon = { fg = colors.foreground_2, bg = colors.background },
BufferVisibleTarget = { fg = colors.red, bg = colors.background, bold = true },
BufferInactive = { fg = colors.foreground_4, bg = colors.background },
BufferInactiveIndex = { fg = colors.foreground_4, bg = colors.background },
BufferInactiveMod = { fg = colors.orange, bg = colors.background },
BufferInactiveSign = { fg = colors.foreground_4, bg = colors.background },
BufferInactiveIcon = { fg = colors.foreground_4, bg = colors.background },
BufferInactiveTarget = { fg = colors.red, bg = colors.background, bold = true },
BufferInactiveADDED = { fg = colors.green, bg = colors.background },
BufferInactiveCHANGED = { fg = colors.orange, bg = colors.background },
BufferInactiveDELETED = { fg = colors.red, bg = colors.background },
BufferTabpages = { fg = colors.yellow, bg = colors.background, bold = true },
BufferTabpageFill = { fg = colors.foreground_4, bg = colors.background },
BufferOffset = { fg = colors.foreground, bg = colors.background, bold = true },
BufferAlternate = { fg = colors.foreground_2, bg = colors.background },
BufferAlternateSign = { fg = colors.foreground_3, bg = colors.background },
BufferAlternateIndex = { fg = colors.foreground_3, bg = colors.background },
BufferAlternateIcon = { fg = colors.foreground_2, bg = colors.background },
BufferAlternateMod = { fg = colors.orange, bg = colors.background },
NvimTreeSymlink = { fg = colors.neutral_aqua },
NvimTreeRootFolder = { fg = colors.neutral_purple, bold = true },
NvimTreeFolderIcon = { fg = colors.neutral_blue, bold = true },
@@ -455,6 +489,49 @@ local function get_groups()
CmpItemKindConstant = { link = "DarkboxOrange" },
CmpItemKindStruct = { link = "DarkboxYellow" },
CmpItemKindTypeParameter = { link = "DarkboxYellow" },
-- blink.cmp: mirror the nvim-cmp conventions so the completion UI is
-- themed without any plugin-side wiring.
BlinkCmpMenu = { link = "NormalFloat" },
BlinkCmpMenuBorder = { link = "FloatBorder" },
BlinkCmpMenuSelection = { link = "PmenuSel" },
BlinkCmpDoc = { link = "NormalFloat" },
BlinkCmpDocBorder = { link = "FloatBorder" },
BlinkCmpSignatureHelp = { link = "NormalFloat" },
BlinkCmpSignatureHelpBorder = { link = "FloatBorder" },
BlinkCmpLabel = { link = "NormalFloat" },
BlinkCmpLabelMatch = { link = "DarkboxGreenBold" },
BlinkCmpLabelDetail = { link = "Comment" },
BlinkCmpLabelDescription = { link = "Comment" },
BlinkCmpLabelDeprecated = { fg = colors.foreground_4, strikethrough = true },
BlinkCmpGhostText = { link = "Comment" },
BlinkCmpKind = { link = "CmpItemKind" },
BlinkCmpKindText = { link = "CmpItemKindText" },
BlinkCmpKindMethod = { link = "CmpItemKindMethod" },
BlinkCmpKindFunction = { link = "CmpItemKindFunction" },
BlinkCmpKindConstructor = { link = "CmpItemKindConstructor" },
BlinkCmpKindField = { link = "CmpItemKindField" },
BlinkCmpKindVariable = { link = "CmpItemKindVariable" },
BlinkCmpKindClass = { link = "CmpItemKindClass" },
BlinkCmpKindInterface = { link = "CmpItemKindInterface" },
BlinkCmpKindModule = { link = "CmpItemKindModule" },
BlinkCmpKindProperty = { link = "CmpItemKindProperty" },
BlinkCmpKindUnit = { link = "CmpItemKindUnit" },
BlinkCmpKindValue = { link = "CmpItemKindValue" },
BlinkCmpKindEnum = { link = "CmpItemKindEnum" },
BlinkCmpKindKeyword = { link = "CmpItemKindKeyword" },
BlinkCmpKindSnippet = { link = "CmpItemKindSnippet" },
BlinkCmpKindColor = { link = "CmpItemKindColor" },
BlinkCmpKindFile = { link = "CmpItemKindFile" },
BlinkCmpKindReference = { link = "CmpItemKindReference" },
BlinkCmpKindFolder = { link = "CmpItemKindFolder" },
BlinkCmpKindEnumMember = { link = "CmpItemKindEnumMember" },
BlinkCmpKindConstant = { link = "CmpItemKindConstant" },
BlinkCmpKindStruct = { link = "CmpItemKindStruct" },
BlinkCmpKindEvent = { link = "CmpItemKindEvent" },
BlinkCmpKindOperator = { link = "CmpItemKindOperator" },
BlinkCmpKindTypeParameter = { link = "CmpItemKindTypeParameter" },
diffAdded = { link = "DiffAdd" },
diffRemoved = { link = "DiffDelete" },
diffChanged = { link = "DiffChange" },