Mercurial > dotfiles.old
annotate vim/colors/Tomorrow-Night.vim @ 140:e037d9b797eb
Fix colors and clipboad in vim and tmux
author | zegervdv <zegervdv@me.com> |
---|---|
date | Wed, 08 Oct 2014 23:27:50 +0200 |
parents | 51924b069324 |
children | 0c8211e1c67a |
rev | line source |
---|---|
128 | 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, "", "") | |
140
e037d9b797eb
Fix colors and clipboad in vim and tmux
zegervdv <zegervdv@me.com>
parents:
128
diff
changeset
|
275 call <SID>X("Todo", s:green, s:background, "") |
128 | 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 |