-- Sistine Theme for Neovim (Extended) -- Inspired by the Sistine Chapel local variant = vim.o.background -- "dark" or "light" local colors = {} if variant == "dark" then colors = { bg = "#1f2428", fg = "#dfd8c0", comment = "#8a9286", blue = "#6d8ec7", green = "#a5c39f", yellow = "#dfc17d", red = "#dba59a", magenta = "#dba59a", -- repurpose if needed cursorline= "#2a2e33", highlight = "#343a40", -- darker than bg2 for visual selects } else colors = { bg = "#f4f1ec", -- Fresco White fg = "#80614d", -- Divine Umber red = "#d18a74", -- Cherub Blush green = "#7c8957", -- Olive Laurel yellow = "#c9a04f", -- Renaissance Gold blue = "#a8c3d1", -- Sky Blue magenta = "#e5b1aa", -- Angel Pink cyan = "#c1b6aa", -- Marble Grey comment = "#a1978e", -- Softened Marble highlight = "#c9a04f", -- Renaissance Gold cursorline = "#e8e2db", } end vim.cmd("hi clear") vim.o.termguicolors = true vim.g.colors_name = "sistine" local set = vim.api.nvim_set_hl local function hi(group, opts) set(0, group, opts) end -- Core UI hi("Normal", { fg = colors.fg, bg = colors.bg }) hi("Comment", { fg = colors.comment, italic = true }) hi("CursorLine", { bg = colors.cursorline }) hi("Visual", { bg = colors.highlight }) hi("LineNr", { fg = colors.comment }) hi("CursorLineNr", { fg = colors.yellow, bold = true }) hi("StatusLine", { fg = colors.fg, bg = colors.cursorline }) hi("VertSplit", { fg = colors.comment }) hi("Title", { fg = colors.magenta, bold = true }) hi("Search", { bg = colors.yellow, fg = colors.bg }) hi("IncSearch", { bg = colors.red, fg = colors.bg }) -- Diagnostics (LSP) hi("DiagnosticError", { fg = colors.red }) hi("DiagnosticWarn", { fg = colors.yellow }) hi("DiagnosticInfo", { fg = colors.blue }) hi("DiagnosticHint", { fg = colors.green }) hi("DiagnosticUnderlineError", { undercurl = true, sp = colors.red }) hi("DiagnosticUnderlineWarn", { undercurl = true, sp = colors.yellow }) hi("DiagnosticUnderlineInfo", { undercurl = true, sp = colors.blue }) hi("DiagnosticUnderlineHint", { undercurl = true, sp = colors.green }) -- LSP Semantic Tokens hi("@lsp.type.class", { fg = colors.yellow }) hi("@lsp.type.function", { fg = colors.blue }) hi("@lsp.type.variable", { fg = colors.fg }) hi("@lsp.type.parameter", { fg = colors.cyan }) hi("@lsp.type.property", { fg = colors.green }) hi("@lsp.type.enum", { fg = colors.magenta }) -- Treesitter hi("@comment", { fg = colors.comment, italic = true }) hi("@function", { fg = colors.blue }) hi("@keyword", { fg = colors.red, italic = true }) hi("@string", { fg = colors.green }) hi("@variable", { fg = colors.fg }) hi("@type", { fg = colors.yellow }) hi("@property", { fg = colors.green }) hi("@number", { fg = colors.magenta }) -- Telescope hi("TelescopeBorder", { fg = colors.comment }) hi("TelescopePromptTitle",{ fg = colors.yellow, bold = true }) hi("TelescopeSelection", { bg = colors.cursorline }) hi("TelescopeMatching", { fg = colors.blue }) -- DAP (Debug) hi("DebugBreakpoint", { fg = colors.red }) hi("DebugBreakpointLine", { bg = colors.cursorline }) hi("DebugPC", { bg = colors.highlight }) hi("DebugCurrentLine", { underline = true, sp = colors.yellow }) -- Pmenu (Completion) hi("Pmenu", { fg = colors.fg, bg = colors.cursorline }) hi("PmenuSel", { fg = colors.bg, bg = colors.highlight }) hi("PmenuThumb", { bg = colors.highlight }) -- Notify / Noice / Snacks hi("NotifyINFOBorder", { fg = colors.blue }) hi("NotifyWARNBorder", { fg = colors.yellow }) hi("NotifyERRORBorder", { fg = colors.red }) hi("NotifyDEBUGBorder", { fg = colors.cyan }) hi("NotifyTRACEBorder", { fg = colors.magenta }) hi("NoicePopup", { bg = colors.cursorline }) hi("NoicePopupmenu", { bg = colors.cursorline, fg = colors.fg }) -- Git Diff hi("DiffAdd", { fg = colors.green }) hi("DiffChange", { fg = colors.blue }) hi("DiffDelete", { fg = colors.red }) -- Terminal Colors vim.g.terminal_color_0 = colors.bg vim.g.terminal_color_1 = colors.red vim.g.terminal_color_2 = colors.green vim.g.terminal_color_3 = colors.yellow vim.g.terminal_color_4 = colors.blue vim.g.terminal_color_5 = colors.magenta vim.g.terminal_color_6 = colors.cyan vim.g.terminal_color_7 = colors.fg vim.g.terminal_color_8 = colors.comment vim.g.terminal_color_9 = colors.red vim.g.terminal_color_10 = colors.green vim.g.terminal_color_11 = colors.yellow vim.g.terminal_color_12 = colors.blue vim.g.terminal_color_13 = colors.magenta vim.g.terminal_color_14 = colors.cyan vim.g.terminal_color_15 = colors.fg -- Bottom of sistine.lua (after terminal colors) -- Apply Snacks highlights unconditionally hi("SnacksNormal", { fg = colors.fg, bg = colors.bg }) hi("SnacksNormalNC", { fg = colors.comment, bg = colors.bg }) hi("SnacksWinBar", { fg = colors.magenta, bg = colors.bg, bold = true }) hi("SnacksWinBarNC", { fg = colors.comment, bg = colors.bg }) hi("SnacksCursorLine", { bg = colors.highlight }) hi("SnacksCursor", { bg = colors.highlight }) hi("SnacksPickerFile", { fg = colors.green, bold = true }) hi("SnacksPickerDir", { fg = colors.comment }) hi("SnacksPickerPathHidden", { fg = colors.comment, italic = true }) hi("SnacksPickerPathIgnored",{ fg = colors.comment, italic = true }) hi("SnacksPickerPrefix", { fg = colors.yellow }) hi("SnacksPickerNormal", { fg = colors.fg, bg = colors.yellow }) -- Normal picker line hi("SnacksPickerSelected", { fg = colors.bg, bg = colors.highlight }) -- Selected item (invert fg/bg) hi("SnacksPickerCursor", { fg = colors.yellow, bg = colors.cursorline }) hi("NormalFloat", { fg = colors.fg, bg = colors.bg })