vim.cmd("highlight clear")
vim.g.colors_name = "writing"
local bg = "#1a1a1a"
local fg = "#c8c8c8"
local dim = "#585858"
local cursorline = "#222222"
local hi = function(group, opts)
vim.api.nvim_set_hl(0, group, opts)
end
-- Core
hi("Normal", { bg = bg, fg = fg })
hi("NormalFloat", { bg = bg, fg = fg })
hi("NormalNC", { bg = bg, fg = fg })
hi("EndOfBuffer", { bg = bg, fg = bg })
hi("CursorLine", { bg = cursorline })
hi("CursorLineNr", { bg = cursorline, fg = fg })
hi("LineNr", { fg = dim })
hi("SignColumn", { bg = bg })
hi("VertSplit", { bg = bg, fg = dim })
hi("WinSeparator", { bg = bg, fg = dim })
hi("StatusLine", { bg = bg, fg = bg })
hi("StatusLineNC", { bg = bg, fg = bg })
hi("TabLine", { bg = bg, fg = dim })
hi("TabLineFill", { bg = bg })
hi("TabLineSel", { bg = bg, fg = fg })
-- Popup/float
hi("Pmenu", { bg = "#222222", fg = fg })
hi("PmenuSel", { bg = "#333333", fg = fg })
hi("PmenuSbar", { bg = "#222222" })
hi("PmenuThumb", { bg = dim })
-- Search
hi("Search", { bg = "#333333", fg = fg })
hi("IncSearch", { bg = "#444444", fg = fg })
-- Visual
hi("Visual", { bg = "#333333" })
hi("VisualNOS", { bg = "#333333" })
-- Spelling
hi("SpellBad", { undercurl = true, sp = "#cc6666" })
hi("SpellCap", { undercurl = true, sp = "#6699cc" })
hi("SpellRare", { undercurl = true, sp = "#b294bb" })
hi("SpellLocal", { undercurl = true, sp = "#8abeb7" })
-- Diff
hi("DiffAdd", { bg = "#1d2e1d" })
hi("DiffChange", { bg = "#2e2e1d" })
hi("DiffDelete", { bg = "#2e1d1d" })
hi("DiffText", { bg = "#3e3e1d" })
-- Folding
hi("Folded", { bg = "#222222", fg = dim })
hi("FoldColumn", { bg = bg, fg = dim })
-- Misc UI
hi("Directory", { fg = fg })
hi("Title", { fg = fg, bold = true })
hi("Question", { fg = fg })
hi("MoreMsg", { fg = fg })
hi("WarningMsg", { fg = "#cc6666" })
hi("ErrorMsg", { fg = "#cc6666", bg = bg })
hi("NonText", { fg = dim })
hi("SpecialKey", { fg = dim })
hi("Conceal", { fg = dim })
hi("MatchParen", { bg = "#444444" })
hi("ColorColumn", { bg = "#222222" })
hi("Cursor", { bg = fg, fg = bg })
-- Everything text-like is just fg (no syntax highlighting)
for _, group in ipairs({
"Comment", "Constant", "String", "Character", "Number", "Boolean", "Float",
"Identifier", "Function", "Statement", "Conditional", "Repeat", "Label",
"Operator", "Keyword", "Exception", "PreProc", "Include", "Define", "Macro",
"PreCondit", "Type", "StorageClass", "Structure", "Typedef", "Special",
"SpecialChar", "Tag", "Delimiter", "SpecialComment", "Debug", "Underlined",
"Error", "Todo",
}) do
hi(group, { fg = fg, bg = "NONE" })
end
-- NvimTree
hi("NvimTreeNormal", { bg = bg, fg = fg })
hi("NvimTreeNormalNC", { bg = bg, fg = fg })
hi("NvimTreeEndOfBuffer", { bg = bg, fg = bg })
hi("NvimTreeWinSeparator", { bg = bg, fg = bg })
hi("NvimTreeFolderIcon", { fg = dim })
hi("NvimTreeFolderName", { fg = fg })
hi("NvimTreeOpenedFolderName", { fg = fg })
hi("NvimTreeRootName", { fg = fg, bold = true })
-- Goyo padding windows
hi("NormalNC", { bg = bg, fg = bg })
hi("WinBar", { bg = bg, fg = bg })
hi("WinBarNC", { bg = bg, fg = bg })