moves from plugin theme to single lua file

This commit is contained in:
Dennis Schoepf 2025-11-05 15:55:56 +01:00
parent b39c6faf50
commit fdd35fa934
7 changed files with 329 additions and 65 deletions

View file

@ -0,0 +1,284 @@
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 = "LightGrey", bg = "DarkGrey", ctermfg = "LightGrey", ctermbg = "DarkGrey" })
hi("Cursor", { bg = palette.magenta_bright })
hi("DiffText", { bg = "Red", bold = true, ctermbg = "Red", cterm = { bold = true } })
hi("ErrorMsg", { fg = palette.red_bright, bg = palette.red_subtle_bg, ctermfg = "White", ctermbg = "DarkRed" })
hi("IncSearch", { reverse = true, cterm = { reverse = true } })
hi("ModeMsg", { bold = true, cterm = { bold = true } })
hi("NonText", { fg = palette.grey, ctermfg = "DarkGrey" })
hi("PmenuSbar", { bg = "Grey", ctermbg = "Grey" })
hi("StatusLine", { reverse = true, bold = true, cterm = { reverse = true, bold = true } })
hi("StatusLineNC", { reverse = true, 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 = "Black", bg = "Yellow", ctermfg = "Black", ctermbg = "Yellow" })
hi("VertSplit", { link = "Normal" })
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", { link = "WinSeparator" })
hi("FloatTitle", { link = "Title" })
hi("FloatFooter", { link = "Title" })
hi("FloatShadow", { bg = "Black", blend = 80 })
hi("FloatShadowThrough", { bg = "Black", blend = 100 })
hi("RedrawDebugNormal", { reverse = true, cterm = { reverse = true } })
hi("RedrawDebugClear", { bg = "Yellow", ctermbg = "Yellow" })
hi("RedrawDebugComposed", { bg = "Green", ctermbg = "Green" })
hi("RedrawDebugRecompose", { bg = "Red", ctermbg = "Red" })
hi("Error", { fg = "White", bg = "Red", ctermfg = "White", ctermbg = "Red" })
hi("Todo", { fg = "Blue", bg = "Yellow", ctermfg = "Black", ctermbg = "Yellow" })
hi("String", { link = "Constant" })
hi("Character", { link = "Constant" })
hi("Number", { link = "Constant" })
hi("Boolean", { link = "Constant" })
hi("Float", { link = "Number" })
hi("Function", { link = "Identifier" })
hi("Conditional", { link = "Statement" })
hi("Repeat", { link = "Statement" })
hi("Label", { link = "Statement" })
hi("Operator", { link = "Statement" })
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", { link = "Type" })
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 = "Orange", ctermfg = 3 })
hi("DiagnosticInfo", { fg = "LightBlue", ctermfg = 4 })
hi("DiagnosticHint", { fg = "LightGrey", ctermfg = 7 })
hi("DiagnosticOk", { fg = "LightGreen", ctermfg = 10 })
hi("DiagnosticUnderlineError", { fg = palette.red_bright, undercurl = true, cterm = { underline = true } })
hi("DiagnosticUnderlineWarn", { sp = "Orange", undercurl = true, cterm = { underline = true } })
hi("DiagnosticUnderlineInfo", { sp = "LightBlue", undercurl = true, cterm = { underline = true } })
hi("DiagnosticUnderlineHint", { sp = "LightGrey", undercurl = true, cterm = { underline = true } })
hi("DiagnosticUnderlineOk", { sp = "LightGreen", 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", { sp = "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 = "Comment" })
hi("@markup.link", { link = "Identifier" })
hi("@markup.heading", { link = "Title" })
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.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.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 = "DarkRed", ctermbg = "DarkRed" })
hi("CursorColumn", { bg = "Grey40", 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", { bg = "DarkBlue", ctermbg = "DarkBlue" })
hi("DiffChange", { bg = "DarkMagenta", ctermbg = "DarkMagenta" })
hi("DiffDelete", { fg = "Blue", bg = "DarkCyan", bold = true, ctermfg = "Blue", ctermbg = "DarkCyan" })
hi("Directory", { fg = "Cyan", ctermfg = "LightCyan" })
hi("FoldColumn", { fg = "Cyan", bg = "Grey", ctermfg = "Cyan", ctermbg = "DarkGrey" })
hi("Folded", { fg = "Cyan", bg = "DarkGrey", ctermfg = "Cyan", ctermbg = "DarkGrey" })
hi("LineNr", { fg = palette.grey_bright, ctermfg = "Grey" })
hi("MatchParen", { bg = "DarkCyan", ctermbg = "DarkCyan" })
hi("MoreMsg", { fg = "SeaGreen", bold = true, ctermfg = "LightGreen" })
hi("Pmenu", { bg = palette.bg, ctermfg = "White", ctermbg = "Black" })
hi("PmenuSel", { bg = "DarkGrey", ctermfg = "DarkGrey", ctermbg = "Black" })
hi("PmenuThumb", { bg = "White", ctermbg = "White" })
hi("Question", { fg = "Green", bold = true, ctermfg = "LightGreen" })
hi("Search", { fg = palette.cyan_bright, bg = palette.cyan_subtle_bg, ctermfg = "LightCyan", ctermbg = "DarkCyan" })
hi(
"Substitute",
{ fg = palette.blue_subtle_bg, bg = palette.blue_bright, bold = true, ctermfg = "DarkBlue", ctermbg = "LightBlue" }
)
hi("SignColumn", { fg = palette.grey_bright, bg = palette.bg, ctermfg = "Cyan", ctermbg = "DarkGrey" })
hi("SpecialKey", { fg = "Cyan", ctermfg = "LightBlue" })
hi("SpellBad", { sp = "Red", undercurl = true, ctermbg = "Red" })
hi("SpellCap", { sp = "Blue", undercurl = true, ctermbg = "Blue" })
hi("SpellLocal", { sp = "Cyan", undercurl = true, ctermbg = "Cyan" })
hi("SpellRare", { sp = "Magenta", undercurl = true, ctermbg = "Magenta" })
hi(
"StatusLineTerm",
{ fg = "Black", bg = "LightGreen", bold = true, ctermfg = "Black", ctermbg = "LightGreen", cterm = { bold = true } }
)
hi("StatusLineTermNC", { fg = "Black", bg = "LightGreen", ctermfg = "Black", ctermbg = "LightGreen" })
hi(
"TabLine",
{ bg = "DarkGrey", underline = true, ctermfg = "White", ctermbg = "DarkGrey", cterm = { underline = true } }
)
hi("Title", { fg = "Magenta", bold = true, ctermfg = "LightMagenta" })
hi(
"Visual",
{ fg = palette.magenta_brighter, bg = palette.magenta_subtle_bg, ctermfg = "LightMagenta", ctermbg = "DarkMagenta" }
)
hi("WarningMsg", { fg = "Red", 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("Special", { fg = palette.silver, ctermfg = "LightGrey" })
hi("Identifier", { fg = palette.fg, bold = true, ctermfg = "White", cterm = { bold = true } })
hi("Statement", { fg = palette.fg_alt, italic = true, ctermfg = "White" })
hi("PreProc", { fg = "#ff80ff", ctermfg = "LightBlue" })
hi("Type", { fg = palette.silver, bold = true, ctermfg = "LightCyan" })
hi("Underlined", { fg = "#80a0ff", underline = true, ctermfg = "LightBlue", cterm = { underline = true } })
hi("Ignore", { ctermfg = "Black" })
hi("Added", { fg = "LimeGreen", ctermfg = "Green" })
hi("Changed", { fg = "DodgerBlue", ctermfg = "Blue" })
hi("Removed", { fg = "Red", ctermfg = "Red" })
-- Snacks
hi("SnacksIndentScope", { fg = palette.magenta, ctermfg = "LightGrey" })
hi("SnacksIndent", { fg = palette.magenta_subtle_bg, ctermfg = "DarkGrey" })
-- Flash
hi("FlashMatch", { fg = palette.bg, bg = palette.grey_bright, ctermfg = "LightGrey", ctermbg = "DarkGrey" })
-- todo-comments
hi("TodoBgTODO", { fg = palette.bg, bg = palette.cyan, ctermbg = "Cyan", ctermfg = "Black" })
hi("TodoFgTODO", { fg = palette.cyan, ctermfg = "Cyan" })
end

View file

@ -18,6 +18,8 @@ vim.opt.rtp:prepend(lazypath)
vim.g.mapleader = " "
vim.g.maplocalleader = " "
vim.cmd([[colorscheme winterly]])
local options = {
backup = false, -- creates a backup file
clipboard = "unnamedplus", -- allows neovim to access the system clipboard
@ -72,7 +74,7 @@ require("lazy").setup({
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
install = { colorscheme = { "rose-pine" } },
install = { colorscheme = { "winterly" } },
-- automatically check for plugin updates
checker = { enabled = false },
})

View file

@ -0,0 +1,33 @@
return {
fg = "#ffffff",
fg_alt = "#bf8a9f",
fg_dim = "#807c9f",
bg = "#0f0b15",
bg_secondary = "#1d202f",
grey = "#807c9f",
grey_bright = "#807c9f",
red = "#f47359",
red_bright = "#ff6a7a",
red_subtle_bg = "#67182f",
green = "#29a444",
green_bright = "#00a392",
green_subtle_bg = "#10452f",
yellow = "#b58a52",
yellow_bright = "#df9080",
yellow_brighter = "#FCC1B6",
yellow_subtle_bg = "#54362a",
blue = "#3f95f6",
blue_bright = "#029fff",
blue_subtle_bg = "#2a346e",
blue_subtle_dark_bg = "#003045",
magenta = "#d369af",
magenta_bright = "#af85ea",
magenta_brighter = "#c57faf",
magenta_subtle_bg = "#572454",
magenta_subtle_bg_darker = "#331531",
cyan = "#4fbaef",
cyan_bright = "#35afbf",
cyan_subtle_bg = "#133d56",
silver = "#b8c6d5",
silver_bright = "#ffffff",
}

View file

@ -8,17 +8,12 @@ return {
"icon",
"permissions",
"size",
-- "mtime",
},
float = {
padding = 4,
border = "rounded",
preview_split = "auto",
"mtime",
},
},
-- stylua: ignore
keys = {
{ "<leader>n", "<cmd>Oil --float<cr>", desc = "Open file browser", mode = "n" },
{ "<leader>n", "<cmd>Oil<cr>", desc = "Open file browser", mode = "n" },
}
,
}

View file

@ -21,7 +21,6 @@ return {
},
indent = {
enabled = true,
char = "",
},
input = { enabled = true },
lazygit = {
@ -193,5 +192,12 @@ return {
end,
desc = "Open notification history",
},
{
"<leader>oh",
function()
Snacks.picker.highlights()
end,
desc = "List highlights",
},
},
}

View file

@ -1,50 +0,0 @@
return {
"miikanissi/modus-themes.nvim",
priority = 1000,
opts = {
style = "modus_vivendi",
styles = {
comments = { italic = true },
keywords = { italic = false },
},
variant = "tinted",
transparent = true,
sign_column_background = false,
line_nr_column_background = false,
on_highlights = function(highlight, color)
highlight.TabLine = { fg = color.fg_dim, bg = color.bg_dim }
highlight.TabLineFill = { fg = color.fg_dim, bg = color.bg_main }
highlight.BufferInactiveMod = { fg = color.fg_dim, bg = color.bg_main }
highlight.BufferInactive = { fg = color.fg_dim, bg = color.bg_main }
highlight.BufferInactiveSign = { fg = color.fg_alt, bg = color.bg_main }
highlight.BufferInactiveSignRight = { fg = color.fg_alt, bg = color.bg_main }
highlight.BufferInactiveTarget = { fg = color.yellow_faint, bg = color.bg_main }
highlight.BufferActiveMod = { fg = color.fg_dim, bg = color.bg_main }
highlight.BufferActive = { fg = color.fg_dim, bg = color.bg_main }
highlight.BufferActiveSign = { fg = color.fg_alt, bg = color.bg_dim }
highlight.BufferActiveSignRight = { fg = color.fg_alt, bg = color.bg_dim }
highlight.BufferActiveTarget = { fg = color.yellow_faint, bg = color.bg_dim }
highlight.BufferCurrentMod = { fg = color.fg_alt, bg = color.bg_dim }
highlight.BufferCurrentBtn = { fg = color.fg_main, bg = color.bg_dim }
highlight.BufferCurrent = { fg = color.fg_main, bg = color.bg_dim }
highlight.BufferCurrentSign = { fg = color.fg_alt, bg = color.bg_dim }
highlight.BufferCurrentSignRight = { fg = color.fg_alt, bg = color.bg_dim }
highlight.BufferCurrentTarget = { fg = color.yellow_faint, bg = color.bg_dim }
highlight.WhichKeyFloat = { fg = "NONE", bg = "NONE" }
highlight.NormalFloat = { fg = "NONE", bg = "NONE" }
highlight.SnacksIndent = { fg = color.bg_dim }
highlight.FlashMatch = { fg = color.fg_main, bg = color.bg_cyan_subtle }
highlight.FlashLabel = { fg = color.fg_main, bg = color.bg_magenta_intense }
highlight.SnacksIndentScope = { fg = color.fg_dim }
highlight.CursorLine = { bg = color.tinted_bg_cyan_nuanced }
highlight.Visual = { bg = color.bg_magenta_subtle }
highlight.Search = { fg = color.magenta, bg = color.bg_magenta_nuanced }
highlight.IncSearch = { fg = color.magenta, bg = color.bg_magenta_nuanced }
highlight["@comment"] = { fg = color.fg_dim }
highlight["@tag.tsx"] = { fg = color.fg_main }
end,
},
init = function()
vim.cmd([[colorscheme modus]])
end,
}

View file

@ -21,12 +21,6 @@ return {
desc = "Go to definition in other window",
mode = "n",
},
{
"<leader>od",
"<cmd>vsplit | lua vim.lsp.buf.definition()<cr>",
desc = "Go to definition in other window",
mode = "n",
},
{ "<leader>b", group = "+buffer", mode = "n" },
{
"<leader>bd",