From 50995a7c2e2701e4a529c63dd6f6444fb2a8d8a2 Mon Sep 17 00:00:00 2001 From: Timothy Pidashev Date: Mon, 3 Feb 2025 11:40:27 -0800 Subject: [PATCH] Rewrite to allow for configuration changes; update treesitter coverage; implement three base contrasts --- lua/darkbox.lua | 1599 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 1197 insertions(+), 402 deletions(-) diff --git a/lua/darkbox.lua b/lua/darkbox.lua index 5f811fa..6e0096e 100644 --- a/lua/darkbox.lua +++ b/lua/darkbox.lua @@ -1,418 +1,1213 @@ -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 +---@class Darkbox +---@field config DarkboxConfig +---@field palette DarkboxPalette +local Darkbox = {} + +---@alias Contrast "classic" | "vivid" | "" + +---@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? +---@field palette_overrides table? +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, } --- Set WinSeparator to black -vim.cmd("hi WinSeparator guifg=#000000") +---@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 = "#d5c4a1", + vivid_foreground = "#a89984", + foreground_1 = "#ebdbb2", + 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", + vivid_red = "#9d0006", + vivid_green = "#79740e", + vivid_yellow = "#b57614", + vivid_blue = "#076678", + vivid_purple = "#8f3f71", + vivid_aqua = "#427b58", + vivid_orange = "#af3a03", + gray = "#928374", +} --- 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 }, +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 == "vivid" then + colors.foreground = palette.vivid_foreground + colors.red = palette.vivid_red + colors.green = palette.vivid_green + colors.yellow = palette.vivid_yellow + colors.blue = palette.vivid_blue + colors.purple = palette.vivid_purple + colors.aqua = palette.vivid_aqua + colors.orange = palette.vivid_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 --- Load the colorscheme -function M.load() - -- Clear existing highlights +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 = { + GruvboxFg0 = { fg = colors.foreground }, + GruvboxFg1 = { fg = colors.foreground }, + GruvboxFg2 = { fg = colors.foreground_2 }, + GruvboxFg3 = { fg = colors.foreground_3 }, + GruvboxFg4 = { fg = colors.foreground_4 }, + GruvboxGray = { fg = colors.gray }, + GruvboxBg0 = { fg = colors.background }, + GruvboxBg1 = { fg = colors.background_1 }, + GruvboxBg2 = { fg = colors.background_2 }, + GruvboxBg3 = { fg = colors.background_3 }, + GruvboxBg4 = { fg = colors.background_4 }, + GruvboxRed = { fg = colors.red }, + GruvboxRedBold = { fg = colors.red, bold = config.bold }, + GruvboxGreen = { fg = colors.green }, + GruvboxGreenBold = { fg = colors.green, bold = config.bold }, + GruvboxYellow = { fg = colors.yellow }, + GruvboxYellowBold = { fg = colors.yellow, bold = config.bold }, + GruvboxBlue = { fg = colors.blue }, + GruvboxBlueBold = { fg = colors.blue, bold = config.bold }, + GruvboxPurple = { fg = colors.purple }, + GruvboxPurpleBold = { fg = colors.purple, bold = config.bold }, + GruvboxAqua = { fg = colors.aqua }, + GruvboxAquaBold = { fg = colors.aqua, bold = config.bold }, + GruvboxOrange = { fg = colors.orange }, + GruvboxOrangeBold = { fg = colors.orange, bold = config.bold }, + GruvboxRedSign = config.transparent_mode and { fg = colors.red, reverse = config.invert_signs } + or { fg = colors.red, bg = colors.background_1, reverse = config.invert_signs }, + GruvboxGreenSign = config.transparent_mode and { fg = colors.green, reverse = config.invert_signs } + or { fg = colors.green, bg = colors.background_1, reverse = config.invert_signs }, + GruvboxYellowSign = config.transparent_mode and { fg = colors.yellow, reverse = config.invert_signs } + or { fg = colors.yellow, bg = colors.background_1, reverse = config.invert_signs }, + GruvboxBlueSign = config.transparent_mode and { fg = colors.blue, reverse = config.invert_signs } + or { fg = colors.blue, bg = colors.background_1, reverse = config.invert_signs }, + GruvboxPurpleSign = config.transparent_mode and { fg = colors.purple, reverse = config.invert_signs } + or { fg = colors.purple, bg = colors.background_1, reverse = config.invert_signs }, + GruvboxAquaSign = config.transparent_mode and { fg = colors.aqua, reverse = config.invert_signs } + or { fg = colors.aqua, bg = colors.background_1, reverse = config.invert_signs }, + GruvboxOrangeSign = config.transparent_mode and { fg = colors.orange, reverse = config.invert_signs } + or { fg = colors.orange, bg = colors.background_1, reverse = config.invert_signs }, + GruvboxRedUnderline = { undercurl = config.undercurl, sp = colors.red }, + GruvboxGreenUnderline = { undercurl = config.undercurl, sp = colors.green }, + GruvboxYellowUnderline = { undercurl = config.undercurl, sp = colors.yellow }, + GruvboxBlueUnderline = { undercurl = config.undercurl, sp = colors.blue }, + GruvboxPurpleUnderline = { undercurl = config.undercurl, sp = colors.purple }, + GruvboxAquaUnderline = { undercurl = config.undercurl, sp = colors.aqua }, + GruvboxOrangeUnderline = { 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 = "GruvboxBg2" }, + SpecialKey = { link = "GruvboxFg4" }, + 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 = "GruvboxPurple" }, + 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 = "GruvboxGreenBold" }, + Title = { link = "GruvboxGreenBold" }, + ErrorMsg = { fg = colors.background, bg = colors.red, bold = config.bold }, + MoreMsg = { link = "GruvboxYellowBold" }, + ModeMsg = { link = "GruvboxYellowBold" }, + Question = { link = "GruvboxOrangeBold" }, + WarningMsg = { link = "GruvboxRedBold" }, + 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 = "GruvboxOrange" }, + 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 = "GruvboxRed" }, + Conditional = { link = "GruvboxRed" }, + Repeat = { link = "GruvboxRed" }, + Label = { link = "GruvboxRed" }, + Exception = { link = "GruvboxRed" }, + Operator = { fg = colors.orange, italic = config.italic.operators }, + Keyword = { link = "GruvboxRed" }, + Identifier = { link = "GruvboxBlue" }, + Function = { link = "GruvboxGreenBold" }, + PreProc = { link = "GruvboxAqua" }, + Include = { link = "GruvboxAqua" }, + Define = { link = "GruvboxAqua" }, + Macro = { link = "GruvboxAqua" }, + PreCondit = { link = "GruvboxAqua" }, + Constant = { link = "GruvboxPurple" }, + Character = { link = "GruvboxPurple" }, + String = { fg = colors.green, italic = config.italic.strings }, + Boolean = { link = "GruvboxPurple" }, + Number = { link = "GruvboxPurple" }, + Float = { link = "GruvboxPurple" }, + Type = { link = "GruvboxYellow" }, + StorageClass = { link = "GruvboxOrange" }, + Structure = { link = "GruvboxAqua" }, + Typedef = { link = "GruvboxYellow" }, + 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 = "GruvboxBlueUnderline" }, + SpellBad = { link = "GruvboxRedUnderline" }, + SpellLocal = { link = "GruvboxAquaUnderline" }, + SpellRare = { link = "GruvboxPurpleUnderline" }, + Whitespace = { fg = colors.background_2 }, + Delimiter = { link = "GruvboxOrange" }, + EndOfBuffer = { link = "NonText" }, + DiagnosticError = { link = "GruvboxRed" }, + DiagnosticSignError = { link = "GruvboxRedSign" }, + DiagnosticUnderlineError = { link = "GruvboxRedUnderline" }, + DiagnosticWarn = { link = "GruvboxYellow" }, + DiagnosticSignWarn = { link = "GruvboxYellowSign" }, + DiagnosticUnderlineWarn = { link = "GruvboxYellowUnderline" }, + DiagnosticInfo = { link = "GruvboxBlue" }, + DiagnosticSignInfo = { link = "GruvboxBlueSign" }, + DiagnosticUnderlineInfo = { link = "GruvboxBlueUnderline" }, + DiagnosticHint = { link = "GruvboxAqua" }, + DiagnosticSignHint = { link = "GruvboxAquaSign" }, + DiagnosticUnderlineHint = { link = "GruvboxAquaUnderline" }, + DiagnosticFloatingError = { link = "GruvboxRed" }, + DiagnosticFloatingWarn = { link = "GruvboxOrange" }, + DiagnosticFloatingInfo = { link = "GruvboxBlue" }, + DiagnosticFloatingHint = { link = "GruvboxAqua" }, + DiagnosticVirtualTextError = { link = "GruvboxRed" }, + DiagnosticVirtualTextWarn = { link = "GruvboxYellow" }, + DiagnosticVirtualTextInfo = { link = "GruvboxBlue" }, + DiagnosticVirtualTextHint = { link = "GruvboxAqua" }, + DiagnosticOk = { link = "GruvboxGreenSign" }, + LspReferenceRead = { link = "GruvboxYellowBold" }, + LspReferenceText = { link = "GruvboxYellowBold" }, + LspReferenceWrite = { link = "GruvboxOrangeBold" }, + LspCodeLens = { link = "GruvboxGray" }, + LspSignatureActiveParameter = { link = "Search" }, + gitcommitSelectedFile = { link = "GruvboxGreen" }, + gitcommitDiscardedFile = { link = "GruvboxRed" }, + GitSignsAdd = { link = "GruvboxGreen" }, + GitSignsChange = { link = "GruvboxOrange" }, + GitSignsDelete = { link = "GruvboxRed" }, + 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 = "GruvboxRedSign" }, + StartifyBracket = { link = "GruvboxFg3" }, + StartifyFile = { link = "GruvboxFg1" }, + StartifyNumber = { link = "GruvboxBlue" }, + StartifyPath = { link = "GruvboxGray" }, + StartifySlash = { link = "GruvboxGray" }, + StartifySection = { link = "GruvboxYellow" }, + StartifySpecial = { link = "GruvboxBg2" }, + StartifyHeader = { link = "GruvboxOrange" }, + StartifyFooter = { link = "GruvboxBg2" }, + StartifyVar = { link = "StartifyPath" }, + StartifySelect = { link = "Title" }, + DirvishPathTail = { link = "GruvboxAqua" }, + DirvishArg = { link = "GruvboxYellow" }, + netrwDir = { link = "GruvboxAqua" }, + netrwClassify = { link = "GruvboxAqua" }, + netrwLink = { link = "GruvboxGray" }, + netrwSymLink = { link = "GruvboxFg1" }, + netrwExe = { link = "GruvboxYellow" }, + netrwComment = { link = "GruvboxGray" }, + netrwList = { link = "GruvboxBlue" }, + netrwHelpCmd = { link = "GruvboxAqua" }, + netrwCmdSep = { link = "GruvboxFg3" }, + netrwVersion = { link = "GruvboxGreen" }, + NERDTreeDir = { link = "GruvboxAqua" }, + NERDTreeDirSlash = { link = "GruvboxAqua" }, + NERDTreeOpenable = { link = "GruvboxOrange" }, + NERDTreeClosable = { link = "GruvboxOrange" }, + NERDTreeFile = { link = "GruvboxFg1" }, + NERDTreeExecFile = { link = "GruvboxYellow" }, + NERDTreeUp = { link = "GruvboxGray" }, + NERDTreeCWD = { link = "GruvboxGreen" }, + NERDTreeHelp = { link = "GruvboxFg1" }, + NERDTreeToggleOn = { link = "GruvboxGreen" }, + NERDTreeToggleOff = { link = "GruvboxRed" }, + CocErrorSign = { link = "GruvboxRedSign" }, + CocWarningSign = { link = "GruvboxOrangeSign" }, + CocInfoSign = { link = "GruvboxBlueSign" }, + CocHintSign = { link = "GruvboxAquaSign" }, + CocErrorFloat = { link = "GruvboxRed" }, + CocWarningFloat = { link = "GruvboxOrange" }, + CocInfoFloat = { link = "GruvboxBlue" }, + CocHintFloat = { link = "GruvboxAqua" }, + CocDiagnosticsError = { link = "GruvboxRed" }, + CocDiagnosticsWarning = { link = "GruvboxOrange" }, + CocDiagnosticsInfo = { link = "GruvboxBlue" }, + CocDiagnosticsHint = { link = "GruvboxAqua" }, + CocSelectedText = { link = "GruvboxRed" }, + CocMenuSel = { link = "PmenuSel" }, + CocCodeLens = { link = "GruvboxGray" }, + CocErrorHighlight = { link = "GruvboxRedUnderline" }, + CocWarningHighlight = { link = "GruvboxOrangeUnderline" }, + CocInfoHighlight = { link = "GruvboxBlueUnderline" }, + CocHintHighlight = { link = "GruvboxAquaUnderline" }, + TelescopeNormal = { link = "GruvboxFg1" }, + TelescopeSelection = { link = "GruvboxOrangeBold" }, + TelescopeSelectionCaret = { link = "GruvboxRed" }, + TelescopeMultiSelection = { link = "GruvboxGray" }, + TelescopeBorder = { link = "TelescopeNormal" }, + TelescopePromptBorder = { link = "TelescopeNormal" }, + TelescopeResultsBorder = { link = "TelescopeNormal" }, + TelescopePreviewBorder = { link = "TelescopeNormal" }, + TelescopeMatching = { link = "GruvboxBlue" }, + TelescopePromptPrefix = { link = "GruvboxRed" }, + TelescopePrompt = { link = "TelescopeNormal" }, + CmpItemAbbr = { link = "GruvboxFg0" }, + CmpItemAbbrDeprecated = { link = "GruvboxFg1" }, + CmpItemAbbrMatch = { link = "GruvboxBlueBold" }, + CmpItemAbbrMatchFuzzy = { link = "GruvboxBlueUnderline" }, + CmpItemMenu = { link = "GruvboxGray" }, + CmpItemKindText = { link = "GruvboxOrange" }, + CmpItemKindVariable = { link = "GruvboxOrange" }, + CmpItemKindMethod = { link = "GruvboxBlue" }, + CmpItemKindFunction = { link = "GruvboxBlue" }, + CmpItemKindConstructor = { link = "GruvboxYellow" }, + CmpItemKindUnit = { link = "GruvboxBlue" }, + CmpItemKindField = { link = "GruvboxBlue" }, + CmpItemKindClass = { link = "GruvboxYellow" }, + CmpItemKindInterface = { link = "GruvboxYellow" }, + CmpItemKindModule = { link = "GruvboxBlue" }, + CmpItemKindProperty = { link = "GruvboxBlue" }, + CmpItemKindValue = { link = "GruvboxOrange" }, + CmpItemKindEnum = { link = "GruvboxYellow" }, + CmpItemKindOperator = { link = "GruvboxYellow" }, + CmpItemKindKeyword = { link = "GruvboxPurple" }, + CmpItemKindEvent = { link = "GruvboxPurple" }, + CmpItemKindReference = { link = "GruvboxPurple" }, + CmpItemKindColor = { link = "GruvboxPurple" }, + CmpItemKindSnippet = { link = "GruvboxGreen" }, + CmpItemKindFile = { link = "GruvboxBlue" }, + CmpItemKindFolder = { link = "GruvboxBlue" }, + CmpItemKindEnumMember = { link = "GruvboxAqua" }, + CmpItemKindConstant = { link = "GruvboxOrange" }, + CmpItemKindStruct = { link = "GruvboxYellow" }, + CmpItemKindTypeParameter = { link = "GruvboxYellow" }, + diffAdded = { link = "DiffAdd" }, + diffRemoved = { link = "DiffDelete" }, + diffChanged = { link = "DiffChange" }, + diffFile = { link = "GruvboxOrange" }, + diffNewFile = { link = "GruvboxYellow" }, + diffOldFile = { link = "GruvboxOrange" }, + diffLine = { link = "GruvboxBlue" }, + diffIndexLine = { link = "diffChanged" }, + NavicIconsFile = { link = "GruvboxBlue" }, + NavicIconsModule = { link = "GruvboxOrange" }, + NavicIconsNamespace = { link = "GruvboxBlue" }, + NavicIconsPackage = { link = "GruvboxAqua" }, + NavicIconsClass = { link = "GruvboxYellow" }, + NavicIconsMethod = { link = "GruvboxBlue" }, + NavicIconsProperty = { link = "GruvboxAqua" }, + NavicIconsField = { link = "GruvboxPurple" }, + NavicIconsConstructor = { link = "GruvboxBlue" }, + NavicIconsEnum = { link = "GruvboxPurple" }, + NavicIconsInterface = { link = "GruvboxGreen" }, + NavicIconsFunction = { link = "GruvboxBlue" }, + NavicIconsVariable = { link = "GruvboxPurple" }, + NavicIconsConstant = { link = "GruvboxOrange" }, + NavicIconsString = { link = "GruvboxGreen" }, + NavicIconsNumber = { link = "GruvboxOrange" }, + NavicIconsBoolean = { link = "GruvboxOrange" }, + NavicIconsArray = { link = "GruvboxOrange" }, + NavicIconsObject = { link = "GruvboxOrange" }, + NavicIconsKey = { link = "GruvboxAqua" }, + NavicIconsNull = { link = "GruvboxOrange" }, + NavicIconsEnumMember = { link = "GruvboxYellow" }, + NavicIconsStruct = { link = "GruvboxPurple" }, + NavicIconsEvent = { link = "GruvboxYellow" }, + NavicIconsOperator = { link = "GruvboxRed" }, + NavicIconsTypeParameter = { link = "GruvboxRed" }, + NavicText = { link = "GruvboxWhite" }, + NavicSeparator = { link = "GruvboxWhite" }, + htmlTag = { link = "GruvboxAquaBold" }, + htmlEndTag = { link = "GruvboxAquaBold" }, + htmlTagName = { link = "GruvboxBlue" }, + htmlArg = { link = "GruvboxOrange" }, + htmlTagN = { link = "GruvboxFg1" }, + htmlSpecialTagName = { link = "GruvboxBlue" }, + htmlLink = { fg = colors.foreground_4, underline = config.underline }, + htmlSpecialChar = { link = "GruvboxRed" }, + 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 = "GruvboxAquaBold" }, + xmlEndTag = { link = "GruvboxAquaBold" }, + xmlTagName = { link = "GruvboxBlue" }, + xmlEqual = { link = "GruvboxBlue" }, + docbkKeyword = { link = "GruvboxAquaBold" }, + xmlDocTypeDecl = { link = "GruvboxGray" }, + xmlDocTypeKeyword = { link = "GruvboxPurple" }, + xmlCdataStart = { link = "GruvboxGray" }, + xmlCdataCdata = { link = "GruvboxPurple" }, + dtdFunction = { link = "GruvboxGray" }, + dtdTagName = { link = "GruvboxPurple" }, + xmlAttrib = { link = "GruvboxOrange" }, + xmlProcessingDelim = { link = "GruvboxGray" }, + dtdParamEntityPunct = { link = "GruvboxGray" }, + dtdParamEntityDPunct = { link = "GruvboxGray" }, + xmlAttribPunct = { link = "GruvboxGray" }, + xmlEntity = { link = "GruvboxRed" }, + xmlEntityPunct = { link = "GruvboxRed" }, + clojureKeyword = { link = "GruvboxBlue" }, + clojureCond = { link = "GruvboxOrange" }, + clojureSpecial = { link = "GruvboxOrange" }, + clojureDefine = { link = "GruvboxOrange" }, + clojureFunc = { link = "GruvboxYellow" }, + clojureRepeat = { link = "GruvboxYellow" }, + clojureCharacter = { link = "GruvboxAqua" }, + clojureStringEscape = { link = "GruvboxAqua" }, + clojureException = { link = "GruvboxRed" }, + clojureRegexp = { link = "GruvboxAqua" }, + clojureRegexpEscape = { link = "GruvboxAqua" }, + clojureRegexpCharClass = { fg = colors.foreground_3, bold = config.bold }, + clojureRegexpMod = { link = "clojureRegexpCharClass" }, + clojureRegexpQuantifier = { link = "clojureRegexpCharClass" }, + clojureParen = { link = "GruvboxFg3" }, + clojureAnonArg = { link = "GruvboxYellow" }, + clojureVariable = { link = "GruvboxBlue" }, + clojureMacro = { link = "GruvboxOrange" }, + clojureMeta = { link = "GruvboxYellow" }, + clojureDeref = { link = "GruvboxYellow" }, + clojureQuote = { link = "GruvboxYellow" }, + clojureUnquote = { link = "GruvboxYellow" }, + cOperator = { link = "GruvboxPurple" }, + cppOperator = { link = "GruvboxPurple" }, + cStructure = { link = "GruvboxOrange" }, + pythonBuiltin = { link = "GruvboxOrange" }, + pythonBuiltinObj = { link = "GruvboxOrange" }, + pythonBuiltinFunc = { link = "GruvboxOrange" }, + pythonFunction = { link = "GruvboxAqua" }, + pythonDecorator = { link = "GruvboxRed" }, + pythonInclude = { link = "GruvboxBlue" }, + pythonImport = { link = "GruvboxBlue" }, + pythonRun = { link = "GruvboxBlue" }, + pythonCoding = { link = "GruvboxBlue" }, + pythonOperator = { link = "GruvboxRed" }, + pythonException = { link = "GruvboxRed" }, + pythonExceptions = { link = "GruvboxPurple" }, + pythonBoolean = { link = "GruvboxPurple" }, + pythonDot = { link = "GruvboxFg3" }, + pythonConditional = { link = "GruvboxRed" }, + pythonRepeat = { link = "GruvboxRed" }, + pythonDottedName = { link = "GruvboxGreenBold" }, + cssBraces = { link = "GruvboxBlue" }, + cssFunctionName = { link = "GruvboxYellow" }, + cssIdentifier = { link = "GruvboxOrange" }, + cssClassName = { link = "GruvboxGreen" }, + cssColor = { link = "GruvboxBlue" }, + cssSelectorOp = { link = "GruvboxBlue" }, + cssSelectorOp2 = { link = "GruvboxBlue" }, + cssImportant = { link = "GruvboxGreen" }, + cssVendor = { link = "GruvboxFg1" }, + cssTextProp = { link = "GruvboxAqua" }, + cssAnimationProp = { link = "GruvboxAqua" }, + cssUIProp = { link = "GruvboxYellow" }, + cssTransformProp = { link = "GruvboxAqua" }, + cssTransitionProp = { link = "GruvboxAqua" }, + cssPrintProp = { link = "GruvboxAqua" }, + cssPositioningProp = { link = "GruvboxYellow" }, + cssBoxProp = { link = "GruvboxAqua" }, + cssFontDescriptorProp = { link = "GruvboxAqua" }, + cssFlexibleBoxProp = { link = "GruvboxAqua" }, + cssBorderOutlineProp = { link = "GruvboxAqua" }, + cssBackgroundProp = { link = "GruvboxAqua" }, + cssMarginProp = { link = "GruvboxAqua" }, + cssListProp = { link = "GruvboxAqua" }, + cssTableProp = { link = "GruvboxAqua" }, + cssFontProp = { link = "GruvboxAqua" }, + cssPaddingProp = { link = "GruvboxAqua" }, + cssDimensionProp = { link = "GruvboxAqua" }, + cssRenderProp = { link = "GruvboxAqua" }, + cssColorProp = { link = "GruvboxAqua" }, + cssGeneratedContentProp = { link = "GruvboxAqua" }, + javaScriptBraces = { link = "GruvboxFg1" }, + javaScriptFunction = { link = "GruvboxAqua" }, + javaScriptIdentifier = { link = "GruvboxRed" }, + javaScriptMember = { link = "GruvboxBlue" }, + javaScriptNumber = { link = "GruvboxPurple" }, + javaScriptNull = { link = "GruvboxPurple" }, + javaScriptParens = { link = "GruvboxFg3" }, + typescriptReserved = { link = "GruvboxAqua" }, + typescriptLabel = { link = "GruvboxAqua" }, + typescriptFuncKeyword = { link = "GruvboxAqua" }, + typescriptIdentifier = { link = "GruvboxOrange" }, + typescriptBraces = { link = "GruvboxFg1" }, + typescriptEndColons = { link = "GruvboxFg1" }, + typescriptDOMObjects = { link = "GruvboxFg1" }, + typescriptAjaxMethods = { link = "GruvboxFg1" }, + typescriptLogicSymbols = { link = "GruvboxFg1" }, + typescriptDocSeeTag = { link = "Comment" }, + typescriptDocParam = { link = "Comment" }, + typescriptDocTags = { link = "vimCommentTitle" }, + typescriptGlobalObjects = { link = "GruvboxFg1" }, + typescriptParens = { link = "GruvboxFg3" }, + typescriptOpSymbols = { link = "GruvboxFg3" }, + typescriptHtmlElemProperties = { link = "GruvboxFg1" }, + typescriptNull = { link = "GruvboxPurple" }, + typescriptInterpolationDelimiter = { link = "GruvboxAqua" }, + purescriptModuleKeyword = { link = "GruvboxAqua" }, + purescriptModuleName = { link = "GruvboxFg1" }, + purescriptWhere = { link = "GruvboxAqua" }, + purescriptDelimiter = { link = "GruvboxFg4" }, + purescriptType = { link = "GruvboxFg1" }, + purescriptImportKeyword = { link = "GruvboxAqua" }, + purescriptHidingKeyword = { link = "GruvboxAqua" }, + purescriptAsKeyword = { link = "GruvboxAqua" }, + purescriptStructure = { link = "GruvboxAqua" }, + purescriptOperator = { link = "GruvboxBlue" }, + purescriptTypeVar = { link = "GruvboxFg1" }, + purescriptConstructor = { link = "GruvboxFg1" }, + purescriptFunction = { link = "GruvboxFg1" }, + purescriptConditional = { link = "GruvboxOrange" }, + purescriptBacktick = { link = "GruvboxOrange" }, + coffeeExtendedOp = { link = "GruvboxFg3" }, + coffeeSpecialOp = { link = "GruvboxFg3" }, + coffeeCurly = { link = "GruvboxOrange" }, + coffeeParen = { link = "GruvboxFg3" }, + coffeeBracket = { link = "GruvboxOrange" }, + rubyStringDelimiter = { link = "GruvboxGreen" }, + rubyInterpolationDelimiter = { link = "GruvboxAqua" }, + rubyDefinedOperator = { link = "rubyKeyword" }, + objcTypeModifier = { link = "GruvboxRed" }, + objcDirective = { link = "GruvboxBlue" }, + goDirective = { link = "GruvboxAqua" }, + goConstants = { link = "GruvboxPurple" }, + goDeclaration = { link = "GruvboxRed" }, + goDeclType = { link = "GruvboxBlue" }, + goBuiltins = { link = "GruvboxOrange" }, + luaIn = { link = "GruvboxRed" }, + luaFunction = { link = "GruvboxAqua" }, + luaTable = { link = "GruvboxOrange" }, + moonSpecialOp = { link = "GruvboxFg3" }, + moonExtendedOp = { link = "GruvboxFg3" }, + moonFunction = { link = "GruvboxFg3" }, + moonObject = { link = "GruvboxYellow" }, + javaAnnotation = { link = "GruvboxBlue" }, + javaDocTags = { link = "GruvboxAqua" }, + javaCommentTitle = { link = "vimCommentTitle" }, + javaParen = { link = "GruvboxFg3" }, + javaParen1 = { link = "GruvboxFg3" }, + javaParen2 = { link = "GruvboxFg3" }, + javaParen3 = { link = "GruvboxFg3" }, + javaParen4 = { link = "GruvboxFg3" }, + javaParen5 = { link = "GruvboxFg3" }, + javaOperator = { link = "GruvboxOrange" }, + javaVarArg = { link = "GruvboxGreen" }, + elixirDocString = { link = "Comment" }, + elixirStringDelimiter = { link = "GruvboxGreen" }, + elixirInterpolationDelimiter = { link = "GruvboxAqua" }, + elixirModuleDeclaration = { link = "GruvboxYellow" }, + scalaNameDefinition = { link = "GruvboxFg1" }, + scalaCaseFollowing = { link = "GruvboxFg1" }, + scalaCapitalWord = { link = "GruvboxFg1" }, + scalaTypeExtension = { link = "GruvboxFg1" }, + scalaKeyword = { link = "GruvboxRed" }, + scalaKeywordModifier = { link = "GruvboxRed" }, + scalaSpecial = { link = "GruvboxAqua" }, + scalaOperator = { link = "GruvboxFg1" }, + scalaTypeDeclaration = { link = "GruvboxYellow" }, + scalaTypeTypePostDeclaration = { link = "GruvboxYellow" }, + scalaInstanceDeclaration = { link = "GruvboxFg1" }, + scalaInterpolation = { link = "GruvboxAqua" }, + 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 = "GruvboxGreenBold" }, + markdownH2 = { link = "GruvboxGreenBold" }, + markdownH3 = { link = "GruvboxYellowBold" }, + markdownH4 = { link = "GruvboxYellowBold" }, + markdownH5 = { link = "GruvboxYellow" }, + markdownH6 = { link = "GruvboxYellow" }, + markdownCode = { link = "GruvboxAqua" }, + markdownCodeBlock = { link = "GruvboxAqua" }, + markdownCodeDelimiter = { link = "GruvboxAqua" }, + markdownBlockquote = { link = "GruvboxGray" }, + markdownListMarker = { link = "GruvboxGray" }, + markdownOrderedListMarker = { link = "GruvboxGray" }, + markdownRule = { link = "GruvboxGray" }, + markdownHeadingRule = { link = "GruvboxGray" }, + markdownUrlDelimiter = { link = "GruvboxFg3" }, + markdownLinkDelimiter = { link = "GruvboxFg3" }, + markdownLinkTextDelimiter = { link = "GruvboxFg3" }, + markdownHeadingDelimiter = { link = "GruvboxOrange" }, + markdownUrl = { link = "GruvboxPurple" }, + markdownUrlTitleDelimiter = { link = "GruvboxGreen" }, + markdownLinkText = { fg = colors.gray, underline = config.underline }, + markdownIdDeclaration = { link = "markdownLinkText" }, + haskellType = { link = "GruvboxBlue" }, + haskellIdentifier = { link = "GruvboxAqua" }, + haskellSeparator = { link = "GruvboxFg4" }, + haskellDelimiter = { link = "GruvboxOrange" }, + haskellOperators = { link = "GruvboxPurple" }, + haskellBacktick = { link = "GruvboxOrange" }, + haskellStatement = { link = "GruvboxPurple" }, + haskellConditional = { link = "GruvboxPurple" }, + haskellLet = { link = "GruvboxRed" }, + haskellDefault = { link = "GruvboxRed" }, + haskellWhere = { link = "GruvboxRed" }, + haskellBottom = { link = "GruvboxRedBold" }, + haskellImportKeywords = { link = "GruvboxPurpleBold" }, + haskellDeclKeyword = { link = "GruvboxOrange" }, + haskellDecl = { link = "GruvboxOrange" }, + haskellDeriving = { link = "GruvboxPurple" }, + haskellAssocType = { link = "GruvboxAqua" }, + haskellNumber = { link = "GruvboxAqua" }, + haskellPragma = { link = "GruvboxRedBold" }, + haskellTH = { link = "GruvboxAquaBold" }, + haskellForeignKeywords = { link = "GruvboxGreen" }, + haskellKeyword = { link = "GruvboxRed" }, + haskellFloat = { link = "GruvboxAqua" }, + haskellInfix = { link = "GruvboxPurple" }, + haskellQuote = { link = "GruvboxGreenBold" }, + haskellShebang = { link = "GruvboxYellowBold" }, + haskellLiquid = { link = "GruvboxPurpleBold" }, + haskellQuasiQuoted = { link = "GruvboxBlueBold" }, + haskellRecursiveDo = { link = "GruvboxPurple" }, + haskellQuotedType = { link = "GruvboxRed" }, + haskellPreProc = { link = "GruvboxFg4" }, + haskellTypeRoles = { link = "GruvboxRedBold" }, + haskellTypeForall = { link = "GruvboxRed" }, + haskellPatternKeyword = { link = "GruvboxBlue" }, + jsonKeyword = { link = "GruvboxGreen" }, + jsonQuote = { link = "GruvboxGreen" }, + jsonBraces = { link = "GruvboxFg1" }, + jsonString = { link = "GruvboxFg1" }, + mailQuoted1 = { link = "GruvboxAqua" }, + mailQuoted2 = { link = "GruvboxPurple" }, + mailQuoted3 = { link = "GruvboxYellow" }, + mailQuoted4 = { link = "GruvboxGreen" }, + mailQuoted5 = { link = "GruvboxRed" }, + mailQuoted6 = { link = "GruvboxOrange" }, + mailSignature = { link = "Comment" }, + csBraces = { link = "GruvboxFg1" }, + csEndColon = { link = "GruvboxFg1" }, + csLogicSymbols = { link = "GruvboxFg1" }, + csParens = { link = "GruvboxFg3" }, + csOpSymbols = { link = "GruvboxFg3" }, + csInterpolationDelimiter = { link = "GruvboxFg3" }, + csInterpolationAlignDel = { link = "GruvboxAquaBold" }, + csInterpolationFormat = { link = "GruvboxAqua" }, + csInterpolationFormatDel = { link = "GruvboxAquaBold" }, + rustSigil = { link = "GruvboxOrange" }, + rustEscape = { link = "GruvboxAqua" }, + rustStringContinuation = { link = "GruvboxAqua" }, + rustEnum = { link = "GruvboxAqua" }, + rustStructure = { link = "GruvboxAqua" }, + rustModPathSep = { link = "GruvboxFg2" }, + rustCommentLineDoc = { link = "Comment" }, + rustDefault = { link = "GruvboxAqua" }, + ocamlOperator = { link = "GruvboxFg1" }, + ocamlKeyChar = { link = "GruvboxOrange" }, + ocamlArrow = { link = "GruvboxOrange" }, + ocamlInfixOpKeyword = { link = "GruvboxRed" }, + ocamlConstructor = { link = "GruvboxOrange" }, + LspSagaCodeActionTitle = { link = "Title" }, + LspSagaCodeActionBorder = { link = "GruvboxFg1" }, + LspSagaCodeActionContent = { fg = colors.green, bold = config.bold }, + LspSagaLspFinderBorder = { link = "GruvboxFg1" }, + LspSagaAutoPreview = { link = "GruvboxOrange" }, + TargetWord = { fg = colors.blue, bold = config.bold }, + FinderSeparator = { link = "GruvboxAqua" }, + LspSagaDefPreviewBorder = { link = "GruvboxBlue" }, + LspSagaHoverBorder = { link = "GruvboxOrange" }, + LspSagaRenameBorder = { link = "GruvboxBlue" }, + LspSagaDiagnosticSource = { link = "GruvboxOrange" }, + LspSagaDiagnosticBorder = { link = "GruvboxPurple" }, + LspSagaDiagnosticHeader = { link = "GruvboxGreen" }, + LspSagaSignatureHelpBorder = { link = "GruvboxGreen" }, + SagaShadow = { link = "GruvboxBg0" }, + DashboardShortCut = { link = "GruvboxOrange" }, + DashboardHeader = { link = "GruvboxAqua" }, + DashboardCenter = { link = "GruvboxYellow" }, + DashboardFooter = { fg = colors.purple, italic = true }, + MasonHighlight = { link = "GruvboxAqua" }, + 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 = "GruvboxFg1" }, + CarbonExe = { link = "GruvboxYellow" }, + CarbonSymlink = { link = "GruvboxAqua" }, + CarbonBrokenSymlink = { link = "GruvboxRed" }, + CarbonIndicator = { link = "GruvboxGray" }, + CarbonDanger = { link = "GruvboxRed" }, + CarbonPending = { link = "GruvboxYellow" }, + 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 = "GruvboxBlue" }, + NotifyDEBUGIcon = { link = "GruvboxBlue" }, + NotifyDEBUGTitle = { link = "GruvboxBlue" }, + NotifyERRORBorder = { link = "GruvboxRed" }, + NotifyERRORIcon = { link = "GruvboxRed" }, + NotifyERRORTitle = { link = "GruvboxRed" }, + NotifyINFOBorder = { link = "GruvboxAqua" }, + NotifyINFOIcon = { link = "GruvboxAqua" }, + NotifyINFOTitle = { link = "GruvboxAqua" }, + NotifyTRACEBorder = { link = "GruvboxGreen" }, + NotifyTRACEIcon = { link = "GruvboxGreen" }, + NotifyTRACETitle = { link = "GruvboxGreen" }, + NotifyWARNBorder = { link = "GruvboxYellow" }, + NotifyWARNIcon = { link = "GruvboxYellow" }, + NotifyWARNTitle = { link = "GruvboxYellow" }, + 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 = "GruvboxYellow" }, + DapUIBreakpointsDisabledLine = { link = "GruvboxGray" }, + DapUIBreakpointsInfo = { link = "GruvboxAqua" }, + DapUIBreakpointsLine = { link = "GruvboxYellow" }, + DapUIBreakpointsPath = { link = "GruvboxBlue" }, + DapUICurrentFrameName = { link = "GruvboxPurple" }, + DapUIDecoration = { link = "GruvboxPurple" }, + DapUIEndofBuffer = { link = "EndOfBuffer" }, + DapUIFloatBorder = { link = "GruvboxAqua" }, + DapUILineNumber = { link = "GruvboxYellow" }, + DapUIModifiedValue = { link = "GruvboxRed" }, + DapUIPlayPause = { fg = colors.green, bg = colors.background_1 }, + DapUIRestart = { fg = colors.green, bg = colors.background_1 }, + DapUIScope = { link = "GruvboxBlue" }, + DapUISource = { link = "GruvboxFg1" }, + 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 = "GruvboxBlue" }, + DapUIThread = { link = "GruvboxBlue" }, + DapUIType = { link = "GruvboxOrange" }, + DapUIUnavailable = { link = "GruvboxGray" }, + DapUIWatchesEmpty = { link = "GruvboxGray" }, + DapUIWatchesError = { link = "GruvboxRed" }, + DapUIWatchesValue = { link = "GruvboxYellow" }, + DapUIWinSelect = { link = "GruvboxYellow" }, + NeogitDiffDelete = { link = "DiffDelete" }, + NeogitDiffAdd = { link = "DiffAdd" }, + NeogitHunkHeader = { link = "WinBar" }, + NeogitHunkHeaderHighlight = { link = "WinBarNC" }, + DiffviewStatusModified = { link = "GruvboxGreenBold" }, + DiffviewFilePanelInsertions = { link = "GruvboxGreenBold" }, + DiffviewFilePanelDeletions = { link = "GruvboxRedBold" }, + 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 = "GruvboxGreen" }, + MiniDepsChangeRemoved = { link = "GruvboxRed" }, + 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 = "GruvboxGreen" }, + MiniDiffSignChange = { link = "GruvboxAqua" }, + MiniDiffSignDelete = { link = "GruvboxRed" }, + MiniFilesBorder = { link = "FloatBorder" }, + MiniFilesBorderModified = { link = "DiagnosticFloatingWarn" }, + MiniFilesCursorLine = { bg = colors.background_2 }, + MiniFilesDirectory = { link = "Directory" }, + MiniFilesFile = { link = "GruvboxFg1" }, + MiniFilesNormal = { link = "NormalFloat" }, + MiniFilesTitle = { link = "FloatTitle" }, + MiniFilesTitleFocused = { link = "GruvboxOrangeBold" }, + 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 = "GruvboxBlue" }, + MiniIconsBlue = { link = "GruvboxBlue" }, + MiniIconsCyan = { link = "GruvboxAqua" }, + MiniIconsGreen = { link = "GruvboxGreen" }, + MiniIconsGrey = { link = "GruvboxFg0" }, + MiniIconsOrange = { link = "GruvboxOrange" }, + MiniIconsPurple = { link = "GruvboxPurple" }, + MiniIconsRed = { link = "GruvboxRed" }, + MiniIconsYellow = { link = "GruvboxYellow" }, + MiniIndentscopeSymbol = { link = "GruvboxGray" }, + MiniIndentscopeSymbolOff = { link = "GruvboxYellow" }, + MiniJump = { link = "GruvboxOrangeUnderline" }, + MiniJump2dDim = { link = "GruvboxGray" }, + 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 = "GruvboxGray" }, + 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 = "GruvboxRedBold" }, + MiniTestPass = { link = "GruvboxGreenBold" }, + 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 = "GruvboxRed" }, + ["@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 = "GruvboxFg1" }, + ["@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 = "GruvboxFg1" }, + ["@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 = "GruvboxGreen" }, + ["@markup.list.unchecked"] = { link = "GruvboxGray" }, + ["@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 = "GruvboxFg1" }, + ["@namespace"] = { link = "GruvboxFg1" }, + ["@symbol"] = { link = "Identifier" }, + ["@text"] = { link = "GruvboxFg1" }, + ["@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 = "GruvboxGreen" }, + ["@text.todo.unchecked"] = { link = "GruvboxGray" }, + ["@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") + 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" + vim.o.termguicolors = true - -- Apply highlight groups - local groups = get_groups(M.colors) + local groups = get_groups() + + -- add highlights 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 +return Darkbox