From 6eda929dd313f3564e9b8419c99010a7154c4402 Mon Sep 17 00:00:00 2001 From: calcu1on Date: Thu, 31 Jul 2025 12:27:11 -0400 Subject: [PATCH] Adding custom color schemes. --- colors/demoiselles.lua | 195 ++++++++++++++++++++++++++++++++++++++ colors/nighthawks.lua | 201 ++++++++++++++++++++++++++++++++++++++++ colors/sistine.lua | 151 ++++++++++++++++++++++++++++++ colors/starry_night.lua | 195 ++++++++++++++++++++++++++++++++++++++ init.lua | 8 +- 5 files changed, 748 insertions(+), 2 deletions(-) create mode 100644 colors/demoiselles.lua create mode 100644 colors/nighthawks.lua create mode 100644 colors/sistine.lua create mode 100644 colors/starry_night.lua diff --git a/colors/demoiselles.lua b/colors/demoiselles.lua new file mode 100644 index 0000000..a7b62da --- /dev/null +++ b/colors/demoiselles.lua @@ -0,0 +1,195 @@ +local variant = vim.o.background -- "dark" or "light" +local colors = {} + +if variant == "dark" then + colors = { + bg = "#1b1b1b", -- Bone black + fg = "#ddccbb", -- Lead white (muted for dark bg) + comment = "#807060", -- Warm neutral + red = "#d96a59", -- Vermilion-ochre + green = "#6ea177", -- Emerald green + yellow = "#e0b15e", -- Cadmium yellow + blue = "#8fb9c9", -- Cobalt blue + magenta = "#c9b78e", -- Ochre-pink repurposed + cyan = "#a3b6a8", -- Cool neutral accent + cursorline = "#2a2e33", -- Slightly lighter than bg + highlight = "#444444", -- For visual selections + } +else + colors = { + bg = "#fcf8f0", -- Lead white / fresco ivory + fg = "#3b3025", -- Deep umber brown + red = "#a5443a", -- Rusty vermilion + green = "#4f7c69", -- Emerald green softened + yellow = "#c69c3a", -- Renaissance gold / cadmium yellow + blue = "#3b6a8b", -- Muted cobalt blue + magenta = "#8c7a5e", -- Ochre-pink accent + cyan = "#a8c3d1", -- Soft sky blue-grey + comment = "#8b7e70", -- Warm stone grey + cursorline = "#e0d5c8", -- Pale ivory shadow + highlight = "#c9a04f", -- Gold highlight + } +end + +vim.cmd("hi clear") +vim.o.termguicolors = true +vim.g.colors_name = "demoiselles" + +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("CursorLine", { bg = colors.cursorline }) +hi("Visual", { bg = colors.highlight }) +hi("LineNr", { fg = colors.comment }) +hi("CursorLineNr",{ fg = colors.yellow, bold = true }) +hi("VertSplit", { fg = colors.comment }) +hi("StatusLine", { fg = colors.fg, bg = colors.cursorline }) +hi("StatusLineNC",{ fg = colors.comment, bg = colors.cursorline }) +hi("Pmenu", { fg = colors.fg, bg = colors.cursorline }) +hi("PmenuSel", { fg = colors.bg, bg = colors.yellow }) +hi("Search", { fg = colors.bg, bg = colors.yellow }) +hi("IncSearch", { fg = colors.bg, bg = colors.red }) + +-- Syntax +hi("Comment", { fg = colors.comment, italic = true }) +hi("Constant", { fg = colors.red }) +hi("String", { fg = colors.yellow }) +hi("Character", { fg = colors.yellow }) +hi("Number", { fg = colors.red }) +hi("Boolean", { fg = colors.red }) +hi("Float", { fg = colors.red }) + +hi("Identifier", { fg = colors.blue }) +hi("Function", { fg = colors.green }) + +hi("Statement", { fg = colors.blue }) +hi("Conditional", { fg = colors.magenta }) +hi("Repeat", { fg = colors.magenta }) +hi("Label", { fg = colors.yellow }) +hi("Operator", { fg = colors.fg }) +hi("Keyword", { fg = colors.blue, bold = true }) +hi("Exception", { fg = colors.red }) + +hi("PreProc", { fg = colors.magenta }) +hi("Include", { fg = colors.blue }) +hi("Define", { fg = colors.magenta }) +hi("Macro", { fg = colors.magenta }) +hi("PreCondit", { fg = colors.magenta }) + +hi("Type", { fg = colors.green }) +hi("StorageClass",{ fg = colors.green }) +hi("Structure", { fg = colors.green }) +hi("Typedef", { fg = colors.green }) + +hi("Special", { fg = colors.cyan }) +hi("SpecialChar", { fg = colors.yellow }) +hi("Tag", { fg = colors.blue }) +hi("Delimiter", { fg = colors.fg }) +hi("SpecialComment",{ fg = colors.comment, italic = true }) +hi("Debug", { fg = colors.red }) + +hi("Underlined", { fg = colors.blue, underline = true }) +hi("Bold", { bold = true }) +hi("Italic", { italic = true }) + +hi("Error", { fg = colors.red, bold = true }) +hi("Todo", { fg = colors.magenta, bold = true }) +hi("WarningMsg", { fg = colors.yellow }) +hi("ErrorMsg", { fg = colors.red, bold = true }) + +-- Diagnostics (LSP) +hi("DiagnosticError", { fg = colors.red }) +hi("DiagnosticWarn", { fg = colors.yellow }) +hi("DiagnosticInfo", { fg = colors.blue }) +hi("DiagnosticHint", { fg = colors.cyan }) + +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.cyan }) +-- 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 + +-- 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 }) diff --git a/colors/nighthawks.lua b/colors/nighthawks.lua new file mode 100644 index 0000000..5b627c9 --- /dev/null +++ b/colors/nighthawks.lua @@ -0,0 +1,201 @@ +-- nighthawks.lua +-- Neovim colorscheme inspired by Edward Hopper's "Nighthawks" (1942) +-- Dark = cinematic nighttime neon +-- Light = soft morning reinterpretation + +local variant = vim.g.nighthawks_variant or "dark" + +local colors = {} + +if variant == "dark" then + colors = { + bg = "#0e1a22", -- Deep midnight navy + fg = "#d4d8dc", -- Pale warm white + comment = "#6a7b85", -- Smoky teal-gray + red = "#d15b4d", -- Neon diner red + green = "#6fa88d", -- Jade counter green + yellow = "#e3c770", -- Warm interior light + blue = "#5a87a5", -- Windowpane blue + magenta = "#b67aa0", -- Soft wine glow + cyan = "#77aab7", -- Cool teal accent + cursorline = "#172730", -- Slightly lighter than bg + highlight = "#24404f", -- Dim cyan highlight + } +else + colors = { + bg = "#f6f4f2", -- Muted paper white + fg = "#2f3b44", -- Charcoal ink + comment = "#868d93", -- Cool gray + red = "#b14f42", -- Brick red + green = "#5d8b76", -- Muted jade + yellow = "#c8a856", -- Soft sunlight gold + blue = "#3f6c89", -- Subdued cobalt + magenta = "#9b6f86", -- Dusty rose + cyan = "#649aa5", -- Sky teal + cursorline = "#e3dfdc", -- Light stone gray + highlight = "#c2b89c", -- Warm neutral highlight + } +end + +local function hi(group, opts) + vim.api.nvim_set_hl(0, group, opts) +end + +-- Core UI +hi("Normal", { fg = colors.fg, bg = colors.bg }) +hi("CursorLine", { bg = colors.cursorline }) +hi("Visual", { bg = colors.highlight }) +hi("LineNr", { fg = colors.comment }) +hi("CursorLineNr",{ fg = colors.yellow, bold = true }) +hi("VertSplit", { fg = colors.comment }) +hi("StatusLine", { fg = colors.fg, bg = colors.cursorline }) +hi("StatusLineNC",{ fg = colors.comment, bg = colors.cursorline }) +hi("Pmenu", { fg = colors.fg, bg = colors.cursorline }) +hi("PmenuSel", { fg = colors.bg, bg = colors.blue, bold = true }) +hi("Search", { fg = colors.bg, bg = colors.yellow, bold = true }) +hi("IncSearch", { fg = colors.bg, bg = colors.red, bold = true }) + +-- Syntax +hi("Comment", { fg = colors.comment, italic = true }) +hi("Constant", { fg = colors.red }) +hi("String", { fg = colors.yellow }) +hi("Character", { fg = colors.yellow }) +hi("Number", { fg = colors.cyan }) +hi("Boolean", { fg = colors.cyan, bold = true }) +hi("Float", { fg = colors.cyan }) + +hi("Identifier", { fg = colors.blue }) +hi("Function", { fg = colors.green, bold = true }) + +hi("Statement", { fg = colors.blue }) +hi("Conditional", { fg = colors.magenta }) +hi("Repeat", { fg = colors.magenta }) +hi("Label", { fg = colors.yellow }) +hi("Operator", { fg = colors.fg }) +hi("Keyword", { fg = colors.blue, bold = true }) +hi("Exception", { fg = colors.red }) + +hi("PreProc", { fg = colors.magenta }) +hi("Include", { fg = colors.blue }) +hi("Define", { fg = colors.magenta }) +hi("Macro", { fg = colors.magenta }) +hi("PreCondit", { fg = colors.magenta }) + +hi("Type", { fg = colors.green }) +hi("StorageClass",{ fg = colors.green }) +hi("Structure", { fg = colors.green }) +hi("Typedef", { fg = colors.green }) + +hi("Special", { fg = colors.cyan }) +hi("SpecialChar", { fg = colors.yellow }) +hi("Tag", { fg = colors.blue }) +hi("Delimiter", { fg = colors.fg }) +hi("SpecialComment",{ fg = colors.comment, italic = true }) +hi("Debug", { fg = colors.red }) + +hi("Underlined", { fg = colors.blue, underline = true }) +hi("Bold", { bold = true }) +hi("Italic", { italic = true }) + +hi("Error", { fg = colors.red, bold = true }) +hi("Todo", { fg = colors.yellow, bold = true }) +hi("WarningMsg", { fg = colors.yellow }) +hi("ErrorMsg", { fg = colors.red, bold = true }) + +-- Diagnostics (LSP) +hi("DiagnosticError", { fg = colors.red }) +hi("DiagnosticWarn", { fg = colors.yellow }) +hi("DiagnosticInfo", { fg = colors.blue }) +hi("DiagnosticHint", { fg = colors.cyan }) + +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.cyan }) + +-- 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 + +-- 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 }) + +return colors diff --git a/colors/sistine.lua b/colors/sistine.lua new file mode 100644 index 0000000..b43ad24 --- /dev/null +++ b/colors/sistine.lua @@ -0,0 +1,151 @@ +-- 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 }) diff --git a/colors/starry_night.lua b/colors/starry_night.lua new file mode 100644 index 0000000..fa6eb67 --- /dev/null +++ b/colors/starry_night.lua @@ -0,0 +1,195 @@ +local variant = vim.o.background -- "dark" or "light" +local colors = {} + +if variant == "dark" then + colors = { + bg = "#0b1220", -- Deep midnight blue + fg = "#d7dbe7", -- Starlight white + comment = "#5b6a8a", -- Muted blue-gray + red = "#d77b6e", -- Rusty crimson (village roofs) + green = "#7ea97e", -- Cypress green + yellow = "#f5d97a", -- Star glow + blue = "#345d9d", -- Ultramarine swirl + magenta = "#9d7cae", -- Violet undertones + cyan = "#5fb8c5", -- Turquoise accent + cursorline = "#162033", -- Soft navy for line highlight + highlight = "#244060", -- Glow for visual mode + } +else + colors = { + bg = "#f7f4ed", -- Soft parchment dawn + fg = "#2f3d59", -- Ink blue + comment = "#7c869f", -- Cloud gray + red = "#c05a50", -- Terracotta red + green = "#608b6f", -- Cypress softened + yellow = "#e6c45d", -- Morning gold + blue = "#476c9b", -- Sky blue + magenta = "#8c6f98", -- Lilac violet + cyan = "#6aa5b4", -- Light teal + cursorline = "#e1ddd3", -- Pale beige + highlight = "#c9b99a", -- Golden-beige for visual select + } +end + +vim.cmd("hi clear") +vim.o.termguicolors = true +vim.g.colors_name = "demoiselles" + +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("CursorLine", { bg = colors.cursorline }) +hi("Visual", { bg = colors.highlight }) +hi("LineNr", { fg = colors.comment }) +hi("CursorLineNr",{ fg = colors.yellow, bold = true }) +hi("VertSplit", { fg = colors.comment }) +hi("StatusLine", { fg = colors.fg, bg = colors.cursorline }) +hi("StatusLineNC",{ fg = colors.comment, bg = colors.cursorline }) +hi("Pmenu", { fg = colors.fg, bg = colors.cursorline }) +hi("PmenuSel", { fg = colors.bg, bg = colors.yellow }) +hi("Search", { fg = colors.bg, bg = colors.yellow }) +hi("IncSearch", { fg = colors.bg, bg = colors.red }) + +-- Syntax +hi("Comment", { fg = colors.comment, italic = true }) +hi("Constant", { fg = colors.red }) +hi("String", { fg = colors.yellow }) +hi("Character", { fg = colors.yellow }) +hi("Number", { fg = colors.cyan }) +hi("Boolean", { fg = colors.cyan }) +hi("Float", { fg = colors.cyan }) + +hi("Identifier", { fg = colors.blue }) +hi("Function", { fg = colors.green }) + +hi("Statement", { fg = colors.blue }) +hi("Conditional", { fg = colors.magenta }) +hi("Repeat", { fg = colors.magenta }) +hi("Label", { fg = colors.yellow }) +hi("Operator", { fg = colors.fg }) +hi("Keyword", { fg = colors.blue, bold = true }) +hi("Exception", { fg = colors.red }) + +hi("PreProc", { fg = colors.magenta }) +hi("Include", { fg = colors.blue }) +hi("Define", { fg = colors.magenta }) +hi("Macro", { fg = colors.magenta }) +hi("PreCondit", { fg = colors.magenta }) + +hi("Type", { fg = colors.green }) +hi("StorageClass",{ fg = colors.green }) +hi("Structure", { fg = colors.green }) +hi("Typedef", { fg = colors.green }) + +hi("Special", { fg = colors.cyan }) +hi("SpecialChar", { fg = colors.yellow }) +hi("Tag", { fg = colors.blue }) +hi("Delimiter", { fg = colors.fg }) +hi("SpecialComment",{ fg = colors.comment, italic = true }) +hi("Debug", { fg = colors.red }) + +hi("Underlined", { fg = colors.blue, underline = true }) +hi("Bold", { bold = true }) +hi("Italic", { italic = true }) + +hi("Error", { fg = colors.red, bold = true }) +hi("Todo", { fg = colors.magenta, bold = true }) +hi("WarningMsg", { fg = colors.yellow }) +hi("ErrorMsg", { fg = colors.red, bold = true }) + +-- Diagnostics (LSP) +hi("DiagnosticError", { fg = colors.red }) +hi("DiagnosticWarn", { fg = colors.yellow }) +hi("DiagnosticInfo", { fg = colors.blue }) +hi("DiagnosticHint", { fg = colors.cyan }) + +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.cyan }) +-- 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.green }) +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 + +-- 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 }) diff --git a/init.lua b/init.lua index 5c9a268..2cd6828 100644 --- a/init.lua +++ b/init.lua @@ -14,12 +14,16 @@ if not vim.loop.fs_stat(lazypath) then }) end vim.opt.rtp:prepend(lazypath) -require("lazy").setup("plugins") -- SET NEOVIM THEME -- vim.o.termguicolors = true -- vim.cmd "let g:everforest_background = 'hard'" -vim.cmd.colorscheme('kanagawa') +vim.cmd.colorscheme('sistine') +vim.o.background = "dark" + +-- Load Plugins +require("lazy").setup("plugins") + vim.keymap.set("n", "ct", "Telescope colorscheme") -- LSP --