368 lines
16 KiB
Lua
368 lines
16 KiB
Lua
local palette = require("dnsc.palette")
|
|
|
|
vim.cmd.highlight("clear")
|
|
vim.g.colors_name = "winterly"
|
|
|
|
local hi = function(name, val)
|
|
-- Force links
|
|
val.force = true
|
|
|
|
-- Make sure that `cterm` attribute is not populated from `gui`
|
|
val.cterm = val.cterm or {} ---@type vim.api.keyset.highlight
|
|
|
|
-- Define global highlight
|
|
vim.api.nvim_set_hl(0, name, val)
|
|
end
|
|
|
|
-- General
|
|
hi("Normal", { fg = palette.fg })
|
|
|
|
hi("Conceal", { fg = palette.silver, bg = palette.grey, ctermfg = "LightGrey", ctermbg = "DarkGrey" })
|
|
hi("Cursor", { bg = palette.magenta_bright })
|
|
hi("DiffText", { bg = palette.yellow_subtle_bg, bold = true, ctermbg = "DarkYellow", cterm = { bold = true } })
|
|
hi("ErrorMsg", { fg = palette.red_bright, bg = palette.red_subtle_bg, ctermfg = "White", ctermbg = "DarkRed" })
|
|
hi("IncSearch", { bg = palette.magenta_subtle_bg, fg = palette.magenta })
|
|
hi("ModeMsg", { bold = true, cterm = { bold = true } })
|
|
hi("NonText", { fg = palette.grey, ctermfg = "DarkGrey" })
|
|
hi("PmenuSbar", { bg = palette.grey, ctermbg = "Grey" })
|
|
hi("StatusLine", { bg = palette.bg_secondary, fg = palette.fg_dim, bold = true, cterm = { reverse = true, bold = true } })
|
|
hi("StatusLineNC", { bg = palette.bg_secondary, fg = palette.fg, cterm = { reverse = true } })
|
|
hi("TabLineFill", { reverse = true, cterm = { reverse = true } })
|
|
hi("TabLineSel", { bold = true, cterm = { bold = true } })
|
|
hi("TermCursor", { reverse = true, cterm = { reverse = true } })
|
|
hi("WinBar", { bold = true, cterm = { bold = true } })
|
|
hi("WildMenu", { fg = palette.bg, bg = palette.yellow_subtle_bg, ctermfg = "Black", ctermbg = "Yellow" })
|
|
|
|
hi("VertSplit", { link = "Comment" })
|
|
hi("WinSeparator", { link = "VertSplit" })
|
|
hi("WinBarNC", { link = "WinBar" })
|
|
hi("DiffTextAdd", { link = "DiffText" })
|
|
hi("EndOfBuffer", { link = "NonText" })
|
|
hi("LineNrAbove", { link = "LineNr" })
|
|
hi("LineNrBelow", { link = "LineNr" })
|
|
hi("QuickFixLine", { link = "Search" })
|
|
hi("CursorLineSign", { link = "SignColumn" })
|
|
hi("CursorLineFold", { link = "FoldColumn" })
|
|
hi("CurSearch", { link = "Search" })
|
|
hi("PmenuKind", { link = "Pmenu" })
|
|
hi("PmenuKindSel", { link = "PmenuSel" })
|
|
hi("PmenuMatch", { link = "Pmenu" })
|
|
hi("PmenuMatchSel", { link = "PmenuSel" })
|
|
hi("PmenuExtra", { link = "Pmenu" })
|
|
hi("PmenuExtraSel", { link = "PmenuSel" })
|
|
hi("PreInsert", { link = "Added" })
|
|
hi("ComplMatchIns", {})
|
|
hi("ComplHint", { link = "NonText" })
|
|
hi("ComplHintMore", { link = "MoreMsg" })
|
|
hi("Whitespace", { link = "NonText" })
|
|
hi("MsgSeparator", { link = "StatusLine" })
|
|
hi("NormalFloat", { link = "Pmenu" })
|
|
hi("FloatBorder", { bg = palette.bg_secondary, fg = palette.fg_dim })
|
|
hi("FloatTitle", { bg = palette.bg_secondary, fg = palette.fg, bold = true })
|
|
hi("FloatFooter", { link = "Title" })
|
|
|
|
hi("FloatShadow", { bg = palette.bg, blend = 80 })
|
|
hi("FloatShadowThrough", { bg = palette.bg, blend = 100 })
|
|
hi("RedrawDebugNormal", { reverse = true, cterm = { reverse = true } })
|
|
hi("RedrawDebugClear", { bg = palette.yellow_subtle_bg, ctermbg = "DarkYellow" })
|
|
hi("RedrawDebugComposed", { bg = palette.green_subtle_bg, ctermbg = "DarkGreen" })
|
|
hi("RedrawDebugRecompose", { bg = palette.red_subtle_bg, ctermbg = "DarkRed" })
|
|
hi("Error", { link = "ErrorMsg" })
|
|
hi("NvimInternalError", { link = "ErrorMsg" })
|
|
hi("Todo", { fg = palette.blue_bright, bg = palette.blue_subtle_bg, ctermbg = "DarkBlue", ctermfg = "LightBlue" })
|
|
|
|
hi("String", { link = "Constant" })
|
|
hi("Character", { link = "Constant" })
|
|
hi("Number", { link = "Boolean" })
|
|
hi("Boolean", { fg = palette.magenta_bright, bold = true })
|
|
hi("Float", { link = "Number" })
|
|
hi("Function", { link = "Identifier" })
|
|
hi("Conditional", { link = "Statement" })
|
|
hi("Repeat", { link = "Statement" })
|
|
hi("Label", { link = "Statement" })
|
|
hi("Operator", { fg = palette.fg_alt, italic = false, ctermfg = "White" })
|
|
hi("Keyword", { link = "Statement" })
|
|
hi("Exception", { link = "Statement" })
|
|
hi("Include", { link = "PreProc" })
|
|
hi("Define", { link = "PreProc" })
|
|
hi("Macro", { link = "PreProc" })
|
|
hi("PreCondit", { link = "PreProc" })
|
|
hi("StorageClass", { link = "Type" })
|
|
hi("Structure", { link = "Type" })
|
|
hi("Typedef", { bold = true, fg = palette.yellow_brighter, ctermfg = "LightYellow" })
|
|
hi("Tag", { link = "Special" })
|
|
hi("SpecialChar", { link = "Special" })
|
|
hi("Delimiter", { link = "Special" })
|
|
hi("SpecialComment", { link = "Special" })
|
|
hi("Debug", { link = "Special" })
|
|
|
|
hi("DiagnosticError", { fg = palette.red_bright, ctermfg = 1 })
|
|
hi("DiagnosticWarn", { fg = palette.yellow, ctermfg = 3 })
|
|
hi("DiagnosticInfo", { fg = palette.cyan, ctermfg = 4 })
|
|
hi("DiagnosticHint", { fg = palette.silver, ctermfg = 7 })
|
|
hi("DiagnosticOk", { fg = palette.green_bright, ctermfg = 10 })
|
|
hi("DiagnosticUnderlineError", { fg = palette.red_bright, undercurl = true, cterm = { underline = true } })
|
|
hi("DiagnosticUnderlineWarn", { fg = palette.yellow, undercurl = true, cterm = { underline = true } })
|
|
hi("DiagnosticUnderlineInfo", { fg = palette.cyan, undercurl = true, cterm = { underline = true } })
|
|
hi("DiagnosticUnderlineHint", { fg = palette.silver, undercurl = true, cterm = { underline = true } })
|
|
hi("DiagnosticUnderlineOk", { fg = palette.green_bright, undercurl = true, cterm = { underline = true } })
|
|
hi("DiagnosticVirtualTextError", { link = "DiagnosticError" })
|
|
hi("DiagnosticVirtualTextWarn", { link = "DiagnosticWarn" })
|
|
hi("DiagnosticVirtualTextInfo", { link = "DiagnosticInfo" })
|
|
hi("DiagnosticVirtualTextHint", { link = "DiagnosticHint" })
|
|
hi("DiagnosticVirtualTextOk", { link = "DiagnosticOk" })
|
|
hi("DiagnosticFloatingError", { link = "DiagnosticError" })
|
|
hi("DiagnosticFloatingWarn", { link = "DiagnosticWarn" })
|
|
hi("DiagnosticFloatingInfo", { link = "DiagnosticInfo" })
|
|
hi("DiagnosticFloatingHint", { link = "DiagnosticHint" })
|
|
hi("DiagnosticFloatingOk", { link = "DiagnosticOk" })
|
|
hi("DiagnosticSignError", { link = "DiagnosticError" })
|
|
hi("DiagnosticSignWarn", { link = "DiagnosticWarn" })
|
|
hi("DiagnosticSignInfo", { link = "DiagnosticInfo" })
|
|
hi("DiagnosticSignHint", { link = "DiagnosticHint" })
|
|
hi("DiagnosticSignOk", { link = "DiagnosticOk" })
|
|
hi("DiagnosticDeprecated", { fg = palette.red, strikethrough = true, cterm = { strikethrough = true } })
|
|
|
|
hi("DiagnosticUnnecessary", { link = "Unused" })
|
|
hi("LspInlayHint", { link = "NonText" })
|
|
hi("SnippetTabstop", { link = "Visual" })
|
|
hi("SnippetTabstopActive", { link = "SnippetTabstop" })
|
|
|
|
-- Text
|
|
hi("@markup.raw", { link = "Special" })
|
|
hi("@markup.link", { link = "Identifier" })
|
|
hi("@markup.link.label", { link = "ConstantUnderlined" })
|
|
hi("@markup.heading", { link = "Title" })
|
|
hi("@markup.heading.gitcommit", { bg = palette.bg, fg = palette.fg, bold = true })
|
|
hi("@markup.link.url", { link = "Underlined" })
|
|
hi("@markup.underline", { link = "Underlined" })
|
|
hi("@comment.todo", { link = "Todo" })
|
|
|
|
-- Miscs
|
|
hi("@comment", { link = "Comment" })
|
|
hi("@punctuation", { link = "Delimiter" })
|
|
|
|
-- Constants
|
|
hi("@constant", { link = "Constant" })
|
|
hi("@constant.builtin", { link = "Special" })
|
|
hi("@constant.macro", { link = "Define" })
|
|
hi("@keyword.directive", { link = "Define" })
|
|
hi("@string", { link = "String" })
|
|
hi("@string.escape", { link = "SpecialChar" })
|
|
hi("@string.special", { link = "SpecialChar" })
|
|
hi("@character", { link = "Character" })
|
|
hi("@character.special", { link = "SpecialChar" })
|
|
hi("@number", { link = "Number" })
|
|
hi("@boolean", { link = "Boolean" })
|
|
hi("@number.float", { link = "Float" })
|
|
|
|
-- Functions
|
|
hi("@function", { link = "Function" })
|
|
hi("@function.builtin", { link = "Special" })
|
|
hi("@function.macro", { link = "Macro" })
|
|
hi("@function.method", { link = "Function" })
|
|
hi("@variable.parameter", { link = "Identifier" })
|
|
hi("@variable.parameter.builtin", { link = "Special" })
|
|
hi("@variable.member", { link = "Identifier" })
|
|
hi("@property", { link = "Identifier" })
|
|
hi("@attribute", { link = "Macro" })
|
|
hi("@attribute.builtin", { link = "Special" })
|
|
hi("@constructor", { link = "Special" })
|
|
|
|
-- Keywords
|
|
hi("@keyword.conditional", { link = "Conditional" })
|
|
hi("@keyword.repeat", { link = "Repeat" })
|
|
hi("@keyword.type", { link = "Structure" })
|
|
hi("@label", { link = "Label" })
|
|
hi("@operator", { link = "Operator" })
|
|
hi("@keyword", { link = "Keyword" })
|
|
hi("@keyword.exception", { link = "Exception" })
|
|
|
|
hi("@variable", { link = "Identifier" })
|
|
hi("@type", { link = "Type" })
|
|
hi("@type.builtin", { link = "Type" })
|
|
hi("@type.definition", { link = "Typedef" })
|
|
hi("@module", { link = "Identifier" })
|
|
hi("@keyword.import", { link = "Include" })
|
|
hi("@keyword.directive", { link = "PreProc" })
|
|
hi("@keyword.debug", { link = "Debug" })
|
|
hi("@tag", { link = "Tag" })
|
|
hi("@tag.tsx", { link = "Identifier" })
|
|
hi("@tag.builtin", { link = "Special" })
|
|
|
|
-- LSP semantic tokens
|
|
hi("@lsp.type.class", { link = "Structure" })
|
|
hi("@lsp.type.comment", { link = "Comment" })
|
|
hi("@lsp.type.decorator", { link = "Function" })
|
|
hi("@lsp.type.enum", { link = "Structure" })
|
|
hi("@lsp.type.enumMember", { link = "Constant" })
|
|
hi("@lsp.type.function", { link = "Function" })
|
|
hi("@lsp.type.interface", { link = "Structure" })
|
|
hi("@lsp.type.macro", { link = "Macro" })
|
|
hi("@lsp.type.method", { link = "Function" })
|
|
hi("@lsp.type.namespace", { link = "Structure" })
|
|
hi("@lsp.type.parameter", { link = "Identifier" })
|
|
hi("@lsp.type.property", { link = "Identifier" })
|
|
hi("@lsp.type.struct", { link = "Structure" })
|
|
hi("@lsp.type.type", { link = "Type" })
|
|
hi("@lsp.type.typeParameter", { link = "TypeDef" })
|
|
hi("@lsp.type.variable", { link = "Identifier" })
|
|
hi("@lsp.typemod.keyword.documentation", { fg = palette.grey, bold = true })
|
|
|
|
if vim.o.background == "light" then
|
|
-- TODO: Define light scheme
|
|
else
|
|
-- Default colors only used with a dark background.
|
|
hi("ColorColumn", { bg = palette.red_subtle_bg, ctermbg = "DarkRed" })
|
|
hi("CursorColumn", { bg = palette.grey, ctermbg = "DarkGrey" })
|
|
hi("CursorLine", { bg = palette.magenta_subtle_bg_darker, cterm = { underline = true } })
|
|
hi("CursorLineNr", {
|
|
fg = palette.fg,
|
|
bg = palette.magenta_subtle_bg_darker,
|
|
bold = true,
|
|
ctermfg = "White",
|
|
cterm = { underline = true },
|
|
})
|
|
hi("DiffAdd", { fg = palette.green_bright, bg = palette.green_subtle_bg, ctermbg = "DarkGreen" })
|
|
hi("DiffChange", { fg = palette.yellow_brighter, bg = palette.yellow_subtle_bg, ctermbg = "DarkYellow" })
|
|
hi("DiffDelete", { fg = palette.red_bright, bg = palette.red_subtle_bg, ctermbg = "DarkRed" })
|
|
hi("Directory", { fg = palette.magenta, bold = true, ctermfg = "Magenta" })
|
|
hi("FoldColumn", { fg = palette.cyan_bright, bg = palette.grey, ctermfg = "Cyan", ctermbg = "DarkGrey" })
|
|
hi("Folded", { fg = palette.cyan_bright, bg = palette.grey, ctermfg = "Cyan", ctermbg = "DarkGrey" })
|
|
hi("LineNr", { fg = palette.grey_bright, ctermfg = "Grey" })
|
|
hi(
|
|
"MatchParen",
|
|
{ fg = palette.fg_alt, bg = palette.magenta_subtle_bg, ctermbg = "DarkMagenta", ctermfg = "Black" }
|
|
)
|
|
hi("MoreMsg", { fg = palette.grey, ctermfg = "DarkGrey" })
|
|
hi("Pmenu", { bg = palette.bg_secondary, ctermfg = "White", ctermbg = "Black" })
|
|
hi("PmenuSel", {
|
|
bg = palette.magenta_subtle_bg,
|
|
fg = palette.fg,
|
|
bold = true,
|
|
ctermfg = "LightMagenta",
|
|
ctermbg = "DarkMagenta",
|
|
})
|
|
hi("PmenuThumb", { bg = palette.fg, ctermbg = "White" })
|
|
hi("Question", { fg = palette.green_bright, bold = true, ctermfg = "LightGreen" })
|
|
hi("Search", { link = "IncSearch" })
|
|
hi("Substitute", {
|
|
fg = palette.green_bright,
|
|
bg = palette.green_subtle_bg,
|
|
bold = true,
|
|
ctermfg = "DarkBlue",
|
|
ctermbg = "LightBlue",
|
|
})
|
|
hi("SignColumn", { fg = palette.grey_bright, bg = palette.bg, ctermfg = "Cyan", ctermbg = "DarkGrey" })
|
|
hi("SpecialKey", { fg = palette.cyan_bright, ctermfg = "LightBlue" })
|
|
hi("SpellBad", { fg = palette.red, undercurl = true, ctermbg = "Red" })
|
|
hi("SpellCap", { fg = palette.blue, undercurl = true, ctermbg = "Blue" })
|
|
hi("SpellLocal", { fg = palette.cyan, undercurl = true, ctermbg = "Cyan" })
|
|
hi("SpellRare", { fg = palette.magenta, undercurl = true, ctermbg = "Magenta" })
|
|
hi("StatusLineTerm", {
|
|
fg = palette.bg,
|
|
bg = palette.green_bright,
|
|
bold = true,
|
|
ctermfg = "Black",
|
|
ctermbg = "LightGreen",
|
|
cterm = { bold = true },
|
|
})
|
|
hi("StatusLineTermNC", { fg = palette.bg, bg = palette.green_bright, ctermfg = "Black", ctermbg = "LightGreen" })
|
|
hi(
|
|
"TabLine",
|
|
{ bg = palette.grey, underline = true, ctermfg = "White", ctermbg = "DarkGrey", cterm = { underline = true } }
|
|
)
|
|
hi("Title", { fg = palette.magenta_bright, bold = true, ctermfg = "Magenta" })
|
|
hi("Visual", {
|
|
fg = palette.magenta_brighter,
|
|
bg = palette.magenta_subtle_bg,
|
|
ctermfg = "LightMagenta",
|
|
ctermbg = "DarkMagenta",
|
|
})
|
|
hi("WarningMsg", { fg = palette.red_bright, ctermfg = "LightRed" })
|
|
hi("Comment", { fg = palette.grey, ctermfg = "Cyan" })
|
|
hi("Unused", { fg = palette.grey_bright, undercurl = true, ctermfg = "LightGrey" })
|
|
hi("Constant", { fg = palette.yellow_brighter, ctermfg = "LightYellow" })
|
|
hi("ConstantUnderlined", { fg = palette.yellow_brighter, underline = true, ctermfg = "LightYellow" })
|
|
hi("Special", { fg = palette.silver, ctermfg = "LightGrey" })
|
|
hi("Identifier", { fg = palette.fg, ctermfg = "White", cterm = { bold = true } })
|
|
hi("Statement", { fg = palette.fg_alt, bold = true, ctermfg = "White" })
|
|
hi("PreProc", { fg = palette.magenta, ctermfg = "LightMagenta" })
|
|
hi("Type", { fg = palette.silver, bold = true, ctermfg = "LightCyan" })
|
|
hi("Underlined", { fg = palette.silver, underline = true, ctermfg = "LightGrey", cterm = { underline = true } })
|
|
hi("Ignore", { fg = palette.bg, ctermfg = "Black" })
|
|
hi(
|
|
"Added",
|
|
{ fg = palette.green_bright, bg = palette.green_subtle_bg, ctermfg = "LightGreen", ctermbg = "DarkGreen" }
|
|
)
|
|
hi(
|
|
"Changed",
|
|
{ fg = palette.blue_bright, bg = palette.blue_subtle_bg, ctermfg = "LightBlue", ctermbg = "DarkBlue" }
|
|
)
|
|
hi("Removed", { fg = palette.red_bright, bg = palette.red_subtle_bg, ctermfg = "LightRed", ctermbg = "DarkRed" })
|
|
hi("NotificationInfo", { fg = palette.silver, bg = palette.bg, ctermfg = "White", ctermbg = "Black" })
|
|
|
|
-- Snacks
|
|
hi("SnacksIndentScope", { fg = palette.magenta, ctermfg = "LightGrey" })
|
|
hi("SnacksIndent", { fg = palette.magenta_subtle_bg, ctermfg = "DarkGrey" })
|
|
hi(
|
|
"SnacksPickerCursorLine",
|
|
{ bg = palette.magenta_subtle_bg, fg = palette.fg, bold = true, cterm = { underline = true } }
|
|
)
|
|
hi("SnacksPickerListCursorLine", { link = "SnacksPickerCursorLine" })
|
|
hi("SnacksPickerTitle", { link = "FloatTitle" })
|
|
hi("SnacksBackdrop", { link = "Pmenu" })
|
|
|
|
-- Flash
|
|
hi("FlashMatch", { reverse = true })
|
|
hi("FlashLabel", { bg = palette.fg, fg = palette.bg })
|
|
|
|
-- FzfLua
|
|
hi("FzfLuaNormal", { link = "Pmenu" })
|
|
hi("FzfLuaBorder", { link = "Pmenu" })
|
|
hi("FzfLuaTitle", { link = "Pmenu" })
|
|
hi("FzfLuaBackdrop", { link = "Pmenu" })
|
|
hi("FzfLuaPreviewNormal", { link = "FzfLuaNormal" })
|
|
hi("FzfLuaPreviewBorder", { link = "FzfLuaBorder" })
|
|
hi("FzfLuaPreviewTitle", { link = "FzfLuaTitle" })
|
|
hi(
|
|
"FzfLuaCursorLine",
|
|
{ bg = palette.magenta_subtle_bg, fg = palette.fg, bold = true, cterm = { underline = true } }
|
|
)
|
|
hi("FzfLuaTitleFlags", { link = "FzfLuaCursorLine" })
|
|
hi("FzfLuaCursorLineNr", { link = "FzfLuaCursorLine" })
|
|
hi("FzfLuaHeaderBind", { link = "Pmenu" })
|
|
hi("FzfLuaHeaderText", { link = "Comment" })
|
|
hi("FzfLuaPathLineNr", { link = "Pmenu" })
|
|
hi("FzfLuaPathColNr", { link = "Pmenu" })
|
|
hi("FzfLuaLivePrompt", { link = "Pmenu" })
|
|
hi("FzfLuaCmdBuf", { link = "Comment" })
|
|
hi("FzfLuaBufName", { link = "Pmenu" })
|
|
hi("FzfLuaBufId", { link = "Special" })
|
|
hi("FzfLuaBufLineNr", { link = "Special" })
|
|
hi("FzfLuaBufFlagCur", { link = "Pmenu" })
|
|
hi("FzfLuaBufFlagAlt", { link = "Comment" })
|
|
|
|
-- Blinkpairs
|
|
hi("BlinkPairsOrange", { link = "Comment" })
|
|
hi("BlinkPairsPurple", { fg = palette.magenta_brighter })
|
|
hi("BlinkPairsBlue", { fg = palette.magenta_bright })
|
|
|
|
-- Neogit
|
|
hi("NeogitDiffAdd", { link = "DiffAdd" })
|
|
hi("NeogitDiffDelete", { link = "DiffDelete" })
|
|
hi("NeogitDiffContext", { bg = palette.bg_secondary, fg = palette.fg })
|
|
hi("NeogitDiffContextCursor", { bg = palette.magenta_subtle_bg_darker, fg = palette.magenta_brighter })
|
|
hi("NeogitDiffAddCursor", { bg = palette.green_bright, fg = palette.green_subtle_bg })
|
|
hi("NeogitDiffDeleteCursor", { bg = palette.red_bright, fg = palette.red_subtle_bg })
|
|
hi("NeogitDiffContextHighlight", { link = "NeogitDiffContext" })
|
|
hi("NeogitDiffAddHighlight", { link = "DiffAdd" })
|
|
hi("NeogitDiffDeleteHighlight", { link = "DiffDelete" })
|
|
hi("NeogitHunkHeader", { bg = palette.bg_secondary, fg = palette.grey_bright })
|
|
hi("NeogitHunkMergeHeader", { link = "NeogitHunkHeader" })
|
|
hi("NeogitHunkHeaderHighlight", { bg = palette.magenta_subtle_bg, fg = palette.magenta_brighter })
|
|
hi("NeogitHunkHeaderCursor", { link = "NeogitHunkHeaderHighlight" })
|
|
hi("NeogitCommitViewHeader", { bg = palette.bg_secondary, fg = palette.fg })
|
|
hi("NeogitDiffHeader", { bg = palette.bg, fg = palette.grey_bright, bold = true })
|
|
hi("NeogitActiveItem", { bg = palette.grey_bright, fg = palette.bg, bold = true })
|
|
end
|