local custom_highlights = function(C) local U = require("catppuccin.utils.colors") local ret = { HopNextKey = { bg = C.text, fg = C.base, style = { "bold", "underline" } }, HopNextKey1 = { bg = C.text, fg = C.base, style = { "bold" } }, HopNextKey2 = { bg = C.text, fg = C.base, style = { "bold", "italic" } }, DiagnosticUnderlineError = { style = { "undercurl" } }, DiagnosticUnderlineWarn = { style = { "undercurl" } }, DiagnosticUnderlineInfo = { style = { "undercurl" } }, DiagnosticUnderlineHint = { style = { "undercurl" } }, DiagnosticUnderlineOk = { style = { "undercurl" } }, ["@function.call"] = { fg = U.darken(C.blue, 0.5, C.text) }, Function = { fg = C.blue, style = { "bold" } }, ["@lsp.type.function"] = { link = "@function.call" }, ["@lsp.type.method"] = { link = "@function.call" }, ["@lsp.type.macro"] = { link = "Macro" }, ["@Keyword.directive"] = { link = "PreProc" }, -- ["@lsp.mod.definition"] = { bg = U.darken(C.green, .3, C.base) }, -- Keyword = { fg = C.black, style = { "italic" } }, Type = { fg = C.text }, -- -- syntax Constant = { fg = C.text }, String = { fg = C.text }, Character = { fg = C.text }, Number = { fg = C.text }, Float = { fg = C.text }, Boolean = { fg = C.text }, Identifier = { fg = C.text }, -- Function = { fg = C.text }, Statement = { fg = C.text }, Conditional = { fg = C.text }, Repeat = { fg = C.text }, Label = { fg = C.text }, Operator = { fg = C.text }, Keyword = { fg = C.text }, Exception = { fg = C.text }, PreProc = { fg = C.pink }, Include = { fg = C.pink }, Define = { fg = C.pink }, Macro = { fg = C.pink }, PreCondit = { fg = C.pink }, StorageClass = { fg = C.text }, Structure = { fg = C.text }, Special = { fg = C.text }, Typedef = { fg = C.text }, SpecialChar = { fg = C.text }, Tag = { fg = C.text }, Delimiter = { fg = C.text }, Debug = { fg = C.text }, variable = {}, ["@lsp.mod.readonly"] = { fg = C.text }, ["@variable"] = { fg = U.darken(C.red, .5, C.text) }, ["@keyword.modifier"] = { fg = C.yellow, style = {"italic"}} -- ['@parameter'] = { style = { "underline"} }, -- Underlined = { style = { "underline" } }, -- (preferred) text that stands out, HTML links -- Bold = { style = { "bold" } }, -- Italic = { style = { "italic" } }, -- ("Ignore", below, may be invisible...) -- Ignore = { }, -- (preferred) left blank, hidden |hl-Ignore| -- Error = { fg = C.red }, -- (preferred) any erroneous construct -- Todo = { bg = C.flamingo, fg = C.base, style = { "bold" } }, -- (preferred) anything that needs extra attention; mostly the keywords TODO FIXME and XXX -- qfLineNr = { fg = C.yellow }, -- qfFileName = { fg = C.blue }, -- htmlH1 = { fg = C.pink, style = { "bold" } }, -- htmlH2 = { fg = C.blue, style = { "bold" } }, -- -- mkdHeading = { fg = C.peach, style = { "bold" } }, -- -- mkdCode = { bg = C.terminal_black, fg = C.text }, -- mkdCodeDelimiter = { bg = C.base, fg = C.text }, -- mkdCodeStart = { fg = C.flamingo, style = { "bold" } }, -- mkdCodeEnd = { fg = C.flamingo, style = { "bold" } }, -- -- mkdLink = { fg = C.blue, style = { "underline" } }, -- -- -- debugging -- debugPC = { bg = O.transparent_background and C.none or C.crust }, -- used for highlighting the current line in terminal-debug -- debugBreakpoint = { bg = C.base, fg = C.overlay0 }, -- used for breakpoint colors in terminal-debug -- -- illuminate -- illuminatedWord = { bg = C.surface1 }, -- illuminatedCurWord = { bg = C.surface1 }, -- -- diff -- diffAdded = { fg = C.green }, -- diffRemoved = { fg = C.red }, -- diffChanged = { fg = C.blue }, -- diffOldFile = { fg = C.yellow }, -- diffNewFile = { fg = C.peach }, -- diffFile = { fg = C.blue }, -- diffLine = { fg = C.overlay0 }, -- diffIndexLine = { fg = C.teal }, -- DiffAdd = { bg = U.darken(C.green, 0.18, C.base) }, -- diff mode: Added line |diff.txt| -- DiffChange = { bg = U.darken(C.blue, 0.07, C.base) }, -- diff mode: Changed line |diff.txt| -- DiffDelete = { bg = U.darken(C.red, 0.18, C.base) }, -- diff mode: Deleted line |diff.txt| -- DiffText = { bg = U.darken(C.blue, 0.30, C.base) }, -- diff mode: Changed text within a changed line |diff.txt| -- -- NeoVim -- healthError = { fg = C.red }, -- healthSuccess = { fg = C.teal }, -- healthWarning = { fg = C.yellow }, -- -- misc -- -- -- glyphs -- GlyphPalette1 = { fg = C.red }, -- GlyphPalette2 = { fg = C.teal }, -- GlyphPalette3 = { fg = C.yellow }, -- GlyphPalette4 = { fg = C.blue }, -- GlyphPalette6 = { fg = C.teal }, -- GlyphPalette7 = { fg = C.text }, -- GlyphPalette9 = { fg = C.red }, -- -- -- rainbow -- rainbow1 = { fg = C.red }, -- rainbow2 = { fg = C.peach }, -- rainbow3 = { fg = C.yellow }, -- rainbow4 = { fg = C.green }, -- rainbow5 = { fg = C.sapphire }, -- rainbow6 = { fg = C.lavender }, -- -- -- csv -- csvCol0 = { fg = C.red }, -- csvCol1 = { fg = C.peach }, -- csvCol2 = { fg = C.yellow }, -- csvCol3 = { fg = C.green }, -- csvCol4 = { fg = C.sky }, -- csvCol5 = { fg = C.blue }, -- csvCol6 = { fg = C.lavender }, -- csvCol7 = { fg = C.mauve }, -- csvCol8 = { fg = C.pink }, } local var_colors = { U.darken(C.green, .4, C.text); U.darken(C.lavender, .5, C.text); U.darken(C.peach, .5, C.text); U.darken(C.yellow, .6, C.text); U.darken(C.green, .7, C.text); U.darken(C.mauve, .8, C.text); U.darken(C.teal, .3, C.text); U.darken(C.teal, .5, C.text); U.darken(C.teal, .7, C.text); U.darken(C.red, .3, C.text); U.darken(C.red, .5, C.text); U.darken(C.red, .7, C.text); } local all_colors = { variable = var_colors } for type, colors in pairs(all_colors) do for i = 1, #colors do for _, lang in pairs({ 'cpp' }) do local k = string.format('@lsp.typemod.%s.id%s.%s', type, i - 1, lang) ret[k] = { fg = colors[i] } end end end return ret end return custom_highlights