-- Generated by zshell. Material 3 based Neovim colorscheme. -- This file is a Jinja template rendered by zshell. vim.g.colors_name = nil vim.o.background = "dark" vim.cmd("highlight clear") if vim.fn.exists("syntax_on") == 1 then vim.cmd("syntax reset") end vim.g.colors_name = "zshell" vim.o.termguicolors = true local set = vim.api.nvim_set_hl local function hl(group, opts) set(0, group, opts) end local function link(from, to) hl(from, { link = to }) end local is_light = "dark" == "light" local function pick(light, dark) return is_light and light or dark end local c = { bg = "#1A1206", bg_alt = "#231A0D", bg_float = "#271E11", bg_popup = "#32291A", bg_cursorline = pick("#32291A", "#3D3324"), bg_fold = "#231A0D", bg_visual = "#733429", bg_search = pick("#B5893E", "#733429"), bg_incsearch = "#7D2C1E", bg_selection = "#7D2C1E", bg_statusline = pick("#32291A", "#271E11"), bg_statusline_nc = "#231A0D", bg_tabline = "#231A0D", bg_tabsel = "#32291A", fg = "#F1E0CA", fg_muted = "#DBC3A1", fg_subtle = "#A38E6E", fg_comment = pick("#A38E6E", "#55442A"), fg_strong = pick("#1A1B1F", "#F2F2F7"), fg_on_soft = pick("#17181C", "#F4F4F8"), border = "#55442A", accent = "#FFB4A6", accent_container = "#7D2C1E", accent_fg = "#FFDAD4", accent_solid_fg = "#5F150A", secondary = "#FFB4A6", secondary_container = "#733429", secondary_fg = "#FFDAD4", secondary_solid_fg = "#561E15", tertiary = "#F0BE6D", tertiary_container = "#B5893E", tertiary_fg = "#000000", tertiary_solid_fg = "#432C00", error = "#FFB4AB", error_container = "#93000A", error_fg = "#FFDAD6", error_solid_fg = "#690005", ok = "#FFBD9D", warn = "#FFDFD5", info = "#B9AB66", hint = "#FFBA8D", add = "#FFBD9D", change = "#B9AB66", delete = "#FF563E", cursor_fg = "#5F150A", cursor_bg = "#FFB4A6", match_bg = "#B5893E", match_fg = "#000000", todo_bg = "#B5893E", todo_fg = "#000000", -- Syntax accents must stay dynamic. These come from your generated palette -- instead of fixed hex values, so foregrounds change with the wallpaper too. code_keyword = "#F18F8A", code_func = "#FFBA8D", code_string = "#FFBD9D", code_number = "#FFDFD5", code_const = "#FF563E", code_type = "#FFB4A6", code_special = "#F0BE6D", code_preproc = "#FFB4A6", code_builtin = "#FFB4A6", code_param = "#FFDFD5", code_field = "#FFB4A6", code_namespace = "#F0BE6D", code_operator = pick("#FFB4A6", "#FFB4A6"), line_current = pick("#232428", "#E7E7EC"), ref_bg = pick("#3D3324", "#32291A"), } -- Core UI ------------------------------------------------------------------- hl("Normal", { fg = c.fg, bg = c.bg }) hl("NormalNC", { fg = c.fg, bg = c.bg }) hl("NormalFloat", { fg = c.fg, bg = c.bg_float }) hl("FloatBorder", { fg = c.border, bg = c.bg_float }) hl("FloatTitle", { fg = c.accent, bg = c.bg_float, bold = true }) hl("FloatFooter", { fg = c.fg_muted, bg = c.bg_float }) hl("WinSeparator", { fg = c.border, bg = "NONE" }) link("VertSplit", "WinSeparator") hl("Cursor", { fg = c.cursor_fg, bg = c.cursor_bg }) link("lCursor", "Cursor") link("CursorIM", "Cursor") link("TermCursor", "Cursor") hl("CursorLine", { bg = c.bg_cursorline }) hl("CursorColumn", { bg = c.bg_cursorline }) hl("ColorColumn", { bg = c.bg_alt }) hl("LineNr", { fg = c.fg_subtle, bg = c.bg }) hl("LineNrAbove", { fg = c.fg_subtle, bg = c.bg }) hl("LineNrBelow", { fg = c.fg_subtle, bg = c.bg }) hl("CursorLineNr", { fg = c.line_current, bg = c.bg_cursorline, bold = true }) hl("SignColumn", { fg = c.fg_muted, bg = c.bg }) hl("FoldColumn", { fg = c.fg_muted, bg = c.bg }) hl("Folded", { fg = c.fg_muted, bg = c.bg_fold, italic = true }) hl("NonText", { fg = c.border, bg = "NONE" }) link("EndOfBuffer", "NonText") hl("Whitespace", { fg = c.border, bg = "NONE" }) hl("SpecialKey", { fg = c.border, bg = "NONE" }) hl("Visual", { bg = c.bg_visual }) link("VisualNOS", "Visual") hl("Search", { fg = c.tertiary_fg, bg = c.bg_search }) hl("CurSearch", { fg = c.accent_fg, bg = c.bg_incsearch, bold = true }) link("IncSearch", "CurSearch") hl("Substitute", { fg = c.accent_fg, bg = c.bg_incsearch, bold = true }) hl("MatchParen", { fg = c.match_fg, bg = c.match_bg, bold = true }) hl("Pmenu", { fg = c.fg, bg = c.bg_popup }) hl("PmenuSel", { fg = c.fg_on_soft, bg = c.bg_selection, bold = true }) hl("PmenuKind", { fg = c.secondary, bg = c.bg_popup }) hl("PmenuKindSel", { fg = c.fg_on_soft, bg = c.secondary_container, bold = true }) hl("PmenuExtra", { fg = c.fg_muted, bg = c.bg_popup }) hl("PmenuExtraSel", { fg = c.fg_on_soft, bg = c.bg_selection }) hl("PmenuSbar", { bg = c.bg_alt }) hl("PmenuThumb", { bg = c.border }) hl("PmenuMatch", { fg = c.accent, bg = c.bg_popup, bold = true }) hl("PmenuMatchSel", { fg = c.accent, bg = c.bg_selection, bold = true }) hl("PmenuBorder", { fg = c.border, bg = c.bg_popup }) hl("StatusLine", { fg = c.fg_strong, bg = c.bg_statusline }) hl("StatusLineNC", { fg = c.fg_muted, bg = c.bg_statusline_nc }) link("StatusLineTerm", "StatusLine") link("StatusLineTermNC", "StatusLineNC") hl("TabLine", { fg = c.fg_muted, bg = c.bg_tabline }) hl("TabLineFill", { bg = c.bg_tabline }) hl("TabLineSel", { fg = c.fg_on_soft, bg = c.accent_container, bold = true }) hl("WinBar", { fg = c.fg, bg = c.bg }) hl("WinBarNC", { fg = c.fg_muted, bg = c.bg }) hl("Directory", { fg = c.accent, bg = "NONE" }) hl("Title", { fg = c.accent, bg = "NONE", bold = true }) hl("Question", { fg = c.secondary, bg = "NONE", bold = true }) hl("ModeMsg", { fg = c.accent, bg = "NONE", bold = true }) hl("MoreMsg", { fg = c.info, bg = "NONE", bold = true }) hl("ErrorMsg", { fg = c.error, bg = "NONE", bold = true }) hl("WarningMsg", { fg = c.warn, bg = "NONE", bold = true }) hl("OkMsg", { fg = c.ok, bg = "NONE", bold = true }) hl("QuickFixLine", { bg = c.bg_selection, bold = true }) -- Diffs --------------------------------------------------------------------- hl("DiffAdd", { fg = c.add, bg = c.bg_alt }) hl("DiffChange", { fg = c.change, bg = c.bg_alt }) hl("DiffDelete", { fg = c.delete, bg = c.bg_alt }) hl("DiffText", { fg = c.fg_on_soft, bg = c.accent_container, bold = true }) link("DiffTextAdd", "DiffText") hl("Added", { fg = c.add }) hl("Changed", { fg = c.change }) hl("Removed", { fg = c.delete }) -- Standard syntax groups ---------------------------------------------------- hl("Comment", { fg = c.fg_comment, italic = true }) hl("Constant", { fg = c.code_const }) hl("String", { fg = c.code_string }) hl("Character", { fg = c.code_string }) hl("Number", { fg = c.code_number }) hl("Boolean", { fg = c.code_number, bold = true }) hl("Float", { fg = c.code_number }) hl("Identifier", { fg = c.fg }) hl("Function", { fg = c.code_func, bold = true }) hl("Statement", { fg = c.code_keyword, bold = true }) link("Conditional", "Statement") link("Repeat", "Statement") link("Label", "Statement") hl("Operator", { fg = c.code_operator }) hl("Keyword", { fg = c.code_keyword, italic = true }) link("Exception", "Statement") hl("PreProc", { fg = c.code_preproc }) link("Include", "PreProc") link("Define", "PreProc") link("Macro", "PreProc") link("PreCondit", "PreProc") hl("Type", { fg = c.code_type, bold = true }) link("StorageClass", "Type") link("Structure", "Type") link("Typedef", "Type") hl("Special", { fg = c.code_special }) link("SpecialChar", "Special") link("Tag", "Special") hl("Delimiter", { fg = c.fg_muted }) link("SpecialComment", "Special") link("Debug", "Special") hl("Underlined", { fg = c.accent, underline = true }) hl("Todo", { fg = c.todo_fg, bg = c.todo_bg, bold = true }) hl("Error", { fg = c.error, bold = true }) -- Spell --------------------------------------------------------------------- hl("SpellBad", { sp = c.error, undercurl = true }) hl("SpellCap", { sp = c.info, undercurl = true }) hl("SpellLocal", { sp = c.hint, undercurl = true }) hl("SpellRare", { sp = c.secondary, undercurl = true }) -- Diagnostics --------------------------------------------------------------- hl("DiagnosticError", { fg = c.error }) hl("DiagnosticWarn", { fg = c.warn }) hl("DiagnosticInfo", { fg = c.info }) hl("DiagnosticHint", { fg = c.hint }) hl("DiagnosticOk", { fg = c.ok }) hl("DiagnosticUnderlineError", { sp = c.error, undercurl = true }) hl("DiagnosticUnderlineWarn", { sp = c.warn, undercurl = true }) hl("DiagnosticUnderlineInfo", { sp = c.info, undercurl = true }) hl("DiagnosticUnderlineHint", { sp = c.hint, undercurl = true }) hl("DiagnosticUnderlineOk", { sp = c.ok, undercurl = true }) link("DiagnosticSignError", "DiagnosticError") link("DiagnosticSignWarn", "DiagnosticWarn") link("DiagnosticSignInfo", "DiagnosticInfo") link("DiagnosticSignHint", "DiagnosticHint") link("DiagnosticSignOk", "DiagnosticOk") link("DiagnosticFloatingError", "DiagnosticError") link("DiagnosticFloatingWarn", "DiagnosticWarn") link("DiagnosticFloatingInfo", "DiagnosticInfo") link("DiagnosticFloatingHint", "DiagnosticHint") link("DiagnosticFloatingOk", "DiagnosticOk") hl("DiagnosticVirtualTextError", { fg = c.error, bg = c.error_container }) hl("DiagnosticVirtualTextWarn", { fg = c.warn, bg = c.bg_alt }) hl("DiagnosticVirtualTextInfo", { fg = c.info, bg = c.bg_alt }) hl("DiagnosticVirtualTextHint", { fg = c.hint, bg = c.bg_alt }) hl("DiagnosticVirtualTextOk", { fg = c.ok, bg = c.bg_alt }) link("DiagnosticVirtualLinesError", "DiagnosticVirtualTextError") link("DiagnosticVirtualLinesWarn", "DiagnosticVirtualTextWarn") link("DiagnosticVirtualLinesInfo", "DiagnosticVirtualTextInfo") link("DiagnosticVirtualLinesHint", "DiagnosticVirtualTextHint") link("DiagnosticVirtualLinesOk", "DiagnosticVirtualTextOk") hl("DiagnosticDeprecated", { fg = c.fg_muted, strikethrough = true }) hl("DiagnosticUnnecessary", { fg = c.fg_muted, italic = true }) -- LSP reference/inlay/codelens --------------------------------------------- hl("LspReferenceText", { bg = c.ref_bg }) hl("LspReferenceRead", { bg = c.ref_bg }) hl("LspReferenceWrite", { bg = c.ref_bg, sp = c.accent, undercurl = true }) hl("LspReferenceTarget", { fg = c.accent, bg = c.ref_bg, bold = true }) hl("LspInlayHint", { fg = c.fg_muted, bg = c.bg_alt, italic = true }) hl("LspCodeLens", { fg = c.fg_muted, italic = true }) hl("LspCodeLensSeparator", { fg = c.border }) hl("LspSignatureActiveParameter", { fg = c.accent, bold = true, underline = true }) -- Treesitter captures ------------------------------------------------------- link("@comment", "Comment") link("@comment.documentation", "Comment") link("@comment.todo", "Todo") link("@comment.error", "DiagnosticError") link("@comment.warning", "DiagnosticWarn") link("@comment.note", "DiagnosticInfo") link("@constant", "Constant") hl("@constant.builtin", { fg = c.code_builtin, italic = true, bold = true }) hl("@constant.macro", { fg = c.code_preproc, bold = true }) link("@string", "String") hl("@string.escape", { fg = c.code_special, bold = true }) link("@string.regex", "Special") link("@character", "Character") link("@number", "Number") link("@boolean", "Boolean") link("@float", "Float") link("@variable", "Identifier") hl("@variable.builtin", { fg = c.code_builtin, italic = true, bold = true }) hl("@variable.parameter", { fg = c.code_param, italic = true }) hl("@variable.member", { fg = c.code_field }) hl("@property", { fg = c.code_field }) hl("@field", { fg = c.code_field }) link("@function", "Function") hl("@function.builtin", { fg = c.code_builtin, bold = true }) link("@function.call", "Function") hl("@function.method", { fg = c.code_func }) hl("@function.method.call", { fg = c.code_func }) hl("@constructor", { fg = c.code_type, bold = true }) link("@keyword", "Keyword") hl("@keyword.function", { fg = c.code_keyword, bold = true }) hl("@keyword.operator", { fg = c.code_operator }) link("@keyword.return", "Keyword") link("@conditional", "Conditional") link("@repeat", "Repeat") link("@label", "Label") link("@operator", "Operator") link("@exception", "Exception") link("@preproc", "PreProc") link("@include", "Include") link("@define", "Define") link("@macro", "Macro") link("@type", "Type") hl("@type.builtin", { fg = c.code_type, italic = true, bold = true }) link("@type.definition", "Type") hl("@attribute", { fg = c.code_preproc }) hl("@module", { fg = c.code_namespace }) hl("@namespace", { fg = c.code_namespace }) link("@punctuation.delimiter", "Delimiter") link("@punctuation.bracket", "Delimiter") hl("@punctuation.special", { fg = c.code_special }) link("@tag", "Tag") hl("@tag.attribute", { fg = c.code_field }) link("@tag.delimiter", "Delimiter") -- LSP semantic token families ---------------------------------------------- link("@lsp.type.class", "@type") link("@lsp.type.comment", "@comment") link("@lsp.type.decorator", "@attribute") link("@lsp.type.enum", "@type") link("@lsp.type.enumMember", "@constant") link("@lsp.type.event", "@property") link("@lsp.type.function", "@function") link("@lsp.type.interface", "@type") link("@lsp.type.keyword", "@keyword") link("@lsp.type.macro", "@macro") link("@lsp.type.method", "@function.method") link("@lsp.type.modifier", "@keyword") link("@lsp.type.namespace", "@namespace") link("@lsp.type.number", "@number") link("@lsp.type.operator", "@operator") link("@lsp.type.parameter", "@variable.parameter") link("@lsp.type.property", "@property") link("@lsp.type.regexp", "@string.regex") link("@lsp.type.string", "@string") link("@lsp.type.struct", "@type") link("@lsp.type.type", "@type") link("@lsp.type.typeParameter", "@type") link("@lsp.type.variable", "@variable") hl("@lsp.mod.deprecated", { strikethrough = true }) link("@lsp.mod.readonly", "Constant") link("@lsp.typemod.variable.readonly", "Constant") -- Common plugin aliases ----------------------------------------------------- hl("GitSignsAdd", { fg = c.add, bg = c.bg }) hl("GitSignsChange", { fg = c.change, bg = c.bg }) hl("GitSignsDelete", { fg = c.delete, bg = c.bg }) hl("MiniIndentscopeSymbol", { fg = c.border, nocombine = true }) hl("IblIndent", { fg = c.border, nocombine = true }) hl("IblScope", { fg = c.fg_muted, nocombine = true }) link("TelescopeNormal", "NormalFloat") link("TelescopeBorder", "FloatBorder") link("TelescopeTitle", "FloatTitle") link("TelescopeSelection", "PmenuSel") hl("TelescopeMatching", { fg = c.accent, bold = true }) -- Snacks.nvim picker / explorer -------------------------------------------- hl("SnacksPicker", { fg = c.fg, bg = c.bg }) hl("SnacksPickerBorder", { fg = c.border, bg = c.bg }) hl("SnacksPickerBoxBorder", { fg = c.border, bg = c.bg_alt }) hl("SnacksPickerTitle", { fg = c.accent, bg = c.bg_alt, bold = true }) hl("SnacksPickerInput", { fg = c.fg, bg = c.bg_alt }) hl("SnacksPickerInputBorder", { fg = c.border, bg = c.bg_alt }) hl("SnacksPickerInputTitle", { fg = c.accent, bg = c.bg_alt, bold = true }) hl("SnacksPickerInputSearch", { fg = c.accent, bg = c.bg_alt, bold = true }) hl("SnacksPickerPrompt", { fg = c.accent, bg = c.bg_alt, bold = true }) hl("SnacksPickerList", { fg = c.fg, bg = c.bg }) hl("SnacksPickerListBorder", { fg = c.border, bg = c.bg }) hl("SnacksPickerListTitle", { fg = c.secondary, bg = c.bg, bold = true }) hl("SnacksPickerListCursorLine", { bg = c.bg_cursorline }) hl("SnacksPickerPreview", { fg = c.fg, bg = c.bg_float }) hl("SnacksPickerPreviewBorder", { fg = c.border, bg = c.bg_float }) hl("SnacksPickerPreviewTitle", { fg = c.tertiary, bg = c.bg_float, bold = true }) hl("SnacksPickerMatch", { fg = c.accent, bold = true }) hl("SnacksPickerFile", { fg = c.fg }) hl("SnacksPickerDir", { fg = c.secondary }) hl("SnacksPickerPathHidden", { fg = c.fg_muted }) hl("SnacksPickerPathIgnored", { fg = c.fg_subtle, italic = true }) hl("SnacksPickerPathExcluded", { fg = c.fg_subtle, italic = true }) hl("SnacksPickerGitStatusAdded", { fg = c.add }) hl("SnacksPickerGitStatusModified", { fg = c.change }) hl("SnacksPickerGitStatusDeleted", { fg = c.delete }) hl("SnacksPickerGitStatusRenamed", { fg = c.info }) hl("SnacksPickerGitStatusCopied", { fg = c.info }) hl("SnacksPickerGitStatusUntracked", { fg = c.hint }) hl("SnacksPickerGitStatusIgnored", { fg = c.fg_subtle }) hl("SnacksPickerGitStatusStaged", { fg = c.ok }) return c