mirror of
https://github.com/timmypidashev/darkbox.nvim.git
synced 2026-04-14 03:33:51 +00:00
419 lines
16 KiB
Lua
419 lines
16 KiB
Lua
local M = {}
|
|
|
|
-- Define the color palette
|
|
M.colors = {
|
|
bg = "#000000", -- Pure black background
|
|
fg = "#ebdbb2", -- Main foreground
|
|
black = "#000000",
|
|
red = "#fb4934",
|
|
green = "#b8bb26",
|
|
yellow = "#fabd2f",
|
|
blue = "#83a598",
|
|
purple = "#d3869b",
|
|
aqua = "#8ec07c",
|
|
orange = "#fe8019",
|
|
gray = "#928374",
|
|
dim_gray = "#504945", -- Dimmed background elements
|
|
bright_gray = "#a89984", -- Brighter gray elements
|
|
dim_black = "#3c3836", -- For UI elements needing slight contrast from bg
|
|
}
|
|
|
|
-- Set WinSeparator to black
|
|
vim.cmd("hi WinSeparator guifg=#000000")
|
|
|
|
-- Define all the highlight groups
|
|
local function get_groups(colors)
|
|
return {
|
|
-- Base groups
|
|
Normal = { fg = colors.fg, bg = colors.bg },
|
|
NormalFloat = { fg = colors.fg, bg = colors.bg },
|
|
Comment = { fg = colors.gray, italic = true },
|
|
CursorLine = { bg = colors.black },
|
|
CursorLineNr = { fg = colors.yellow },
|
|
LineNr = { fg = colors.gray },
|
|
SignColumn = { bg = colors.bg },
|
|
VertSplit = { fg = colors.bg },
|
|
StatusLine = { fg = colors.fg, bg = colors.black },
|
|
StatusLineNC = { fg = colors.gray, bg = colors.black },
|
|
Visual = { bg = colors.dim_gray },
|
|
IncSearch = { fg = colors.black, bg = colors.orange },
|
|
Search = { fg = colors.black, bg = colors.yellow },
|
|
MatchParen = { bg = colors.dim_gray, bold = true },
|
|
Question = { fg = colors.orange, bold = true },
|
|
ModeMsg = { fg = colors.fg, bold = true },
|
|
NonText = { fg = colors.dim_gray },
|
|
|
|
-- Popup menus
|
|
Pmenu = { fg = colors.fg, bg = colors.dim_black },
|
|
PmenuSel = { fg = colors.dim_black, bg = colors.blue, bold = true },
|
|
PmenuSbar = { bg = colors.dim_black },
|
|
PmenuThumb = { bg = colors.dim_gray },
|
|
WildMenu = { fg = colors.blue, bg = colors.dim_black, bold = true },
|
|
|
|
-- Base syntax
|
|
Identifier = { fg = colors.blue },
|
|
Function = { fg = colors.green, bold = true },
|
|
Statement = { fg = colors.red },
|
|
Constant = { fg = colors.purple },
|
|
String = { fg = colors.green },
|
|
Special = { fg = colors.orange },
|
|
PreProc = { fg = colors.aqua },
|
|
Type = { fg = colors.yellow },
|
|
Directory = { fg = colors.green, bold = true },
|
|
Title = { fg = colors.green, bold = true },
|
|
|
|
-- Diagnostics
|
|
DiagnosticError = { fg = colors.red },
|
|
DiagnosticWarn = { fg = colors.yellow },
|
|
DiagnosticInfo = { fg = colors.blue },
|
|
DiagnosticHint = { fg = colors.aqua },
|
|
DiagnosticUnderlineError = { undercurl = true, sp = colors.red },
|
|
DiagnosticUnderlineWarn = { undercurl = true, sp = colors.yellow },
|
|
DiagnosticUnderlineInfo = { undercurl = true, sp = colors.blue },
|
|
DiagnosticUnderlineHint = { undercurl = true, sp = colors.aqua },
|
|
|
|
-- LSP
|
|
LspReferenceText = { bg = colors.dim_black },
|
|
LspReferenceRead = { bg = colors.dim_black },
|
|
LspReferenceWrite = { bg = colors.dim_black },
|
|
LspSignatureActiveParameter = { link = "Search" },
|
|
|
|
-- Git Signs
|
|
GitSignsAdd = { fg = colors.green },
|
|
GitSignsChange = { fg = colors.yellow },
|
|
GitSignsDelete = { fg = colors.red },
|
|
|
|
-- Diffs
|
|
DiffAdd = { bg = colors.green, fg = colors.black },
|
|
DiffChange = { bg = colors.yellow, fg = colors.black },
|
|
DiffDelete = { bg = colors.red, fg = colors.black },
|
|
DiffText = { bg = colors.blue, fg = colors.black },
|
|
|
|
-- Treesitter groups
|
|
-- Misc
|
|
["@comment"] = { fg = colors.gray, italic = true },
|
|
["@error"] = { fg = colors.red },
|
|
["@preproc"] = { fg = colors.aqua },
|
|
["@define"] = { fg = colors.aqua },
|
|
["@operator"] = { fg = colors.purple },
|
|
|
|
-- Punctuation
|
|
["@punctuation.delimiter"] = { fg = colors.fg },
|
|
["@punctuation.bracket"] = { fg = colors.fg },
|
|
["@punctuation.special"] = { fg = colors.blue },
|
|
|
|
-- Literals
|
|
["@string"] = { fg = colors.green, italic = true },
|
|
["@string.regex"] = { fg = colors.orange },
|
|
["@string.escape"] = { fg = colors.orange },
|
|
["@string.special"] = { fg = colors.orange },
|
|
["@character"] = { fg = colors.purple },
|
|
["@character.special"] = { fg = colors.purple },
|
|
["@boolean"] = { fg = colors.purple },
|
|
["@number"] = { fg = colors.purple },
|
|
["@float"] = { fg = colors.purple },
|
|
|
|
-- Functions
|
|
["@function"] = { fg = colors.blue },
|
|
["@function.builtin"] = { fg = colors.aqua },
|
|
["@function.call"] = { fg = colors.blue },
|
|
["@function.macro"] = { fg = colors.blue, italic = true },
|
|
["@method"] = { fg = colors.blue },
|
|
["@method.call"] = { fg = colors.blue },
|
|
["@constructor"] = { fg = colors.yellow },
|
|
["@parameter"] = { fg = colors.fg, italic = true },
|
|
|
|
-- Keywords
|
|
["@keyword"] = { fg = colors.purple },
|
|
["@keyword.function"] = { fg = colors.purple },
|
|
["@keyword.operator"] = { fg = colors.purple },
|
|
["@keyword.return"] = { fg = colors.purple },
|
|
["@conditional"] = { fg = colors.purple },
|
|
["@repeat"] = { fg = colors.purple },
|
|
["@debug"] = { fg = colors.purple },
|
|
["@label"] = { fg = colors.purple },
|
|
["@include"] = { fg = colors.purple },
|
|
["@exception"] = { fg = colors.purple },
|
|
|
|
-- Types
|
|
["@type"] = { fg = colors.yellow },
|
|
["@type.builtin"] = { fg = colors.orange },
|
|
["@type.qualifier"] = { fg = colors.purple },
|
|
["@type.definition"] = { fg = colors.yellow },
|
|
["@storageclass"] = { fg = colors.orange },
|
|
["@attribute"] = { fg = colors.aqua },
|
|
["@field"] = { fg = colors.aqua },
|
|
["@property"] = { fg = colors.aqua },
|
|
|
|
-- Variables
|
|
["@variable"] = { fg = colors.fg },
|
|
["@variable.builtin"] = { fg = colors.orange },
|
|
["@constant"] = { fg = colors.purple },
|
|
["@constant.builtin"] = { fg = colors.purple },
|
|
["@constant.macro"] = { fg = colors.purple },
|
|
["@namespace"] = { fg = colors.yellow },
|
|
["@symbol"] = { fg = colors.purple },
|
|
|
|
-- Text
|
|
["@text"] = { fg = colors.fg },
|
|
["@text.strong"] = { bold = true },
|
|
["@text.emphasis"] = { italic = true },
|
|
["@text.underline"] = { underline = true },
|
|
["@text.strike"] = { strikethrough = true },
|
|
["@text.title"] = { fg = colors.green, bold = true },
|
|
["@text.literal"] = { fg = colors.green },
|
|
["@text.uri"] = { fg = colors.blue, underline = true },
|
|
["@text.math"] = { fg = colors.blue },
|
|
["@text.environment"] = { fg = colors.purple },
|
|
["@text.environment.name"] = { fg = colors.yellow },
|
|
["@text.reference"] = { fg = colors.orange },
|
|
["@text.todo"] = { fg = colors.bg, bg = colors.yellow },
|
|
["@text.note"] = { fg = colors.bg, bg = colors.blue },
|
|
["@text.warning"] = { fg = colors.bg, bg = colors.yellow },
|
|
["@text.danger"] = { fg = colors.bg, bg = colors.red },
|
|
|
|
-- Tags
|
|
["@tag"] = { fg = colors.purple },
|
|
["@tag.attribute"] = { fg = colors.aqua },
|
|
["@tag.delimiter"] = { fg = colors.gray },
|
|
|
|
-- Language specific
|
|
-- HTML
|
|
["@tag.html"] = { fg = colors.aqua, bold = true },
|
|
["@tag.delimiter.html"] = { fg = colors.aqua, bold = true },
|
|
htmlTag = { fg = colors.aqua, bold = true },
|
|
htmlEndTag = { fg = colors.aqua, bold = true },
|
|
htmlTagName = { fg = colors.blue },
|
|
htmlArg = { fg = colors.orange },
|
|
htmlTagN = { fg = colors.fg },
|
|
htmlSpecialTagName = { fg = colors.blue },
|
|
htmlLink = { fg = colors.bright_gray, underline = true },
|
|
htmlSpecialChar = { fg = colors.red },
|
|
htmlBold = { fg = colors.fg, bg = colors.bg, bold = true },
|
|
htmlBoldUnderline = { fg = colors.fg, bg = colors.bg, bold = true, underline = true },
|
|
htmlBoldItalic = { fg = colors.fg, bg = colors.bg, bold = true, italic = true },
|
|
htmlItalic = { fg = colors.fg, bg = colors.bg, italic = true },
|
|
|
|
-- CSS
|
|
cssBraces = { fg = colors.blue },
|
|
cssFunctionName = { fg = colors.yellow },
|
|
cssIdentifier = { fg = colors.orange },
|
|
cssClassName = { fg = colors.green },
|
|
cssColor = { fg = colors.blue },
|
|
cssSelectorOp = { fg = colors.blue },
|
|
cssSelectorOp2 = { fg = colors.blue },
|
|
cssImportant = { fg = colors.green },
|
|
cssVendor = { fg = colors.fg },
|
|
cssTextProp = { fg = colors.aqua },
|
|
cssAnimationProp = { fg = colors.aqua },
|
|
cssUIProp = { fg = colors.yellow },
|
|
cssTransformProp = { fg = colors.aqua },
|
|
cssTransitionProp = { fg = colors.aqua },
|
|
cssPrintProp = { fg = colors.aqua },
|
|
cssPositioningProp = { fg = colors.yellow },
|
|
cssBoxProp = { fg = colors.aqua },
|
|
cssFontDescriptorProp = { fg = colors.aqua },
|
|
cssFlexibleBoxProp = { fg = colors.aqua },
|
|
cssBorderOutlineProp = { fg = colors.aqua },
|
|
cssBackgroundProp = { fg = colors.aqua },
|
|
cssMarginProp = { fg = colors.aqua },
|
|
cssListProp = { fg = colors.aqua },
|
|
cssTableProp = { fg = colors.aqua },
|
|
cssFontProp = { fg = colors.aqua },
|
|
cssPaddingProp = { fg = colors.aqua },
|
|
cssDimensionProp = { fg = colors.aqua },
|
|
cssRenderProp = { fg = colors.aqua },
|
|
cssColorProp = { fg = colors.aqua },
|
|
cssGeneratedContentProp = { fg = colors.aqua },
|
|
|
|
-- JavaScript
|
|
javaScript = { fg = colors.fg },
|
|
javaScriptBraces = { fg = colors.aqua },
|
|
javaScriptNumber = { fg = colors.purple },
|
|
javaScriptNull = { fg = colors.purple },
|
|
javaScriptFunction = { fg = colors.aqua },
|
|
javaScriptIdentifier = { fg = colors.red },
|
|
javaScriptMember = { fg = colors.blue },
|
|
javaScriptParens = { fg = colors.bright_gray },
|
|
|
|
-- TypeScript
|
|
typescriptReserved = { fg = colors.aqua },
|
|
typescriptLabel = { fg = colors.aqua },
|
|
typescriptFuncKeyword = { fg = colors.aqua },
|
|
typescriptIdentifier = { fg = colors.orange },
|
|
typescriptBraces = { fg = colors.aqua },
|
|
typescriptEndColons = { fg = colors.fg },
|
|
typescriptDOMObjects = { fg = colors.fg },
|
|
typescriptAjaxMethods = { fg = colors.fg },
|
|
typescriptLogicSymbols = { fg = colors.fg },
|
|
typescriptGlobalObjects = { fg = colors.fg },
|
|
typescriptParens = { fg = colors.bright_gray },
|
|
typescriptOpSymbols = { fg = colors.bright_gray },
|
|
typescriptHtmlElemProperties = { fg = colors.fg },
|
|
typescriptNull = { fg = colors.purple },
|
|
typescriptInterpolationDelimiter = { fg = colors.aqua },
|
|
|
|
-- Python
|
|
pythonBuiltin = { fg = colors.orange },
|
|
pythonBuiltinObj = { fg = colors.orange },
|
|
pythonBuiltinFunc = { fg = colors.orange },
|
|
pythonFunction = { fg = colors.aqua },
|
|
pythonDecorator = { fg = colors.red },
|
|
pythonInclude = { fg = colors.blue },
|
|
pythonImport = { fg = colors.blue },
|
|
pythonRun = { fg = colors.blue },
|
|
pythonCoding = { fg = colors.blue },
|
|
pythonOperator = { fg = colors.red },
|
|
pythonException = { fg = colors.red },
|
|
pythonExceptions = { fg = colors.purple },
|
|
pythonBoolean = { fg = colors.purple },
|
|
pythonDot = { fg = colors.bright_gray },
|
|
pythonConditional = { fg = colors.red },
|
|
pythonRepeat = { fg = colors.red },
|
|
pythonDottedName = { fg = colors.green, bold = true },
|
|
|
|
-- Markdown
|
|
markdownItalic = { fg = colors.bright_gray, italic = true },
|
|
markdownBold = { fg = colors.bright_gray, bold = true },
|
|
markdownBoldItalic = { fg = colors.bright_gray, bold = true, italic = true },
|
|
markdownH1 = { fg = colors.green, bold = true },
|
|
markdownH2 = { fg = colors.green, bold = true },
|
|
markdownH3 = { fg = colors.yellow, bold = true },
|
|
markdownH4 = { fg = colors.yellow, bold = true },
|
|
markdownH5 = { fg = colors.yellow },
|
|
markdownH6 = { fg = colors.yellow },
|
|
markdownCode = { fg = colors.aqua },
|
|
markdownCodeBlock = { fg = colors.aqua },
|
|
markdownCodeDelimiter = { fg = colors.aqua },
|
|
markdownBlockquote = { fg = colors.gray },
|
|
markdownListMarker = { fg = colors.gray },
|
|
markdownOrderedListMarker = { fg = colors.gray },
|
|
markdownRule = { fg = colors.gray },
|
|
markdownHeadingRule = { fg = colors.gray },
|
|
markdownUrlDelimiter = { fg = colors.bright_gray },
|
|
markdownLinkDelimiter = { fg = colors.bright_gray },
|
|
markdownLinkTextDelimiter = { fg = colors.bright_gray },
|
|
markdownHeadingDelimiter = { fg = colors.orange },
|
|
markdownUrl = { fg = colors.purple },
|
|
markdownUrlTitleDelimiter = { fg = colors.green },
|
|
markdownLinkText = { fg = colors.gray, underline = true },
|
|
markdownIdDeclaration = { link = "markdownLinkText" },
|
|
|
|
-- Telescope
|
|
TelescopeNormal = { fg = colors.fg },
|
|
TelescopeSelection = { fg = colors.orange, bold = true },
|
|
TelescopeSelectionCaret = { fg = colors.red },
|
|
TelescopeMultiSelection = { fg = colors.gray },
|
|
TelescopeBorder = { fg = colors.fg },
|
|
TelescopePromptBorder = { fg = colors.fg },
|
|
TelescopeResultsBorder = { fg = colors.fg },
|
|
TelescopePreviewBorder = { fg = colors.fg },
|
|
TelescopeMatching = { fg = colors.blue },
|
|
TelescopePromptPrefix = { fg = colors.red },
|
|
TelescopePrompt = { fg = colors.fg },
|
|
|
|
-- NvimTree
|
|
NvimTreeSymlink = { fg = colors.aqua },
|
|
NvimTreeRootFolder = { fg = colors.purple, bold = true },
|
|
NvimTreeFolderIcon = { fg = colors.blue, bold = true },
|
|
NvimTreeFileIcon = { fg = colors.fg },
|
|
NvimTreeExecFile = { fg = colors.green, bold = true },
|
|
NvimTreeOpenedFile = { fg = colors.red, bold = true },
|
|
NvimTreeSpecialFile = { fg = colors.yellow, bold = true, underline = true },
|
|
NvimTreeImageFile = { fg = colors.purple },
|
|
NvimTreeIndentMarker = { fg = colors.dim_gray },
|
|
NvimTreeGitDirty = { fg = colors.yellow },
|
|
NvimTreeGitStaged = { fg = colors.yellow },
|
|
NvimTreeGitMerge = { fg = colors.purple },
|
|
NvimTreeGitRenamed = { fg = colors.purple },
|
|
NvimTreeGitNew = { fg = colors.yellow },
|
|
NvimTreeGitDeleted = { fg = colors.red },
|
|
NvimTreeWindowPicker = { bg = colors.aqua },
|
|
|
|
-- Netrw
|
|
netrwDir = { fg = colors.aqua },
|
|
netrwClassify = { fg = colors.aqua },
|
|
netrwLink = { fg = colors.gray },
|
|
netrwSymLink = { fg = colors.fg },
|
|
netrwExe = { fg = colors.yellow },
|
|
netrwComment = { fg = colors.gray },
|
|
netrwList = { fg = colors.blue },
|
|
netrwHelpCmd = { fg = colors.aqua },
|
|
netrwCmdSep = { fg = colors.bright_gray },
|
|
netrwVersion = { fg = colors.green },
|
|
|
|
-- cmp
|
|
CmpItemAbbr = { fg = colors.fg },
|
|
CmpItemAbbrDeprecated = { fg = colors.fg },
|
|
CmpItemAbbrMatch = { fg = colors.blue, bold = true },
|
|
CmpItemAbbrMatchFuzzy = { fg = colors.blue, underline = true },
|
|
CmpItemMenu = { fg = colors.gray },
|
|
CmpItemKindText = { fg = colors.orange },
|
|
CmpItemKindMethod = { fg = colors.blue },
|
|
CmpItemKindFunction = { fg = colors.blue },
|
|
CmpItemKindConstructor = { fg = colors.yellow },
|
|
CmpItemKindField = { fg = colors.blue },
|
|
CmpItemKindVariable = { fg = colors.orange },
|
|
CmpItemKindClass = { fg = colors.yellow },
|
|
CmpItemKindInterface = { fg = colors.yellow },
|
|
CmpItemKindModule = { fg = colors.blue },
|
|
CmpItemKindProperty = { fg = colors.blue },
|
|
CmpItemKindUnit = { fg = colors.blue },
|
|
CmpItemKindValue = { fg = colors.orange },
|
|
CmpItemKindEnum = { fg = colors.yellow },
|
|
CmpItemKindKeyword = { fg = colors.purple },
|
|
CmpItemKindSnippet = { fg = colors.green },
|
|
CmpItemKindColor = { fg = colors.purple },
|
|
CmpItemKindFile = { fg = colors.blue },
|
|
CmpItemKindReference = { fg = colors.purple },
|
|
CmpItemKindFolder = { fg = colors.blue },
|
|
CmpItemKindEnumMember = { fg = colors.aqua },
|
|
CmpItemKindConstant = { fg = colors.orange },
|
|
CmpItemKindStruct = { fg = colors.yellow },
|
|
CmpItemKindEvent = { fg = colors.yellow },
|
|
CmpItemKindOperator = { fg = colors.yellow },
|
|
CmpItemKindTypeParameter = { fg = colors.yellow },
|
|
}
|
|
end
|
|
|
|
-- Load the colorscheme
|
|
function M.load()
|
|
-- Clear existing highlights
|
|
if vim.g.colors_name then
|
|
vim.cmd("hi clear")
|
|
end
|
|
if vim.fn.exists("syntax_on") then
|
|
vim.cmd("syntax reset")
|
|
end
|
|
|
|
-- Set colorscheme name
|
|
vim.o.termguicolors = true
|
|
vim.g.colors_name = "darkbox"
|
|
|
|
-- Apply highlight groups
|
|
local groups = get_groups(M.colors)
|
|
for group, settings in pairs(groups) do
|
|
vim.api.nvim_set_hl(0, group, settings)
|
|
end
|
|
|
|
-- Set terminal colors
|
|
vim.g.terminal_color_0 = M.colors.black
|
|
vim.g.terminal_color_1 = M.colors.red
|
|
vim.g.terminal_color_2 = M.colors.green
|
|
vim.g.terminal_color_3 = M.colors.yellow
|
|
vim.g.terminal_color_4 = M.colors.blue
|
|
vim.g.terminal_color_5 = M.colors.purple
|
|
vim.g.terminal_color_6 = M.colors.aqua
|
|
vim.g.terminal_color_7 = M.colors.gray
|
|
vim.g.terminal_color_8 = M.colors.dim_gray
|
|
vim.g.terminal_color_9 = M.colors.red
|
|
vim.g.terminal_color_10 = M.colors.green
|
|
vim.g.terminal_color_11 = M.colors.yellow
|
|
vim.g.terminal_color_12 = M.colors.blue
|
|
vim.g.terminal_color_13 = M.colors.purple
|
|
vim.g.terminal_color_14 = M.colors.aqua
|
|
vim.g.terminal_color_15 = M.colors.bright_gray
|
|
end
|
|
|
|
return M
|