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
|
vim.cmd("hi clear")
function highlight(group, color)
local gui = {
style = color.gui and "gui=" .. color.gui or "gui=NONE",
fg = color.guifg and "guifg=" .. color.guifg or "guifg=NONE",
bg = color.guibg and "guibg=" .. color.guibg or "guibg=NONE",
sp = color.guisp and "guisp=" .. color.guisp or "guisp=NONE",
}
local term = {
style = color.cterm and "cterm=" .. color.cterm or "cterm=NONE",
fg = color.ctermfg and "ctermfg=" .. color.ctermfg or "ctermfg=NONE",
bg = color.ctermbg and "ctermbg=" .. color.ctermbg or "ctermbg=NONE",
sp = ""
}
function serialize(options)
return " " .. options.style .. " " .. options.fg .. " " .. options.bg .. " " .. options.sp
end
local hi = "highlight " .. group .. serialize(term) .. serialize(gui)
vim.cmd(hi)
end
function link(from, to)
for i in ipairs(from)
do
local hi = "hi! link " .. from[i] .. " " .. to
vim.cmd(hi)
end
end
-- test
local color = {
none = "NONE",
blue = {
[1] = "#83a598",
[2] = "#458588",
},
yellow = {
[1] = "#fabd2f",
[2] = "#eecf90",
},
red = {
[1] = "#d75f5f",
[2] = "#e96862",
},
orange = {
[1] = "#d65d0e",
[2] = "#feb67b",
},
aqua = {
[1] = "#8ec07c",
[2] = "#98c899",
},
purple = {
[0] = "#a68390",
[1] = "#d3869b",
[2] = "#b16286",
},
white = {
[1] = "#fbf1c7",
[2] = "#ebdbb2",
[3] = "#d5c4a1",
[4] = "#bdae93",
[5] = "#a89984",
},
gray = {
[1] = "#928374",
[2] = "#7c6f64",
[3] = "#665c54",
[4] = "#504945",
[5] = "#3c3836",
},
black = {
[0] = "#32302f",
[1] = "#282828",
[2] = "#1d2021",
},
}
-- TODO: cterm options have not been checked
local theme = {
Normal = { },
EndOfBuffer = { },
NonText = { ctermfg="238", guifg=color.gray[4] },
Comment = { ctermfg="241", guifg=color.gray[3], gui="italic" },
Conceal = { ctermfg="241", guifg=color.gray[2] },
Constant = { ctermfg="140", guifg=color.orange[2] },
String = { ctermfg="140", guifg=color.blue[1] },
Identifier = { ctermfg="251", guifg=color.white[2], gui="bold" },
Statement = { ctermfg="243", guifg=color.aqua[2] },
Operator = { ctermfg="251", guifg=color.white[3] },
PreProc = { ctermfg="243", guifg=color.red[2] },
Type = { ctermfg="251", guifg=color.yellow[2] },
Special = { ctermfg="243", guifg=color.purple[1] },
Error = { ctermfg="132", guifg=color.orange[1] },
Warning = { ctermfg="179", guifg=color.yellow[1] },
ModeMsg = { ctermfg="243", guifg=color.blue[1], gui="bold" },
Todo = { ctermfg="167", cterm="bold", guifg=color.red[1], guibg=color.black[1], gui="bold" },
Underlined = { ctermfg="251", cterm="underline", guifg=color.white[3], gui="underline" },
StatusLine = { ctermbg="237", ctermfg="140", guibg=color.white[5], guifg=color.gray[5], gui="bold" },
StatusLineNC = { ctermbg="236", ctermfg="243", guibg=color.gray[4], guifg=color.white[3] },
WildMenu = { ctermbg="236", ctermfg="167", guibg=color.gray[5], guifg=color.red[1] },
VertSplit = { ctermbg="236", ctermfg="236", guibg=color.black[0], guifg=color.gray[2] },
Title = { ctermfg="251", cterm="bold", guifg=color.white[3], gui="bold" },
LineNr = { ctermfg="241", guifg=color.gray[2] },
CursorLineNr = { ctermbg="236", ctermfg="140", guifg=color.blue[1], gui="bold" },
Cursor = { ctermbg="140", ctermfg="251", guibg=color.blue[1], guifg=color.white[3] },
CursorLine = { ctermbg="236", guibg=color.black[0] },
ColorColumn = { ctermbg="234", guibg=color.black[1] },
SignColumn = { ctermfg="243", guifg=color.gray[2] },
Visual = { ctermbg="237", guibg=color.gray[2] },
VisualNOS = { ctermbg="238", guibg=color.gray[1] },
Pmenu = { ctermbg="237", guibg=color.gray[3], guifg=color.white[2] },
PmenuSbar = { ctermbg="236", guibg=color.black[0] },
PmenuSel = { ctermbg="236", ctermfg="140", guibg=color.gray[5], guifg=color.blue[1] },
PmenuThumb = { ctermbg="167", guibg=color.red[1] },
FoldColumn = { ctermfg="241", guifg=color.gray[2] },
Folded = { ctermbg="234", ctermfg="243", guibg=color.black[0], guifg=color.white[5] },
SpecialKey = { ctermfg="243", guifg=color.gray[4] },
IncSearch = { ctermbg="167", ctermfg="235", guibg=color.aqua[1], guifg=color.black[1] },
Search = { ctermbg="140", ctermfg="235", guibg=color.blue[1], guifg=color.black[1] },
Directory = { ctermfg="140", guifg=color.blue[1] },
MatchParen = { ctermfg="167", cterm="bold", guifg=color.aqua[1], gui="bold" },
SpellBad = { ctermfg="132", cterm="underline", guifg=color.purple[1], gui="underline" },
SpellCap = { ctermfg="108", cterm="underline", guifg=color.aqua[1], gui="underline" },
SpellLocal = { ctermfg="179", cterm="underline", guifg=color.yellow[1], gui="underline" },
QuickFixLine = { ctermbg="234", guibg=color.black[1] },
DiffAdd = { ctermbg="236", ctermfg="108", guifg=color.aqua[1] },
DiffChange = { ctermbg="236", guifg=color.yellow[1] },
DiffName = { ctermbg="236", ctermfg="132", guifg=color.purple[1] },
DiffDelete = { ctermbg="236", ctermfg="132", guifg=color.red[1] },
DiffText = { ctermbg="236", ctermfg="179", guifg=color.yellow[1] },
helpHyperTextJump = { ctermfg="140", guifg=color.blue[1] },
netrwExe = { guifg=color.aqua[1] },
mailQuoted1 = { guifg=color.gray[1] },
mailQuoted2 = { guifg=color.gray[3] },
}
local links = {
Constant = { "Boolean", "Character", "Number" },
CursorLine = { "CursorColumn" },
CursorLineNr = { "NeogitDiffContextHighlight" },
DiffAdd = { "diffAdded", "GitSignsAdd", "NeogitDiffAddHighlight" },
DiffChange = { "GitSignsChange" },
DiffName = { "diffSubname", "diffLine" },
DiffDelete = { "diffRemoved", "GitSignsDelete", "NeogitDiffDeleteHighlight" },
Error = { "ErrorMsg", "NeogitNotificationError" },
htmlTag = { "htmlEndTag" },
htmlTagName = { "htmlTag" },
Identifier = { "Function", "NeogitHunkHeader" },
ModeMsg = { "MoreMsg", "Question" },
NonText = { "Ignore" },
Number = { "Float" },
PreProc = { "Define", "Include", "Macro", "PreCondit" },
Special = { "Debug", "Delimiter", "SpecialChar", "SpecialComment", "Tag", "NeogitHunkHeaderHighlight" },
SpellLocal = { "SpellRare" },
Statement = { "Conditonal", "Exception", "Keyword", "Label", "Repeat" },
StatusLineNC = { "StatusLineTermNC", "TabLine", "TabLineFill" },
StatusLine = { "StatusLineTerm", "TabLineSel", },
Title = { "gitcommitSummary" },
Type = { "StorageClass", "Structure", "Typedef" },
Warning = { "WarningMsg", "NeogitNotificationWarning" },
}
for group, colors in pairs(theme) do highlight(group, colors) end
for parent, groups in pairs(links) do link(groups, parent) end
vim.g.terminal_color_0 = "#282828"
vim.g.terminal_color_1 = "#ea6962"
vim.g.terminal_color_2 = "#a9b665"
vim.g.terminal_color_3 = "#d8a657"
vim.g.terminal_color_4 = "#7daea3"
vim.g.terminal_color_5 = "#d3869b"
vim.g.terminal_color_6 = "#89b482"
vim.g.terminal_color_7 = "#d4be98"
vim.g.terminal_color_8 = "#928374"
vim.g.terminal_color_9 = "#ef938e"
vim.g.terminal_color_10 = "#bbc585"
vim.g.terminal_color_11 = "#e1bb7e"
vim.g.terminal_color_12 = "#9dc2ba"
vim.g.terminal_color_13 = "#e1acbb"
vim.g.terminal_color_14 = "#a7c7a2"
vim.g.terminal_color_15 = "#e2d3ba"
|