comparison vim/colors/Tomorrow-Night.vim @ 128:51924b069324

Add Tomorrow-Night theme
author zegervdv <zegervdv@me.com>
date Tue, 30 Sep 2014 18:20:34 +0200
parents
children e037d9b797eb
comparison
equal deleted inserted replaced
127:39f36bd51c23 128:51924b069324
1 " Tomorrow Night - Full Colour and 256 Colour
2 " http://chriskempson.com
3 "
4 " Hex colour conversion functions borrowed from the theme "Desert256""
5
6 " Default GUI Colours
7 let s:foreground = "c5c8c6"
8 let s:background = "1d1f21"
9 let s:selection = "373b41"
10 let s:line = "282a2e"
11 let s:comment = "969896"
12 let s:red = "cc6666"
13 let s:orange = "de935f"
14 let s:yellow = "f0c674"
15 let s:green = "b5bd68"
16 let s:aqua = "8abeb7"
17 let s:blue = "81a2be"
18 let s:purple = "b294bb"
19 let s:window = "4d5057"
20
21 " Console 256 Colours
22 if !has("gui_running")
23 let s:background = "303030"
24 let s:window = "5e5e5e"
25 let s:line = "3a3a3a"
26 let s:selection = "585858"
27 end
28
29 hi clear
30 syntax reset
31
32 let g:colors_name = "Tomorrow-Night"
33
34 if has("gui_running") || &t_Co == 88 || &t_Co == 256
35 " Returns an approximate grey index for the given grey level
36 fun <SID>grey_number(x)
37 if &t_Co == 88
38 if a:x < 23
39 return 0
40 elseif a:x < 69
41 return 1
42 elseif a:x < 103
43 return 2
44 elseif a:x < 127
45 return 3
46 elseif a:x < 150
47 return 4
48 elseif a:x < 173
49 return 5
50 elseif a:x < 196
51 return 6
52 elseif a:x < 219
53 return 7
54 elseif a:x < 243
55 return 8
56 else
57 return 9
58 endif
59 else
60 if a:x < 14
61 return 0
62 else
63 let l:n = (a:x - 8) / 10
64 let l:m = (a:x - 8) % 10
65 if l:m < 5
66 return l:n
67 else
68 return l:n + 1
69 endif
70 endif
71 endif
72 endfun
73
74 " Returns the actual grey level represented by the grey index
75 fun <SID>grey_level(n)
76 if &t_Co == 88
77 if a:n == 0
78 return 0
79 elseif a:n == 1
80 return 46
81 elseif a:n == 2
82 return 92
83 elseif a:n == 3
84 return 115
85 elseif a:n == 4
86 return 139
87 elseif a:n == 5
88 return 162
89 elseif a:n == 6
90 return 185
91 elseif a:n == 7
92 return 208
93 elseif a:n == 8
94 return 231
95 else
96 return 255
97 endif
98 else
99 if a:n == 0
100 return 0
101 else
102 return 8 + (a:n * 10)
103 endif
104 endif
105 endfun
106
107 " Returns the palette index for the given grey index
108 fun <SID>grey_colour(n)
109 if &t_Co == 88
110 if a:n == 0
111 return 16
112 elseif a:n == 9
113 return 79
114 else
115 return 79 + a:n
116 endif
117 else
118 if a:n == 0
119 return 16
120 elseif a:n == 25
121 return 231
122 else
123 return 231 + a:n
124 endif
125 endif
126 endfun
127
128 " Returns an approximate colour index for the given colour level
129 fun <SID>rgb_number(x)
130 if &t_Co == 88
131 if a:x < 69
132 return 0
133 elseif a:x < 172
134 return 1
135 elseif a:x < 230
136 return 2
137 else
138 return 3
139 endif
140 else
141 if a:x < 75
142 return 0
143 else
144 let l:n = (a:x - 55) / 40
145 let l:m = (a:x - 55) % 40
146 if l:m < 20
147 return l:n
148 else
149 return l:n + 1
150 endif
151 endif
152 endif
153 endfun
154
155 " Returns the actual colour level for the given colour index
156 fun <SID>rgb_level(n)
157 if &t_Co == 88
158 if a:n == 0
159 return 0
160 elseif a:n == 1
161 return 139
162 elseif a:n == 2
163 return 205
164 else
165 return 255
166 endif
167 else
168 if a:n == 0
169 return 0
170 else
171 return 55 + (a:n * 40)
172 endif
173 endif
174 endfun
175
176 " Returns the palette index for the given R/G/B colour indices
177 fun <SID>rgb_colour(x, y, z)
178 if &t_Co == 88
179 return 16 + (a:x * 16) + (a:y * 4) + a:z
180 else
181 return 16 + (a:x * 36) + (a:y * 6) + a:z
182 endif
183 endfun
184
185 " Returns the palette index to approximate the given R/G/B colour levels
186 fun <SID>colour(r, g, b)
187 " Get the closest grey
188 let l:gx = <SID>grey_number(a:r)
189 let l:gy = <SID>grey_number(a:g)
190 let l:gz = <SID>grey_number(a:b)
191
192 " Get the closest colour
193 let l:x = <SID>rgb_number(a:r)
194 let l:y = <SID>rgb_number(a:g)
195 let l:z = <SID>rgb_number(a:b)
196
197 if l:gx == l:gy && l:gy == l:gz
198 " There are two possibilities
199 let l:dgr = <SID>grey_level(l:gx) - a:r
200 let l:dgg = <SID>grey_level(l:gy) - a:g
201 let l:dgb = <SID>grey_level(l:gz) - a:b
202 let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)
203 let l:dr = <SID>rgb_level(l:gx) - a:r
204 let l:dg = <SID>rgb_level(l:gy) - a:g
205 let l:db = <SID>rgb_level(l:gz) - a:b
206 let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)
207 if l:dgrey < l:drgb
208 " Use the grey
209 return <SID>grey_colour(l:gx)
210 else
211 " Use the colour
212 return <SID>rgb_colour(l:x, l:y, l:z)
213 endif
214 else
215 " Only one possibility
216 return <SID>rgb_colour(l:x, l:y, l:z)
217 endif
218 endfun
219
220 " Returns the palette index to approximate the 'rrggbb' hex string
221 fun <SID>rgb(rgb)
222 let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0
223 let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0
224 let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0
225
226 return <SID>colour(l:r, l:g, l:b)
227 endfun
228
229 " Sets the highlighting for the given group
230 fun <SID>X(group, fg, bg, attr)
231 if a:fg != ""
232 exec "hi " . a:group . " guifg=#" . a:fg . " ctermfg=" . <SID>rgb(a:fg)
233 endif
234 if a:bg != ""
235 exec "hi " . a:group . " guibg=#" . a:bg . " ctermbg=" . <SID>rgb(a:bg)
236 endif
237 if a:attr != ""
238 exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr
239 endif
240 endfun
241
242 " Vim Highlighting
243 call <SID>X("Normal", s:foreground, s:background, "")
244 call <SID>X("LineNr", s:selection, "", "")
245 call <SID>X("NonText", s:selection, "", "")
246 call <SID>X("SpecialKey", s:selection, "", "")
247 call <SID>X("Search", s:background, s:yellow, "")
248 call <SID>X("TabLine", s:window, s:foreground, "reverse")
249 call <SID>X("TabLineFill", s:window, s:foreground, "reverse")
250 call <SID>X("StatusLine", s:window, s:yellow, "reverse")
251 call <SID>X("StatusLineNC", s:window, s:foreground, "reverse")
252 call <SID>X("VertSplit", s:window, s:window, "none")
253 call <SID>X("Visual", "", s:selection, "")
254 call <SID>X("Directory", s:blue, "", "")
255 call <SID>X("ModeMsg", s:green, "", "")
256 call <SID>X("MoreMsg", s:green, "", "")
257 call <SID>X("Question", s:green, "", "")
258 call <SID>X("WarningMsg", s:red, "", "")
259 call <SID>X("MatchParen", "", s:selection, "")
260 call <SID>X("Folded", s:comment, s:background, "")
261 call <SID>X("FoldColumn", "", s:background, "")
262 if version >= 700
263 call <SID>X("CursorLine", "", s:line, "none")
264 call <SID>X("CursorColumn", "", s:line, "none")
265 call <SID>X("PMenu", s:foreground, s:selection, "none")
266 call <SID>X("PMenuSel", s:foreground, s:selection, "reverse")
267 call <SID>X("SignColumn", "", s:background, "none")
268 end
269 if version >= 703
270 call <SID>X("ColorColumn", "", s:line, "none")
271 end
272
273 " Standard Highlighting
274 call <SID>X("Comment", s:comment, "", "")
275 call <SID>X("Todo", s:comment, s:background, "")
276 call <SID>X("Title", s:comment, "", "")
277 call <SID>X("Identifier", s:red, "", "none")
278 call <SID>X("Statement", s:foreground, "", "")
279 call <SID>X("Conditional", s:foreground, "", "")
280 call <SID>X("Repeat", s:foreground, "", "")
281 call <SID>X("Structure", s:purple, "", "")
282 call <SID>X("Function", s:blue, "", "")
283 call <SID>X("Constant", s:orange, "", "")
284 call <SID>X("String", s:green, "", "")
285 call <SID>X("Special", s:foreground, "", "")
286 call <SID>X("PreProc", s:purple, "", "")
287 call <SID>X("Operator", s:aqua, "", "none")
288 call <SID>X("Type", s:blue, "", "none")
289 call <SID>X("Define", s:purple, "", "none")
290 call <SID>X("Include", s:blue, "", "")
291 "call <SID>X("Ignore", "666666", "", "")
292
293 " Vim Highlighting
294 call <SID>X("vimCommand", s:red, "", "none")
295
296 " C Highlighting
297 call <SID>X("cType", s:yellow, "", "")
298 call <SID>X("cStorageClass", s:purple, "", "")
299 call <SID>X("cConditional", s:purple, "", "")
300 call <SID>X("cRepeat", s:purple, "", "")
301
302 " PHP Highlighting
303 call <SID>X("phpVarSelector", s:red, "", "")
304 call <SID>X("phpKeyword", s:purple, "", "")
305 call <SID>X("phpRepeat", s:purple, "", "")
306 call <SID>X("phpConditional", s:purple, "", "")
307 call <SID>X("phpStatement", s:purple, "", "")
308 call <SID>X("phpMemberSelector", s:foreground, "", "")
309
310 " Ruby Highlighting
311 call <SID>X("rubySymbol", s:green, "", "")
312 call <SID>X("rubyConstant", s:yellow, "", "")
313 call <SID>X("rubyAccess", s:yellow, "", "")
314 call <SID>X("rubyAttribute", s:blue, "", "")
315 call <SID>X("rubyInclude", s:blue, "", "")
316 call <SID>X("rubyLocalVariableOrMethod", s:orange, "", "")
317 call <SID>X("rubyCurlyBlock", s:orange, "", "")
318 call <SID>X("rubyStringDelimiter", s:green, "", "")
319 call <SID>X("rubyInterpolationDelimiter", s:orange, "", "")
320 call <SID>X("rubyConditional", s:purple, "", "")
321 call <SID>X("rubyRepeat", s:purple, "", "")
322 call <SID>X("rubyControl", s:purple, "", "")
323 call <SID>X("rubyException", s:purple, "", "")
324
325 " Python Highlighting
326 call <SID>X("pythonInclude", s:purple, "", "")
327 call <SID>X("pythonStatement", s:purple, "", "")
328 call <SID>X("pythonConditional", s:purple, "", "")
329 call <SID>X("pythonRepeat", s:purple, "", "")
330 call <SID>X("pythonException", s:purple, "", "")
331 call <SID>X("pythonFunction", s:blue, "", "")
332 call <SID>X("pythonPreCondit", s:purple, "", "")
333 call <SID>X("pythonRepeat", s:aqua, "", "")
334 call <SID>X("pythonExClass", s:orange, "", "")
335
336 " JavaScript Highlighting
337 call <SID>X("javaScriptBraces", s:foreground, "", "")
338 call <SID>X("javaScriptFunction", s:purple, "", "")
339 call <SID>X("javaScriptConditional", s:purple, "", "")
340 call <SID>X("javaScriptRepeat", s:purple, "", "")
341 call <SID>X("javaScriptNumber", s:orange, "", "")
342 call <SID>X("javaScriptMember", s:orange, "", "")
343 call <SID>X("javascriptNull", s:orange, "", "")
344 call <SID>X("javascriptGlobal", s:blue, "", "")
345 call <SID>X("javascriptStatement", s:red, "", "")
346
347 " CoffeeScript Highlighting
348 call <SID>X("coffeeRepeat", s:purple, "", "")
349 call <SID>X("coffeeConditional", s:purple, "", "")
350 call <SID>X("coffeeKeyword", s:purple, "", "")
351 call <SID>X("coffeeObject", s:yellow, "", "")
352
353 " HTML Highlighting
354 call <SID>X("htmlTag", s:red, "", "")
355 call <SID>X("htmlTagName", s:red, "", "")
356 call <SID>X("htmlArg", s:red, "", "")
357 call <SID>X("htmlScriptTag", s:red, "", "")
358
359 " Diff Highlighting
360 call <SID>X("diffAdd", "", "4c4e39", "")
361 call <SID>X("diffDelete", s:background, s:red, "")
362 call <SID>X("diffChange", "", "2B5B77", "")
363 call <SID>X("diffText", s:line, s:blue, "")
364
365 " ShowMarks Highlighting
366 call <SID>X("ShowMarksHLl", s:orange, s:background, "none")
367 call <SID>X("ShowMarksHLo", s:purple, s:background, "none")
368 call <SID>X("ShowMarksHLu", s:yellow, s:background, "none")
369 call <SID>X("ShowMarksHLm", s:aqua, s:background, "none")
370
371 " Lua Highlighting
372 call <SID>X("luaStatement", s:purple, "", "")
373 call <SID>X("luaRepeat", s:purple, "", "")
374 call <SID>X("luaCondStart", s:purple, "", "")
375 call <SID>X("luaCondElseif", s:purple, "", "")
376 call <SID>X("luaCond", s:purple, "", "")
377 call <SID>X("luaCondEnd", s:purple, "", "")
378
379 " Cucumber Highlighting
380 call <SID>X("cucumberGiven", s:blue, "", "")
381 call <SID>X("cucumberGivenAnd", s:blue, "", "")
382
383 " Go Highlighting
384 call <SID>X("goDirective", s:purple, "", "")
385 call <SID>X("goDeclaration", s:purple, "", "")
386 call <SID>X("goStatement", s:purple, "", "")
387 call <SID>X("goConditional", s:purple, "", "")
388 call <SID>X("goConstants", s:orange, "", "")
389 call <SID>X("goTodo", s:yellow, "", "")
390 call <SID>X("goDeclType", s:blue, "", "")
391 call <SID>X("goBuiltins", s:purple, "", "")
392
393 " Clojure "highlighting
394 call <SID>X("clojureConstant", s:orange, "", "")
395 call <SID>X("clojureBoolean", s:orange, "", "")
396 call <SID>X("clojureCharacter", s:orange, "", "")
397 call <SID>X("clojureKeyword", s:green, "", "")
398 call <SID>X("clojureNumber", s:orange, "", "")
399 call <SID>X("clojureString", s:green, "", "")
400 call <SID>X("clojureRegexp", s:green, "", "")
401 call <SID>X("clojureParen", s:aqua, "", "")
402 call <SID>X("clojureVariable", s:yellow, "", "")
403 call <SID>X("clojureCond", s:blue, "", "")
404 call <SID>X("clojureDefine", s:purple, "", "")
405 call <SID>X("clojureException", s:red, "", "")
406 call <SID>X("clojureFunc", s:blue, "", "")
407 call <SID>X("clojureMacro", s:blue, "", "")
408 call <SID>X("clojureRepeat", s:blue, "", "")
409 call <SID>X("clojureSpecial", s:purple, "", "")
410 call <SID>X("clojureQuote", s:blue, "", "")
411 call <SID>X("clojureUnquote", s:blue, "", "")
412 call <SID>X("clojureMeta", s:blue, "", "")
413 call <SID>X("clojureDeref", s:blue, "", "")
414 call <SID>X("clojureAnonArg", s:blue, "", "")
415 call <SID>X("clojureRepeat", s:blue, "", "")
416 call <SID>X("clojureDispatch", s:blue, "", "")
417
418 " Scala "highlighting
419 call <SID>X("scalaKeyword", s:purple, "", "")
420 call <SID>X("scalaKeywordModifier", s:purple, "", "")
421 call <SID>X("scalaOperator", s:blue, "", "")
422 call <SID>X("scalaPackage", s:red, "", "")
423 call <SID>X("scalaFqn", s:foreground, "", "")
424 call <SID>X("scalaFqnSet", s:foreground, "", "")
425 call <SID>X("scalaImport", s:purple, "", "")
426 call <SID>X("scalaBoolean", s:orange, "", "")
427 call <SID>X("scalaDef", s:purple, "", "")
428 call <SID>X("scalaVal", s:purple, "", "")
429 call <SID>X("scalaVar", s:aqua, "", "")
430 call <SID>X("scalaClass", s:purple, "", "")
431 call <SID>X("scalaObject", s:purple, "", "")
432 call <SID>X("scalaTrait", s:purple, "", "")
433 call <SID>X("scalaDefName", s:blue, "", "")
434 call <SID>X("scalaValName", s:foreground, "", "")
435 call <SID>X("scalaVarName", s:foreground, "", "")
436 call <SID>X("scalaClassName", s:foreground, "", "")
437 call <SID>X("scalaType", s:yellow, "", "")
438 call <SID>X("scalaTypeSpecializer", s:yellow, "", "")
439 call <SID>X("scalaAnnotation", s:orange, "", "")
440 call <SID>X("scalaNumber", s:orange, "", "")
441 call <SID>X("scalaDefSpecializer", s:yellow, "", "")
442 call <SID>X("scalaClassSpecializer", s:yellow, "", "")
443 call <SID>X("scalaBackTick", s:green, "", "")
444 call <SID>X("scalaRoot", s:foreground, "", "")
445 call <SID>X("scalaMethodCall", s:blue, "", "")
446 call <SID>X("scalaCaseType", s:yellow, "", "")
447 call <SID>X("scalaLineComment", s:comment, "", "")
448 call <SID>X("scalaComment", s:comment, "", "")
449 call <SID>X("scalaDocComment", s:comment, "", "")
450 call <SID>X("scalaDocTags", s:comment, "", "")
451 call <SID>X("scalaEmptyString", s:green, "", "")
452 call <SID>X("scalaMultiLineString", s:green, "", "")
453 call <SID>X("scalaUnicode", s:orange, "", "")
454 call <SID>X("scalaString", s:green, "", "")
455 call <SID>X("scalaStringEscape", s:green, "", "")
456 call <SID>X("scalaSymbol", s:orange, "", "")
457 call <SID>X("scalaChar", s:orange, "", "")
458 call <SID>X("scalaXml", s:green, "", "")
459 call <SID>X("scalaConstructorSpecializer", s:yellow, "", "")
460 call <SID>X("scalaBackTick", s:blue, "", "")
461
462 " Delete Functions
463 delf <SID>X
464 delf <SID>rgb
465 delf <SID>colour
466 delf <SID>rgb_colour
467 delf <SID>rgb_level
468 delf <SID>rgb_number
469 delf <SID>grey_colour
470 delf <SID>grey_level
471 delf <SID>grey_number
472 endif
473
474 set background=dark