summaryrefslogtreecommitdiff
path: root/.config/wallust/templates/nvim.lua
blob: be60dd76ea6f66c8c01ed80423ef8490417e91a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
-- Generated by wallust from your system color scheme. Do not edit by hand.
-- Source of truth: wallust/.config/wallust/templates/nvim.lua
local bg     = "{{background}}"
local fg     = "{{foreground}}"
local cursor = "{{cursor}}"
local c = {
  "{{color0}}",  "{{color1}}",  "{{color2}}",  "{{color3}}",
  "{{color4}}",  "{{color5}}",  "{{color6}}",  "{{color7}}",
  "{{color8}}",  "{{color9}}",  "{{color10}}", "{{color11}}",
  "{{color12}}", "{{color13}}", "{{color14}}", "{{color15}}",
}

-- Pick light/dark from the background luminance so plugins (diff, signs, …) behave.
local function lum(hex)
  hex = hex:gsub("#", "")
  local r = tonumber(hex:sub(1, 2), 16) / 255
  local g = tonumber(hex:sub(3, 4), 16) / 255
  local b = tonumber(hex:sub(5, 6), 16) / 255
  return 0.2126 * r + 0.7152 * g + 0.0722 * b
end

vim.opt.background = lum(bg) < 0.5 and "dark" or "light"
vim.g.colors_name = "wallust"

local set = function(name, opts)
  vim.api.nvim_set_hl(0, name, opts)
end

-- semantic aliases for the 16-color palette
local black, red, green, yellow, blue, magenta, cyan, white =
  c[1], c[2], c[3], c[4], c[5], c[6], c[7], c[8]
local brblack, brred, brgreen, bryellow, brblue, brmagenta, brcyan, brwhite =
  c[9], c[10], c[11], c[12], c[13], c[14], c[15], c[16]

local panel = c[1]   -- floating / panel background (near bg)
local sel   = brblack -- selection / visual background
local muted = brblack -- dimmed / secondary text

-- ── Editor ──────────────────────────────────────────────────────────────
set("Normal",       { fg = fg,     bg = bg })
set("NormalFloat",  { fg = fg,     bg = panel })
set("NormalNC",     { fg = fg,     bg = bg })
set("ColorColumn",  { bg = panel })
set("Conceal",      { fg = muted })
set("Cursor",       { fg = bg,     bg = cursor })
set("CursorIM",     { fg = bg,     bg = cursor })
set("CursorLine",   { bg = panel })
set("CursorColumn", { bg = panel })
set("CursorLineNr", { fg = fg,     bg = panel })
set("LineNr",       { fg = muted })
set("SignColumn",   { fg = muted,  bg = bg })
set("WinSeparator", { fg = muted })
set("VertSplit",    { fg = muted })
set("Directory",    { fg = blue })
set("DiffAdd",      { fg = green,  bg = bg })
set("DiffChange",   { fg = yellow, bg = bg })
set("DiffDelete",   { fg = red,    bg = bg })
set("DiffText",     { fg = yellow, bg = panel })
set("ErrorMsg",     { fg = red,    bold = true })
set("WarningMsg",   { fg = yellow, bold = true })
set("ModeMsg",      { fg = fg })
set("MsgArea",      { fg = fg })
set("MoreMsg",      { fg = green })
set("Question",     { fg = green })
set("NonText",      { fg = muted })
set("SpecialKey",   { fg = muted })
set("Whitespace",   { fg = panel })
set("Title",        { fg = yellow, bold = true })
set("Folded",       { fg = muted,  bg = panel })
set("FoldColumn",   { fg = muted,  bg = bg })
set("MatchParen",   { fg = yellow, bg = panel, bold = true })
set("Search",       { fg = bg,     bg = yellow })
set("IncSearch",    { fg = bg,     bg = magenta })
set("CurSearch",    { fg = bg,     bg = magenta })
set("QuickFixLine", { fg = bg,     bg = blue })
set("Visual",       { bg = sel })
set("VisualNOS",    { bg = sel })
set("StatusLine",      { fg = fg,     bg = panel })
set("StatusLineNC",    { fg = muted,  bg = bg })
set("TabLine",         { fg = muted,  bg = bg })
set("TabLineFill",     { fg = muted,  bg = bg })
set("TabLineSel",      { fg = bg,     bg = blue })
set("WildMenu",        { fg = bg,     bg = blue })
set("Winbar",          { fg = fg,     bg = panel })
set("WinbarNC",        { fg = muted,  bg = bg })
set("Pmenu",           { fg = fg,     bg = panel })
set("PmenuSel",        { fg = bg,     bg = blue })
set("PmenuSbar",       { bg = panel })
set("PmenuThumb",      { bg = muted })
set("FloatBorder",     { fg = muted })
set("FloatTitle",      { fg = yellow, bg = panel })
set("FloatFooter",     { fg = muted,  bg = panel })
set("SpellBad",        { undercurl = true, sp = red })
set("SpellCap",        { undercurl = true, sp = yellow })
set("SpellLocal",      { undercurl = true, sp = cyan })
set("SpellRare",       { undercurl = true, sp = magenta })

-- ── Legacy syntax groups ────────────────────────────────────────────────
set("Comment",      { fg = muted,  italic = true })
set("Constant",     { fg = cyan })
set("String",       { fg = green })
set("Character",    { fg = green })
set("Number",       { fg = red })
set("Boolean",      { fg = red })
set("Float",        { fg = red })
set("Identifier",   { fg = brcyan })
set("Function",     { fg = blue })
set("Statement",    { fg = magenta })
set("Conditional",  { fg = magenta })
set("Repeat",       { fg = magenta })
set("Label",        { fg = magenta })
set("Operator",     { fg = fg })
set("Keyword",      { fg = magenta })
set("Exception",    { fg = magenta })
set("PreProc",      { fg = brblue })
set("Include",      { fg = brblue })
set("Define",       { fg = brblue })
set("Macro",        { fg = brblue })
set("PreCondit",    { fg = brblue })
set("Type",         { fg = yellow })
set("StorageClass", { fg = yellow })
set("Structure",    { fg = yellow })
set("Typedef",      { fg = yellow })
set("Special",      { fg = brgreen })
set("SpecialChar",  { fg = brgreen })
set("Tag",          { fg = red })
set("Delimiter",    { fg = muted })
set("SpecialComment", { fg = muted, italic = true })
set("Debug",        { fg = red })
set("Underlined",   { fg = blue, underline = true })
set("Ignore",       { fg = muted })
set("Error",        { fg = red, bold = true })
set("Todo",         { fg = bg, bg = yellow, bold = true })

-- ── Treesitter ──────────────────────────────────────────────────────────
set("@comment",              { fg = muted, italic = true })
set("@comment.lua",          { fg = muted, italic = true })
set("@error",                { fg = red, undercurl = true, sp = red })
set("@none",                 {})
set("@preproc",              { fg = brblue })
set("@define",               { fg = brblue })
set("@operator",             { fg = fg })

set("@string",               { fg = green })
set("@string.escape",        { fg = red })
set("@string.special",       { fg = brgreen })
set("@character",            { fg = green })
set("@character.special",    { fg = brgreen })

set("@number",               { fg = red })
set("@float",                { fg = red })
set("@boolean",              { fg = red })
set("@constant",             { fg = cyan })
set("@constant.builtin",     { fg = brcyan })
set("@constant.macro",       { fg = brblue })

set("@variable",             { fg = fg })
set("@variable.builtin",     { fg = red })
set("@variable.parameter",   { fg = fg })
set("@variable.parameter.builtin", { fg = fg })
set("@field",                { fg = fg })
set("@property",             { fg = fg })

set("@function",             { fg = blue })
set("@function.builtin",     { fg = blue })
set("@function.macro",       { fg = brblue })
set("@method",               { fg = blue })
set("@constructor",          { fg = yellow })

set("@parameter",            { fg = fg })
set("@keyword",              { fg = magenta })
set("@keyword.function",     { fg = magenta })
set("@keyword.operator",     { fg = magenta })
set("@keyword.modifier",     { fg = magenta })
set("@storageclass",         { fg = yellow })
set("@structure",            { fg = yellow })
set("@namespace",            { fg = blue })

set("@type",                 { fg = yellow })
set("@type.builtin",        { fg = bryellow })
set("@type.definition",      { fg = yellow })

set("@punctuation.delimiter", { fg = muted })
set("@punctuation.bracket",   { fg = fg })
set("@punctuation.special",   { fg = magenta })

set("@text",                 { fg = fg })
set("@text.strong",          { bold = true })
set("@text.emphasis",        { italic = true })
set("@text.underline",       { underline = true })
set("@text.strike",          { strikethrough = true })
set("@text.title",           { fg = blue, bold = true })
set("@text.title.1",         { fg = blue, bold = true })
set("@text.title.2",         { fg = cyan, bold = true })
set("@text.title.3",         { fg = green, bold = true })
set("@text.title.4",         { fg = yellow, bold = true })
set("@text.title.5",         { fg = magenta, bold = true })
set("@text.title.6",         { fg = red, bold = true })
set("@text.literal",         { fg = green })
set("@text.uri",             { fg = cyan, underline = true })
set("@text.todo",            { fg = bg, bg = yellow, bold = true })
set("@text.note",            { fg = bg, bg = blue, bold = true })
set("@text.warning",         { fg = bg, bg = yellow, bold = true })
set("@text.danger",          { fg = bg, bg = red, bold = true })

set("@tag",                  { fg = red })
set("@tag.attribute",        { fg = yellow })
set("@tag.delimiter",        { fg = muted })

set("@markup.heading",       { fg = blue, bold = true })
set("@markup.strong",        { bold = true })
set("@markup.italic",        { italic = true })
set("@markup.link",          { fg = cyan, underline = true })
set("@markup.link.url",      { fg = cyan, underline = true })
set("@markup.raw",           { fg = green })
set("@markup.list",          { fg = magenta })
set("@markup.quote",         { fg = muted, italic = true })

set("@diff.add",             { fg = green })
set("@diff.delete",          { fg = red })
set("@diff.change",          { fg = yellow })

set("@conceal",              { fg = muted })

-- ── LSP / Diagnostics ───────────────────────────────────────────────────
set("DiagnosticError",            { fg = red })
set("DiagnosticWarn",             { fg = yellow })
set("DiagnosticInfo",             { fg = blue })
set("DiagnosticHint",             { fg = cyan })
set("DiagnosticOk",               { fg = green })
set("DiagnosticVirtualTextError", { fg = red })
set("DiagnosticVirtualTextWarn",  { fg = yellow })
set("DiagnosticVirtualTextInfo",  { fg = blue })
set("DiagnosticVirtualTextHint",  { fg = cyan })
set("DiagnosticUnderlineError",   { undercurl = true, sp = red })
set("DiagnosticUnderlineWarn",    { undercurl = true, sp = yellow })
set("DiagnosticUnderlineInfo",    { undercurl = true, sp = blue })
set("DiagnosticUnderlineHint",    { undercurl = true, sp = cyan })
set("DiagnosticSignError",        { fg = red })
set("DiagnosticSignWarn",         { fg = yellow })
set("DiagnosticSignInfo",         { fg = blue })
set("DiagnosticSignHint",         { fg = cyan })
set("DiagnosticFloatingError",    { fg = red })
set("DiagnosticFloatingWarn",     { fg = yellow })
set("DiagnosticFloatingInfo",     { fg = blue })
set("DiagnosticFloatingHint",     { fg = cyan })
set("DiagnosticUnnecessary",      { undercurl = true, sp = muted })

set("LspReferenceText",           { bg = sel })
set("LspReferenceRead",           { bg = sel })
set("LspReferenceWrite",          { bg = sel })
set("LspCodeLens",                { fg = muted })
set("LspCodeLensSeparator",       { fg = muted })
set("LspSignatureActiveParameter", { fg = yellow, bold = true })
set("LspInlayHint",               { fg = muted, italic = true })

-- ── Git / signs ─────────────────────────────────────────────────────────
set("GitSignsAdd",             { fg = green })
set("GitSignsChange",          { fg = yellow })
set("GitSignsDelete",          { fg = red })
set("GitSignsAddLn",           { fg = green })
set("GitSignsChangeLn",        { fg = yellow })
set("GitSignsDeleteLn",        { fg = red })
set("GitSignsCurrentLineBlame", { fg = muted })
set("SignAdd",                 { fg = green })
set("SignChange",              { fg = yellow })
set("SignDelete",              { fg = red })

-- ── Misc plugin UI ──────────────────────────────────────────────────────
set("TelescopeNormal",         { fg = fg,     bg = panel })
set("TelescopeBorder",         { fg = muted })
set("TelescopePromptBorder",   { fg = muted })
set("TelescopeResultsBorder",  { fg = muted })
set("TelescopeTitle",          { fg = yellow, bold = true })
set("TelescopeSelection",      { fg = bg, bg = blue })
set("TelescopeMatching",       { fg = yellow, bold = true })

set("WhichKey",                { fg = fg })
set("WhichKeyGroup",           { fg = blue })
set("WhichKeyDesc",            { fg = fg })
set("WhichKeySeparator",       { fg = muted })
set("WhichKeyFloat",           { bg = panel })
set("WhichKeyValue",           { fg = muted })

set("CmpItemAbbr",             { fg = fg })
set("CmpItemAbbrDeprecated",   { fg = muted, strikethrough = true })
set("CmpItemAbbrMatch",        { fg = yellow, bold = true })
set("CmpItemKind",             { fg = blue })
set("CmpItemMenu",             { fg = muted })

set("NvimTreeNormal",          { fg = fg, bg = bg })
set("NvimTreeIndentMarker",    { fg = panel })
set("NvimTreeFolderIcon",      { fg = blue })
set("NvimTreeOpenedFile",      { fg = blue })
set("NvimTreeGitDirty",        { fg = yellow })
set("NvimTreeGitNew",          { fg = green })
set("NvimTreeGitDeleted",      { fg = red })

set("BufferLineFill",          { bg = bg })
set("BufferLineBackground",     { fg = muted })
set("BufferLineBufferSelected", { fg = fg, bold = true })
set("BufferLineIndicatorSelected", { fg = blue })
set("BufferLineTabSelected",    { fg = blue, bold = true })
set("BufferLineModified",       { fg = yellow })

set("NeoTreeNormal",           { fg = fg, bg = bg })