nvim/colors/plain.lua (view raw)
1local o = vim.o
2local g = vim.g
3local api = vim.api
4
5vim.cmd('hi clear')
6
7if g.syntax_on == 1 then
8 vim.cmd('syntax reset')
9end
10
11g.colors_name = 'plain'
12
13local background = '#f4f4f4'
14local grey_bg_light = '#E5E5E5'
15local black = '#676767'
16local blue = '#6587bf'
17local green = '#7c9f4b'
18local light_green = '#6d8b42'
19local light_red = '#c66666'
20local red = '#db7070'
21local grey = '#767676'
22local light_grey = '#dfdfdf'
23local border = '#999999'
24local highlight = '#424242'
25local dark_yellow = '#d69822'
26local yellow = '#f3e430'
27local light_yellow = '#fadaa0'
28local orange = '#D75F5F'
29local purple = '#8e69d5'
30local white = '#FFFFFF'
31local cyan = '#509c93'
32
33g.terminal_color_0 = black
34g.terminal_color_1 = red
35g.terminal_color_2 = green
36g.terminal_color_3 = dark_yellow
37g.terminal_color_4 = blue
38g.terminal_color_5 = purple
39g.terminal_color_6 = cyan
40g.terminal_color_7 = grey
41
42g.terminal_color_8 = black
43g.terminal_color_9 = red
44g.terminal_color_10 = green
45g.terminal_color_11 = dark_yellow
46g.terminal_color_12 = blue
47g.terminal_color_13 = purple
48g.terminal_color_14 = cyan
49g.terminal_color_15 = grey
50
51local highlights = {
52 -- This highlight group can be used when one wants to disable a highlight
53 -- group using `winhl`
54 Disabled = {},
55 -- These highlight groups can be used for statuslines, for example when
56 -- displaying ALE warnings and errors.
57 BlackOnLightYellow = { fg = black, bg = light_yellow },
58 LightRedBackground = { bg = light_red },
59 WhiteOnBlue = { fg = white, bg = blue },
60 WhiteOnOrange = { fg = white, bg = orange },
61 WhiteOnRed = { fg = white, bg = red },
62 WhiteOnYellow = { fg = white, bg = dark_yellow },
63 Yellow = { fg = dark_yellow, bold = true },
64 Bold = { fg = black, bold = true },
65 Boolean = { link = 'Keyword' },
66 Character = { link = 'String' },
67 ColorColumn = { bg = highlight },
68 Comment = { fg = grey, italic = true },
69 Conceal = {},
70 Constant = { fg = black },
71 Cursor = { bg = black },
72 -- This is to work around https://github.com/neovim/neovim/issues/9800.
73 CursorLine = { ctermfg = 'black' },
74 CursorLineNr = { fg = black, bold = true },
75 Directory = { fg = purple },
76 EndOfBuffer = { fg = background, bg = background },
77 Error = { link = 'ErrorMsg' },
78 ErrorMsg = { fg = red, bold = true },
79 FoldColumn = { fg = light_grey, bg = background },
80 Folded = { link = 'Comment' },
81 Identifier = { fg = black },
82 Function = { fg = black },
83 IncSearch = { link = 'Search' },
84 CurSearch = { link = 'Search' },
85 Include = { fg = black, bold = true },
86 InstanceVariable = { fg = purple },
87 Keyword = { fg = black, bold = true },
88 Label = { link = 'Keyword' },
89 LineNr = { fg = grey },
90 Macro = { fg = orange },
91 MatchParen = { bold = true },
92 MoreMsg = { fg = black },
93 ModeMsg = { fg = black, bold = true },
94 MsgSeparator = { fg = border },
95 NonText = { fg = light_grey },
96 Normal = { fg = black , bg = background },
97 NormalFloat = { fg = black },
98 FloatTitle = { fg = black, bold = true },
99 FloatBorder = { fg = border },
100 Number = { fg = blue },
101 Operator = { fg = black },
102 Pmenu = { fg = black, bg = grey_bg_light },
103 PmenuSbar = { bg = grey_bg_light },
104 PmenuSel = { bg = light_grey, bold = true },
105 PmenuThumb = { bg = light_grey },
106 PreCondit = { link = 'Macro' },
107 PreProc = { fg = black },
108 Question = { fg = black },
109 QuickFixLine = { bg = highlight, bold = true },
110 Regexp = { fg = orange },
111 Search = { bg = light_yellow },
112 SignColumn = { link = 'FoldColumn' },
113 Special = { fg = black },
114 SpecialKey = { link = 'Number' },
115 SpellBad = { sp = red, underline = true },
116 SpellCap = { sp = dark_yellow, underline = true },
117 SpellLocal = { sp = blue, underline = true },
118 SpellRare = { sp = purple, underline = true },
119 Statement = { link = 'Keyword' },
120 StatusLine = { fg = black, bg = background },
121 StatusLineNC = { fg = black, bg = grey_bg_light },
122 StatusLineTab = { fg = black, bg = background, bold = true },
123 WinBar = { fg = black, bold = true },
124 WinBarNc = { fg = black, bold = true },
125 WinBarFill = { fg = border },
126 StorageClass = { link = 'Keyword' },
127 String = { fg = cyan },
128 SnippetTabstop = {},
129 Symbol = { fg = orange },
130 TabLine = { fg = black, bg = light_grey },
131 TabLineFill = { fg = black, bg = light_grey },
132 TabLineSel = { fg = black, bg = background, bold = true },
133 Title = { fg = black, bold = true },
134 Todo = { fg = grey, bold = true },
135 Type = { link = 'Constant' },
136 Underlined = { underline = true },
137 VertSplit = { fg = border },
138 WinSeparator = { fg = border },
139 Visual = { bg = light_grey },
140 WarningMsg = { fg = dark_yellow, bold = true },
141 Whitespace = { fg = light_grey },
142 WildMenu = { link = 'PmenuSel' },
143 -- ALE
144 ALEError = { fg = red, bold = true },
145 ALEErrorSign = { fg = red, bold = true },
146 ALEWarning = { fg = dark_yellow, bold = true },
147 ALEWarningSign = { fg = dark_yellow, bold = true },
148 -- ccc.nvim
149 CccFloatNormal = { link = 'NormalFloat' },
150 CccFloatBorder = { link = 'FloatBorder' },
151 -- CSS
152 cssClassName = { link = 'Keyword' },
153 cssColor = { link = 'Number' },
154 cssIdentifier = { link = 'Keyword' },
155 cssImportant = { link = 'Keyword' },
156 cssProp = { link = 'Identifier' },
157 cssTagName = { link = 'Keyword' },
158 -- Diffs
159 DiffAdd = { fg = green, bg = background },
160 DiffChange = { bg = highlight },
161 DiffDelete = { fg = red },
162 DiffText = { bg = light_yellow },
163 diffAdded = { link = 'DiffAdd' },
164 diffChanged = { link = 'DiffChange' },
165 diffFile = { fg = black, bold = true },
166 diffLine = { fg = blue },
167 diffRemoved = { link = 'DiffDelete' },
168 -- Dot/Graphviz
169 dotKeyChar = { link = 'Operator' },
170 -- diffview.nvim
171 DiffviewCursorLine = { bg = highlight },
172 DiffviewDiffAddAsDelete = { bg = light_red },
173 DiffviewDiffDelete = { fg = light_grey },
174 DiffviewDiffDeleteDim = { fg = light_grey },
175 DiffviewFilePanelFileName = { fg = black },
176 DiffviewFilePanelPath = { fg = purple },
177 DiffviewFilePanelRootPath = { fg = purple },
178 DiffviewFilePanelTitle = { fg = black, bold = true },
179 DiffviewFilePanelInsertions = { fg = green },
180 DiffviewFilePanelDeletions = { fg = red },
181 DiffviewStatusModified = { fg = dark_yellow, bold = true },
182 DiffviewStatusAdded = { fg = green, bold = true },
183 DiffviewStatusCopied = { fg = green, bold = true },
184 DiffviewStatusDeleted = { fg = red, bold = true },
185 -- Flash
186 FlashBackdrop = { link = 'None' },
187 FlashLabel = { fg = red, bold = true },
188 -- Fugitive
189 FugitiveblameHash = { fg = purple },
190 FugitiveblameTime = { fg = blue },
191 gitCommitOverflow = { link = 'ErrorMsg' },
192 gitCommitSummary = { link = 'String' },
193 -- gitcommit
194 ['@string.special.url.gitcommit'] = { fg = black },
195 ['@markup.link.gitcommit'] = { fg = green, bold = true },
196 ['@comment.warning.gitcommit'] = { fg = red, bold = true },
197 -- Gitsigns
198 GitSignsAdd = { fg = green },
199 GitSignsDelete = { fg = red },
200 GitSignsChange = { fg = grey },
201 -- HAML
202 hamlClass = { fg = black },
203 hamlDocType = { link = 'Comment' },
204 hamlId = { fg = black },
205 hamlTag = { fg = black, bold = true },
206 -- hop.nvim
207 HopNextKey = { fg = red, bold = true },
208 HopNextKey1 = { fg = dark_yellow },
209 HopNextKey2 = { fg = dark_yellow },
210 HopUnmatched = {},
211 -- HTML
212 htmlArg = { link = 'Identifier' },
213 htmlLink = { link = 'Directory' },
214 htmlScriptTag = { link = 'htmlTag' },
215 htmlSpecialTagName = { link = 'htmlTag' },
216 htmlTag = { fg = black, bold = true },
217 htmlTagName = { link = 'htmlTag' },
218 htmlItalic = { italic = true },
219 htmlBold = { bold = true },
220 -- Inko
221 inkoCommentBold = { fg = grey, bold = true },
222 inkoCommentInlineUrl = { link = 'Number' },
223 inkoCommentItalic = { fg = grey, italic = true },
224 inkoCommentTitle = { fg = grey, bold = true },
225 inkoInstanceVariable = { link = 'InstanceVariable' },
226 inkoKeywordArgument = { link = 'Regexp' },
227 ['@variable.member.inko'] = { link = 'InstanceVariable' },
228 ['@constant.builtin.inko'] = { link = 'Keyword' },
229 -- Java
230 javaAnnotation = { link = 'Directory' },
231 javaCommentTitle = { link = 'javaComment' },
232 javaDocParam = { link = 'Todo' },
233 javaDocTags = { link = 'Todo' },
234 javaExternal = { link = 'Keyword' },
235 javaStorageClass = { link = 'Keyword' },
236 -- Javascript
237 JavaScriptNumber = { link = 'Number' },
238 javaScriptBraces = { link = 'Operator' },
239 javaScriptFunction = { link = 'Keyword' },
240 javaScriptIdentifier = { link = 'Keyword' },
241 javaScriptMember = { link = 'Identifier' },
242 -- JSON
243 jsonKeyword = { link = 'String' },
244 -- Lua
245 luaFunction = { link = 'Keyword' },
246 -- LSP
247 DiagnosticUnderlineError = { underline = true, sp = red },
248 DiagnosticUnderlineWarn = { underline = true, sp = dark_yellow },
249 LspDiagnosticsUnderlineError = { link = 'DiagnosticUnderlineError' },
250 LspDiagnosticsUnderlineWarning = { link = 'DiagnosticUnderlineWarn' },
251 DiagnosticFloatingError = { fg = red, bold = true },
252 DiagnosticFloatingHint = { fg = black, bold = true },
253 DiagnosticFloatingInfo = { fg = blue, bold = true },
254 DiagnosticFloatingWarn = { fg = dark_yellow, bold = true },
255 DiagnosticError = { fg = red },
256 DiagnosticHint = { fg = grey },
257 DiagnosticInfo = { fg = blue },
258 DiagnosticWarn = { fg = dark_yellow },
259 -- Make
260 makeTarget = { link = 'Function' },
261 -- Markdown
262 markdownCode = { link = 'markdownCodeBlock' },
263 markdownCodeBlock = { link = 'Comment' },
264 markdownListMarker = { link = 'Keyword' },
265 markdownOrderedListMarker = { link = 'Keyword' },
266 markdownUrl = { fg = blue },
267 -- mini.pick
268 MiniPickBorder = { fg = border },
269 MiniPickBorderBusy = { link = 'MiniPickBorder' },
270 MiniPickBorderText = { fg = black },
271 MiniPickHeader = { fg = black, bold = true },
272 MiniPickMatchCurrent = { bg = light_grey, bold = true },
273 MiniPickMatchRanges = { fg = dark_yellow, bold = true },
274 MiniPickNormal = { fg = black },
275 MiniPickPrompt = { fg = black, bold = true },
276 -- netrw
277 netrwClassify = { link = 'Identifier' },
278 -- Neogit
279 NeogitBranch = { fg = green, bold = true },
280 NeogitBranchHead = { link = 'NeogitBranch' },
281 NeogitCommitViewHeader = { fg = dark_yellow, bold = true },
282 NeogitCursorLine = { bg = highlight },
283 NeogitDiffAdd = { link = 'DiffAdd' },
284 NeogitDiffAddHighlight = { link = 'NeogitDiffAdd' },
285 NeogitDiffContext = { link = 'Normal' },
286 NeogitDiffContextHighlight = { link = 'Normal' },
287 NeogitDiffDelete = { link = 'DiffDelete' },
288 NeogitDiffDeleteHighlight = { link = 'NeogitDiffDelete' },
289 NeogitDiffHeader = { fg = black, bold = true },
290 NeogitDiffHeaderHighlight = { link = 'NeogitDiffHeader' },
291 NeogitFilePath = { fg = purple },
292 NeogitGraphBlue = { fg = blue },
293 NeogitGraphBoldBlue = { fg = blue, bold = true },
294 NeogitGraphBoldCyan = { fg = cyan, bold = true },
295 NeogitGraphBoldGray = { fg = grey, bold = true },
296 NeogitGraphBoldGreen = { fg = green, bold = true },
297 NeogitGraphBoldOrange = { fg = orange, bold = true },
298 NeogitGraphBoldPurple = { fg = purple, bold = true },
299 NeogitGraphBoldRed = { fg = red, bold = true },
300 NeogitGraphBoldWhite = { fg = black, bold = true },
301 NeogitGraphBoldYellow = { fg = dark_yellow, bold = true },
302 NeogitGraphCyan = { fg = cyan },
303 NeogitGraphGray = { fg = grey },
304 NeogitGraphGreen = { fg = green },
305 NeogitGraphOrange = { fg = orange },
306 NeogitGraphPurple = { fg = purple },
307 NeogitGraphRed = { fg = red },
308 NeogitGraphWhite = { fg = black },
309 NeogitGraphYellow = { fg = dark_yellow },
310 NeogitHunkHeader = { fg = blue },
311 NeogitHunkHeaderHighlight = { link = 'NeogitHunkHeader' },
312 NeogitPopupActionKey = { link = 'NeogitPopupOptionKey' },
313 NeogitPopupBranchName = { link = 'NeogitBranch' },
314 NeogitPopupConfigEnabled = { link = 'NeogitPopupOptionEnabled' },
315 NeogitPopupConfigKey = { link = 'NeogitPopupOptionKey' },
316 NeogitPopupOptionEnabled = { bg = light_green, bold = true },
317 NeogitPopupOptionKey = { bold = true },
318 NeogitPopupSectionTitle = { link = 'Title' },
319 NeogitPopupSwitchEnabled = { link = 'NeogitPopupOptionEnabled' },
320 NeogitPopupSwitchKey = { link = 'NeogitPopupOptionKey' },
321 NeogitRemote = { link = 'NeogitBranch' },
322 -- Perl
323 perlPackageDecl = { link = 'Identifier' },
324 perlStatementInclude = { link = 'Statement' },
325 perlStatementPackage = { link = 'Statement' },
326 podCmdText = { link = 'Todo' },
327 podCommand = { link = 'Comment' },
328 podVerbatimLine = { link = 'Todo' },
329 -- Ruby
330 rubyAttribute = { link = 'Identifier' },
331 rubyClass = { link = 'Keyword' },
332 rubyClassVariable = { link = 'rubyInstancevariable' },
333 rubyConstant = { link = 'Constant' },
334 rubyDefine = { link = 'Keyword' },
335 rubyFunction = { link = 'Function' },
336 rubyInstanceVariable = { link = 'InstanceVariable' },
337 rubyMacro = { link = 'Identifier' },
338 rubyModule = { link = 'rubyClass' },
339 rubyRegexp = { link = 'Regexp' },
340 rubyRegexpCharClass = { link = 'Regexp' },
341 rubyRegexpDelimiter = { link = 'Regexp' },
342 rubyRegexpQuantifier = { link = 'Regexp' },
343 rubyRegexpSpecial = { link = 'Regexp' },
344 rubyStringDelimiter = { link = 'String' },
345 rubySymbol = { link = 'Symbol' },
346 -- Rust
347 rustCommentBlockDoc = { link = 'Comment' },
348 rustCommentLineDoc = { link = 'Comment' },
349 rustFuncCall = { link = 'Identifier' },
350 rustModPath = { link = 'Identifier' },
351 ['@function.macro.rust'] = { link = 'Macro' },
352 ['@attribute.rust'] = { link = 'Identifier' },
353 -- pounce.nvim
354 PounceAccept = { fg = black, bg = yellow, bold = true },
355 PounceAcceptBest = { link = 'PounceAccept' },
356 PounceMatch = { bg = light_yellow },
357 PounceUnmatched = {},
358 PounceGap = { link = 'None' },
359 -- Python
360 pythonOperator = { link = 'Keyword' },
361 -- SASS
362 sassClass = { link = 'cssClassName' },
363 sassId = { link = 'cssIdentifier' },
364 -- Shell
365 shFunctionKey = { link = 'Keyword' },
366 -- Snippy
367 SnippyPlaceholder = { link = 'SnippetTabstop' },
368 -- SQL
369 sqlKeyword = { link = 'Keyword' },
370 -- Typescript
371 typescriptBraces = { link = 'Operator' },
372 typescriptEndColons = { link = 'Operator' },
373 typescriptExceptions = { link = 'Keyword' },
374 typescriptFuncKeyword = { link = 'Keyword' },
375 typescriptFunction = { link = 'Function' },
376 typescriptIdentifier = { link = 'Identifier' },
377 typescriptLogicSymbols = { link = 'Operator' },
378 -- Telescope
379 TelescopeBorder = { fg = border },
380 TelescopeMatching = { fg = dark_yellow, bold = true },
381 TelescopePromptNormal = { fg = black },
382 TelescopePromptBorder = { fg = border },
383 TelescopePromptPrefix = { fg = black, bold = true },
384 TelescopeSelection = { bg = light_grey, bold = true },
385 TelescopeTitle = { fg = black, bold = true },
386 TelescopeNormal = { fg = black },
387 -- Treesitter
388 TSEmphasis = { italic = true },
389 TSField = {},
390 TSStringEscape = { fg = green, bold = true },
391 TSStrong = { bold = true },
392 TSURI = { fg = blue, underline = true },
393 TSUnderline = { underline = true },
394 TSConstMacro = { link = 'Macro' },
395 TSDanger = { link = 'Todo' },
396 TSKeywordOperator = { link = 'Keyword' },
397 TSNamespace = { link = 'Constant' },
398 TSNote = { link = 'Todo' },
399 TSProperty = { link = 'TSField' },
400 TSStringRegex = { link = 'Regexp' },
401 TSSymbol = { link = 'Symbol' },
402 TSTypeBuiltin = { link = 'Keyword' },
403 TSWarning = { link = 'Todo' },
404 ['@markup.link'] = { fg = blue },
405 ['@property.json'] = { bold = true },
406 ['@text.emphasis'] = { italic = true },
407 ['@text.reference'] = { fg = purple },
408 ['@text.strong'] = { bold = true },
409 ['@text.uri'] = { fg = blue },
410 ['@variable.builtin'] = { bold = true },
411
412 -- Custom Tree-sitter captures added by this theme.
413 ['@variable.parameter.reference'] = { fg = orange },
414
415 -- Ruby uses "TSLabel" for instance variables, for some reason. See
416 -- https://github.com/tree-sitter/tree-sitter-ruby/issues/184 for more
417 -- details.
418 rubyTSLabel = { link = 'InstanceVariable' },
419 -- TOML
420 --
421 -- tomlTSTypeBuiltin is used for section titles (e.g. `[dependencies]`), while
422 -- tomlTSProperty is used for key-value pairs. These rules ensure the syntax
423 -- is consistent with https://github.com/cespare/vim-toml.
424 tomlTSProperty = { fg = black },
425 tomlTSTypeBuiltin = { fg = black, bold = true },
426 -- Vimscript
427 VimCommentTitle = { link = 'Todo' },
428 VimIsCommand = { link = 'Constant' },
429 vimGroup = { link = 'Constant' },
430 vimHiGroup = { link = 'Constant' },
431 -- XML
432 xmlAttrib = { link = 'Identifier' },
433 xmlTag = { link = 'Identifier' },
434 xmlTagName = { link = 'Identifier' },
435 -- YAML
436 yamlPlainScalar = { link = 'String' },
437 -- YARD
438 yardComment = { link = 'Comment' },
439 yardType = { link = 'Todo' },
440 yardTypeList = { link = 'Todo' },
441
442 -- custom highlight groups
443 ['@variable'] = { fg = black },
444
445 -- statusline
446 LinePrimaryBlock = { fg = black, bg = background },
447 LineSecondaryBlock = { fg = blue, bg = background },
448 LineError = { link = 'DiagnosticError' },
449 LineHint = { link = 'DiagnosticHint' },
450 LineInfo = { link = 'DiagnosticInfo' },
451 LineWarning = { link = 'DiagnosticWarn' },
452}
453
454for group, opts in pairs(highlights) do
455 api.nvim_set_hl(0, group, opts)
456end