Files
darkbox.nvim/lua/darkbox.lua
2025-02-03 12:39:13 -08:00

1217 lines
57 KiB
Lua

-- ::::::::: ::: ::::::::: ::: :::::::::::: :::::::: ::: :::
-- :+: :+: :+: :+: :+: :+::+: :+: :+: :+::+: :+::+: :+:
-- +:+ +:+ +:+ +:+ +:+ +:++:+ +:+ +:+ +:++:+ +:+ +:+ +:+
-- +#+ +:++#++:++#++:+#++:++#: +#++:++ +#++:++#+ +#+ +:+ +#++:+
-- +#+ +#++#+ +#++#+ +#++#+ +#+ +#+ +#++#+ +#+ +#+ +#+
-- #+# #+##+# #+##+# #+##+# #+# #+# #+##+# #+##+# #+#
-- ######### ### ###### ###### ############ ######## ### ###
--
-- INSPIRED BY GRUVBOX (https://github.com/morhetz/gruvbox)
-- Could not have been made possible without the gruvbox.nvim project (https://github.com/ellisonleao/gruvbox.nvim)
---@class Darkbox
---@field config DarkboxConfig
---@field palette DarkboxPalette
local Darkbox = {}
---@alias Contrast "classic" | "dim" | ""
---@class ItalicConfig
---@field strings boolean
---@field comments boolean
---@field operators boolean
---@field folds boolean
---@field emphasis boolean
---@class HighlightDefinition
---@field fg string?
---@field bg string?
---@field sp string?
---@field blend integer?
---@field bold boolean?
---@field standout boolean?
---@field underline boolean?
---@field undercurl boolean?
---@field underdouble boolean?
---@field underdotted boolean?
---@field strikethrough boolean?
---@field italic boolean?
---@field reverse boolean?
---@field nocombine boolean?
---@class DarkboxConfig
---@field terminal_colors boolean?
---@field undercurl boolean?
---@field underline boolean?
---@field bold boolean?
---@field italic ItalicConfig?
---@field strikethrough boolean?
---@field contrast Contrast?
---@field invert_selection boolean?
---@field invert_signs boolean?
---@field invert_tabline boolean?
---@field invert_intend_guides boolean?
---@field inverse boolean?
---@field overrides table<string, HighlightDefinition>?
---@field palette_overrides table<string, string>?
Darkbox.config = {
terminal_colors = true,
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,
contrast = "",
palette_overrides = {},
overrides = {},
dim_inactive = false,
transparent_mode = false,
}
---@class DarkboxPalette
Darkbox.palette = {
background = "#000000", -- The one true background color :D
background_1 = "#3c3836",
background_2 = "#504945",
background_3 = "#665c54",
background_4 = "#7c6f64",
classic_foreground = "#ebdbb2",
base_foreground = "#bdae93",
dim_foreground = "#a89984",
foreground_1 = "#bdae93",
foreground_2 = "#d5c4a1",
foreground_3 = "#bdae93",
foreground_4 = "#a89984",
classic_red = "#fb4934",
classic_green = "#b8bb26",
classic_yellow = "#fabd2f",
classic_blue = "#83a598",
classic_purple = "#d3869b",
classic_aqua = "#8ec07c",
classic_orange = "#fe8019",
base_red = "#cc241d",
base_green = "#98971a",
base_yellow = "#d79921",
base_blue = "#458588",
base_purple = "#b16286",
base_aqua = "#689d6a",
base_orange = "#d65d0e",
dim_red = "#9d0006",
dim_green = "#79740e",
dim_yellow = "#b57614",
dim_blue = "#076678",
dim_purple = "#8f3f71",
dim_aqua = "#427b58",
dim_orange = "#af3a03",
gray = "#928374",
}
local function get_colors()
local palette = Darkbox.palette
local config = Darkbox.config
local colors = {
background_1 = palette.background_1,
background_2 = palette.background_2,
background_3 = palette.background_3,
background_4 = palette.background_4,
foreground_1 = palette.foreground_1,
foreground_2 = palette.foreground_2,
foreground_3 = palette.foreground_3,
foreground_4 = palette.foreground_4,
}
if config.contrast == "classic" then
colors.foreground = palette.classic_foreground
colors.red = palette.classic_red
colors.green = palette.classic_green
colors.yellow = palette.classic_yellow
colors.blue = palette.classic_blue
colors.purple = palette.classic_purple
colors.aqua = palette.classic_aqua
colors.orange = palette.classic_orange
colors.gray = palette.gray
elseif config.contrast == "dim" then
colors.foreground = palette.dim_foreground
colors.red = palette.dim_red
colors.green = palette.dim_green
colors.yellow = palette.dim_yellow
colors.blue = palette.dim_blue
colors.purple = palette.dim_purple
colors.aqua = palette.dim_aqua
colors.orange = palette.dim_orange
colors.gray = palette.gray
else -- base/default
colors.foreground = palette.base_foreground
colors.red = palette.base_red
colors.green = palette.base_green
colors.yellow = palette.base_yellow
colors.blue = palette.base_blue
colors.purple = palette.base_purple
colors.aqua = palette.base_aqua
colors.orange = palette.base_orange
colors.gray = palette.gray
end
-- Apply any user overrides last
for color, hex in pairs(config.palette_overrides) do
colors[color] = hex
end
return colors
end
local function get_groups()
local colors = get_colors()
local config = Darkbox.config
local palette = Darkbox.palette
if config.terminal_colors then
local term_colors = {
palette.background, -- color_0 (black)
palette.base_red, -- color_1 (red)
palette.base_green, -- color_2 (green)
palette.base_yellow, -- color_3 (yellow)
palette.base_blue, -- color_4 (blue)
palette.base_purple, -- color_5 (purple)
palette.base_aqua, -- color_6 (cyan/aqua)
palette.foreground_4, -- color_7 (white)
palette.gray, -- color_8 (bright black)
palette.classic_red, -- color_9 (bright red)
palette.classic_green, -- color_10 (bright green)
palette.classic_yellow, -- color_11 (bright yellow)
palette.classic_blue, -- color_12 (bright blue)
palette.classic_purple, -- color_13 (bright purple)
palette.classic_aqua, -- color_14 (bright cyan/aqua)
colors.foreground, -- color_15 (specified contrast foreground)
}
for index, value in ipairs(term_colors) do
vim.g["terminal_color_" .. index - 1] = value
end
end
local groups = {
DarkboxFg0 = { fg = colors.foreground },
DarkboxFg1 = { fg = colors.foreground },
DarkboxFg2 = { fg = colors.foreground_2 },
DarkboxFg3 = { fg = colors.foreground_3 },
DarkboxFg4 = { fg = colors.foreground_4 },
DarkboxGray = { fg = colors.gray },
DarkboxBg0 = { fg = colors.background },
DarkboxBg1 = { fg = colors.background_1 },
DarkboxBg2 = { fg = colors.background_2 },
DarkboxBg3 = { fg = colors.background_3 },
DarkboxBg4 = { fg = colors.background_4 },
DarkboxRed = { fg = colors.red },
DarkboxRedBold = { fg = colors.red, bold = config.bold },
DarkboxGreen = { fg = colors.green },
DarkboxGreenBold = { fg = colors.green, bold = config.bold },
DarkboxYellow = { fg = colors.yellow },
DarkboxYellowBold = { fg = colors.yellow, bold = config.bold },
DarkboxBlue = { fg = colors.blue },
DarkboxBlueBold = { fg = colors.blue, bold = config.bold },
DarkboxPurple = { fg = colors.purple },
DarkboxPurpleBold = { fg = colors.purple, bold = config.bold },
DarkboxAqua = { fg = colors.aqua },
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 },
DarkboxRedUnderline = { undercurl = config.undercurl, sp = colors.red },
DarkboxGreenUnderline = { undercurl = config.undercurl, sp = colors.green },
DarkboxYellowUnderline = { undercurl = config.undercurl, sp = colors.yellow },
DarkboxBlueUnderline = { undercurl = config.undercurl, sp = colors.blue },
DarkboxPurpleUnderline = { undercurl = config.undercurl, sp = colors.purple },
DarkboxAquaUnderline = { undercurl = config.undercurl, sp = colors.aqua },
DarkboxOrangeUnderline = { undercurl = config.undercurl, sp = colors.orange },
Normal = config.transparent_mode and { fg = colors.foreground_1, bg = nil } or { fg = colors.foreground_1, bg = colors.background },
NormalFloat = config.transparent_mode and { fg = colors.foreground_1, bg = nil } or { fg = colors.foreground_1, bg = colors.background_1 },
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 },
TabLine = { link = "TabLineFill" },
MatchParen = { bg = colors.background_3, bold = config.bold },
ColorColumn = { bg = colors.background_1 },
Conceal = { fg = colors.blue },
CursorLineNr = { fg = colors.yellow, bg = colors.background_1 },
NonText = { link = "DarkboxBg2" },
SpecialKey = { link = "DarkboxFg4" },
Visual = { bg = colors.background_3, reverse = config.invert_selection },
VisualNOS = { link = "Visual" },
Search = { fg = colors.yellow, bg = colors.background, reverse = config.inverse },
IncSearch = { fg = colors.orange, bg = colors.background, reverse = config.inverse },
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 },
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 },
WildMenu = { fg = colors.blue, bg = colors.background_2, bold = config.bold },
Directory = { link = "DarkboxGreenBold" },
Title = { link = "DarkboxGreenBold" },
ErrorMsg = { fg = colors.background, bg = colors.red, bold = config.bold },
MoreMsg = { link = "DarkboxYellowBold" },
ModeMsg = { link = "DarkboxYellowBold" },
Question = { link = "DarkboxOrangeBold" },
WarningMsg = { link = "DarkboxRedBold" },
LineNr = { fg = colors.background_4 },
SignColumn = config.transparent_mode and { bg = nil } or { bg = colors.background_1 },
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 },
Cursor = { reverse = config.inverse },
vCursor = { link = "Cursor" },
iCursor = { link = "Cursor" },
lCursor = { link = "Cursor" },
Special = { link = "DarkboxOrange" },
Comment = { fg = colors.gray, italic = config.italic.comments },
Todo = { fg = colors.background, bg = colors.yellow, bold = config.bold, italic = config.italic.comments },
Done = { fg = colors.orange, bold = config.bold, italic = config.italic.comments },
Error = { fg = colors.red, bold = config.bold, reverse = config.inverse },
Statement = { link = "DarkboxRed" },
Conditional = { link = "DarkboxRed" },
Repeat = { link = "DarkboxRed" },
Label = { link = "DarkboxRed" },
Exception = { link = "DarkboxRed" },
Operator = { fg = colors.orange, italic = config.italic.operators },
Keyword = { link = "DarkboxRed" },
Identifier = { link = "DarkboxBlue" },
Function = { link = "DarkboxGreenBold" },
PreProc = { link = "DarkboxAqua" },
Include = { link = "DarkboxAqua" },
Define = { link = "DarkboxAqua" },
Macro = { link = "DarkboxAqua" },
PreCondit = { link = "DarkboxAqua" },
Constant = { link = "DarkboxPurple" },
Character = { link = "DarkboxPurple" },
String = { fg = colors.green, italic = config.italic.strings },
Boolean = { link = "DarkboxPurple" },
Number = { link = "DarkboxPurple" },
Float = { link = "DarkboxPurple" },
Type = { link = "DarkboxYellow" },
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 },
DiffDelete = { bg = colors.dark_red },
DiffAdd = { bg = colors.dark_green },
DiffChange = { bg = colors.dark_aqua },
DiffText = { bg = colors.yellow, fg = colors.background },
SpellCap = { link = "DarkboxBlueUnderline" },
SpellBad = { link = "DarkboxRedUnderline" },
SpellLocal = { link = "DarkboxAquaUnderline" },
SpellRare = { link = "DarkboxPurpleUnderline" },
Whitespace = { fg = colors.background_2 },
Delimiter = { link = "DarkboxOrange" },
EndOfBuffer = { link = "NonText" },
DiagnosticError = { link = "DarkboxRed" },
DiagnosticSignError = { link = "DarkboxRedSign" },
DiagnosticUnderlineError = { link = "DarkboxRedUnderline" },
DiagnosticWarn = { link = "DarkboxYellow" },
DiagnosticSignWarn = { link = "DarkboxYellowSign" },
DiagnosticUnderlineWarn = { link = "DarkboxYellowUnderline" },
DiagnosticInfo = { link = "DarkboxBlue" },
DiagnosticSignInfo = { link = "DarkboxBlueSign" },
DiagnosticUnderlineInfo = { link = "DarkboxBlueUnderline" },
DiagnosticHint = { link = "DarkboxAqua" },
DiagnosticSignHint = { link = "DarkboxAquaSign" },
DiagnosticUnderlineHint = { link = "DarkboxAquaUnderline" },
DiagnosticFloatingError = { link = "DarkboxRed" },
DiagnosticFloatingWarn = { link = "DarkboxOrange" },
DiagnosticFloatingInfo = { link = "DarkboxBlue" },
DiagnosticFloatingHint = { link = "DarkboxAqua" },
DiagnosticVirtualTextError = { link = "DarkboxRed" },
DiagnosticVirtualTextWarn = { link = "DarkboxYellow" },
DiagnosticVirtualTextInfo = { link = "DarkboxBlue" },
DiagnosticVirtualTextHint = { link = "DarkboxAqua" },
DiagnosticOk = { link = "DarkboxGreenSign" },
LspReferenceRead = { link = "DarkboxYellowBold" },
LspReferenceText = { link = "DarkboxYellowBold" },
LspReferenceWrite = { link = "DarkboxOrangeBold" },
LspCodeLens = { link = "DarkboxGray" },
LspSignatureActiveParameter = { link = "Search" },
gitcommitSelectedFile = { link = "DarkboxGreen" },
gitcommitDiscardedFile = { link = "DarkboxRed" },
GitSignsAdd = { link = "DarkboxGreen" },
GitSignsChange = { link = "DarkboxOrange" },
GitSignsDelete = { link = "DarkboxRed" },
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.aqua },
debugPC = { link = "DiffAdd" },
debugBreakpoint = { link = "DarkboxRedSign" },
StartifyBracket = { link = "DarkboxFg3" },
StartifyFile = { link = "DarkboxFg1" },
StartifyNumber = { link = "DarkboxBlue" },
StartifyPath = { link = "DarkboxGray" },
StartifySlash = { link = "DarkboxGray" },
StartifySection = { link = "DarkboxYellow" },
StartifySpecial = { link = "DarkboxBg2" },
StartifyHeader = { link = "DarkboxOrange" },
StartifyFooter = { link = "DarkboxBg2" },
StartifyVar = { link = "StartifyPath" },
StartifySelect = { link = "Title" },
DirvishPathTail = { link = "DarkboxAqua" },
DirvishArg = { link = "DarkboxYellow" },
netrwDir = { link = "DarkboxAqua" },
netrwClassify = { link = "DarkboxAqua" },
netrwLink = { link = "DarkboxGray" },
netrwSymLink = { link = "DarkboxFg1" },
netrwExe = { link = "DarkboxYellow" },
netrwComment = { link = "DarkboxGray" },
netrwList = { link = "DarkboxBlue" },
netrwHelpCmd = { link = "DarkboxAqua" },
netrwCmdSep = { link = "DarkboxFg3" },
netrwVersion = { link = "DarkboxGreen" },
NERDTreeDir = { link = "DarkboxAqua" },
NERDTreeDirSlash = { link = "DarkboxAqua" },
NERDTreeOpenable = { link = "DarkboxOrange" },
NERDTreeClosable = { link = "DarkboxOrange" },
NERDTreeFile = { link = "DarkboxFg1" },
NERDTreeExecFile = { link = "DarkboxYellow" },
NERDTreeUp = { link = "DarkboxGray" },
NERDTreeCWD = { link = "DarkboxGreen" },
NERDTreeHelp = { link = "DarkboxFg1" },
NERDTreeToggleOn = { link = "DarkboxGreen" },
NERDTreeToggleOff = { link = "DarkboxRed" },
CocErrorSign = { link = "DarkboxRedSign" },
CocWarningSign = { link = "DarkboxOrangeSign" },
CocInfoSign = { link = "DarkboxBlueSign" },
CocHintSign = { link = "DarkboxAquaSign" },
CocErrorFloat = { link = "DarkboxRed" },
CocWarningFloat = { link = "DarkboxOrange" },
CocInfoFloat = { link = "DarkboxBlue" },
CocHintFloat = { link = "DarkboxAqua" },
CocDiagnosticsError = { link = "DarkboxRed" },
CocDiagnosticsWarning = { link = "DarkboxOrange" },
CocDiagnosticsInfo = { link = "DarkboxBlue" },
CocDiagnosticsHint = { link = "DarkboxAqua" },
CocSelectedText = { link = "DarkboxRed" },
CocMenuSel = { link = "PmenuSel" },
CocCodeLens = { link = "DarkboxGray" },
CocErrorHighlight = { link = "DarkboxRedUnderline" },
CocWarningHighlight = { link = "DarkboxOrangeUnderline" },
CocInfoHighlight = { link = "DarkboxBlueUnderline" },
CocHintHighlight = { link = "DarkboxAquaUnderline" },
TelescopeNormal = { link = "DarkboxFg1" },
TelescopeSelection = { link = "DarkboxOrangeBold" },
TelescopeSelectionCaret = { link = "DarkboxRed" },
TelescopeMultiSelection = { link = "DarkboxGray" },
TelescopeBorder = { link = "TelescopeNormal" },
TelescopePromptBorder = { link = "TelescopeNormal" },
TelescopeResultsBorder = { link = "TelescopeNormal" },
TelescopePreviewBorder = { link = "TelescopeNormal" },
TelescopeMatching = { link = "DarkboxBlue" },
TelescopePromptPrefix = { link = "DarkboxRed" },
TelescopePrompt = { link = "TelescopeNormal" },
CmpItemAbbr = { link = "DarkboxFg0" },
CmpItemAbbrDeprecated = { link = "DarkboxFg1" },
CmpItemAbbrMatch = { link = "DarkboxBlueBold" },
CmpItemAbbrMatchFuzzy = { link = "DarkboxBlueUnderline" },
CmpItemMenu = { link = "DarkboxGray" },
CmpItemKindText = { link = "DarkboxOrange" },
CmpItemKindVariable = { link = "DarkboxOrange" },
CmpItemKindMethod = { link = "DarkboxBlue" },
CmpItemKindFunction = { link = "DarkboxBlue" },
CmpItemKindConstructor = { link = "DarkboxYellow" },
CmpItemKindUnit = { link = "DarkboxBlue" },
CmpItemKindField = { link = "DarkboxBlue" },
CmpItemKindClass = { link = "DarkboxYellow" },
CmpItemKindInterface = { link = "DarkboxYellow" },
CmpItemKindModule = { link = "DarkboxBlue" },
CmpItemKindProperty = { link = "DarkboxBlue" },
CmpItemKindValue = { link = "DarkboxOrange" },
CmpItemKindEnum = { link = "DarkboxYellow" },
CmpItemKindOperator = { link = "DarkboxYellow" },
CmpItemKindKeyword = { link = "DarkboxPurple" },
CmpItemKindEvent = { link = "DarkboxPurple" },
CmpItemKindReference = { link = "DarkboxPurple" },
CmpItemKindColor = { link = "DarkboxPurple" },
CmpItemKindSnippet = { link = "DarkboxGreen" },
CmpItemKindFile = { link = "DarkboxBlue" },
CmpItemKindFolder = { link = "DarkboxBlue" },
CmpItemKindEnumMember = { link = "DarkboxAqua" },
CmpItemKindConstant = { link = "DarkboxOrange" },
CmpItemKindStruct = { link = "DarkboxYellow" },
CmpItemKindTypeParameter = { link = "DarkboxYellow" },
diffAdded = { link = "DiffAdd" },
diffRemoved = { link = "DiffDelete" },
diffChanged = { link = "DiffChange" },
diffFile = { link = "DarkboxOrange" },
diffNewFile = { link = "DarkboxYellow" },
diffOldFile = { link = "DarkboxOrange" },
diffLine = { link = "DarkboxBlue" },
diffIndexLine = { link = "diffChanged" },
NavicIconsFile = { link = "DarkboxBlue" },
NavicIconsModule = { link = "DarkboxOrange" },
NavicIconsNamespace = { link = "DarkboxBlue" },
NavicIconsPackage = { link = "DarkboxAqua" },
NavicIconsClass = { link = "DarkboxYellow" },
NavicIconsMethod = { link = "DarkboxBlue" },
NavicIconsProperty = { link = "DarkboxAqua" },
NavicIconsField = { link = "DarkboxPurple" },
NavicIconsConstructor = { link = "DarkboxBlue" },
NavicIconsEnum = { link = "DarkboxPurple" },
NavicIconsInterface = { link = "DarkboxGreen" },
NavicIconsFunction = { link = "DarkboxBlue" },
NavicIconsVariable = { link = "DarkboxPurple" },
NavicIconsConstant = { link = "DarkboxOrange" },
NavicIconsString = { link = "DarkboxGreen" },
NavicIconsNumber = { link = "DarkboxOrange" },
NavicIconsBoolean = { link = "DarkboxOrange" },
NavicIconsArray = { link = "DarkboxOrange" },
NavicIconsObject = { link = "DarkboxOrange" },
NavicIconsKey = { link = "DarkboxAqua" },
NavicIconsNull = { link = "DarkboxOrange" },
NavicIconsEnumMember = { link = "DarkboxYellow" },
NavicIconsStruct = { link = "DarkboxPurple" },
NavicIconsEvent = { link = "DarkboxYellow" },
NavicIconsOperator = { link = "DarkboxRed" },
NavicIconsTypeParameter = { link = "DarkboxRed" },
NavicText = { link = "DarkboxWhite" },
NavicSeparator = { link = "DarkboxWhite" },
htmlTag = { link = "DarkboxAquaBold" },
htmlEndTag = { link = "DarkboxAquaBold" },
htmlTagName = { link = "DarkboxBlue" },
htmlArg = { link = "DarkboxOrange" },
htmlTagN = { link = "DarkboxFg1" },
htmlSpecialTagName = { link = "DarkboxBlue" },
htmlLink = { fg = colors.foreground_4, underline = config.underline },
htmlSpecialChar = { link = "DarkboxRed" },
htmlBold = { fg = colors.foreground, bg = colors.background, bold = config.bold },
htmlBoldUnderline = { fg = colors.foreground, bg = colors.background, bold = config.bold, underline = config.underline },
htmlBoldItalic = { fg = colors.foreground, bg = colors.background, bold = config.bold, italic = true },
htmlBoldUnderlineItalic = {
fg = colors.foreground,
bg = colors.background,
bold = config.bold,
italic = true,
underline = config.underline,
},
htmlUnderline = { fg = colors.foreground, bg = colors.background, underline = config.underline },
htmlUnderlineItalic = {
fg = colors.foreground,
bg = colors.background,
italic = true,
underline = config.underline,
},
htmlItalic = { fg = colors.foreground, bg = colors.background, italic = true },
xmlTag = { link = "DarkboxAquaBold" },
xmlEndTag = { link = "DarkboxAquaBold" },
xmlTagName = { link = "DarkboxBlue" },
xmlEqual = { link = "DarkboxBlue" },
docbkKeyword = { link = "DarkboxAquaBold" },
xmlDocTypeDecl = { link = "DarkboxGray" },
xmlDocTypeKeyword = { link = "DarkboxPurple" },
xmlCdataStart = { link = "DarkboxGray" },
xmlCdataCdata = { link = "DarkboxPurple" },
dtdFunction = { link = "DarkboxGray" },
dtdTagName = { link = "DarkboxPurple" },
xmlAttrib = { link = "DarkboxOrange" },
xmlProcessingDelim = { link = "DarkboxGray" },
dtdParamEntityPunct = { link = "DarkboxGray" },
dtdParamEntityDPunct = { link = "DarkboxGray" },
xmlAttribPunct = { link = "DarkboxGray" },
xmlEntity = { link = "DarkboxRed" },
xmlEntityPunct = { link = "DarkboxRed" },
clojureKeyword = { link = "DarkboxBlue" },
clojureCond = { link = "DarkboxOrange" },
clojureSpecial = { link = "DarkboxOrange" },
clojureDefine = { link = "DarkboxOrange" },
clojureFunc = { link = "DarkboxYellow" },
clojureRepeat = { link = "DarkboxYellow" },
clojureCharacter = { link = "DarkboxAqua" },
clojureStringEscape = { link = "DarkboxAqua" },
clojureException = { link = "DarkboxRed" },
clojureRegexp = { link = "DarkboxAqua" },
clojureRegexpEscape = { link = "DarkboxAqua" },
clojureRegexpCharClass = { fg = colors.foreground_3, bold = config.bold },
clojureRegexpMod = { link = "clojureRegexpCharClass" },
clojureRegexpQuantifier = { link = "clojureRegexpCharClass" },
clojureParen = { link = "DarkboxFg3" },
clojureAnonArg = { link = "DarkboxYellow" },
clojureVariable = { link = "DarkboxBlue" },
clojureMacro = { link = "DarkboxOrange" },
clojureMeta = { link = "DarkboxYellow" },
clojureDeref = { link = "DarkboxYellow" },
clojureQuote = { link = "DarkboxYellow" },
clojureUnquote = { link = "DarkboxYellow" },
cOperator = { link = "DarkboxPurple" },
cppOperator = { link = "DarkboxPurple" },
cStructure = { link = "DarkboxOrange" },
pythonBuiltin = { link = "DarkboxOrange" },
pythonBuiltinObj = { link = "DarkboxOrange" },
pythonBuiltinFunc = { link = "DarkboxOrange" },
pythonFunction = { link = "DarkboxAqua" },
pythonDecorator = { link = "DarkboxRed" },
pythonInclude = { link = "DarkboxBlue" },
pythonImport = { link = "DarkboxBlue" },
pythonRun = { link = "DarkboxBlue" },
pythonCoding = { link = "DarkboxBlue" },
pythonOperator = { link = "DarkboxRed" },
pythonException = { link = "DarkboxRed" },
pythonExceptions = { link = "DarkboxPurple" },
pythonBoolean = { link = "DarkboxPurple" },
pythonDot = { link = "DarkboxFg3" },
pythonConditional = { link = "DarkboxRed" },
pythonRepeat = { link = "DarkboxRed" },
pythonDottedName = { link = "DarkboxGreenBold" },
cssBraces = { link = "DarkboxBlue" },
cssFunctionName = { link = "DarkboxYellow" },
cssIdentifier = { link = "DarkboxOrange" },
cssClassName = { link = "DarkboxGreen" },
cssColor = { link = "DarkboxBlue" },
cssSelectorOp = { link = "DarkboxBlue" },
cssSelectorOp2 = { link = "DarkboxBlue" },
cssImportant = { link = "DarkboxGreen" },
cssVendor = { link = "DarkboxFg1" },
cssTextProp = { link = "DarkboxAqua" },
cssAnimationProp = { link = "DarkboxAqua" },
cssUIProp = { link = "DarkboxYellow" },
cssTransformProp = { link = "DarkboxAqua" },
cssTransitionProp = { link = "DarkboxAqua" },
cssPrintProp = { link = "DarkboxAqua" },
cssPositioningProp = { link = "DarkboxYellow" },
cssBoxProp = { link = "DarkboxAqua" },
cssFontDescriptorProp = { link = "DarkboxAqua" },
cssFlexibleBoxProp = { link = "DarkboxAqua" },
cssBorderOutlineProp = { link = "DarkboxAqua" },
cssBackgroundProp = { link = "DarkboxAqua" },
cssMarginProp = { link = "DarkboxAqua" },
cssListProp = { link = "DarkboxAqua" },
cssTableProp = { link = "DarkboxAqua" },
cssFontProp = { link = "DarkboxAqua" },
cssPaddingProp = { link = "DarkboxAqua" },
cssDimensionProp = { link = "DarkboxAqua" },
cssRenderProp = { link = "DarkboxAqua" },
cssColorProp = { link = "DarkboxAqua" },
cssGeneratedContentProp = { link = "DarkboxAqua" },
javaScriptBraces = { link = "DarkboxFg1" },
javaScriptFunction = { link = "DarkboxAqua" },
javaScriptIdentifier = { link = "DarkboxRed" },
javaScriptMember = { link = "DarkboxBlue" },
javaScriptNumber = { link = "DarkboxPurple" },
javaScriptNull = { link = "DarkboxPurple" },
javaScriptParens = { link = "DarkboxFg3" },
typescriptReserved = { link = "DarkboxAqua" },
typescriptLabel = { link = "DarkboxAqua" },
typescriptFuncKeyword = { link = "DarkboxAqua" },
typescriptIdentifier = { link = "DarkboxOrange" },
typescriptBraces = { link = "DarkboxFg1" },
typescriptEndColons = { link = "DarkboxFg1" },
typescriptDOMObjects = { link = "DarkboxFg1" },
typescriptAjaxMethods = { link = "DarkboxFg1" },
typescriptLogicSymbols = { link = "DarkboxFg1" },
typescriptDocSeeTag = { link = "Comment" },
typescriptDocParam = { link = "Comment" },
typescriptDocTags = { link = "vimCommentTitle" },
typescriptGlobalObjects = { link = "DarkboxFg1" },
typescriptParens = { link = "DarkboxFg3" },
typescriptOpSymbols = { link = "DarkboxFg3" },
typescriptHtmlElemProperties = { link = "DarkboxFg1" },
typescriptNull = { link = "DarkboxPurple" },
typescriptInterpolationDelimiter = { link = "DarkboxAqua" },
purescriptModuleKeyword = { link = "DarkboxAqua" },
purescriptModuleName = { link = "DarkboxFg1" },
purescriptWhere = { link = "DarkboxAqua" },
purescriptDelimiter = { link = "DarkboxFg4" },
purescriptType = { link = "DarkboxFg1" },
purescriptImportKeyword = { link = "DarkboxAqua" },
purescriptHidingKeyword = { link = "DarkboxAqua" },
purescriptAsKeyword = { link = "DarkboxAqua" },
purescriptStructure = { link = "DarkboxAqua" },
purescriptOperator = { link = "DarkboxBlue" },
purescriptTypeVar = { link = "DarkboxFg1" },
purescriptConstructor = { link = "DarkboxFg1" },
purescriptFunction = { link = "DarkboxFg1" },
purescriptConditional = { link = "DarkboxOrange" },
purescriptBacktick = { link = "DarkboxOrange" },
coffeeExtendedOp = { link = "DarkboxFg3" },
coffeeSpecialOp = { link = "DarkboxFg3" },
coffeeCurly = { link = "DarkboxOrange" },
coffeeParen = { link = "DarkboxFg3" },
coffeeBracket = { link = "DarkboxOrange" },
rubyStringDelimiter = { link = "DarkboxGreen" },
rubyInterpolationDelimiter = { link = "DarkboxAqua" },
rubyDefinedOperator = { link = "rubyKeyword" },
objcTypeModifier = { link = "DarkboxRed" },
objcDirective = { link = "DarkboxBlue" },
goDirective = { link = "DarkboxAqua" },
goConstants = { link = "DarkboxPurple" },
goDeclaration = { link = "DarkboxRed" },
goDeclType = { link = "DarkboxBlue" },
goBuiltins = { link = "DarkboxOrange" },
luaIn = { link = "DarkboxRed" },
luaFunction = { link = "DarkboxAqua" },
luaTable = { link = "DarkboxOrange" },
moonSpecialOp = { link = "DarkboxFg3" },
moonExtendedOp = { link = "DarkboxFg3" },
moonFunction = { link = "DarkboxFg3" },
moonObject = { link = "DarkboxYellow" },
javaAnnotation = { link = "DarkboxBlue" },
javaDocTags = { link = "DarkboxAqua" },
javaCommentTitle = { link = "vimCommentTitle" },
javaParen = { link = "DarkboxFg3" },
javaParen1 = { link = "DarkboxFg3" },
javaParen2 = { link = "DarkboxFg3" },
javaParen3 = { link = "DarkboxFg3" },
javaParen4 = { link = "DarkboxFg3" },
javaParen5 = { link = "DarkboxFg3" },
javaOperator = { link = "DarkboxOrange" },
javaVarArg = { link = "DarkboxGreen" },
elixirDocString = { link = "Comment" },
elixirStringDelimiter = { link = "DarkboxGreen" },
elixirInterpolationDelimiter = { link = "DarkboxAqua" },
elixirModuleDeclaration = { link = "DarkboxYellow" },
scalaNameDefinition = { link = "DarkboxFg1" },
scalaCaseFollowing = { link = "DarkboxFg1" },
scalaCapitalWord = { link = "DarkboxFg1" },
scalaTypeExtension = { link = "DarkboxFg1" },
scalaKeyword = { link = "DarkboxRed" },
scalaKeywordModifier = { link = "DarkboxRed" },
scalaSpecial = { link = "DarkboxAqua" },
scalaOperator = { link = "DarkboxFg1" },
scalaTypeDeclaration = { link = "DarkboxYellow" },
scalaTypeTypePostDeclaration = { link = "DarkboxYellow" },
scalaInstanceDeclaration = { link = "DarkboxFg1" },
scalaInterpolation = { link = "DarkboxAqua" },
markdownItalic = { fg = colors.foreground_3, italic = true },
markdownBold = { fg = colors.foreground_3, bold = config.bold },
markdownBoldItalic = { fg = colors.foreground_3, bold = config.bold, italic = true },
markdownH1 = { link = "DarkboxGreenBold" },
markdownH2 = { link = "DarkboxGreenBold" },
markdownH3 = { link = "DarkboxYellowBold" },
markdownH4 = { link = "DarkboxYellowBold" },
markdownH5 = { link = "DarkboxYellow" },
markdownH6 = { link = "DarkboxYellow" },
markdownCode = { link = "DarkboxAqua" },
markdownCodeBlock = { link = "DarkboxAqua" },
markdownCodeDelimiter = { link = "DarkboxAqua" },
markdownBlockquote = { link = "DarkboxGray" },
markdownListMarker = { link = "DarkboxGray" },
markdownOrderedListMarker = { link = "DarkboxGray" },
markdownRule = { link = "DarkboxGray" },
markdownHeadingRule = { link = "DarkboxGray" },
markdownUrlDelimiter = { link = "DarkboxFg3" },
markdownLinkDelimiter = { link = "DarkboxFg3" },
markdownLinkTextDelimiter = { link = "DarkboxFg3" },
markdownHeadingDelimiter = { link = "DarkboxOrange" },
markdownUrl = { link = "DarkboxPurple" },
markdownUrlTitleDelimiter = { link = "DarkboxGreen" },
markdownLinkText = { fg = colors.gray, underline = config.underline },
markdownIdDeclaration = { link = "markdownLinkText" },
haskellType = { link = "DarkboxBlue" },
haskellIdentifier = { link = "DarkboxAqua" },
haskellSeparator = { link = "DarkboxFg4" },
haskellDelimiter = { link = "DarkboxOrange" },
haskellOperators = { link = "DarkboxPurple" },
haskellBacktick = { link = "DarkboxOrange" },
haskellStatement = { link = "DarkboxPurple" },
haskellConditional = { link = "DarkboxPurple" },
haskellLet = { link = "DarkboxRed" },
haskellDefault = { link = "DarkboxRed" },
haskellWhere = { link = "DarkboxRed" },
haskellBottom = { link = "DarkboxRedBold" },
haskellImportKeywords = { link = "DarkboxPurpleBold" },
haskellDeclKeyword = { link = "DarkboxOrange" },
haskellDecl = { link = "DarkboxOrange" },
haskellDeriving = { link = "DarkboxPurple" },
haskellAssocType = { link = "DarkboxAqua" },
haskellNumber = { link = "DarkboxAqua" },
haskellPragma = { link = "DarkboxRedBold" },
haskellTH = { link = "DarkboxAquaBold" },
haskellForeignKeywords = { link = "DarkboxGreen" },
haskellKeyword = { link = "DarkboxRed" },
haskellFloat = { link = "DarkboxAqua" },
haskellInfix = { link = "DarkboxPurple" },
haskellQuote = { link = "DarkboxGreenBold" },
haskellShebang = { link = "DarkboxYellowBold" },
haskellLiquid = { link = "DarkboxPurpleBold" },
haskellQuasiQuoted = { link = "DarkboxBlueBold" },
haskellRecursiveDo = { link = "DarkboxPurple" },
haskellQuotedType = { link = "DarkboxRed" },
haskellPreProc = { link = "DarkboxFg4" },
haskellTypeRoles = { link = "DarkboxRedBold" },
haskellTypeForall = { link = "DarkboxRed" },
haskellPatternKeyword = { link = "DarkboxBlue" },
jsonKeyword = { link = "DarkboxGreen" },
jsonQuote = { link = "DarkboxGreen" },
jsonBraces = { link = "DarkboxFg1" },
jsonString = { link = "DarkboxFg1" },
mailQuoted1 = { link = "DarkboxAqua" },
mailQuoted2 = { link = "DarkboxPurple" },
mailQuoted3 = { link = "DarkboxYellow" },
mailQuoted4 = { link = "DarkboxGreen" },
mailQuoted5 = { link = "DarkboxRed" },
mailQuoted6 = { link = "DarkboxOrange" },
mailSignature = { link = "Comment" },
csBraces = { link = "DarkboxFg1" },
csEndColon = { link = "DarkboxFg1" },
csLogicSymbols = { link = "DarkboxFg1" },
csParens = { link = "DarkboxFg3" },
csOpSymbols = { link = "DarkboxFg3" },
csInterpolationDelimiter = { link = "DarkboxFg3" },
csInterpolationAlignDel = { link = "DarkboxAquaBold" },
csInterpolationFormat = { link = "DarkboxAqua" },
csInterpolationFormatDel = { link = "DarkboxAquaBold" },
rustSigil = { link = "DarkboxOrange" },
rustEscape = { link = "DarkboxAqua" },
rustStringContinuation = { link = "DarkboxAqua" },
rustEnum = { link = "DarkboxAqua" },
rustStructure = { link = "DarkboxAqua" },
rustModPathSep = { link = "DarkboxFg2" },
rustCommentLineDoc = { link = "Comment" },
rustDefault = { link = "DarkboxAqua" },
ocamlOperator = { link = "DarkboxFg1" },
ocamlKeyChar = { link = "DarkboxOrange" },
ocamlArrow = { link = "DarkboxOrange" },
ocamlInfixOpKeyword = { link = "DarkboxRed" },
ocamlConstructor = { link = "DarkboxOrange" },
LspSagaCodeActionTitle = { link = "Title" },
LspSagaCodeActionBorder = { link = "DarkboxFg1" },
LspSagaCodeActionContent = { fg = colors.green, bold = config.bold },
LspSagaLspFinderBorder = { link = "DarkboxFg1" },
LspSagaAutoPreview = { link = "DarkboxOrange" },
TargetWord = { fg = colors.blue, bold = config.bold },
FinderSeparator = { link = "DarkboxAqua" },
LspSagaDefPreviewBorder = { link = "DarkboxBlue" },
LspSagaHoverBorder = { link = "DarkboxOrange" },
LspSagaRenameBorder = { link = "DarkboxBlue" },
LspSagaDiagnosticSource = { link = "DarkboxOrange" },
LspSagaDiagnosticBorder = { link = "DarkboxPurple" },
LspSagaDiagnosticHeader = { link = "DarkboxGreen" },
LspSagaSignatureHelpBorder = { link = "DarkboxGreen" },
SagaShadow = { link = "DarkboxBg0" },
DashboardShortCut = { link = "DarkboxOrange" },
DashboardHeader = { link = "DarkboxAqua" },
DashboardCenter = { link = "DarkboxYellow" },
DashboardFooter = { fg = colors.purple, italic = true },
MasonHighlight = { link = "DarkboxAqua" },
MasonHighlightBlock = { fg = colors.background, bg = colors.blue },
MasonHighlightBlockBold = { fg = colors.background, bg = colors.blue, bold = true },
MasonHighlightSecondary = { fg = colors.yellow },
MasonHighlightBlockSecondary = { fg = colors.background, bg = colors.yellow },
MasonHighlightBlockBoldSecondary = { fg = colors.background, bg = colors.yellow, bold = true },
MasonHeader = { link = "MasonHighlightBlockBoldSecondary" },
MasonHeaderSecondary = { link = "MasonHighlightBlockBold" },
MasonMuted = { fg = colors.foreground_4 },
MasonMutedBlock = { fg = colors.background, bg = colors.foreground_4 },
MasonMutedBlockBold = { fg = colors.background, bg = colors.foreground_4, bold = true },
LspInlayHint = { link = "comment" },
CarbonFile = { link = "DarkboxFg1" },
CarbonExe = { link = "DarkboxYellow" },
CarbonSymlink = { link = "DarkboxAqua" },
CarbonBrokenSymlink = { link = "DarkboxRed" },
CarbonIndicator = { link = "DarkboxGray" },
CarbonDanger = { link = "DarkboxRed" },
CarbonPending = { link = "DarkboxYellow" },
NoiceCursor = { link = "TermCursor" },
NoiceCmdlinePopupBorder = { fg = colors.blue, bg = nil },
NoiceCmdlineIcon = { link = "NoiceCmdlinePopupBorder" },
NoiceConfirmBorder = { link = "NoiceCmdlinePopupBorder" },
NoiceCmdlinePopupBorderSearch = { fg = colors.yellow, bg = nil },
NoiceCmdlineIconSearch = { link = "NoiceCmdlinePopupBorderSearch" },
NotifyDEBUGBorder = { link = "DarkboxBlue" },
NotifyDEBUGIcon = { link = "DarkboxBlue" },
NotifyDEBUGTitle = { link = "DarkboxBlue" },
NotifyERRORBorder = { link = "DarkboxRed" },
NotifyERRORIcon = { link = "DarkboxRed" },
NotifyERRORTitle = { link = "DarkboxRed" },
NotifyINFOBorder = { link = "DarkboxAqua" },
NotifyINFOIcon = { link = "DarkboxAqua" },
NotifyINFOTitle = { link = "DarkboxAqua" },
NotifyTRACEBorder = { link = "DarkboxGreen" },
NotifyTRACEIcon = { link = "DarkboxGreen" },
NotifyTRACETitle = { link = "DarkboxGreen" },
NotifyWARNBorder = { link = "DarkboxYellow" },
NotifyWARNIcon = { link = "DarkboxYellow" },
NotifyWARNTitle = { link = "DarkboxYellow" },
IlluminatedWordText = { link = "LspReferenceText" },
IlluminatedWordRead = { link = "LspReferenceRead" },
IlluminatedWordWrite = { link = "LspReferenceWrite" },
TSRainbowRed = { fg = colors.red },
TSRainbowOrange = { fg = colors.orange },
TSRainbowYellow = { fg = colors.yellow },
TSRainbowGreen = { fg = colors.green },
TSRainbowBlue = { fg = colors.blue },
TSRainbowViolet = { fg = colors.purple },
TSRainbowCyan = { fg = colors.aqua },
RainbowDelimiterRed = { fg = colors.red },
RainbowDelimiterOrange = { fg = colors.orange },
RainbowDelimiterYellow = { fg = colors.yellow },
RainbowDelimiterGreen = { fg = colors.green },
RainbowDelimiterBlue = { fg = colors.blue },
RainbowDelimiterViolet = { fg = colors.purple },
RainbowDelimiterCyan = { fg = colors.aqua },
DapBreakpointSymbol = { fg = colors.red, bg = colors.background_1 },
DapStoppedSymbol = { fg = colors.green, bg = colors.background_1 },
DapUIBreakpointsCurrentLine = { link = "DarkboxYellow" },
DapUIBreakpointsDisabledLine = { link = "DarkboxGray" },
DapUIBreakpointsInfo = { link = "DarkboxAqua" },
DapUIBreakpointsLine = { link = "DarkboxYellow" },
DapUIBreakpointsPath = { link = "DarkboxBlue" },
DapUICurrentFrameName = { link = "DarkboxPurple" },
DapUIDecoration = { link = "DarkboxPurple" },
DapUIEndofBuffer = { link = "EndOfBuffer" },
DapUIFloatBorder = { link = "DarkboxAqua" },
DapUILineNumber = { link = "DarkboxYellow" },
DapUIModifiedValue = { link = "DarkboxRed" },
DapUIPlayPause = { fg = colors.green, bg = colors.background_1 },
DapUIRestart = { fg = colors.green, bg = colors.background_1 },
DapUIScope = { link = "DarkboxBlue" },
DapUISource = { link = "DarkboxFg1" },
DapUIStepBack = { fg = colors.blue, bg = colors.background_1 },
DapUIStepInto = { fg = colors.blue, bg = colors.background_1 },
DapUIStepOut = { fg = colors.blue, bg = colors.background_1 },
DapUIStepOver = { fg = colors.blue, bg = colors.background_1 },
DapUIStop = { fg = colors.red, bg = colors.background_1 },
DapUIStoppedThread = { link = "DarkboxBlue" },
DapUIThread = { link = "DarkboxBlue" },
DapUIType = { link = "DarkboxOrange" },
DapUIUnavailable = { link = "DarkboxGray" },
DapUIWatchesEmpty = { link = "DarkboxGray" },
DapUIWatchesError = { link = "DarkboxRed" },
DapUIWatchesValue = { link = "DarkboxYellow" },
DapUIWinSelect = { link = "DarkboxYellow" },
NeogitDiffDelete = { link = "DiffDelete" },
NeogitDiffAdd = { link = "DiffAdd" },
NeogitHunkHeader = { link = "WinBar" },
NeogitHunkHeaderHighlight = { link = "WinBarNC" },
DiffviewStatusModified = { link = "DarkboxGreenBold" },
DiffviewFilePanelInsertions = { link = "DarkboxGreenBold" },
DiffviewFilePanelDeletions = { link = "DarkboxRedBold" },
MiniAnimateCursor = { reverse = true, nocombine = true },
MiniAnimateNormalFloat = { fg = colors.foreground_1, bg = colors.background_1 },
MiniClueBorder = { link = "FloatBorder" },
MiniClueDescGroup = { link = "DiagnosticFloatingWarn" },
MiniClueDescSingle = { link = "NormalFloat" },
MiniClueNextKey = { link = "DiagnosticFloatingHint" },
MiniClueNextKeyWithPostkeys = { link = "DiagnosticFloatingError" },
MiniClueSeparator = { link = "DiagnosticFloatingInfo" },
MiniClueTitle = { link = "FloatTitle" },
MiniCompletionActiveParameter = { underline = true },
MiniCursorword = { underline = true },
MiniCursorwordCurrent = { underline = true },
MiniDepsChangeAdded = { link = "DarkboxGreen" },
MiniDepsChangeRemoved = { link = "DarkboxRed" },
MiniDepsHint = { link = "DiagnosticHint" },
MiniDepsInfo = { link = "DiagnosticInfo" },
MiniDepsMsgBreaking = { link = "DiagnosticWarn" },
MiniDepsPlaceholder = { link = "Comment" },
MiniDepsTitle = { link = "Title" },
MiniDepsTitleError = { link = "DiffDelete" },
MiniDepsTitleSame = { link = "DiffChange" },
MiniDepsTitleUpdate = { link = "DiffAdd" },
MiniDiffOverAdd = { link = "DiffAdd" },
MiniDiffOverChange = { link = "DiffText" },
MiniDiffOverContext = { link = "DiffChange" },
MiniDiffOverDelete = { link = "DiffDelete" },
MiniDiffSignAdd = { link = "DarkboxGreen" },
MiniDiffSignChange = { link = "DarkboxAqua" },
MiniDiffSignDelete = { link = "DarkboxRed" },
MiniFilesBorder = { link = "FloatBorder" },
MiniFilesBorderModified = { link = "DiagnosticFloatingWarn" },
MiniFilesCursorLine = { bg = colors.background_2 },
MiniFilesDirectory = { link = "Directory" },
MiniFilesFile = { link = "DarkboxFg1" },
MiniFilesNormal = { link = "NormalFloat" },
MiniFilesTitle = { link = "FloatTitle" },
MiniFilesTitleFocused = { link = "DarkboxOrangeBold" },
MiniHipatternsFixme = { fg = colors.background, bg = colors.red, bold = config.bold },
MiniHipatternsHack = { fg = colors.background, bg = colors.yellow, bold = config.bold },
MiniHipatternsNote = { fg = colors.background, bg = colors.blue, bold = config.bold },
MiniHipatternsTodo = { fg = colors.background, bg = colors.aqua, bold = config.bold },
MiniIconsAzure = { link = "DarkboxBlue" },
MiniIconsBlue = { link = "DarkboxBlue" },
MiniIconsCyan = { link = "DarkboxAqua" },
MiniIconsGreen = { link = "DarkboxGreen" },
MiniIconsGrey = { link = "DarkboxFg0" },
MiniIconsOrange = { link = "DarkboxOrange" },
MiniIconsPurple = { link = "DarkboxPurple" },
MiniIconsRed = { link = "DarkboxRed" },
MiniIconsYellow = { link = "DarkboxYellow" },
MiniIndentscopeSymbol = { link = "DarkboxGray" },
MiniIndentscopeSymbolOff = { link = "DarkboxYellow" },
MiniJump = { link = "DarkboxOrangeUnderline" },
MiniJump2dDim = { link = "DarkboxGray" },
MiniJump2dSpot = { fg = colors.orange, bold = config.bold, nocombine = true },
MiniJump2dSpotAhead = { fg = colors.aqua, bg = colors.background, nocombine = true },
MiniJump2dSpotUnique = { fg = colors.yellow, bold = config.bold, nocombine = true },
MiniMapNormal = { link = "NormalFloat" },
MiniMapSymbolCount = { link = "Special" },
MiniMapSymbolLine = { link = "Title" },
MiniMapSymbolView = { link = "Delimiter" },
MiniNotifyBorder = { link = "FloatBorder" },
MiniNotifyNormal = { link = "NormalFloat" },
MiniNotifyTitle = { link = "FloatTitle" },
MiniOperatorsExchangeFrom = { link = "IncSearch" },
MiniPickBorder = { link = "FloatBorder" },
MiniPickBorderBusy = { link = "DiagnosticFloatingWarn" },
MiniPickBorderText = { link = "FloatTitle" },
MiniPickIconDirectory = { link = "Directory" },
MiniPickIconFile = { link = "MiniPickNormal" },
MiniPickHeader = { link = "DiagnosticFloatingHint" },
MiniPickMatchCurrent = { bg = colors.background_2 },
MiniPickMatchMarked = { link = "Visual" },
MiniPickMatchRanges = { link = "DiagnosticFloatingHint" },
MiniPickNormal = { link = "NormalFloat" },
MiniPickPreviewLine = { link = "CursorLine" },
MiniPickPreviewRegion = { link = "IncSearch" },
MiniPickPrompt = { link = "DiagnosticFloatingInfo" },
MiniStarterCurrent = { nocombine = true },
MiniStarterFooter = { link = "DarkboxGray" },
MiniStarterHeader = { link = "Title" },
MiniStarterInactive = { link = "Comment" },
MiniStarterItem = { link = "Normal" },
MiniStarterItemBullet = { link = "Delimiter" },
MiniStarterItemPrefix = { link = "WarningMsg" },
MiniStarterSection = { link = "Delimiter" },
MiniStarterQuery = { link = "MoreMsg" },
MiniStatuslineDevinfo = { link = "StatusLine" },
MiniStatuslineFileinfo = { link = "StatusLine" },
MiniStatuslineFilename = { link = "StatusLineNC" },
MiniStatuslineInactive = { link = "StatusLineNC" },
MiniStatuslineModeCommand = { fg = colors.background, bg = colors.yellow, bold = config.bold },
MiniStatuslineModeInsert = { fg = colors.background, bg = colors.blue, bold = config.bold },
MiniStatuslineModeNormal = { fg = colors.background, bg = colors.foreground_1, bold = config.bold },
MiniStatuslineModeOther = { fg = colors.background, bg = colors.aqua, bold = config.bold },
MiniStatuslineModeReplace = { fg = colors.background, bg = colors.red, bold = config.bold },
MiniStatuslineModeVisual = { fg = colors.background, bg = colors.green, bold = config.bold },
MiniSurround = { link = "IncSearch" },
MiniTablineCurrent = { fg = colors.green, bg = colors.background_1, bold = config.bold, reverse = config.invert_tabline },
MiniTablineFill = { link = "TabLineFill" },
MiniTablineHidden = { fg = colors.background_4, bg = colors.background_1, reverse = config.invert_tabline },
MiniTablineModifiedCurrent = {
fg = colors.background_1,
bg = colors.green,
bold = config.bold,
reverse = config.invert_tabline,
},
MiniTablineModifiedHidden = { fg = colors.background_1, bg = colors.background_4, reverse = config.invert_tabline },
MiniTablineModifiedVisible = { fg = colors.background_1, bg = colors.foreground_1, reverse = config.invert_tabline },
MiniTablineTabpagesection = { link = "Search" },
MiniTablineVisible = { fg = colors.foreground_1, bg = colors.background_1, reverse = config.invert_tabline },
MiniTestEmphasis = { bold = config.bold },
MiniTestFail = { link = "DarkboxRedBold" },
MiniTestPass = { link = "DarkboxGreenBold" },
MiniTrailspace = { bg = colors.red },
["@comment"] = { link = "Comment" },
["@none"] = { bg = "NONE", fg = "NONE" },
["@preproc"] = { link = "PreProc" },
["@define"] = { link = "Define" },
["@operator"] = { link = "Operator" },
["@punctuation.delimiter"] = { link = "Delimiter" },
["@punctuation.bracket"] = { link = "Delimiter" },
["@punctuation.special"] = { link = "Delimiter" },
["@string"] = { link = "String" },
["@string.regex"] = { link = "String" },
["@string.regexp"] = { link = "String" },
["@string.escape"] = { link = "SpecialChar" },
["@string.special"] = { link = "SpecialChar" },
["@string.special.path"] = { link = "Underlined" },
["@string.special.symbol"] = { link = "Identifier" },
["@string.special.url"] = { link = "Underlined" },
["@character"] = { link = "Character" },
["@character.special"] = { link = "SpecialChar" },
["@boolean"] = { link = "Boolean" },
["@number"] = { link = "Number" },
["@number.float"] = { link = "Float" },
["@float"] = { link = "Float" },
["@function"] = { link = "Function" },
["@function.builtin"] = { link = "Special" },
["@function.call"] = { link = "Function" },
["@function.macro"] = { link = "Macro" },
["@function.method"] = { link = "Function" },
["@method"] = { link = "Function" },
["@method.call"] = { link = "Function" },
["@constructor"] = { link = "Special" },
["@parameter"] = { link = "Identifier" },
["@keyword"] = { link = "Keyword" },
["@keyword.conditional"] = { link = "Conditional" },
["@keyword.debug"] = { link = "Debug" },
["@keyword.directive"] = { link = "PreProc" },
["@keyword.directive.define"] = { link = "Define" },
["@keyword.exception"] = { link = "Exception" },
["@keyword.function"] = { link = "Keyword" },
["@keyword.import"] = { link = "Include" },
["@keyword.operator"] = { link = "DarkboxRed" },
["@keyword.repeat"] = { link = "Repeat" },
["@keyword.return"] = { link = "Keyword" },
["@keyword.storage"] = { link = "StorageClass" },
["@conditional"] = { link = "Conditional" },
["@repeat"] = { link = "Repeat" },
["@debug"] = { link = "Debug" },
["@label"] = { link = "Label" },
["@include"] = { link = "Include" },
["@exception"] = { link = "Exception" },
["@type"] = { link = "Type" },
["@type.builtin"] = { link = "Type" },
["@type.definition"] = { link = "Typedef" },
["@type.qualifier"] = { link = "Type" },
["@storageclass"] = { link = "StorageClass" },
["@attribute"] = { link = "PreProc" },
["@field"] = { link = "Identifier" },
["@property"] = { link = "Identifier" },
["@variable"] = { link = "DarkboxFg1" },
["@variable.builtin"] = { link = "Special" },
["@variable.member"] = { link = "Identifier" },
["@variable.parameter"] = { link = "Identifier" },
["@constant"] = { link = "Constant" },
["@constant.builtin"] = { link = "Special" },
["@constant.macro"] = { link = "Define" },
["@markup"] = { link = "DarkboxFg1" },
["@markup.strong"] = { bold = config.bold },
["@markup.italic"] = { link = "@text.emphasis" },
["@markup.underline"] = { underline = config.underline },
["@markup.strikethrough"] = { strikethrough = config.strikethrough },
["@markup.heading"] = { link = "Title" },
["@markup.raw"] = { link = "String" },
["@markup.math"] = { link = "Special" },
["@markup.environment"] = { link = "Macro" },
["@markup.environment.name"] = { link = "Type" },
["@markup.link"] = { link = "Underlined" },
["@markup.link.label"] = { link = "SpecialChar" },
["@markup.list"] = { link = "Delimiter" },
["@markup.list.checked"] = { link = "DarkboxGreen" },
["@markup.list.unchecked"] = { link = "DarkboxGray" },
["@comment.todo"] = { link = "Todo" },
["@comment.note"] = { link = "SpecialComment" },
["@comment.warning"] = { link = "WarningMsg" },
["@comment.error"] = { link = "ErrorMsg" },
["@diff.plus"] = { link = "diffAdded" },
["@diff.minus"] = { link = "diffRemoved" },
["@diff.delta"] = { link = "diffChanged" },
["@module"] = { link = "DarkboxFg1" },
["@namespace"] = { link = "DarkboxFg1" },
["@symbol"] = { link = "Identifier" },
["@text"] = { link = "DarkboxFg1" },
["@text.strong"] = { bold = config.bold },
["@text.emphasis"] = { italic = config.italic.emphasis },
["@text.underline"] = { underline = config.underline },
["@text.strike"] = { strikethrough = config.strikethrough },
["@text.title"] = { link = "Title" },
["@text.literal"] = { link = "String" },
["@text.uri"] = { link = "Underlined" },
["@text.math"] = { link = "Special" },
["@text.environment"] = { link = "Macro" },
["@text.environment.name"] = { link = "Type" },
["@text.reference"] = { link = "Constant" },
["@text.todo"] = { link = "Todo" },
["@text.todo.checked"] = { link = "DarkboxGreen" },
["@text.todo.unchecked"] = { link = "DarkboxGray" },
["@text.note"] = { link = "SpecialComment" },
["@text.note.comment"] = { fg = colors.purple, bold = config.bold },
["@text.warning"] = { link = "WarningMsg" },
["@text.danger"] = { link = "ErrorMsg" },
["@text.danger.comment"] = { fg = colors.foreground, bg = colors.red, bold = config.bold },
["@text.diff.add"] = { link = "diffAdded" },
["@text.diff.delete"] = { link = "diffRemoved" },
["@tag"] = { link = "Tag" },
["@tag.attribute"] = { link = "Identifier" },
["@tag.delimiter"] = { link = "Delimiter" },
["@punctuation"] = { link = "Delimiter" },
["@macro"] = { link = "Macro" },
["@structure"] = { link = "Structure" },
["@lsp.type.class"] = { link = "@type" },
["@lsp.type.comment"] = { link = "@comment" },
["@lsp.type.decorator"] = { link = "@macro" },
["@lsp.type.enum"] = { link = "@type" },
["@lsp.type.enumMember"] = { link = "@constant" },
["@lsp.type.function"] = { link = "@function" },
["@lsp.type.interface"] = { link = "@constructor" },
["@lsp.type.macro"] = { link = "@macro" },
["@lsp.type.method"] = { link = "@method" },
["@lsp.type.modifier.java"] = { link = "@keyword.type.java" },
["@lsp.type.namespace"] = { link = "@namespace" },
["@lsp.type.parameter"] = { link = "@parameter" },
["@lsp.type.property"] = { link = "@property" },
["@lsp.type.struct"] = { link = "@type" },
["@lsp.type.type"] = { link = "@type" },
["@lsp.type.typeParameter"] = { link = "@type.definition" },
["@lsp.type.variable"] = { link = "@variable" },
}
for group, hl in pairs(config.overrides) do
if groups[group] then
-- "link" should not mix with other configs (:h hi-link)
groups[group].link = nil
end
groups[group] = vim.tbl_extend("force", groups[group] or {}, hl)
end
return groups
end
---@param config DarkboxConfig?
Darkbox.setup = function(config)
Darkbox.config = vim.tbl_deep_extend("force", Darkbox.config, config or {})
end
--- main load function
Darkbox.load = function()
if vim.version().minor < 8 then
vim.notify_once("darkbox.nvim: you must use neovim 0.8 or higher")
return
end
-- reset colors
if vim.g.colors_name then
vim.cmd.hi("clear")
end
vim.g.colors_name = "darkbox"
vim.o.termguicolors = true
local groups = get_groups()
-- add highlights
for group, settings in pairs(groups) do
vim.api.nvim_set_hl(0, group, settings)
end
end
return Darkbox