local M = {} --stylua: ignore start local bg = "#3b3228" --background local bg95 = "#43392d" --barely use! near-invisible subtle highlighting local bg75 = "#4c4134" --comments local altbg = "#5d4f40" local bg25 = "#6b6055" local sand = "#c1a387" local fg = "#afd2e9" local cyan = "#3eccbe" local scarlet = "#e86045" --variables local orange = "#e68d53" --integers local saffron = "#f8e2a0" --selection local moss = "#92a650" local celadon = "#ace1af" local grey = "#868686" local nazar = "#2c2c44" --stylua: ignore end function M.setup() vim.cmd("highlight clear") vim.o.background = "dark" vim.g.colors_name = "desert-witch" local hl_groups = { Normal = { fg = fg, bg = bg }, BaseText = { fg = fg }, Visual = { fg = bg, bg = saffron }, ComplMatchIns = {}, Conceal = { bg = bg }, CurSearch = { fg = bg, bg = orange }, Cursor = { link = "Normal" }, CursorColumn = { link = "CursorLine" }, -- CursorIM = {}, CursorLine = { bg = bg75 }, CursorLineNr = { fg = orange, bg = bg75 }, CursorLineFold = {}, CursorLineSign = { fg = nil, bg = bg75 }, DiffAdd = { bg = moss, fg = bg }, DiffChange = { bg = orange, fg = bg }, DiffDelete = { bg = scarlet, fg = bg }, DiffText = { fg = cyan }, Directory = { fg = orange, underline = true }, EndOfBuffer = { fg = sand, bg = bg }, ErrorMsg = { fg = scarlet }, WarnMsg = { fg = orange }, OkMsg = { fg = moss }, StderrMsg = { fg = scarlet }, StdoutMsg = { fg = fg }, FloatBorder = { fg = sand, bg = bg }, -- FoldColumn = {}, -- Folded = {}, IncSearch = { link = "Visual" }, -- lCursor = {}, LineNr = { bg = bg, fg = sand }, LineNrAbove = { bg = bg, fg = sand }, LineNrBelow = { bg = bg, fg = sand }, MatchParen = { bg = bg25, fg = celadon }, ModeMsg = { fg = saffron }, MoreMsg = { fg = orange }, MsgArea = { link = "Normal" }, MsgSeparator = { fg = fg, bg = altbg }, NonText = { fg = altbg }, NormalFloat = { link = "Normal" }, NormalNC = { fg = sand, bg = bg }, --Popup-Menu---------------------------------------- Pmenu = { link = "Normal" }, -- PmenuExtra = {}, -- PmenuExtraSel = {}, PmenuKind = { fg = orange }, PmenuKindSel = { link = "PmenuSel" }, -- PmenuMatch = {}, -- PmenuMatchSel = {}, -- PmenuSbar = {}, PmenuSel = { link = "Visual" }, PmenuThumb = { bg = orange }, -- ------------------------------------------ Question = { fg = orange }, QuickFixLine = { link = "MsgSeparator" }, Search = { link = "Visual" }, SignColumn = { bg = bg }, SpecialKey = { fg = sand }, SpellBad = { undercurl = true, sp = scarlet }, SpellCap = { undercurl = true, sp = cyan }, StatusLine = { bg = altbg, fg = fg }, StatusLineNC = { bg = altbg, fg = sand }, Substitute = { link = "Visual" }, -- TabLine = {}, -- TabLineFill = {}, -- TabLineSel = {}, -- TermCursor = {}, -- TermCursorNC = {}, Title = { fg = orange }, -- VertSplit = {}, VisualNOS = { bg = scarlet, fg = bg }, -- WarningMsg = {}, -- Whitespace = {}, -- WildMenu = {}, -- WinBar = {}, -- WinBarNC = {}, WinSeparator = { fg = sand }, --Syntax ----------------------------------- Comment = { fg = bg25 }, Constant = { fg = orange }, String = { fg = sand }, Character = { link = "BaseText" }, Number = { fg = moss }, Boolean = { link = "Number" }, Float = { link = "Number" }, Identifier = { link = "BaseText" }, Function = { link = "BaseText" }, Statement = { fg = scarlet }, -- Conditional = { link = "BaseText" }, -- Repeat = { link = "BaseText" }, -- Label = { link = "BaseText" }, Operator = { link = "BaseText" }, Keyword = { fg = scarlet }, -- Exception = { link = "BaseText" }, PreProc = { link = "BaseText" }, Include = { link = "BaseText" }, Define = { link = "BaseText" }, Macro = { link = "BaseText" }, PreCondit = { link = "BaseText" }, Type = { fg = orange }, -- StorageClass = { link = "BaseText" }, -- Structure = { link = "BaseText" }, -- Typedef = { link = "BaseText" }, Special = { link = "BaseText" }, SpecialChar = { link = "BaseText" }, Tag = { fg = orange }, Delimiter = { link = "BaseText" }, -- SpecialComment = {}, -- Debug = {}, -- Ignore = {}, -- Error = {}, Todo = { fg = bg, bg = celadon }, Added = { fg = moss }, Changed = { fg = orange }, Removed = { fg = scarlet }, --treesitter-------------------------------------- ["@variable"] = { fg = fg }, -- ["@variable.builtin"] = {fg=orange}, -- ["@variable.parameter"] = {fg=orange}, -- ["@variable.parameter.builtin"] = {fg=orange}, ["@variable.member"] = { fg = fg }, ["@constant"] = { link = "Constant" }, -- ["@constant.builtin"] = {}, -- ["@constant.macro"] = {}, -- ["@module"] = {}, -- ["@module.builtin"] = {}, -- ["@label"] = {}, ["@string"] = { link = "String" }, -- ["@string.documentation"] = {link="String"}, ["@string.regexp"] = { fg = cyan }, -- ["@string.escape"] = {link="String"}, -- ["@string.special"] = {link="String"}, -- ["@string.special.symbol"] = {link="String"}, -- ["@string.special.url"] = {link="String"}, -- ["@string.special.path"] = {link="String"}, -- ["@character"] = {link="String"}, ["@character.special"] = { fg = saffron }, ["@boolean"] = { link = "Number" }, ["@number"] = { link = "Number" }, ["@number.float"] = { link = "Number" }, ["@type"] = { link = "Type" }, -- ["@type.builtin"] = {}, -- ["@type.definition"] = {}, -- ["@attribute"] = {}, -- ["@attribute.builtin"] = {}, ["@property"] = { fg = fg }, -- ["@function"] = { fg = fg }, -- ["@function.builtin"] = {}, -- ["@function.call"] = { fg= orange}, -- ["@function.macro"] = {}, ["@function.method"] = { fg = saffron }, ["@function.method.call"] = { fg = saffron }, ["@constructor"] = { link = "BaseText" }, ["@operator"] = { link = "Operator" }, ["@operator.regex"] = { fg = cyan }, ["@keyword"] = { link = "Keyword" }, -- ["@keyword.repeat"] = { fg = orange }, -- ["@keyword.conditional"] = { fg = orange }, ["@keyword.conditional.ternary"] = { fg = scarlet }, -- ["@keyword.coroutine"] = {}, -- ["@keyword.function"] = { fg = scarlet }, -- ["@keyword.operator"] = {}, -- ["@keyword.import"] = {}, -- ["@keyword.type"] = {}, -- ["@keyword.modifier"] = {}, -- ["@keyword.return"] = { fg = scarlet }, -- ["@keyword.debug"] = {}, -- ["@keyword.exception"] = { fg = scarlet }, -- ["@keyword.directive"] = {}, -- ["@keyword.directive.define"] = {}, ["@punctuation.delimiter"] = { fg = fg }, ["@punctuation.delimiter.csv"] = { fg = sand }, ["@punctuation.bracket"] = {}, ["@punctuation.special"] = {}, ["@comment"] = { link = "Comment" }, ["@comment.documentation"] = {}, ["@comment.error"] = { bg = scarlet, fg = bg }, ["@comment.warning"] = { bg = orange, fg = bg }, ["@comment.todo"] = { bg = celadon, fg = bg }, ["@comment.pass"] = { bg = moss, fg = bg }, ["@comment.note"] = { bg = scarlet, fg = bg }, ["@markup.strong"] = { link = "markdownBold" }, ["@markup.italic"] = { link = "markdownItalic" }, ["@markup.strikethrough"] = { fg = sand, strikethrough = true }, ["@markup.underline"] = { underline = true }, -- ["@markup.heading"] = {}, ["@markup.heading.1"] = { link = "markdownH1" }, ["@markup.heading.2"] = { link = "markdownH2" }, ["@markup.heading.3"] = { link = "markdownH3" }, ["@markup.heading.4"] = { link = "markdownH4" }, ["@markup.heading.5"] = { link = "markdownH5" }, ["@markup.heading.6"] = { link = "markdownH6" }, --["@markup.quote"]={}, --["@markup.math"]={}, ["@markup.link"] = { link = "markdownLink" }, ["@markup.link.label"] = { link = "markdownLinkText" }, ["@markup.link.url"] = { link = "markdownUrl" }, ["@markup.raw"] = { bg = bg75 }, ["@markup.raw.block"] = { bg = bg75 }, ["@markup.list"] = { fg = moss }, ["@markup.list.checked"] = { fg = sand }, ["@markup.list.unchecked"] = { fg = moss }, ["@diff.plus"] = { link = "Added" }, ["@diff.minus"] = { link = "Removed" }, ["@diff.delta"] = { link = "Changed" }, ["@tag"] = { link = "Tag" }, --["@tag.builtin"]={}, ["@tag.attribute"] = { fg = saffron }, --["@tag.delimiter"]={}, ["@lsp.type.operator"] = { fg = scarlet }, ["@lsp.type.operator.qml"] = { fg = scarlet }, --Diagnostics---------------------------------------- DiagnosticError = { fg = scarlet }, DiagnosticWarn = { fg = orange }, DiagnosticInfo = { fg = celadon }, DiagnosticHint = { fg = cyan }, DiagnosticOk = { fg = moss }, DiagnosticUnnecessary = { fg = bg25, strikethrough = true, sp = scarlet }, -- DiagnosticFloatingError = {}, -- DiagnosticFloatingHint = {}, -- DiagnosticFloatingInfo = {}, -- DiagnosticFloatingOk = {}, -- DiagnosticFloatingWarn = {}, DiagnosticSignError = { bg = nil, fg = scarlet }, DiagnosticSignWarn = { bg = nil, fg = orange }, DiagnosticSignInfo = { bg = nil, fg = celadon }, DiagnosticSignHint = { bg = nil, fg = cyan }, DiagnosticSignOk = { bg = nil, fg = moss }, DiagnosticUnderlineError = { bg = nil, fg = nil, undercurl = true, sp = scarlet }, DiagnosticUnderlineWarn = { bg = nil, fg = nil, undercurl = true, sp = orange }, DiagnosticUnderlineInfo = { bg = nil, fg = nil, underline = true, sp = celadon }, DiagnosticUnderlineHint = { bg = nil, fg = nil, underline = true, sp = cyan }, DiagnosticUnderlineOk = { bg = nil, fg = nil, underline = true, sp = moss }, --LSP------------------------------------------------ -- LspReferenceText = {}, -- LspReferenceRead = {}, -- LspReferenceWrite = {}, -- -- LspSignatureActiveParameter = {}, -- -- LspCodeLens = {}, -- LspCodeLensSeparator = {}, -- -- -- Built-in snippets -- SnippetTabstop = {}, -- SnippetTabstopActive = {}, -- Built-in markdown syntax markdownH1 = { bg = orange, fg = bg }, markdownH2 = { bg = sand, fg = bg }, markdownH3 = { bg = celadon, fg = bg }, markdownH4 = { fg = orange, bg = bg75 }, markdownH5 = { fg = sand, bg = bg75 }, markdownH6 = { fg = fg, bg = bg75 }, -- markdownH1 = { bg = orange, fg = bg }, -- markdownH2 = { bg = sand, fg = bg }, -- markdownH3 = { bg = moss, fg = bg }, -- markdownH4 = { bg = celadon, fg = bg }, -- markdownH5 = { bg = fg, fg = bg }, -- markdownH6 = { bg = altbg, fg = sand }, markdownBold = { underdouble = true, sp = saffron, bold = true }, markdownItalic = { underdouble = true, sp = sand, italic = true }, markdownUrl = { fg = cyan }, markdownLink = { fg = orange, underline = true, sp = orange }, markdownLinkText = { fg = orange, underline = true, sp = orange }, markdownLinkDelimiter = { fg = orange }, --blink.cmp BlinkCmpMenuBorder = { link = "FloatBorder" }, BlinkCmpDocBorder = { fg = orange }, -- MiniHipatterns MiniHipatternsFixme = { bg = scarlet, fg = bg }, MiniHipatternsHack = { bg = orange, fg = bg }, MiniHipatternsNote = { bg = cyan, fg = bg }, MiniHipatternsTodo = { link = "Todo" }, -- MiniSurround MiniSurround = { link = "Visual" }, -- MiniTabline MiniTablineCurrent = { fg = bg, bg = orange }, MiniTablineVisible = { fg = bg, bg = sand }, MiniTablineHidden = { fg = sand, bg = altbg }, MiniTablineModifiedCurrent = { link = "MiniTablineCurrent" }, MiniTablineModifiedVisible = { link = "MiniTablineVisible" }, MiniTablineModifiedHidden = { link = "MiniTablineHidden" }, MiniTablineFill = { bg = altbg }, MiniTablineTabpagesection = {}, MiniTablineTrunc = { fg = sand, bg = altbg }, csvCol0 = { fg = "#e86045" }, csvCol1 = { fg = "#e68d53" }, csvCol2 = { fg = "#f8e2a0" }, csvCol3 = { fg = "#92a650" }, csvCol4 = { fg = "#ace1af" }, csvCol5 = { fg = "#3eccbe" }, csvCol6 = { fg = "#e86045" }, csvCol7 = { fg = "#e68d53" }, csvCol8 = { fg = "#f8e2a0" }, CsvViewDelimiter = { fg = "#c1a387" }, -- MiniDiffSignAdd = {}, -- MiniDiffSignChange = {}, -- MiniDiffSignDelete = {}, -- MiniDiffOverAdd = {}, -- MiniDiffOverChange = {}, -- MiniDiffOverChangeBuf = {}, -- MiniDiffOverContext = {}, -- MiniDiffOverContextBuf = {}, -- MiniDiffOverDelete = {}, -- folke/trouble.nvim -- TroubleCount = {}, -- TroubleFoldIcon = {}, -- TroubleIndent = {}, -- TroubleLocation = {}, -- TroubleSignError = {}, -- TroubleSignHint = {}, -- TroubleSignInformation = {}, -- TroubleSignOther = {}, -- TroubleSignWarning = {}, -- TroubleText = {}, -- TroubleTextError = {}, -- TroubleTextHint = {}, -- TroubleTextInformation = {}, -- TroubleTextWarning = {}, -- folke/which-key.nvim WhichKey = { fg = orange }, WhichKeyNormal = { fg = fg, bg = bg }, WhichKeyBorder = { link = "FloatBorder" }, WhichKeyDesc = { fg = fg }, WhichKeyTitle = { bg = bg, fg = orange }, WhichKeySeparator = { fg = sand, bg = bg }, WhichKeyGroup = { bg = bg, fg = moss }, WhichKeyIcon = { bg = bg, fg = fg }, -- HiPhish/rainbow-delimiters.nvim RainbowDelimiterRed = { fg = scarlet }, RainbowDelimiterYellow = { fg = cyan }, RainbowDelimiterBlue = { fg = saffron }, RainbowDelimiterOrange = { fg = sand }, -- RainbowDelimiterGreen = {}, -- RainbowDelimiterViolet = {}, -- RainbowDelimiterCyan = {}, -- RenderMarkdown RenderMarkdownBullet = { fg = moss }, RenderMarkdownCheckedItem = { fg = sand, strikethrough = true }, RenderMarkdownChecked = { fg = sand }, RenderMarkdownUnchecked = { fg = moss }, RenderMarkdownH1 = { link = "markdownH1" }, RenderMarkdownH2 = { link = "markdownH2" }, RenderMarkdownH3 = { link = "markdownH3" }, RenderMarkdownH4 = { link = "markdownH4" }, RenderMarkdownH5 = { link = "markdownH5" }, RenderMarkdownH6 = { link = "markdownH6" }, RenderMarkdownH1Bg = { link = "markdownH1" }, RenderMarkdownH2Bg = { link = "markdownH2" }, RenderMarkdownH3Bg = { link = "markdownH3" }, RenderMarkdownH4Bg = { link = "markdownH4" }, RenderMarkdownH5Bg = { link = "markdownH5" }, RenderMarkdownH6Bg = { link = "markdownH6" }, RenderMarkdownCode = { bg = bg75 }, -- RenderMarkdownCodeInfo={}, RenderMarkdownCodeBorder = { bg = altbg }, --RenderMarkdownCodeFallback={}, RenderMarkdownCodeInline = { bg = bg75 }, RenderMarkdownQuote = { fg = celadon }, --RenderMarkdownQuote1={}, --RenderMarkdownQuote2={}, --RenderMarkdownQuote3={}, --RenderMarkdownQuote4={}, --RenderMarkdownQuote5={}, --RenderMarkdownQuote6={}, RenderMarkdownInlineHighlight = { bg = fg, fg = bg }, RenderMarkdownDash = { fg = bg25 }, RenderMarkdownSign = { bg = bg }, --RenderMarkdownMath={}, --RenderMarkdownIndent={}, --RenderMarkdownHtmlComment={}, RenderMarkdownLink = { fg = orange, underline = true, sp = orange }, RenderMarkdownTodo = { fg = cyan }, RenderMarkdownTableHead = { fg = sand }, RenderMarkdownTableRow = { fg = sand }, -- RenderMarkdownTableFill = {}, RenderMarkdownSuccess = { link = "DiagnosticOk" }, RenderMarkdownInfo = { link = "DiagnosticInfo" }, RenderMarkdownHint = { link = "DiagnosticHint" }, RenderMarkdownWarn = { link = "DiagnosticWarn" }, RenderMarkdownError = { link = "DiagnosticError" }, BgText = { fg = bg }, Bg75Text = { fg = bg75 }, AltbgText = { fg = altbg }, Bg25Text = { fg = bg25 }, SandText = { fg = sand }, CyanText = { fg = cyan }, ScarletText = { fg = scarlet }, OrangeText = { fg = orange }, SaffronText = { fg = saffron }, MossText = { fg = moss }, CeladonText = { fg = celadon }, NazarText = { fg = nazar }, SandBg = { bg = sand }, CyanBg = { bg = cyan }, ScarletBg = { bg = scarlet }, OrangeBg = { bg = orange }, SaffronBg = { bg = saffron }, MossBg = { bg = moss }, CeladonBg = { bg = celadon }, BgBg = { bg = bg }, Bg75Bg = { bg = bg75 }, AltbgBg = { bg = altbg }, Bg25Bg = { bg = bg75 }, } for name, hl in pairs(hl_groups) do vim.api.nvim_set_hl(0, name, hl) end end return M