---@param theme Theme ---@param palette Palette return function(theme, palette) return { Boolean = { fg = palette.yellow, bg = palette.none }, Character = { link = "String" }, Comment = { fg = palette.gray, bg = palette.none, italic = true }, Conditional = { link = "Keyword" }, Constant = { fg = palette.aqua }, Debug = { fg = palette.blue, bg = palette.none }, Define = { link = "PreProc" }, Delimiter = { fg = palette.yellow, bg = palette.none }, Error = { fg = palette.red, bg = palette.none }, Exception = { link = "Keyword" }, Float = { link = "Number" }, Function = { fg = palette.blue, bg = palette.none }, Identifier = { fg = palette.fg, bg = palette.none }, Ignore = { fg = palette.none, bg = palette.none }, Include = { link = "Keyword" }, Keyword = { fg = palette.red, bg = palette.none }, Label = { link = "Keyword" }, Macro = { fg = palette.orange, bg = palette.none }, Number = { fg = palette.purple, bg = palette.none }, Operator = { fg = palette.orange, bg = palette.none }, PreCondit = { link = "PreProc" }, PreProc = { fg = palette.bg_gradiant[4], bg = palette.none }, Repeat = { link = "Keyword" }, Special = { fg = palette.blue, bg = palette.none }, SpecialChar = { fg = palette.aqua, bg = palette.none }, SpecialComment = { fg = palette.bg_gradiant[4], bg = palette.none }, Statement = { link = "Identifier" }, StorageClass = { link = "Keyword" }, String = { fg = palette.green, bg = palette.none }, Structure = { link = "Keyword" }, Tag = { fg = palette.blue, bg = palette.none }, Todo = { fg = palette.yellow, bg = palette.harder_bg }, Type = { fg = palette.yellow, bg = palette.none }, Typedef = { link = "Keyword" }, -- Diags DiagnosticError = theme.msg.error, DiagnosticHint = theme.msg.hint, DiagnosticInfo = theme.msg.info, DiagnosticWarn = theme.msg.warning, DiagnosticUnderlineError = { sp = palette.red, undercurl = true }, DiagnosticUnderlineHint = { sp = palette.aqua, undercurl = true }, DiagnosticUnderlineInfo = { sp = palette.blue, undercurl = true }, DiagnosticUnderlineWarn = { sp = palette.yellow, undercurl = true }, LspInlayHint = theme.conceal, LspCodeLens = { link = "LspInlayHint" }, LspCodeLensSeparator = { link = "LspCodeLens" }, LspReferenceRead = { fg = palette.none, bg = palette.colored_backgrounds.aqua }, LspReferenceWrite = { fg = palette.none, bg = palette.colored_backgrounds.orange }, LspReferenceText = { fg = palette.none, bg = palette.bg_gradiant[1] }, ["@annotation"] = { fg = palette.yellow }, ["@attribute"] = { fg = palette.yellow }, ["@boolean"] = { link = "Boolean" }, ["@character"] = { link = "Character" }, ["@character.special"] = { link = "SpecialChar" }, ["@class"] = { link = "Type" }, ["@comment"] = { link = "Comment" }, ["@comment.documentation"] = { fg = palette.gray, bg = palette.none, nocombine = true }, ["@comment.todo"] = { link = "Todo" }, ["@conditional"] = { link = "Conditional" }, ["@constant"] = { link = "Constant" }, ["@constant.builtin"] = { link = "@constant" }, ["@constant.macro"] = { link = "@constant" }, ["@constructor"] = { fg = palette.green, bold = true }, ["@debug"] = { link = "Debug" }, ["@decorator"] = { fg = palette.orange }, ["@define"] = { link = "Define" }, ["@enum"] = { fg = palette.aqua }, ["@enumMember"] = { fg = palette.blue }, ["@error"] = { link = "Error" }, ["@event"] = { fg = palette.orange }, ["@exception"] = { link = "Exception" }, ["@field"] = { link = "@variable.member" }, -- Deprecated ["@float"] = { link = "@number.float" }, -- Deprecated ["@function"] = { link = "Function" }, ["@function.macro"] = { link = "Macro" }, ["@function.method"] = { link = "Function" }, ["@include"] = { link = "Include" }, ["@interface"] = { fg = palette.orange }, ["@keyword"] = { link = "Keyword" }, ["@keyword.operator"] = { link = "Operator" }, ["@label"] = { link = "Label" }, ["@method"] = { link = "@function.method" }, -- Deprecated ["@modifier"] = { fg = palette.orange }, ["@module"] = { fg = palette.fg_gradiant[2] }, ["@namespace"] = { link = "@module" }, -- Deprecated ["@none"] = { link = "Conceal" }, ["@number"] = { link = "Number" }, ["@number.float"] = { link = "Float" }, ["@operator"] = { link = "@keyword.operator" }, -- Deprecated? ["@parameter"] = { link = "@variable.parameter" }, -- Deprecated ["@preproc"] = { link = "PreProc" }, ["@property"] = { link = "@variable.member" }, ["@punctuation.bracket"] = { link = "Identifier" }, ["@punctuation.delimiter"] = { fg = palette.orange }, ["@punctuation.special"] = { link = "Special" }, ["@regexp"] = { fg = palette.aqua }, ["@repeat"] = { link = "Repeat" }, ["@storageclass"] = { link = "StorageClass" }, ["@storageclass.lifeTime"] = { fg = palette.purple }, ["@string"] = { link = "String" }, ["@string.escape"] = { fg = palette.red }, ["@string.regex"] = { fg = palette.aqua }, ["@string.special"] = { link = "Special" }, -- Deprecated? ["@struct"] = { link = "Type" }, ["@symbol"] = { link = "Special" }, ["@tag"] = { fg = palette.red }, ["@tag.attribute"] = { fg = palette.yellow }, ["@tag.delimiter"] = { fg = palette.fg }, ["@type"] = { link = "Type" }, ["@type.builtin"] = { link = "@type" }, ["@type.qualifier"] = { fg = palette.purple }, ["@typeParameter"] = { fg = palette.yellow }, ["@variable"] = { link = "Identifier" }, ["@variable.builtin"] = { bold = true }, ["@variable.member"] = theme.highlight, ["@variable.parameter"] = { fg = palette.fg_gradiant[2] }, -- LSP ["@lsp.mod.attribute"] = { link = "@attribute" }, ["@lsp.mod.documentation"] = { link = "@comment.documentation" }, ["@lsp.type"] = { link = "@type" }, ["@lsp.type.attributeBracket"] = { fg = palette.orange }, ["@lsp.type.class"] = { link = "@class" }, ["@lsp.type.derive"] = { fg = palette.orange }, ["@lsp.type.enum"] = { link = "@enum" }, ["@lsp.type.enumMember"] = { link = "@enumMember" }, ["@lsp.type.interface"] = { fg = palette.orange }, ["@lsp.type.keyword"] = { link = "Keyword" }, ["@lsp.type.lifeTime"] = { fg = palette.purple }, ["@lsp.type.method"] = { link = "@method" }, ["@lsp.type.namespace"] = { fg = palette.fg_gradiant[2] }, ["@lsp.type.operator"] = { link = "Operator" }, ["@lsp.type.parameter"] = { link = "@parameter" }, ["@lsp.type.property"] = { link = "@variable.member" }, ["@lsp.type.selfTypeKeyword"] = { fg = palette.green, bold = true }, ["@lsp.type.string"] = { link = "@string" }, ["@lsp.type.struct"] = { link = "@struct" }, ["@lsp.type.typeParameter"] = { link = "@type" }, ["@lsp.type.variable"] = { link = "@variable" }, ["@lsp.typemod.class.constructorOrDestructor"] = { link = "@constructor" }, ["@lsp.typemod.comment.documentation"] = { link = "@comment.documentation" }, ["@lsp.typemod.derive.attribute"] = { fg = palette.blue }, ["@lsp.typemod.method"] = { link = "@method" }, ["@lsp.typemod.selfKeyword"] = theme.highlight_bold, ["@lsp.typemod.string.attribute"] = { link = "String" }, -- Hmmmm ["@lsp.typemod.variable.readonly"] = { link = "Constant" }, } end