From facd7e7e31a26f4cbcc6f05d46ee41dbfd7a6104 Mon Sep 17 00:00:00 2001 From: Harivansh Rathi Date: Fri, 20 Mar 2026 13:35:57 -0400 Subject: [PATCH] Initial cozybox repo Import the current cozybox theme into the fresh repository and lighten the default blue accent. Co-authored-by: Codex --- Makefile | 11 + README.md | 32 + colors/cozybox.lua | 1 + doc/cozybox.nvim.txt | 151 ++++ lua/cozybox.lua | 1423 ++++++++++++++++++++++++++++++++ stylua.toml | 6 + tests/cozybox/cozybox_spec.lua | 169 ++++ tests/minimal_init.lua | 11 + 8 files changed, 1804 insertions(+) create mode 100644 Makefile create mode 100644 README.md create mode 100644 colors/cozybox.lua create mode 100644 doc/cozybox.nvim.txt create mode 100644 lua/cozybox.lua create mode 100644 stylua.toml create mode 100644 tests/cozybox/cozybox_spec.lua create mode 100644 tests/minimal_init.lua diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..54bc132 --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +TESTS_INIT=tests/minimal_init.lua +TESTS_DIR=tests/ + +.PHONY: test + +test: + @nvim \ + --headless \ + --noplugin \ + -u ${TESTS_INIT} \ + -c "PlenaryBustedDirectory ${TESTS_DIR} { minimal_init = '${TESTS_INIT}' }" diff --git a/README.md b/README.md new file mode 100644 index 0000000..c79f65a --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +# cozybox.nvim + +Cozybox is a warm, dark Neovim theme with nix-tuned blue and green accents, darker editor surfaces, and syntax overrides baked in. + +## Install + +```lua +{ "harivansh-afk/cozybox.nvim", priority = 1000 , config = true, opts = ...} +``` + +Neovim `0.8+`. + +## Enable + +```vim +set background=dark " or light if you want light mode +colorscheme cozybox +``` + +## Override + +```lua +require("cozybox").setup({ + transparent_mode = false, + palette_overrides = {}, + overrides = {}, +}) +vim.cmd("colorscheme cozybox") +``` + +The theme already defaults to the custom blue/green palette, hard contrast, darker editor surfaces, and syntax highlight tweaks from your nix config. +See `:h cozybox.nvim` or `lua/cozybox.lua` for the full option surface. diff --git a/colors/cozybox.lua b/colors/cozybox.lua new file mode 100644 index 0000000..7b1604e --- /dev/null +++ b/colors/cozybox.lua @@ -0,0 +1 @@ +require("cozybox").load() diff --git a/doc/cozybox.nvim.txt b/doc/cozybox.nvim.txt new file mode 100644 index 0000000..109e6c4 --- /dev/null +++ b/doc/cozybox.nvim.txt @@ -0,0 +1,151 @@ +*cozybox.nvim.txt* For Neovim >= 0.8.0 Last change: 2026 March 09 + +============================================================================== +Table of Contents *cozybox.nvim-table-of-contents* + +1. Prerequisites |cozybox.nvim-prerequisites| +2. Installing |cozybox.nvim-installing| + - Using packer |cozybox.nvim-installing-using-packer| + - Using lazy.nvim |cozybox.nvim-installing-using-lazy.nvim| + - Using vim-plug |cozybox.nvim-installing-using-vim-plug| +3. Basic Usage |cozybox.nvim-basic-usage| +4. Configuration |cozybox.nvim-configuration| + - Overriding |cozybox.nvim-configuration-overriding| +> +


cozybox.nvim

+ +< + + +Cozybox is a warm, dark Neovim theme with nix-tuned blue and green accents, +darker editor surfaces, and syntax overrides baked in. + + +============================================================================== +1. Prerequisites *cozybox.nvim-prerequisites* + +Neovim 0.8.0+ + + +============================================================================== +2. Installing *cozybox.nvim-installing* + + +USING PACKER *cozybox.nvim-installing-using-packer* + +>lua + use { "harivansh-afk/cozybox.nvim" } +< + + +USING LAZY.NVIM *cozybox.nvim-installing-using-lazy.nvim* + +>lua + { "harivansh-afk/cozybox.nvim", priority = 1000 , config = true, opts = ...} +< + + +USING VIM-PLUG *cozybox.nvim-installing-using-vim-plug* + +>vim + Plug 'harivansh-afk/cozybox.nvim' +< + + +============================================================================== +3. Basic Usage *cozybox.nvim-basic-usage* + +Inside `init.vim` + +>vim + set background=dark " or light if you want light mode + colorscheme cozybox +< + +Inside `init.lua` + +>lua + vim.o.background = "dark" -- or "light" for light mode + vim.cmd([[colorscheme cozybox]]) +< + + +============================================================================== +4. Configuration *cozybox.nvim-configuration* + +Cozybox ships with the nix palette overrides and surface tweaks as defaults. +A minimal setup looks like this: + +>lua + require("cozybox").setup({ + contrast = "hard", + palette_overrides = { + bright_blue = "#5b84de", + neutral_blue = "#5b84de", + faded_blue = "#6c86c8", + bright_green = "#8ec97c", + neutral_green = "#8ec97c", + faded_green = "#6fae70", + }, + }) + vim.cmd("colorscheme cozybox") +< + +Call `setup()` before `colorscheme` if you want to layer more overrides on top +of the cozybox defaults. + + +OVERRIDING *cozybox.nvim-configuration-overriding* + + +PALETTE ~ + +You can specify your own palette colors. For example: + +>lua + require("cozybox").setup({ + palette_overrides = { + bright_green = "#990000", + } + }) + vim.cmd("colorscheme cozybox") +< + + +HIGHLIGHT GROUPS ~ + +If you don’t enjoy the current color for a specific highlight group, now you +can just override it in the setup. For example: + +>lua + require("cozybox").setup({ + overrides = { + SignColumn = {bg = "#ff9900"} + } + }) + vim.cmd("colorscheme cozybox") +< + +It also works with treesitter groups and lsp semantic highlight tokens + +>lua + require("cozybox").setup({ + overrides = { + ["@lsp.type.method"] = { bg = "#ff9900" }, + ["@comment.lua"] = { bg = "#000000" }, + } + }) + vim.cmd("colorscheme cozybox") +< + +Please note that the override values must follow the attributes from the +highlight group map, such as: + +- **fg** - foreground color +- **bg** - background color +- **bold** - true or false for bold font +- **italic** - true or false for italic font + +Other values can be seen in |`synIDattr`| + +vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/lua/cozybox.lua b/lua/cozybox.lua new file mode 100644 index 0000000..c4c7582 --- /dev/null +++ b/lua/cozybox.lua @@ -0,0 +1,1423 @@ +---@class Cozybox +---@field config CozyboxConfig +---@field palette CozyboxPalette +local Cozybox = {} + +---@alias Contrast "hard" | "soft" | "" + +---@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 CozyboxConfig +---@field bold boolean? +---@field contrast Contrast? +---@field dim_inactive boolean? +---@field inverse boolean? +---@field invert_selection boolean? +---@field invert_signs boolean? +---@field invert_tabline boolean? +---@field italic ItalicConfig? +---@field overrides table? +---@field palette_overrides table? +---@field strikethrough boolean? +---@field terminal_colors boolean? +---@field transparent_mode boolean? +---@field undercurl boolean? +---@field underline boolean? +local default_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, + inverse = true, + contrast = "hard", + palette_overrides = { + bright_blue = "#5b84de", + neutral_blue = "#5b84de", + faded_blue = "#6c86c8", + bright_green = "#8ec97c", + neutral_green = "#8ec97c", + faded_green = "#6fae70", + }, + overrides = { + MatchParen = { bold = true, underline = true, fg = "#d8a657", bg = "#3c3836" }, + Normal = { bg = "#181818" }, + NormalFloat = { bg = "#181818" }, + SignColumn = { bg = "#181818" }, + StatusLine = { bg = "#181818" }, + StatusLineNC = { bg = "#181818" }, + GitSignsAdd = { fg = "#a9b665", bg = "#181818" }, + GitSignsChange = { fg = "#d8a657", bg = "#181818" }, + GitSignsDelete = { fg = "#ea6962", bg = "#181818" }, + GitSignsTopdelete = { fg = "#ea6962", bg = "#181818" }, + GitSignsChangedelete = { fg = "#d8a657", bg = "#181818" }, + GitSignsUntracked = { fg = "#7daea3", bg = "#181818" }, + GitSignsStagedAdd = { fg = "#6c7842", bg = "#181818" }, + GitSignsStagedChange = { fg = "#8a6d39", bg = "#181818" }, + GitSignsStagedDelete = { fg = "#94433f", bg = "#181818" }, + GitSignsStagedTopdelete = { fg = "#94433f", bg = "#181818" }, + GitSignsStagedChangedelete = { fg = "#8a6d39", bg = "#181818" }, + LineNr = { bg = "#181818" }, + CursorLineNr = { bg = "#181818" }, + CursorLine = { bg = "#1e1e1e" }, + FoldColumn = { bg = "#181818" }, + DiffAdd = { bg = "#1e2718" }, + DiffChange = { bg = "#1e1e18" }, + DiffDelete = { bg = "#2a1818" }, + }, + dim_inactive = false, + transparent_mode = false, +} + +Cozybox.config = vim.deepcopy(default_config) + +-- main cozybox color palette +---@class CozyboxPalette +Cozybox.palette = { + dark0_hard = "#1d2021", + dark0 = "#282828", + dark0_soft = "#32302f", + dark1 = "#3c3836", + dark2 = "#504945", + dark3 = "#665c54", + dark4 = "#7c6f64", + light0_hard = "#f9f5d7", + light0 = "#fbf1c7", + light0_soft = "#f2e5bc", + light1 = "#ebdbb2", + light2 = "#d5c4a1", + light3 = "#bdae93", + light4 = "#a89984", + bright_red = "#fb4934", + bright_green = "#b8bb26", + bright_yellow = "#fabd2f", + bright_blue = "#83a598", + bright_purple = "#d3869b", + bright_aqua = "#8ec07c", + bright_orange = "#fe8019", + neutral_red = "#cc241d", + neutral_green = "#98971a", + neutral_yellow = "#d79921", + neutral_blue = "#458588", + neutral_purple = "#b16286", + neutral_aqua = "#689d6a", + neutral_orange = "#d65d0e", + faded_red = "#9d0006", + faded_green = "#79740e", + faded_yellow = "#b57614", + faded_blue = "#076678", + faded_purple = "#8f3f71", + faded_aqua = "#427b58", + faded_orange = "#af3a03", + dark_red_hard = "#792329", + dark_red = "#722529", + dark_red_soft = "#7b2c2f", + light_red_hard = "#fc9690", + light_red = "#fc9487", + light_red_soft = "#f78b7f", + dark_green_hard = "#5a633a", + dark_green = "#62693e", + dark_green_soft = "#686d43", + light_green_hard = "#d3d6a5", + light_green = "#d5d39b", + light_green_soft = "#cecb94", + dark_aqua_hard = "#3e4934", + dark_aqua = "#49503b", + dark_aqua_soft = "#525742", + light_aqua_hard = "#e6e9c1", + light_aqua = "#e8e5b5", + light_aqua_soft = "#e1dbac", + gray = "#928374", +} + +-- get a hex list of cozybox colors based on current bg and constrast config +local function get_colors() + local p = Cozybox.palette + local config = Cozybox.config + + for color, hex in pairs(config.palette_overrides) do + p[color] = hex + end + + local bg = vim.o.background + local contrast = config.contrast + + local color_groups = { + dark = { + bg0 = p.dark0, + bg1 = p.dark1, + bg2 = p.dark2, + bg3 = p.dark3, + bg4 = p.dark4, + fg0 = p.light0, + fg1 = p.light1, + fg2 = p.light2, + fg3 = p.light3, + fg4 = p.light4, + red = p.bright_red, + green = p.bright_green, + yellow = p.bright_yellow, + blue = p.bright_blue, + purple = p.bright_purple, + aqua = p.bright_aqua, + orange = p.bright_orange, + neutral_red = p.neutral_red, + neutral_green = p.neutral_green, + neutral_yellow = p.neutral_yellow, + neutral_blue = p.neutral_blue, + neutral_purple = p.neutral_purple, + neutral_aqua = p.neutral_aqua, + dark_red = p.dark_red, + dark_green = p.dark_green, + dark_aqua = p.dark_aqua, + gray = p.gray, + }, + light = { + bg0 = p.light0, + bg1 = p.light1, + bg2 = p.light2, + bg3 = p.light3, + bg4 = p.light4, + fg0 = p.dark0, + fg1 = p.dark1, + fg2 = p.dark2, + fg3 = p.dark3, + fg4 = p.dark4, + red = p.faded_red, + green = p.faded_green, + yellow = p.faded_yellow, + blue = p.faded_blue, + purple = p.faded_purple, + aqua = p.faded_aqua, + orange = p.faded_orange, + neutral_red = p.neutral_red, + neutral_green = p.neutral_green, + neutral_yellow = p.neutral_yellow, + neutral_blue = p.neutral_blue, + neutral_purple = p.neutral_purple, + neutral_aqua = p.neutral_aqua, + dark_red = p.light_red, + dark_green = p.light_green, + dark_aqua = p.light_aqua, + gray = p.gray, + }, + } + + if contrast ~= nil and contrast ~= "" then + color_groups[bg].bg0 = p[bg .. "0_" .. contrast] + color_groups[bg].dark_red = p[bg .. "_red_" .. contrast] + color_groups[bg].dark_green = p[bg .. "_green_" .. contrast] + color_groups[bg].dark_aqua = p[bg .. "_aqua_" .. contrast] + end + + return color_groups[bg] +end + +local function get_groups() + local colors = get_colors() + local config = Cozybox.config + + if config.terminal_colors then + local term_colors = { + colors.bg0, + colors.neutral_red, + colors.neutral_green, + colors.neutral_yellow, + colors.neutral_blue, + colors.neutral_purple, + colors.neutral_aqua, + colors.fg4, + colors.gray, + colors.red, + colors.green, + colors.yellow, + colors.blue, + colors.purple, + colors.aqua, + colors.fg1, + } + for index, value in ipairs(term_colors) do + vim.g["terminal_color_" .. index - 1] = value + end + end + + local groups = { + CozyboxFg0 = { fg = colors.fg0 }, + CozyboxFg1 = { fg = colors.fg1 }, + CozyboxFg2 = { fg = colors.fg2 }, + CozyboxFg3 = { fg = colors.fg3 }, + CozyboxFg4 = { fg = colors.fg4 }, + CozyboxGray = { fg = colors.gray }, + CozyboxBg0 = { fg = colors.bg0 }, + CozyboxBg1 = { fg = colors.bg1 }, + CozyboxBg2 = { fg = colors.bg2 }, + CozyboxBg3 = { fg = colors.bg3 }, + CozyboxBg4 = { fg = colors.bg4 }, + CozyboxRed = { fg = colors.red }, + CozyboxRedBold = { fg = colors.red, bold = config.bold }, + CozyboxGreen = { fg = colors.green }, + CozyboxGreenBold = { fg = colors.green, bold = config.bold }, + CozyboxYellow = { fg = colors.yellow }, + CozyboxYellowBold = { fg = colors.yellow, bold = config.bold }, + CozyboxBlue = { fg = colors.blue }, + CozyboxBlueBold = { fg = colors.blue, bold = config.bold }, + CozyboxPurple = { fg = colors.purple }, + CozyboxPurpleBold = { fg = colors.purple, bold = config.bold }, + CozyboxAqua = { fg = colors.aqua }, + CozyboxAquaBold = { fg = colors.aqua, bold = config.bold }, + CozyboxOrange = { fg = colors.orange }, + CozyboxOrangeBold = { fg = colors.orange, bold = config.bold }, + CozyboxRedSign = config.transparent_mode and { fg = colors.red, reverse = config.invert_signs } + or { fg = colors.red, bg = colors.bg1, reverse = config.invert_signs }, + CozyboxGreenSign = config.transparent_mode and { fg = colors.green, reverse = config.invert_signs } + or { fg = colors.green, bg = colors.bg1, reverse = config.invert_signs }, + CozyboxYellowSign = config.transparent_mode and { fg = colors.yellow, reverse = config.invert_signs } + or { fg = colors.yellow, bg = colors.bg1, reverse = config.invert_signs }, + CozyboxBlueSign = config.transparent_mode and { fg = colors.blue, reverse = config.invert_signs } + or { fg = colors.blue, bg = colors.bg1, reverse = config.invert_signs }, + CozyboxPurpleSign = config.transparent_mode and { fg = colors.purple, reverse = config.invert_signs } + or { fg = colors.purple, bg = colors.bg1, reverse = config.invert_signs }, + CozyboxAquaSign = config.transparent_mode and { fg = colors.aqua, reverse = config.invert_signs } + or { fg = colors.aqua, bg = colors.bg1, reverse = config.invert_signs }, + CozyboxOrangeSign = config.transparent_mode and { fg = colors.orange, reverse = config.invert_signs } + or { fg = colors.orange, bg = colors.bg1, reverse = config.invert_signs }, + CozyboxRedUnderline = { undercurl = config.undercurl, sp = colors.red }, + CozyboxGreenUnderline = { undercurl = config.undercurl, sp = colors.green }, + CozyboxYellowUnderline = { undercurl = config.undercurl, sp = colors.yellow }, + CozyboxBlueUnderline = { undercurl = config.undercurl, sp = colors.blue }, + CozyboxPurpleUnderline = { undercurl = config.undercurl, sp = colors.purple }, + CozyboxAquaUnderline = { undercurl = config.undercurl, sp = colors.aqua }, + CozyboxOrangeUnderline = { undercurl = config.undercurl, sp = colors.orange }, + Normal = config.transparent_mode and { fg = colors.fg1, bg = nil } or { fg = colors.fg1, bg = colors.bg0 }, + NormalFloat = config.transparent_mode and { fg = colors.fg1, bg = nil } or { fg = colors.fg1, bg = colors.bg1 }, + NormalNC = config.dim_inactive and { fg = colors.fg0, bg = colors.bg1 } or { link = "Normal" }, + CursorLine = { bg = colors.bg1 }, + CursorColumn = { link = "CursorLine" }, + TabLineFill = { fg = colors.bg4, bg = colors.bg1, reverse = config.invert_tabline }, + TabLineSel = { fg = colors.green, bg = colors.bg1, reverse = config.invert_tabline }, + TabLine = { link = "TabLineFill" }, + MatchParen = { bg = colors.bg3, bold = config.bold }, + ColorColumn = { bg = colors.bg1 }, + Conceal = { fg = colors.blue }, + CursorLineNr = { fg = colors.yellow, bg = colors.bg1 }, + NonText = { link = "CozyboxBg2" }, + SpecialKey = { link = "CozyboxFg4" }, + Visual = { bg = colors.bg3, reverse = config.invert_selection }, + VisualNOS = { link = "Visual" }, + Search = { fg = colors.yellow, bg = colors.bg0, reverse = config.inverse }, + IncSearch = { fg = colors.orange, bg = colors.bg0, reverse = config.inverse }, + CurSearch = { link = "IncSearch" }, + QuickFixLine = { link = "CozyboxPurple" }, + Underlined = { fg = colors.blue, underline = config.underline }, + StatusLine = { fg = colors.fg1, bg = colors.bg2 }, + StatusLineNC = { fg = colors.fg4, bg = colors.bg1 }, + WinBar = { fg = colors.fg4, bg = colors.bg0 }, + WinBarNC = { fg = colors.fg3, bg = colors.bg1 }, + WinSeparator = config.transparent_mode and { fg = colors.bg3, bg = nil } or { fg = colors.bg3, bg = colors.bg0 }, + WildMenu = { fg = colors.blue, bg = colors.bg2, bold = config.bold }, + Directory = { link = "CozyboxGreenBold" }, + Title = { link = "CozyboxGreenBold" }, + ErrorMsg = { fg = colors.bg0, bg = colors.red, bold = config.bold }, + MoreMsg = { link = "CozyboxYellowBold" }, + ModeMsg = { link = "CozyboxYellowBold" }, + Question = { link = "CozyboxOrangeBold" }, + WarningMsg = { link = "CozyboxRedBold" }, + LineNr = { fg = colors.bg4 }, + SignColumn = config.transparent_mode and { bg = nil } or { bg = colors.bg1 }, + Folded = { fg = colors.gray, bg = colors.bg1, italic = config.italic.folds }, + FoldColumn = config.transparent_mode and { fg = colors.gray, bg = nil } or { fg = colors.gray, bg = colors.bg1 }, + Cursor = { reverse = config.inverse }, + vCursor = { link = "Cursor" }, + iCursor = { link = "Cursor" }, + lCursor = { link = "Cursor" }, + Special = { link = "CozyboxOrange" }, + Comment = { fg = colors.gray, italic = config.italic.comments }, + Todo = { fg = colors.bg0, 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 = "CozyboxRed" }, + Conditional = { link = "CozyboxRed" }, + Repeat = { link = "CozyboxRed" }, + Label = { link = "CozyboxRed" }, + Exception = { link = "CozyboxRed" }, + Operator = { fg = colors.fg3, italic = config.italic.operators }, + Keyword = { link = "CozyboxRed" }, + Identifier = { link = "CozyboxBlue" }, + Function = { link = "CozyboxGreenBold" }, + PreProc = { link = "CozyboxAqua" }, + Include = { link = "CozyboxAqua" }, + Define = { link = "CozyboxAqua" }, + Macro = { link = "CozyboxAqua" }, + PreCondit = { link = "CozyboxAqua" }, + Constant = { link = "CozyboxPurple" }, + Character = { link = "CozyboxPurple" }, + String = { fg = colors.green, italic = config.italic.strings }, + Boolean = { link = "CozyboxPurple" }, + Number = { link = "CozyboxPurple" }, + Float = { link = "CozyboxPurple" }, + Type = { link = "CozyboxYellow" }, + StorageClass = { link = "CozyboxOrange" }, + Structure = { link = "CozyboxAqua" }, + Typedef = { link = "CozyboxYellow" }, + Pmenu = { fg = colors.fg1, bg = colors.bg2 }, + PmenuSel = { fg = colors.bg2, bg = colors.blue, bold = config.bold }, + PmenuSbar = { bg = colors.bg2 }, + PmenuThumb = { bg = colors.bg4 }, + DiffDelete = { bg = colors.dark_red }, + DiffAdd = { bg = colors.dark_green }, + DiffChange = { bg = colors.dark_aqua }, + DiffText = { bg = colors.yellow, fg = colors.bg0 }, + SpellCap = { link = "CozyboxBlueUnderline" }, + SpellBad = { link = "CozyboxRedUnderline" }, + SpellLocal = { link = "CozyboxAquaUnderline" }, + SpellRare = { link = "CozyboxPurpleUnderline" }, + Whitespace = { fg = colors.bg2 }, + Delimiter = { fg = colors.fg3 }, + EndOfBuffer = { link = "NonText" }, + DiagnosticError = { link = "CozyboxRed" }, + DiagnosticWarn = { link = "CozyboxYellow" }, + DiagnosticInfo = { link = "CozyboxBlue" }, + DiagnosticDeprecated = { strikethrough = config.strikethrough }, + DiagnosticHint = { link = "CozyboxAqua" }, + DiagnosticOk = { link = "CozyboxGreen" }, + DiagnosticSignError = { link = "CozyboxRedSign" }, + DiagnosticSignWarn = { link = "CozyboxYellowSign" }, + DiagnosticSignInfo = { link = "CozyboxBlueSign" }, + DiagnosticSignHint = { link = "CozyboxAquaSign" }, + DiagnosticSignOk = { link = "CozyboxGreenSign" }, + DiagnosticUnderlineError = { link = "CozyboxRedUnderline" }, + DiagnosticUnderlineWarn = { link = "CozyboxYellowUnderline" }, + DiagnosticUnderlineInfo = { link = "CozyboxBlueUnderline" }, + DiagnosticUnderlineHint = { link = "CozyboxAquaUnderline" }, + DiagnosticUnderlineOk = { link = "CozyboxGreenUnderline" }, + DiagnosticFloatingError = { link = "CozyboxRed" }, + DiagnosticFloatingWarn = { link = "CozyboxOrange" }, + DiagnosticFloatingInfo = { link = "CozyboxBlue" }, + DiagnosticFloatingHint = { link = "CozyboxAqua" }, + DiagnosticFloatingOk = { link = "CozyboxGreen" }, + DiagnosticVirtualTextError = { link = "CozyboxRed" }, + DiagnosticVirtualTextWarn = { link = "CozyboxYellow" }, + DiagnosticVirtualTextInfo = { link = "CozyboxBlue" }, + DiagnosticVirtualTextHint = { link = "CozyboxAqua" }, + DiagnosticVirtualTextOk = { link = "CozyboxGreen" }, + LspReferenceRead = { link = "CozyboxYellowBold" }, + LspReferenceTarget = { link = "Visual" }, + LspReferenceText = { link = "CozyboxYellowBold" }, + LspReferenceWrite = { link = "CozyboxOrangeBold" }, + LspCodeLens = { link = "CozyboxGray" }, + LspSignatureActiveParameter = { link = "Search" }, + gitcommitSelectedFile = { link = "CozyboxGreen" }, + gitcommitDiscardedFile = { link = "CozyboxRed" }, + GitSignsAdd = { link = "CozyboxGreen" }, + GitSignsChange = { link = "CozyboxOrange" }, + GitSignsDelete = { link = "CozyboxRed" }, + 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 = "CozyboxRedSign" }, + StartifyBracket = { link = "CozyboxFg3" }, + StartifyFile = { link = "CozyboxFg1" }, + StartifyNumber = { link = "CozyboxBlue" }, + StartifyPath = { link = "CozyboxGray" }, + StartifySlash = { link = "CozyboxGray" }, + StartifySection = { link = "CozyboxYellow" }, + StartifySpecial = { link = "CozyboxBg2" }, + StartifyHeader = { link = "CozyboxOrange" }, + StartifyFooter = { link = "CozyboxBg2" }, + StartifyVar = { link = "StartifyPath" }, + StartifySelect = { link = "Title" }, + DirvishPathTail = { link = "CozyboxAqua" }, + DirvishArg = { link = "CozyboxYellow" }, + netrwDir = { link = "CozyboxAqua" }, + netrwClassify = { link = "CozyboxAqua" }, + netrwLink = { link = "CozyboxGray" }, + netrwSymLink = { link = "CozyboxFg1" }, + netrwExe = { link = "CozyboxYellow" }, + netrwComment = { link = "CozyboxGray" }, + netrwList = { link = "CozyboxBlue" }, + netrwHelpCmd = { link = "CozyboxAqua" }, + netrwCmdSep = { link = "CozyboxFg3" }, + netrwVersion = { link = "CozyboxGreen" }, + NERDTreeDir = { link = "CozyboxAqua" }, + NERDTreeDirSlash = { link = "CozyboxAqua" }, + NERDTreeOpenable = { link = "CozyboxOrange" }, + NERDTreeClosable = { link = "CozyboxOrange" }, + NERDTreeFile = { link = "CozyboxFg1" }, + NERDTreeExecFile = { link = "CozyboxYellow" }, + NERDTreeUp = { link = "CozyboxGray" }, + NERDTreeCWD = { link = "CozyboxGreen" }, + NERDTreeHelp = { link = "CozyboxFg1" }, + NERDTreeToggleOn = { link = "CozyboxGreen" }, + NERDTreeToggleOff = { link = "CozyboxRed" }, + CocErrorSign = { link = "CozyboxRedSign" }, + CocWarningSign = { link = "CozyboxOrangeSign" }, + CocInfoSign = { link = "CozyboxBlueSign" }, + CocHintSign = { link = "CozyboxAquaSign" }, + CocErrorFloat = { link = "CozyboxRed" }, + CocWarningFloat = { link = "CozyboxOrange" }, + CocInfoFloat = { link = "CozyboxBlue" }, + CocHintFloat = { link = "CozyboxAqua" }, + CocDiagnosticsError = { link = "CozyboxRed" }, + CocDiagnosticsWarning = { link = "CozyboxOrange" }, + CocDiagnosticsInfo = { link = "CozyboxBlue" }, + CocDiagnosticsHint = { link = "CozyboxAqua" }, + CocSearch = { link = "CozyboxBlue" }, + CocSelectedText = { link = "CozyboxRed" }, + CocMenuSel = { link = "PmenuSel" }, + CocCodeLens = { link = "CozyboxGray" }, + CocErrorHighlight = { link = "CozyboxRedUnderline" }, + CocWarningHighlight = { link = "CozyboxOrangeUnderline" }, + CocInfoHighlight = { link = "CozyboxBlueUnderline" }, + CocHintHighlight = { link = "CozyboxAquaUnderline" }, + SnacksPicker = { link = "CozyboxFg1" }, + SnacksPickerBorder = { link = "SnacksPicker" }, + SnacksPickerListCursorLine = { link = "CursorLine" }, + SnacksPickerMatch = { link = "CozyboxOrange" }, + SnacksPickerPrompt = { link = "CozyboxRed" }, + SnacksPickerTitle = { link = "SnacksPicker" }, + SnacksPickerDir = { link = "CozyboxGray" }, + SnacksPickerPathHidden = { link = "CozyboxGray" }, + SnacksPickerGitStatusUntracked = { link = "CozyboxGray" }, + SnacksPickerPathIgnored = { link = "CozyboxBg3" }, + TelescopeNormal = { link = "CozyboxFg1" }, + TelescopeSelection = { link = "CursorLine" }, + TelescopeSelectionCaret = { link = "CozyboxRed" }, + TelescopeMultiSelection = { link = "CozyboxGray" }, + TelescopeBorder = { link = "TelescopeNormal" }, + TelescopePromptBorder = { link = "TelescopeNormal" }, + TelescopeResultsBorder = { link = "TelescopeNormal" }, + TelescopePreviewBorder = { link = "TelescopeNormal" }, + TelescopeMatching = { link = "CozyboxOrange" }, + TelescopePromptPrefix = { link = "CozyboxRed" }, + TelescopePrompt = { link = "TelescopeNormal" }, + CmpItemAbbr = { link = "CozyboxFg0" }, + CmpItemAbbrDeprecated = { link = "CozyboxFg1" }, + CmpItemAbbrMatch = { link = "CozyboxBlueBold" }, + CmpItemAbbrMatchFuzzy = { link = "CozyboxBlueUnderline" }, + CmpItemMenu = { link = "CozyboxGray" }, + CmpItemKindText = { link = "CozyboxOrange" }, + CmpItemKindVariable = { link = "CozyboxOrange" }, + CmpItemKindMethod = { link = "CozyboxBlue" }, + CmpItemKindFunction = { link = "CozyboxBlue" }, + CmpItemKindConstructor = { link = "CozyboxYellow" }, + CmpItemKindUnit = { link = "CozyboxBlue" }, + CmpItemKindField = { link = "CozyboxBlue" }, + CmpItemKindClass = { link = "CozyboxYellow" }, + CmpItemKindInterface = { link = "CozyboxYellow" }, + CmpItemKindModule = { link = "CozyboxBlue" }, + CmpItemKindProperty = { link = "CozyboxBlue" }, + CmpItemKindValue = { link = "CozyboxOrange" }, + CmpItemKindEnum = { link = "CozyboxYellow" }, + CmpItemKindOperator = { link = "CozyboxYellow" }, + CmpItemKindKeyword = { link = "CozyboxPurple" }, + CmpItemKindEvent = { link = "CozyboxPurple" }, + CmpItemKindReference = { link = "CozyboxPurple" }, + CmpItemKindColor = { link = "CozyboxPurple" }, + CmpItemKindSnippet = { link = "CozyboxGreen" }, + CmpItemKindFile = { link = "CozyboxBlue" }, + CmpItemKindFolder = { link = "CozyboxBlue" }, + CmpItemKindEnumMember = { link = "CozyboxAqua" }, + CmpItemKindConstant = { link = "CozyboxOrange" }, + CmpItemKindStruct = { link = "CozyboxYellow" }, + CmpItemKindTypeParameter = { link = "CozyboxYellow" }, + CmpItemKindTextIcon = { link = "CmpItemKindText" }, + CmpItemKindVariableIcon = { link = "CmpItemKindVariable" }, + CmpItemKindMethodIcon = { link = "CmpItemKindMethod" }, + CmpItemKindFunctionIcon = { link = "CmpItemKindFunction" }, + CmpItemKindConstructorIcon = { link = "CmpItemKindConstructor" }, + CmpItemKindUnitIcon = { link = "CmpItemKindUnit" }, + CmpItemKindFieldIcon = { link = "CmpItemKindField" }, + CmpItemKindClassIcon = { link = "CmpItemKindClass" }, + CmpItemKindInterfaceIcon = { link = "CmpItemKindInterface" }, + CmpItemKindModuleIcon = { link = "CmpItemKindModule" }, + CmpItemKindPropertyIcon = { link = "CmpItemKindProperty" }, + CmpItemKindValueIcon = { link = "CmpItemKindValue" }, + CmpItemKindEnumIcon = { link = "CmpItemKindEnum" }, + CmpItemKindOperatorIcon = { link = "CmpItemKindOperator" }, + CmpItemKindKeywordIcon = { link = "CmpItemKindKeyword" }, + CmpItemKindEventIcon = { link = "CmpItemKindEvent" }, + CmpItemKindReferenceIcon = { link = "CmpItemKindReference" }, + CmpItemKindColorIcon = { link = "CmpItemKindColor" }, + CmpItemKindSnippetIcon = { link = "CmpItemKindSnippet" }, + CmpItemKindFileIcon = { link = "CmpItemKindFile" }, + CmpItemKindFolderIcon = { link = "CmpItemKindFolder" }, + CmpItemKindEnumMemberIcon = { link = "CmpItemKindEnumMember" }, + CmpItemKindConstantIcon = { link = "CmpItemKindConstant" }, + CmpItemKindStructIcon = { link = "CmpItemKindStruct" }, + CmpItemKindTypeParameterIcon = { link = "CmpItemKindTypeParameter" }, + BlinkPairsRed = { link = "CozyboxRed" }, + BlinkPairsOrange = { link = "CozyboxOrange" }, + BlinkPairsYellow = { link = "CozyboxYellow" }, + BlinkPairsGreen = { link = "CozyboxGreen" }, + BlinkPairsBlue = { link = "CozyboxBlue" }, + BlinkPairsCyan = { link = "CozyboxAqua" }, + BlinkPairsPurple = { link = "CozyboxPurple" }, + BlinkIndentRed = { link = "CozyboxRed" }, + BlinkIndentOrange = { link = "CozyboxOrange" }, + BlinkIndentYellow = { link = "CozyboxYellow" }, + BlinkIndentGreen = { link = "CozyboxGreen" }, + BlinkIndentBlue = { link = "CozyboxBlue" }, + BlinkIndentCyan = { link = "CozyboxAqua" }, + BlinkIndentViolet = { link = "CozyboxPurple" }, + BlinkIndentRedUnderline = { underline = true, sp = colors.red }, + BlinkIndentOrangeUnderline = { underline = true, sp = colors.orange }, + BlinkIndentYellowUnderline = { underline = true, sp = colors.yellow }, + BlinkIndentGreenUnderline = { underline = true, sp = colors.green }, + BlinkIndentBlueUnderline = { underline = true, sp = colors.blue }, + BlinkIndentCyanUnderline = { underline = true, sp = colors.aqua }, + BlinkIndentVioletUnderline = { underline = true, sp = colors.purple }, + BlinkCmpLabel = { link = "CozyboxFg0" }, + BlinkCmpLabelDeprecated = { link = "CozyboxFg1" }, + BlinkCmpLabelMatch = { link = "CozyboxBlueBold" }, + BlinkCmpLabelDetail = { link = "CozyboxGray" }, + BlinkCmpLabelDescription = { link = "CozyboxGray" }, + BlinkCmpKindText = { link = "CozyboxOrange" }, + BlinkCmpKindVariable = { link = "CozyboxOrange" }, + BlinkCmpKindMethod = { link = "CozyboxBlue" }, + BlinkCmpKindFunction = { link = "CozyboxBlue" }, + BlinkCmpKindConstructor = { link = "CozyboxYellow" }, + BlinkCmpKindUnit = { link = "CozyboxBlue" }, + BlinkCmpKindField = { link = "CozyboxBlue" }, + BlinkCmpKindClass = { link = "CozyboxYellow" }, + BlinkCmpKindInterface = { link = "CozyboxYellow" }, + BlinkCmpKindModule = { link = "CozyboxBlue" }, + BlinkCmpKindProperty = { link = "CozyboxBlue" }, + BlinkCmpKindValue = { link = "CozyboxOrange" }, + BlinkCmpKindEnum = { link = "CozyboxYellow" }, + BlinkCmpKindOperator = { link = "CozyboxYellow" }, + BlinkCmpKindKeyword = { link = "CozyboxPurple" }, + BlinkCmpKindEvent = { link = "CozyboxPurple" }, + BlinkCmpKindReference = { link = "CozyboxPurple" }, + BlinkCmpKindColor = { link = "CozyboxPurple" }, + BlinkCmpKindSnippet = { link = "CozyboxGreen" }, + BlinkCmpKindFile = { link = "CozyboxBlue" }, + BlinkCmpKindFolder = { link = "CozyboxBlue" }, + BlinkCmpKindEnumMember = { link = "CozyboxAqua" }, + BlinkCmpKindConstant = { link = "CozyboxOrange" }, + BlinkCmpKindStruct = { link = "CozyboxYellow" }, + BlinkCmpKindTypeParameter = { link = "CozyboxYellow" }, + BlinkCmpSource = { link = "CozyboxGray" }, + BlinkCmpGhostText = { link = "CozyboxBg4" }, + diffAdded = { link = "DiffAdd" }, + diffRemoved = { link = "DiffDelete" }, + diffChanged = { link = "DiffChange" }, + diffFile = { link = "CozyboxOrange" }, + diffNewFile = { link = "CozyboxYellow" }, + diffOldFile = { link = "CozyboxOrange" }, + diffLine = { link = "CozyboxBlue" }, + diffIndexLine = { link = "diffChanged" }, + NavicIconsFile = { link = "CozyboxBlue" }, + NavicIconsModule = { link = "CozyboxOrange" }, + NavicIconsNamespace = { link = "CozyboxBlue" }, + NavicIconsPackage = { link = "CozyboxAqua" }, + NavicIconsClass = { link = "CozyboxYellow" }, + NavicIconsMethod = { link = "CozyboxBlue" }, + NavicIconsProperty = { link = "CozyboxAqua" }, + NavicIconsField = { link = "CozyboxPurple" }, + NavicIconsConstructor = { link = "CozyboxBlue" }, + NavicIconsEnum = { link = "CozyboxPurple" }, + NavicIconsInterface = { link = "CozyboxGreen" }, + NavicIconsFunction = { link = "CozyboxBlue" }, + NavicIconsVariable = { link = "CozyboxPurple" }, + NavicIconsConstant = { link = "CozyboxOrange" }, + NavicIconsString = { link = "CozyboxGreen" }, + NavicIconsNumber = { link = "CozyboxOrange" }, + NavicIconsBoolean = { link = "CozyboxOrange" }, + NavicIconsArray = { link = "CozyboxOrange" }, + NavicIconsObject = { link = "CozyboxOrange" }, + NavicIconsKey = { link = "CozyboxAqua" }, + NavicIconsNull = { link = "CozyboxOrange" }, + NavicIconsEnumMember = { link = "CozyboxYellow" }, + NavicIconsStruct = { link = "CozyboxPurple" }, + NavicIconsEvent = { link = "CozyboxYellow" }, + NavicIconsOperator = { link = "CozyboxRed" }, + NavicIconsTypeParameter = { link = "CozyboxRed" }, + NavicText = { link = "CozyboxWhite" }, + NavicSeparator = { link = "CozyboxWhite" }, + htmlTag = { link = "CozyboxAquaBold" }, + htmlEndTag = { link = "CozyboxAquaBold" }, + htmlTagName = { link = "CozyboxBlue" }, + htmlArg = { link = "CozyboxOrange" }, + htmlTagN = { link = "CozyboxFg1" }, + htmlSpecialTagName = { link = "CozyboxBlue" }, + htmlLink = { fg = colors.fg4, underline = config.underline }, + htmlSpecialChar = { link = "CozyboxRed" }, + htmlBold = { fg = colors.fg0, bg = colors.bg0, bold = config.bold }, + htmlBoldUnderline = { fg = colors.fg0, bg = colors.bg0, bold = config.bold, underline = config.underline }, + htmlBoldItalic = { fg = colors.fg0, bg = colors.bg0, bold = config.bold, italic = true }, + htmlBoldUnderlineItalic = { + fg = colors.fg0, + bg = colors.bg0, + bold = config.bold, + italic = true, + underline = config.underline, + }, + htmlUnderline = { fg = colors.fg0, bg = colors.bg0, underline = config.underline }, + htmlUnderlineItalic = { + fg = colors.fg0, + bg = colors.bg0, + italic = true, + underline = config.underline, + }, + htmlItalic = { fg = colors.fg0, bg = colors.bg0, italic = true }, + xmlTag = { link = "CozyboxAquaBold" }, + xmlEndTag = { link = "CozyboxAquaBold" }, + xmlTagName = { link = "CozyboxBlue" }, + xmlEqual = { link = "CozyboxBlue" }, + docbkKeyword = { link = "CozyboxAquaBold" }, + xmlDocTypeDecl = { link = "CozyboxGray" }, + xmlDocTypeKeyword = { link = "CozyboxPurple" }, + xmlCdataStart = { link = "CozyboxGray" }, + xmlCdataCdata = { link = "CozyboxPurple" }, + dtdFunction = { link = "CozyboxGray" }, + dtdTagName = { link = "CozyboxPurple" }, + xmlAttrib = { link = "CozyboxOrange" }, + xmlProcessingDelim = { link = "CozyboxGray" }, + dtdParamEntityPunct = { link = "CozyboxGray" }, + dtdParamEntityDPunct = { link = "CozyboxGray" }, + xmlAttribPunct = { link = "CozyboxGray" }, + xmlEntity = { link = "CozyboxRed" }, + xmlEntityPunct = { link = "CozyboxRed" }, + clojureKeyword = { link = "CozyboxBlue" }, + clojureCond = { link = "CozyboxOrange" }, + clojureSpecial = { link = "CozyboxOrange" }, + clojureDefine = { link = "CozyboxOrange" }, + clojureFunc = { link = "CozyboxYellow" }, + clojureRepeat = { link = "CozyboxYellow" }, + clojureCharacter = { link = "CozyboxAqua" }, + clojureStringEscape = { link = "CozyboxAqua" }, + clojureException = { link = "CozyboxRed" }, + clojureRegexp = { link = "CozyboxAqua" }, + clojureRegexpEscape = { link = "CozyboxAqua" }, + clojureRegexpCharClass = { fg = colors.fg3, bold = config.bold }, + clojureRegexpMod = { link = "clojureRegexpCharClass" }, + clojureRegexpQuantifier = { link = "clojureRegexpCharClass" }, + clojureParen = { link = "CozyboxFg3" }, + clojureAnonArg = { link = "CozyboxYellow" }, + clojureVariable = { link = "CozyboxBlue" }, + clojureMacro = { link = "CozyboxOrange" }, + clojureMeta = { link = "CozyboxYellow" }, + clojureDeref = { link = "CozyboxYellow" }, + clojureQuote = { link = "CozyboxYellow" }, + clojureUnquote = { link = "CozyboxYellow" }, + cOperator = { link = "CozyboxPurple" }, + cppOperator = { link = "CozyboxPurple" }, + cStructure = { link = "CozyboxOrange" }, + pythonBuiltin = { link = "CozyboxOrange" }, + pythonBuiltinObj = { link = "CozyboxOrange" }, + pythonBuiltinFunc = { link = "CozyboxOrange" }, + pythonFunction = { link = "CozyboxAqua" }, + pythonDecorator = { link = "CozyboxRed" }, + pythonInclude = { link = "CozyboxBlue" }, + pythonImport = { link = "CozyboxBlue" }, + pythonRun = { link = "CozyboxBlue" }, + pythonCoding = { link = "CozyboxBlue" }, + pythonOperator = { link = "CozyboxRed" }, + pythonException = { link = "CozyboxRed" }, + pythonExceptions = { link = "CozyboxPurple" }, + pythonBoolean = { link = "CozyboxPurple" }, + pythonDot = { link = "CozyboxFg3" }, + pythonConditional = { link = "CozyboxRed" }, + pythonRepeat = { link = "CozyboxRed" }, + pythonDottedName = { link = "CozyboxGreenBold" }, + cssBraces = { link = "CozyboxBlue" }, + cssFunctionName = { link = "CozyboxYellow" }, + cssIdentifier = { link = "CozyboxOrange" }, + cssClassName = { link = "CozyboxGreen" }, + cssColor = { link = "CozyboxBlue" }, + cssSelectorOp = { link = "CozyboxBlue" }, + cssSelectorOp2 = { link = "CozyboxBlue" }, + cssImportant = { link = "CozyboxGreen" }, + cssVendor = { link = "CozyboxFg1" }, + cssTextProp = { link = "CozyboxAqua" }, + cssAnimationProp = { link = "CozyboxAqua" }, + cssUIProp = { link = "CozyboxYellow" }, + cssTransformProp = { link = "CozyboxAqua" }, + cssTransitionProp = { link = "CozyboxAqua" }, + cssPrintProp = { link = "CozyboxAqua" }, + cssPositioningProp = { link = "CozyboxYellow" }, + cssBoxProp = { link = "CozyboxAqua" }, + cssFontDescriptorProp = { link = "CozyboxAqua" }, + cssFlexibleBoxProp = { link = "CozyboxAqua" }, + cssBorderOutlineProp = { link = "CozyboxAqua" }, + cssBackgroundProp = { link = "CozyboxAqua" }, + cssMarginProp = { link = "CozyboxAqua" }, + cssListProp = { link = "CozyboxAqua" }, + cssTableProp = { link = "CozyboxAqua" }, + cssFontProp = { link = "CozyboxAqua" }, + cssPaddingProp = { link = "CozyboxAqua" }, + cssDimensionProp = { link = "CozyboxAqua" }, + cssRenderProp = { link = "CozyboxAqua" }, + cssColorProp = { link = "CozyboxAqua" }, + cssGeneratedContentProp = { link = "CozyboxAqua" }, + javaScriptBraces = { link = "CozyboxFg1" }, + javaScriptFunction = { link = "CozyboxAqua" }, + javaScriptIdentifier = { link = "CozyboxRed" }, + javaScriptMember = { link = "CozyboxBlue" }, + javaScriptNumber = { link = "CozyboxPurple" }, + javaScriptNull = { link = "CozyboxPurple" }, + javaScriptParens = { link = "CozyboxFg3" }, + typescriptReserved = { link = "CozyboxAqua" }, + typescriptLabel = { link = "CozyboxAqua" }, + typescriptFuncKeyword = { link = "CozyboxAqua" }, + typescriptIdentifier = { link = "CozyboxOrange" }, + typescriptBraces = { link = "CozyboxFg1" }, + typescriptEndColons = { link = "CozyboxFg1" }, + typescriptDOMObjects = { link = "CozyboxFg1" }, + typescriptAjaxMethods = { link = "CozyboxFg1" }, + typescriptLogicSymbols = { link = "CozyboxFg1" }, + typescriptDocSeeTag = { link = "Comment" }, + typescriptDocParam = { link = "Comment" }, + typescriptDocTags = { link = "vimCommentTitle" }, + typescriptGlobalObjects = { link = "CozyboxFg1" }, + typescriptParens = { link = "CozyboxFg3" }, + typescriptOpSymbols = { link = "CozyboxFg3" }, + typescriptHtmlElemProperties = { link = "CozyboxFg1" }, + typescriptNull = { link = "CozyboxPurple" }, + typescriptInterpolationDelimiter = { link = "CozyboxAqua" }, + purescriptModuleKeyword = { link = "CozyboxAqua" }, + purescriptModuleName = { link = "CozyboxFg1" }, + purescriptWhere = { link = "CozyboxAqua" }, + purescriptDelimiter = { link = "CozyboxFg4" }, + purescriptType = { link = "CozyboxFg1" }, + purescriptImportKeyword = { link = "CozyboxAqua" }, + purescriptHidingKeyword = { link = "CozyboxAqua" }, + purescriptAsKeyword = { link = "CozyboxAqua" }, + purescriptStructure = { link = "CozyboxAqua" }, + purescriptOperator = { link = "CozyboxBlue" }, + purescriptTypeVar = { link = "CozyboxFg1" }, + purescriptConstructor = { link = "CozyboxFg1" }, + purescriptFunction = { link = "CozyboxFg1" }, + purescriptConditional = { link = "CozyboxOrange" }, + purescriptBacktick = { link = "CozyboxOrange" }, + coffeeExtendedOp = { link = "CozyboxFg3" }, + coffeeSpecialOp = { link = "CozyboxFg3" }, + coffeeCurly = { link = "CozyboxOrange" }, + coffeeParen = { link = "CozyboxFg3" }, + coffeeBracket = { link = "CozyboxOrange" }, + rubyStringDelimiter = { link = "CozyboxGreen" }, + rubyInterpolationDelimiter = { link = "CozyboxAqua" }, + rubyDefinedOperator = { link = "rubyKeyword" }, + objcTypeModifier = { link = "CozyboxRed" }, + objcDirective = { link = "CozyboxBlue" }, + goDirective = { link = "CozyboxAqua" }, + goConstants = { link = "CozyboxPurple" }, + goDeclaration = { link = "CozyboxRed" }, + goDeclType = { link = "CozyboxBlue" }, + goBuiltins = { link = "CozyboxOrange" }, + luaIn = { link = "CozyboxRed" }, + luaFunction = { link = "CozyboxAqua" }, + luaTable = { link = "CozyboxOrange" }, + moonSpecialOp = { link = "CozyboxFg3" }, + moonExtendedOp = { link = "CozyboxFg3" }, + moonFunction = { link = "CozyboxFg3" }, + moonObject = { link = "CozyboxYellow" }, + javaAnnotation = { link = "CozyboxBlue" }, + javaDocTags = { link = "CozyboxAqua" }, + javaCommentTitle = { link = "vimCommentTitle" }, + javaParen = { link = "CozyboxFg3" }, + javaParen1 = { link = "CozyboxFg3" }, + javaParen2 = { link = "CozyboxFg3" }, + javaParen3 = { link = "CozyboxFg3" }, + javaParen4 = { link = "CozyboxFg3" }, + javaParen5 = { link = "CozyboxFg3" }, + javaOperator = { link = "CozyboxOrange" }, + javaVarArg = { link = "CozyboxGreen" }, + elixirDocString = { link = "Comment" }, + elixirStringDelimiter = { link = "CozyboxGreen" }, + elixirInterpolationDelimiter = { link = "CozyboxAqua" }, + elixirModuleDeclaration = { link = "CozyboxYellow" }, + scalaNameDefinition = { link = "CozyboxFg1" }, + scalaCaseFollowing = { link = "CozyboxFg1" }, + scalaCapitalWord = { link = "CozyboxFg1" }, + scalaTypeExtension = { link = "CozyboxFg1" }, + scalaKeyword = { link = "CozyboxRed" }, + scalaKeywordModifier = { link = "CozyboxRed" }, + scalaSpecial = { link = "CozyboxAqua" }, + scalaOperator = { link = "CozyboxFg1" }, + scalaTypeDeclaration = { link = "CozyboxYellow" }, + scalaTypeTypePostDeclaration = { link = "CozyboxYellow" }, + scalaInstanceDeclaration = { link = "CozyboxFg1" }, + scalaInterpolation = { link = "CozyboxAqua" }, + markdownItalic = { fg = colors.fg3, italic = true }, + markdownBold = { fg = colors.fg3, bold = config.bold }, + markdownBoldItalic = { fg = colors.fg3, bold = config.bold, italic = true }, + markdownH1 = { link = "CozyboxGreenBold" }, + markdownH2 = { link = "CozyboxGreenBold" }, + markdownH3 = { link = "CozyboxYellowBold" }, + markdownH4 = { link = "CozyboxYellowBold" }, + markdownH5 = { link = "CozyboxYellow" }, + markdownH6 = { link = "CozyboxYellow" }, + markdownCode = { link = "CozyboxAqua" }, + markdownCodeBlock = { link = "CozyboxAqua" }, + markdownCodeDelimiter = { link = "CozyboxAqua" }, + markdownBlockquote = { link = "CozyboxGray" }, + markdownListMarker = { link = "CozyboxGray" }, + markdownOrderedListMarker = { link = "CozyboxGray" }, + markdownRule = { link = "CozyboxGray" }, + markdownHeadingRule = { link = "CozyboxGray" }, + markdownUrlDelimiter = { link = "CozyboxFg3" }, + markdownLinkDelimiter = { link = "CozyboxFg3" }, + markdownLinkTextDelimiter = { link = "CozyboxFg3" }, + markdownHeadingDelimiter = { link = "CozyboxOrange" }, + markdownUrl = { link = "CozyboxPurple" }, + markdownUrlTitleDelimiter = { link = "CozyboxGreen" }, + markdownLinkText = { fg = colors.gray, underline = config.underline }, + markdownIdDeclaration = { link = "markdownLinkText" }, + haskellType = { link = "CozyboxBlue" }, + haskellIdentifier = { link = "CozyboxAqua" }, + haskellSeparator = { link = "CozyboxFg4" }, + haskellDelimiter = { link = "CozyboxOrange" }, + haskellOperators = { link = "CozyboxPurple" }, + haskellBacktick = { link = "CozyboxOrange" }, + haskellStatement = { link = "CozyboxPurple" }, + haskellConditional = { link = "CozyboxPurple" }, + haskellLet = { link = "CozyboxRed" }, + haskellDefault = { link = "CozyboxRed" }, + haskellWhere = { link = "CozyboxRed" }, + haskellBottom = { link = "CozyboxRedBold" }, + haskellImportKeywords = { link = "CozyboxPurpleBold" }, + haskellDeclKeyword = { link = "CozyboxOrange" }, + haskellDecl = { link = "CozyboxOrange" }, + haskellDeriving = { link = "CozyboxPurple" }, + haskellAssocType = { link = "CozyboxAqua" }, + haskellNumber = { link = "CozyboxAqua" }, + haskellPragma = { link = "CozyboxRedBold" }, + haskellTH = { link = "CozyboxAquaBold" }, + haskellForeignKeywords = { link = "CozyboxGreen" }, + haskellKeyword = { link = "CozyboxRed" }, + haskellFloat = { link = "CozyboxAqua" }, + haskellInfix = { link = "CozyboxPurple" }, + haskellQuote = { link = "CozyboxGreenBold" }, + haskellShebang = { link = "CozyboxYellowBold" }, + haskellLiquid = { link = "CozyboxPurpleBold" }, + haskellQuasiQuoted = { link = "CozyboxBlueBold" }, + haskellRecursiveDo = { link = "CozyboxPurple" }, + haskellQuotedType = { link = "CozyboxRed" }, + haskellPreProc = { link = "CozyboxFg4" }, + haskellTypeRoles = { link = "CozyboxRedBold" }, + haskellTypeForall = { link = "CozyboxRed" }, + haskellPatternKeyword = { link = "CozyboxBlue" }, + jsonKeyword = { link = "CozyboxGreen" }, + jsonQuote = { link = "CozyboxGreen" }, + jsonBraces = { link = "CozyboxFg1" }, + jsonString = { link = "CozyboxFg1" }, + mailQuoted1 = { link = "CozyboxAqua" }, + mailQuoted2 = { link = "CozyboxPurple" }, + mailQuoted3 = { link = "CozyboxYellow" }, + mailQuoted4 = { link = "CozyboxGreen" }, + mailQuoted5 = { link = "CozyboxRed" }, + mailQuoted6 = { link = "CozyboxOrange" }, + mailSignature = { link = "Comment" }, + csBraces = { link = "CozyboxFg1" }, + csEndColon = { link = "CozyboxFg1" }, + csLogicSymbols = { link = "CozyboxFg1" }, + csParens = { link = "CozyboxFg3" }, + csOpSymbols = { link = "CozyboxFg3" }, + csInterpolationDelimiter = { link = "CozyboxFg3" }, + csInterpolationAlignDel = { link = "CozyboxAquaBold" }, + csInterpolationFormat = { link = "CozyboxAqua" }, + csInterpolationFormatDel = { link = "CozyboxAquaBold" }, + rustSigil = { link = "CozyboxOrange" }, + rustEscape = { link = "CozyboxAqua" }, + rustStringContinuation = { link = "CozyboxAqua" }, + rustEnum = { link = "CozyboxAqua" }, + rustStructure = { link = "CozyboxAqua" }, + rustModPathSep = { link = "CozyboxFg2" }, + rustCommentLineDoc = { link = "Comment" }, + rustDefault = { link = "CozyboxAqua" }, + ocamlOperator = { link = "CozyboxFg1" }, + ocamlKeyChar = { link = "CozyboxOrange" }, + ocamlArrow = { link = "CozyboxOrange" }, + ocamlInfixOpKeyword = { link = "CozyboxRed" }, + ocamlConstructor = { link = "CozyboxOrange" }, + LspSagaCodeActionTitle = { link = "Title" }, + LspSagaCodeActionBorder = { link = "CozyboxFg1" }, + LspSagaCodeActionContent = { fg = colors.green, bold = config.bold }, + LspSagaLspFinderBorder = { link = "CozyboxFg1" }, + LspSagaAutoPreview = { link = "CozyboxOrange" }, + TargetWord = { fg = colors.blue, bold = config.bold }, + FinderSeparator = { link = "CozyboxAqua" }, + LspSagaDefPreviewBorder = { link = "CozyboxBlue" }, + LspSagaHoverBorder = { link = "CozyboxOrange" }, + LspSagaRenameBorder = { link = "CozyboxBlue" }, + LspSagaDiagnosticSource = { link = "CozyboxOrange" }, + LspSagaDiagnosticBorder = { link = "CozyboxPurple" }, + LspSagaDiagnosticHeader = { link = "CozyboxGreen" }, + LspSagaSignatureHelpBorder = { link = "CozyboxGreen" }, + SagaShadow = { link = "CozyboxBg0" }, + DashboardShortCut = { link = "CozyboxOrange" }, + DashboardHeader = { link = "CozyboxAqua" }, + DashboardCenter = { link = "CozyboxYellow" }, + DashboardFooter = { fg = colors.purple, italic = true }, + MasonHighlight = { link = "CozyboxAqua" }, + MasonHighlightBlock = { fg = colors.bg0, bg = colors.blue }, + MasonHighlightBlockBold = { fg = colors.bg0, bg = colors.blue, bold = true }, + MasonHighlightSecondary = { fg = colors.yellow }, + MasonHighlightBlockSecondary = { fg = colors.bg0, bg = colors.yellow }, + MasonHighlightBlockBoldSecondary = { fg = colors.bg0, bg = colors.yellow, bold = true }, + MasonHeader = { link = "MasonHighlightBlockBoldSecondary" }, + MasonHeaderSecondary = { link = "MasonHighlightBlockBold" }, + MasonMuted = { fg = colors.fg4 }, + MasonMutedBlock = { fg = colors.bg0, bg = colors.fg4 }, + MasonMutedBlockBold = { fg = colors.bg0, bg = colors.fg4, bold = true }, + LspInlayHint = { link = "comment" }, + CarbonFile = { link = "CozyboxFg1" }, + CarbonExe = { link = "CozyboxYellow" }, + CarbonSymlink = { link = "CozyboxAqua" }, + CarbonBrokenSymlink = { link = "CozyboxRed" }, + CarbonIndicator = { link = "CozyboxGray" }, + CarbonDanger = { link = "CozyboxRed" }, + CarbonPending = { link = "CozyboxYellow" }, + 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 = "CozyboxBlue" }, + NotifyDEBUGIcon = { link = "CozyboxBlue" }, + NotifyDEBUGTitle = { link = "CozyboxBlue" }, + NotifyERRORBorder = { link = "CozyboxRed" }, + NotifyERRORIcon = { link = "CozyboxRed" }, + NotifyERRORTitle = { link = "CozyboxRed" }, + NotifyINFOBorder = { link = "CozyboxAqua" }, + NotifyINFOIcon = { link = "CozyboxAqua" }, + NotifyINFOTitle = { link = "CozyboxAqua" }, + NotifyTRACEBorder = { link = "CozyboxGreen" }, + NotifyTRACEIcon = { link = "CozyboxGreen" }, + NotifyTRACETitle = { link = "CozyboxGreen" }, + NotifyWARNBorder = { link = "CozyboxYellow" }, + NotifyWARNIcon = { link = "CozyboxYellow" }, + NotifyWARNTitle = { link = "CozyboxYellow" }, + 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.bg1 }, + DapStoppedSymbol = { fg = colors.green, bg = colors.bg1 }, + DapUIBreakpointsCurrentLine = { link = "CozyboxYellow" }, + DapUIBreakpointsDisabledLine = { link = "CozyboxGray" }, + DapUIBreakpointsInfo = { link = "CozyboxAqua" }, + DapUIBreakpointsLine = { link = "CozyboxYellow" }, + DapUIBreakpointsPath = { link = "CozyboxBlue" }, + DapUICurrentFrameName = { link = "CozyboxPurple" }, + DapUIDecoration = { link = "CozyboxPurple" }, + DapUIEndofBuffer = { link = "EndOfBuffer" }, + DapUIFloatBorder = { link = "CozyboxAqua" }, + DapUILineNumber = { link = "CozyboxYellow" }, + DapUIModifiedValue = { link = "CozyboxRed" }, + DapUIPlayPause = { fg = colors.green, bg = colors.bg1 }, + DapUIRestart = { fg = colors.green, bg = colors.bg1 }, + DapUIScope = { link = "CozyboxBlue" }, + DapUISource = { link = "CozyboxFg1" }, + DapUIStepBack = { fg = colors.blue, bg = colors.bg1 }, + DapUIStepInto = { fg = colors.blue, bg = colors.bg1 }, + DapUIStepOut = { fg = colors.blue, bg = colors.bg1 }, + DapUIStepOver = { fg = colors.blue, bg = colors.bg1 }, + DapUIStop = { fg = colors.red, bg = colors.bg1 }, + DapUIStoppedThread = { link = "CozyboxBlue" }, + DapUIThread = { link = "CozyboxBlue" }, + DapUIType = { link = "CozyboxOrange" }, + DapUIUnavailable = { link = "CozyboxGray" }, + DapUIWatchesEmpty = { link = "CozyboxGray" }, + DapUIWatchesError = { link = "CozyboxRed" }, + DapUIWatchesValue = { link = "CozyboxYellow" }, + DapUIWinSelect = { link = "CozyboxYellow" }, + NeogitDiffDelete = { link = "DiffDelete" }, + NeogitDiffAdd = { link = "DiffAdd" }, + NeogitHunkHeader = { link = "WinBar" }, + NeogitHunkHeaderHighlight = { link = "WinBarNC" }, + DiffviewStatusModified = { link = "CozyboxGreenBold" }, + DiffviewFilePanelInsertions = { link = "CozyboxGreenBold" }, + DiffviewFilePanelDeletions = { link = "CozyboxRedBold" }, + MiniAnimateCursor = { reverse = true, nocombine = true }, + MiniAnimateNormalFloat = { fg = colors.fg1, bg = colors.bg1 }, + 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 = "CozyboxGreen" }, + MiniDepsChangeRemoved = { link = "CozyboxRed" }, + 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 = "CozyboxGreen" }, + MiniDiffSignChange = { link = "CozyboxAqua" }, + MiniDiffSignDelete = { link = "CozyboxRed" }, + MiniFilesBorder = { link = "FloatBorder" }, + MiniFilesBorderModified = { link = "DiagnosticFloatingWarn" }, + MiniFilesCursorLine = { bg = colors.bg2 }, + MiniFilesDirectory = { link = "Directory" }, + MiniFilesFile = { link = "CozyboxFg1" }, + MiniFilesNormal = { link = "NormalFloat" }, + MiniFilesTitle = { link = "FloatTitle" }, + MiniFilesTitleFocused = { link = "CozyboxOrangeBold" }, + MiniHipatternsFixme = { fg = colors.bg0, bg = colors.red, bold = config.bold }, + MiniHipatternsHack = { fg = colors.bg0, bg = colors.yellow, bold = config.bold }, + MiniHipatternsNote = { fg = colors.bg0, bg = colors.blue, bold = config.bold }, + MiniHipatternsTodo = { fg = colors.bg0, bg = colors.aqua, bold = config.bold }, + MiniIconsAzure = { link = "CozyboxBlue" }, + MiniIconsBlue = { link = "CozyboxBlue" }, + MiniIconsCyan = { link = "CozyboxAqua" }, + MiniIconsGreen = { link = "CozyboxGreen" }, + MiniIconsGrey = { link = "CozyboxFg0" }, + MiniIconsOrange = { link = "CozyboxOrange" }, + MiniIconsPurple = { link = "CozyboxPurple" }, + MiniIconsRed = { link = "CozyboxRed" }, + MiniIconsYellow = { link = "CozyboxYellow" }, + MiniIndentscopeSymbol = { link = "CozyboxGray" }, + MiniIndentscopeSymbolOff = { link = "CozyboxYellow" }, + MiniJump = { link = "CozyboxOrangeUnderline" }, + MiniJump2dDim = { link = "CozyboxGray" }, + MiniJump2dSpot = { fg = colors.orange, bold = config.bold, nocombine = true }, + MiniJump2dSpotAhead = { fg = colors.aqua, bg = colors.bg0, 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.bg2 }, + MiniPickMatchMarked = { link = "Visual" }, + MiniPickMatchRanges = { link = "DiagnosticFloatingHint" }, + MiniPickNormal = { link = "NormalFloat" }, + MiniPickPreviewLine = { link = "CursorLine" }, + MiniPickPreviewRegion = { link = "IncSearch" }, + MiniPickPrompt = { link = "DiagnosticFloatingInfo" }, + MiniStarterCurrent = { nocombine = true }, + MiniStarterFooter = { link = "CozyboxGray" }, + 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.bg0, bg = colors.yellow, bold = config.bold, nocombine = true }, + MiniStatuslineModeInsert = { fg = colors.bg0, bg = colors.blue, bold = config.bold, nocombine = true }, + MiniStatuslineModeNormal = { fg = colors.bg0, bg = colors.fg1, bold = config.bold, nocombine = true }, + MiniStatuslineModeOther = { fg = colors.bg0, bg = colors.aqua, bold = config.bold, nocombine = true }, + MiniStatuslineModeReplace = { fg = colors.bg0, bg = colors.red, bold = config.bold, nocombine = true }, + MiniStatuslineModeVisual = { fg = colors.bg0, bg = colors.green, bold = config.bold, nocombine = true }, + MiniSurround = { link = "IncSearch" }, + MiniTablineCurrent = { fg = colors.green, bg = colors.bg1, bold = config.bold, reverse = config.invert_tabline }, + MiniTablineFill = { link = "TabLineFill" }, + MiniTablineHidden = { fg = colors.bg4, bg = colors.bg1, reverse = config.invert_tabline }, + MiniTablineModifiedCurrent = { + fg = colors.bg1, + bg = colors.green, + bold = config.bold, + reverse = config.invert_tabline, + }, + MiniTablineModifiedHidden = { fg = colors.bg1, bg = colors.bg4, reverse = config.invert_tabline }, + MiniTablineModifiedVisible = { fg = colors.bg1, bg = colors.fg1, reverse = config.invert_tabline }, + MiniTablineTabpagesection = { link = "Search" }, + MiniTablineVisible = { fg = colors.fg1, bg = colors.bg1, reverse = config.invert_tabline }, + MiniTestEmphasis = { bold = config.bold }, + MiniTestFail = { link = "CozyboxRedBold" }, + MiniTestPass = { link = "CozyboxGreenBold" }, + MiniTrailspace = { bg = colors.red }, + WhichKeyTitle = { link = "NormalFloat" }, + NeoTreeFloatBorder = { link = "CozyboxGray" }, + NeoTreeTitleBar = { fg = colors.fg1, bg = colors.bg2 }, + NeoTreeDirectoryIcon = { link = "CozyboxGreen" }, + NeoTreeDirectoryName = { link = "CozyboxGreenBold" }, + ["@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 = "CozyboxGreen" }, + ["@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 = "CozyboxRed" }, + ["@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 = "CozyboxGreen" }, + ["@variable"] = { link = "CozyboxFg1" }, + ["@variable.builtin"] = { link = "Special" }, + ["@variable.member"] = { link = "Identifier" }, + ["@variable.parameter"] = { link = "CozyboxGreen" }, + ["@constant"] = { link = "Constant" }, + ["@constant.builtin"] = { link = "Special" }, + ["@constant.macro"] = { link = "Define" }, + ["@markup"] = { link = "CozyboxFg1" }, + ["@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 = "CozyboxGreen" }, + ["@markup.list.unchecked"] = { link = "CozyboxGray" }, + ["@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 = "CozyboxFg1" }, + ["@namespace"] = { link = "CozyboxFg1" }, + ["@symbol"] = { link = "Identifier" }, + ["@text"] = { link = "CozyboxFg1" }, + ["@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 = "CozyboxGreen" }, + ["@text.todo.unchecked"] = { link = "CozyboxGray" }, + ["@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.fg0, 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.parameter.typescript"] = { link = "@parameter" }, + ["@lsp.type.property"] = { link = "@property" }, + ["@lsp.type.property.lua"] = { link = "@property" }, + ["@lsp.type.struct"] = { link = "@type" }, + ["@lsp.type.type"] = { link = "@type" }, + ["@lsp.type.typeParameter"] = { link = "@type.definition" }, + ["@lsp.type.variable"] = { link = "@variable" }, + + -- NeoTreeDirectoryName = { link = "Directory" }, + -- NeoTreeDotfile = { fg = colors.fg4 }, + -- NeoTreeFadeText1 = { fg = colors.fg3 }, + -- NeoTreeFadeText2 = { fg = colors.fg4 }, + -- NeoTreeFileIcon = { fg = colors.blue }, + -- NeoTreeFileName = { fg = colors.fg1 }, + -- NeoTreeFileNameOpened = { fg = colors.fg1, bold = true }, + -- NeoTreeFileStats = { fg = colors.fg3 }, + -- NeoTreeFileStatsHeader = { fg = colors.fg2, italic = true }, + -- NeoTreeFilterTerm = { link = "SpecialChar" }, + -- NeoTreeHiddenByName = { link = "NeoTreeDotfile" }, + -- NeoTreeIndentMarker = { fg = colors.fg4 }, + -- NeoTreeMessage = { fg = colors.fg3, italic = true }, + -- NeoTreeModified = { fg = colors.yellow }, + -- NeoTreeRootName = { fg = colors.fg1, bold = true, italic = true }, + -- NeoTreeSymbolicLinkTarget = { link = "NeoTreeFileName" }, + -- NeoTreeExpander = { fg = colors.fg4 }, + -- NeoTreeWindowsHidden = { link = "NeoTreeDotfile" }, + -- NeoTreePreview = { link = "Search" }, + -- NeoTreeGitAdded = { link = "GitGutterAdd" }, + -- NeoTreeGitConflict = { fg = colors.orange, bold = true, italic = true }, + -- NeoTreeGitDeleted = { link = "GitGutterDelete" }, + -- NeoTreeGitIgnored = { link = "NeoTreeDotfile" }, + -- NeoTreeGitModified = { link = "GitGutterChange" }, + -- NeoTreeGitRenamed = { link = "NeoTreeGitModified" }, + -- NeoTreeGitStaged = { link = "NeoTreeGitAdded" }, + -- NeoTreeGitUntracked = { fg = colors.orange, italic = true }, + -- NeoTreeGitUnstaged = { link = "NeoTreeGitConflict" }, + -- NeoTreeTabActive = { fg = colors.fg1, bold = true }, + -- NeoTreeTabInactive = { fg = colors.fg4, bg = colors.bg1 }, + -- NeoTreeTabSeparatorActive = { fg = colors.bg1 }, + -- NeoTreeTabSeparatorInactive = { fg = colors.bg2, bg = colors.bg1 }, + } + + 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 CozyboxConfig? +Cozybox.setup = function(config) + Cozybox.config = vim.deepcopy(default_config) + Cozybox.config = vim.tbl_deep_extend("force", Cozybox.config, config or {}) +end + +--- main load function +Cozybox.load = function() + if vim.version().minor < 8 then + vim.notify_once("cozybox.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 = "cozybox" + 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 Cozybox diff --git a/stylua.toml b/stylua.toml new file mode 100644 index 0000000..0fd4cb5 --- /dev/null +++ b/stylua.toml @@ -0,0 +1,6 @@ +column_width = 120 +line_endings = "Unix" +indent_type = "Spaces" +indent_width = 2 +quote_style = "AutoPreferDouble" +no_call_parentheses = false diff --git a/tests/cozybox/cozybox_spec.lua b/tests/cozybox/cozybox_spec.lua new file mode 100644 index 0000000..4462327 --- /dev/null +++ b/tests/cozybox/cozybox_spec.lua @@ -0,0 +1,169 @@ +require("plenary.reload").reload_module("cozybox", true) +local cozybox = require("cozybox") +local default = cozybox.config + +local function clear_term_colors() + for item = 0, 15 do + vim.g["terminal_color_" .. item] = nil + end +end + +describe("tests", function() + it("works with default values", function() + cozybox.setup() + assert.are.same(cozybox.config, default) + end) + + it("works with config overrides", function() + cozybox.setup({ undercurl = false, underline = false }) + assert.is_false(cozybox.config.undercurl) + assert.is_false(cozybox.config.underline) + assert.are.same(cozybox.config.contrast, "hard") + assert.are.same(cozybox.config.palette_overrides.bright_blue, "#5b84de") + assert.are.same(cozybox.config.overrides.Normal.bg, "#181818") + end) + + it("should override a hightlight color", function() + local config = { + overrides = { + Search = { fg = "#ff9900", bg = "#000000" }, + ColorColumn = { bg = "#ff9900" }, + }, + } + + cozybox.setup(config) + cozybox.load() + + local search_group_id = vim.api.nvim_get_hl_id_by_name("Search") + local search_values = { + background = vim.fn.synIDattr(search_group_id, "bg", "gui"), + foreground = vim.fn.synIDattr(search_group_id, "fg", "gui"), + } + + assert.are.same(search_values, { background = "#000000", foreground = "#ff9900" }) + + local color_column_group_id = vim.api.nvim_get_hl_id_by_name("ColorColumn") + local color_column_values = { + background = vim.fn.synIDattr(color_column_group_id, "bg", "gui"), + } + + assert.are.same(color_column_values, { background = "#ff9900" }) + end) + + it("should create new hightlights colors if they dont exist", function() + local config = { + overrides = { + Search = { fg = "#ff9900", bg = "#000000" }, + New = { bg = "#ff9900" }, + }, + } + + cozybox.setup(config) + cozybox.load() + + local search_group_id = vim.api.nvim_get_hl_id_by_name("Search") + local search_values = { + background = vim.fn.synIDattr(search_group_id, "bg", "gui"), + foreground = vim.fn.synIDattr(search_group_id, "fg", "gui"), + } + + assert.are.same(search_values, { background = "#000000", foreground = "#ff9900" }) + + local new_group_id = vim.api.nvim_get_hl_id_by_name("New") + local new_group_values = { + background = vim.fn.synIDattr(new_group_id, "bg", "gui"), + } + + assert.are.same(new_group_values, { background = "#ff9900" }) + end) + + it("should override links", function() + local config = { + overrides = { + TelescopePreviewBorder = { fg = "#990000", bg = nil }, + }, + } + cozybox.setup(config) + cozybox.load() + + local group_id = vim.api.nvim_get_hl_id_by_name("TelescopePreviewBorder") + local values = { + fg = vim.fn.synIDattr(group_id, "fg", "gui"), + } + + local expected = { + fg = "#990000", + } + assert.are.same(expected, values) + end) + + it("should override palette", function() + local config = { + palette_overrides = { + gray = "#ff9900", + }, + } + + cozybox.setup(config) + cozybox.load() + + local group_id = vim.api.nvim_get_hl_id_by_name("Comment") + local values = { + fg = vim.fn.synIDattr(group_id, "fg", "gui"), + } + assert.are.same(values, { fg = "#ff9900" }) + end) + + it("does not set terminal colors when terminal_colors is false", function() + clear_term_colors() + cozybox.setup({ terminal_colors = false }) + cozybox.load() + assert.is_nil(vim.g.terminal_color_0) + end) + + it("sets terminal colors when terminal_colors is true", function() + clear_term_colors() + cozybox.setup({ terminal_colors = true }) + cozybox.load() + + -- dark bg + local colors = require("cozybox").palette + vim.opt.background = "dark" + assert.are.same(vim.g.terminal_color_0, colors.dark0_hard) + + -- light bg + clear_term_colors() + cozybox.load() + vim.opt.background = "light" + assert.are.same(vim.g.terminal_color_0, colors.light0_hard) + end) + + it("multiple calls to setup() are independent", function() + -- First call to setup + cozybox.setup({ + contrast = "soft", + overrides = { CursorLine = { bg = "#FF0000" } }, + }) + assert.are.same(cozybox.config.contrast, "soft") + assert.are.same(cozybox.config.overrides.CursorLine.bg, "#FF0000") + + -- Second call to setup + cozybox.setup({ contrast = "hard" }) + assert.are.same(cozybox.config.contrast, "hard") + -- Check that overrides from the first call are reset to the cozybox defaults + assert.are.same(cozybox.config.overrides.CursorLine.bg, "#1e1e1e") + + -- Third call to setup with different overrides + cozybox.setup({ + overrides = { Normal = { fg = "#00FF00" } }, + }) + assert.are.same(cozybox.config.contrast, "hard") -- Contrast should be reset to the cozybox default + assert.are.same(cozybox.config.overrides.CursorLine.bg, "#1e1e1e") -- Default CursorLine override is preserved + assert.are.same(cozybox.config.overrides.Normal.fg, "#00FF00") -- New override is present + + -- Call setup with no arguments to reset to defaults + cozybox.setup() + assert.are.same(cozybox.config.contrast, "hard") + assert.are.same(cozybox.config.overrides.Normal.bg, "#181818") + end) +end) diff --git a/tests/minimal_init.lua b/tests/minimal_init.lua new file mode 100644 index 0000000..b4c8c23 --- /dev/null +++ b/tests/minimal_init.lua @@ -0,0 +1,11 @@ +local plenary_dir = os.getenv("PLENARY_DIR") or "/tmp/plenary.nvim" +local is_not_a_directory = vim.fn.isdirectory(plenary_dir) == 0 +if is_not_a_directory then + vim.fn.system({ "git", "clone", "https://github.com/nvim-lua/plenary.nvim", plenary_dir }) +end + +vim.opt.rtp:append(".") +vim.opt.rtp:append(plenary_dir) + +vim.cmd("runtime plugin/plenary.vim") +require("plenary.busted")