.vim/colors/jellybeans.vim

changeset 863
c1b4166611ed
parent 1
727a469263f2
equal deleted inserted replaced
862:279abee5d0e8 863:c1b4166611ed
11 " 11 "
12 " File: jellybeans.vim 12 " File: jellybeans.vim
13 " URL: github.com/nanotech/jellybeans.vim 13 " URL: github.com/nanotech/jellybeans.vim
14 " Scripts URL: vim.org/scripts/script.php?script_id=2555 14 " Scripts URL: vim.org/scripts/script.php?script_id=2555
15 " Maintainer: NanoTech (nanotech.nanotechcorp.net) 15 " Maintainer: NanoTech (nanotech.nanotechcorp.net)
16 " Version: 1.6~git 16 " Version: 1.7
17 " Last Change: January 15th, 2012 17 " Last Change: June 21st, 2019
18 " License: MIT 18 " License: MIT
19 " Contributors: Daniel Herbert (pocketninja) 19 " Contributors: Andrew Wong (w0ng)
20 " Benjamin R. Haskell (benizi)
21 " Brian Marshall (bmars)
22 " Daniel Herbert (pocketninja)
23 " David Liang <bmdavll at gmail dot com>
24 " Filipe Silva (ninrod)
20 " Henry So, Jr. <henryso@panix.com> 25 " Henry So, Jr. <henryso@panix.com>
21 " David Liang <bmdavll at gmail dot com> 26 " Ihor Kalnytskyi (ikalnytskyi)
27 " Joe Doherty (docapotamus)
28 " Karl Litterfeldt (Litterfeldt)
29 " Keith Pitt (keithpitt)
30 " Mike Schreifels (schreifels)
31 " Philipp Rustemeier (12foo)
32 " Rafael Bicalho (rbika)
22 " Rich Healey (richo) 33 " Rich Healey (richo)
23 " Andrew Wong (w0ng) 34 " Siwen Yu (yusiwen)
24 " 35 " Tim Willis (willist)
25 " Copyright (c) 2009-2012 NanoTech 36 " Tom McLaughlin (tmcoma)
37 "
38 " Copyright (c) 2009-2019 NanoTech
26 " 39 "
27 " Permission is hereby granted, free of charge, to any per‐ 40 " Permission is hereby granted, free of charge, to any per‐
28 " son obtaining a copy of this software and associated doc‐ 41 " son obtaining a copy of this software and associated doc‐
29 " umentation files (the “Software”), to deal in the Soft‐ 42 " umentation files (the “Software”), to deal in the Soft‐
30 " ware without restriction, including without limitation 43 " ware without restriction, including without limitation
55 syntax reset 68 syntax reset
56 endif 69 endif
57 70
58 let colors_name = "jellybeans" 71 let colors_name = "jellybeans"
59 72
60 if has("gui_running") || &t_Co == 88 || &t_Co == 256 73 if has("gui_running") || (has('termguicolors') && &termguicolors)
74 let s:true_color = 1
75 else
76 let s:true_color = 0
77 endif
78
79 if s:true_color || &t_Co >= 88
61 let s:low_color = 0 80 let s:low_color = 0
62 else 81 else
63 let s:low_color = 1 82 let s:low_color = 1
64 endif 83 endif
65 84
85 " Configuration Variables:
86 " - g:jellybeans_overrides (default = {})
87 " - g:jellybeans_use_lowcolor_black (default = 0)
88 " - g:jellybeans_use_gui_italics (default = 1)
89 " - g:jellybeans_use_term_italics (default = 0)
90
91 let s:background_color = "151515"
92
93 if exists("g:jellybeans_overrides")
94 let s:overrides = g:jellybeans_overrides
95 else
96 let s:overrides = {}
97 endif
98
99 " Backwards compatibility
100 if exists("g:jellybeans_background_color")
101 \ || exists("g:jellybeans_background_color_256")
102 \ || exists("g:jellybeans_use_term_background_color")
103
104 let s:overrides = deepcopy(s:overrides)
105
106 if !has_key(s:overrides, "background")
107 let s:overrides["background"] = {}
108 endif
109
110 if exists("g:jellybeans_background_color")
111 let s:overrides["background"]["guibg"] = g:jellybeans_background_color
112 endif
113
114 if exists("g:jellybeans_background_color_256")
115 let s:overrides["background"]["256ctermbg"] = g:jellybeans_background_color_256
116 endif
117
118 if exists("g:jellybeans_use_term_background_color")
119 \ && g:jellybeans_use_term_background_color
120 let s:overrides["background"]["ctermbg"] = "NONE"
121 let s:overrides["background"]["256ctermbg"] = "NONE"
122 endif
123 endif
124
125 if exists("g:jellybeans_use_lowcolor_black") && g:jellybeans_use_lowcolor_black
126 let s:termBlack = "Black"
127 else
128 let s:termBlack = "Grey"
129 endif
130
131 " When `termguicolors` is set, Vim[^1] ignores `hi Normal guibg=NONE`
132 " after Normal's `guibg` is already set to a color. See:
133 "
134 " - https://github.com/vim/vim/issues/981
135 " - https://github.com/nanotech/jellybeans.vim/issues/64
136 "
137 " To work around this, ensure we don't set the default background
138 " color before an override changes it to `NONE` by ensuring that the
139 " background color isn't set to a value different from its override.
140 "
141 " [^1]: Tested on 8.0.567. Does not apply to Neovim.
142 "
143 if has_key(s:overrides, "background") && has_key(s:overrides["background"], "guibg")
144 let s:background_color = s:overrides["background"]["guibg"]
145 endif
146
66 " Color approximation functions by Henry So, Jr. and David Liang {{{ 147 " Color approximation functions by Henry So, Jr. and David Liang {{{
67 " Added to jellybeans.vim by Daniel Herbert 148 " Added to jellybeans.vim by Daniel Herbert
68 149
69 " returns an approximate grey index for the given grey level 150 if &t_Co == 88
70 fun! s:grey_number(x) 151
71 if &t_Co == 88 152 " returns an approximate grey index for the given grey level
153 fun! s:grey_number(x)
72 if a:x < 23 154 if a:x < 23
73 return 0 155 return 0
74 elseif a:x < 69 156 elseif a:x < 69
75 return 1 157 return 1
76 elseif a:x < 103 158 elseif a:x < 103
88 elseif a:x < 243 170 elseif a:x < 243
89 return 8 171 return 8
90 else 172 else
91 return 9 173 return 9
92 endif 174 endif
93 else 175 endfun
94 if a:x < 14 176
95 return 0 177 " returns the actual grey level represented by the grey index
96 else 178 fun! s:grey_level(n)
97 let l:n = (a:x - 8) / 10
98 let l:m = (a:x - 8) % 10
99 if l:m < 5
100 return l:n
101 else
102 return l:n + 1
103 endif
104 endif
105 endif
106 endfun
107
108 " returns the actual grey level represented by the grey index
109 fun! s:grey_level(n)
110 if &t_Co == 88
111 if a:n == 0 179 if a:n == 0
112 return 0 180 return 0
113 elseif a:n == 1 181 elseif a:n == 1
114 return 46 182 return 46
115 elseif a:n == 2 183 elseif a:n == 2
127 elseif a:n == 8 195 elseif a:n == 8
128 return 231 196 return 231
129 else 197 else
130 return 255 198 return 255
131 endif 199 endif
132 else 200 endfun
133 if a:n == 0 201
134 return 0 202 " returns the palette index for the given grey index
135 else 203 fun! s:grey_color(n)
136 return 8 + (a:n * 10)
137 endif
138 endif
139 endfun
140
141 " returns the palette index for the given grey index
142 fun! s:grey_color(n)
143 if &t_Co == 88
144 if a:n == 0 204 if a:n == 0
145 return 16 205 return 16
146 elseif a:n == 9 206 elseif a:n == 9
147 return 79 207 return 79
148 else 208 else
149 return 79 + a:n 209 return 79 + a:n
150 endif 210 endif
151 else 211 endfun
152 if a:n == 0 212
153 return 16 213 " returns an approximate color index for the given color level
154 elseif a:n == 25 214 fun! s:rgb_number(x)
155 return 231
156 else
157 return 231 + a:n
158 endif
159 endif
160 endfun
161
162 " returns an approximate color index for the given color level
163 fun! s:rgb_number(x)
164 if &t_Co == 88
165 if a:x < 69 215 if a:x < 69
166 return 0 216 return 0
167 elseif a:x < 172 217 elseif a:x < 172
168 return 1 218 return 1
169 elseif a:x < 230 219 elseif a:x < 230
170 return 2 220 return 2
171 else 221 else
172 return 3 222 return 3
173 endif 223 endif
174 else 224 endfun
225
226 " returns the actual color level for the given color index
227 fun! s:rgb_level(n)
228 if a:n == 0
229 return 0
230 elseif a:n == 1
231 return 139
232 elseif a:n == 2
233 return 205
234 else
235 return 255
236 endif
237 endfun
238
239 " returns the palette index for the given R/G/B color indices
240 fun! s:rgb_color(x, y, z)
241 return 16 + (a:x * 16) + (a:y * 4) + a:z
242 endfun
243
244 else " assuming &t_Co == 256
245
246 " returns an approximate grey index for the given grey level
247 fun! s:grey_number(x)
248 if a:x < 14
249 return 0
250 else
251 let l:n = (a:x - 8) / 10
252 let l:m = (a:x - 8) % 10
253 if l:m < 5
254 return l:n
255 else
256 return l:n + 1
257 endif
258 endif
259 endfun
260
261 " returns the actual grey level represented by the grey index
262 fun! s:grey_level(n)
263 if a:n == 0
264 return 0
265 else
266 return 8 + (a:n * 10)
267 endif
268 endfun
269
270 " returns the palette index for the given grey index
271 fun! s:grey_color(n)
272 if a:n == 0
273 return 16
274 elseif a:n == 25
275 return 231
276 else
277 return 231 + a:n
278 endif
279 endfun
280
281 " returns an approximate color index for the given color level
282 fun! s:rgb_number(x)
175 if a:x < 75 283 if a:x < 75
176 return 0 284 return 0
177 else 285 else
178 let l:n = (a:x - 55) / 40 286 let l:n = (a:x - 55) / 40
179 let l:m = (a:x - 55) % 40 287 let l:m = (a:x - 55) % 40
181 return l:n 289 return l:n
182 else 290 else
183 return l:n + 1 291 return l:n + 1
184 endif 292 endif
185 endif 293 endif
186 endif 294 endfun
187 endfun 295
188 296 " returns the actual color level for the given color index
189 " returns the actual color level for the given color index 297 fun! s:rgb_level(n)
190 fun! s:rgb_level(n)
191 if &t_Co == 88
192 if a:n == 0 298 if a:n == 0
193 return 0 299 return 0
194 elseif a:n == 1
195 return 139
196 elseif a:n == 2
197 return 205
198 else
199 return 255
200 endif
201 else
202 if a:n == 0
203 return 0
204 else 300 else
205 return 55 + (a:n * 40) 301 return 55 + (a:n * 40)
206 endif 302 endif
207 endif 303 endfun
208 endfun 304
209 305 " returns the palette index for the given R/G/B color indices
210 " returns the palette index for the given R/G/B color indices 306 fun! s:rgb_color(x, y, z)
211 fun! s:rgb_color(x, y, z)
212 if &t_Co == 88
213 return 16 + (a:x * 16) + (a:y * 4) + a:z
214 else
215 return 16 + (a:x * 36) + (a:y * 6) + a:z 307 return 16 + (a:x * 36) + (a:y * 6) + a:z
216 endif 308 endfun
217 endfun 309
310 endif
218 311
219 " returns the palette index to approximate the given R/G/B color levels 312 " returns the palette index to approximate the given R/G/B color levels
220 fun! s:color(r, g, b) 313 fun! s:color(r, g, b)
314 " map greys directly (see xterm's 256colres.pl)
315 if &t_Co == 256 && a:r == a:g && a:g == a:b && a:r > 3 && a:r < 243
316 return (a:r - 8) / 10 + 232
317 endif
318
221 " get the closest grey 319 " get the closest grey
222 let l:gx = s:grey_number(a:r) 320 let l:gx = s:grey_number(a:r)
223 let l:gy = s:grey_number(a:g) 321 let l:gy = s:grey_number(a:g)
224 let l:gz = s:grey_number(a:b) 322 let l:gz = s:grey_number(a:b)
225 323
249 " only one possibility 347 " only one possibility
250 return s:rgb_color(l:x, l:y, l:z) 348 return s:rgb_color(l:x, l:y, l:z)
251 endif 349 endif
252 endfun 350 endfun
253 351
352 fun! s:is_empty_or_none(str)
353 return empty(a:str) || a:str ==? "NONE"
354 endfun
355
254 " returns the palette index to approximate the 'rrggbb' hex string 356 " returns the palette index to approximate the 'rrggbb' hex string
255 fun! s:rgb(rgb) 357 fun! s:rgb(rgb)
358 if s:is_empty_or_none(a:rgb)
359 return "NONE"
360 endif
256 let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0 361 let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0
257 let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0 362 let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0
258 let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0 363 let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0
259 return s:color(l:r, l:g, l:b) 364 return s:color(l:r, l:g, l:b)
260 endfun 365 endfun
261 366
367 fun! s:prefix_highlight_value_with(prefix, color)
368 if s:is_empty_or_none(a:color)
369 return "NONE"
370 else
371 return a:prefix . a:color
372 endif
373 endfun
374
375 fun! s:remove_italic_attr(attr)
376 let l:attr = join(filter(split(a:attr, ","), "v:val !=? 'italic'"), ",")
377 if empty(l:attr)
378 let l:attr = "NONE"
379 endif
380 return l:attr
381 endfun
382
262 " sets the highlighting for the given group 383 " sets the highlighting for the given group
263 fun! s:X(group, fg, bg, attr, lcfg, lcbg) 384 fun! s:X(group, fg, bg, attr, lcfg, lcbg)
264 if s:low_color 385 if s:low_color
265 let l:fge = empty(a:lcfg) 386 let l:cmd = "hi ".a:group.
266 let l:bge = empty(a:lcbg) 387 \ " ctermfg=".s:prefix_highlight_value_with("", a:lcfg).
267 388 \ " ctermbg=".s:prefix_highlight_value_with("", a:lcbg)
268 if !l:fge && !l:bge
269 exec "hi ".a:group." ctermfg=".a:lcfg." ctermbg=".a:lcbg
270 elseif !l:fge && l:bge
271 exec "hi ".a:group." ctermfg=".a:lcfg." ctermbg=NONE"
272 elseif l:fge && !l:bge
273 exec "hi ".a:group." ctermfg=NONE ctermbg=".a:lcbg
274 endif
275 else 389 else
276 let l:fge = empty(a:fg) 390 let l:cmd = "hi ".a:group.
277 let l:bge = empty(a:bg) 391 \ " guifg=".s:prefix_highlight_value_with("#", a:fg).
278 392 \ " guibg=".s:prefix_highlight_value_with("#", a:bg)
279 if !l:fge && !l:bge 393 if !s:true_color
280 exec "hi ".a:group." guifg=#".a:fg." guibg=#".a:bg." ctermfg=".s:rgb(a:fg)." ctermbg=".s:rgb(a:bg) 394 let l:cmd = l:cmd.
281 elseif !l:fge && l:bge 395 \ " ctermfg=".s:rgb(a:fg).
282 exec "hi ".a:group." guifg=#".a:fg." guibg=NONE ctermfg=".s:rgb(a:fg)." ctermbg=NONE" 396 \ " ctermbg=".s:rgb(a:bg)
283 elseif l:fge && !l:bge 397 endif
284 exec "hi ".a:group." guifg=NONE guibg=#".a:bg." ctermfg=NONE ctermbg=".s:rgb(a:bg) 398 endif
285 endif 399
286 endif 400 let l:attr = s:prefix_highlight_value_with("", a:attr)
287 401
288 if a:attr == "" 402 if exists("g:jellybeans_use_term_italics") && g:jellybeans_use_term_italics
289 exec "hi ".a:group." gui=none cterm=none" 403 let l:cterm_attr = l:attr
290 else 404 else
291 let l:noitalic = join(filter(split(a:attr, ","), "v:val !=? 'italic'"), ",") 405 let l:cterm_attr = s:remove_italic_attr(l:attr)
292 if empty(l:noitalic) 406 endif
293 let l:noitalic = "none" 407
294 endif 408 if !exists("g:jellybeans_use_gui_italics") || g:jellybeans_use_gui_italics
295 exec "hi ".a:group." gui=".a:attr." cterm=".l:noitalic 409 let l:gui_attr = l:attr
296 endif 410 else
411 let l:gui_attr = s:remove_italic_attr(l:attr)
412 endif
413
414 let l:cmd = l:cmd." gui=".l:gui_attr." cterm=".l:cterm_attr
415 exec l:cmd
297 endfun 416 endfun
298 " }}} 417 " }}}
299 418
300 if !exists("g:jellybeans_background_color") 419 call s:X("Normal","e8e8d3",s:background_color,"","White","")
301 let g:jellybeans_background_color = "151515"
302 end
303
304 call s:X("Normal","e8e8d3",g:jellybeans_background_color,"","White","")
305 set background=dark 420 set background=dark
306 421
307 if !exists("g:jellybeans_use_lowcolor_black") || g:jellybeans_use_lowcolor_black 422 call s:X("CursorLine","","1c1c1c","","",s:termBlack)
308 let s:termBlack = "Black" 423 call s:X("CursorColumn","","1c1c1c","","",s:termBlack)
424
425 " Some of Terminal.app's default themes have a cursor color
426 " too close to Jellybeans' preferred MatchParen background
427 " color to be easily distinguishable. Other terminals tend
428 " to use a brighter cursor color.
429 "
430 " Use a more distinct color in Terminal.app, and also in
431 " low-color terminals if the preferred background color is
432 " not available.
433 if !has('gui_running') && $TERM_PROGRAM == "Apple_Terminal"
434 let s:matchParenGuiFg = "dd0093"
435 let s:matchParenGuiBg = "000000"
309 else 436 else
310 let s:termBlack = "Grey" 437 let s:matchParenGuiFg = "ffffff"
311 endif 438 let s:matchParenGuiBg = "556779"
312 439 endif
313 if version >= 700 440 if s:termBlack != "Black"
314 call s:X("CursorLine","","1c1c1c","","",s:termBlack) 441 let s:matchParenTermFg = "Magenta"
315 call s:X("CursorColumn","","1c1c1c","","",s:termBlack) 442 let s:matchParenTermBg = ""
316 call s:X("MatchParen","ffffff","556779","bold","","DarkCyan") 443 else
317 444 let s:matchParenTermFg = ""
318 call s:X("TabLine","000000","b0b8c0","italic","",s:termBlack) 445 let s:matchParenTermBg = s:termBlack
319 call s:X("TabLineFill","9098a0","","","",s:termBlack) 446 endif
320 call s:X("TabLineSel","000000","f0f0f0","italic,bold",s:termBlack,"White") 447 call s:X("MatchParen",s:matchParenGuiFg,s:matchParenGuiBg,"bold",
321 448 \ s:matchParenTermFg,s:matchParenTermBg)
322 " Auto-completion 449
323 call s:X("Pmenu","ffffff","606060","","White",s:termBlack) 450 call s:X("TabLine","000000","b0b8c0","italic","",s:termBlack)
324 call s:X("PmenuSel","101010","eeeeee","",s:termBlack,"White") 451 call s:X("TabLineFill","9098a0","","","",s:termBlack)
325 endif 452 call s:X("TabLineSel","000000","f0f0f0","italic,bold",s:termBlack,"White")
453
454 " Auto-completion
455 call s:X("Pmenu","ffffff","606060","","White",s:termBlack)
456 call s:X("PmenuSel","101010","eeeeee","",s:termBlack,"White")
326 457
327 call s:X("Visual","","404040","","",s:termBlack) 458 call s:X("Visual","","404040","","",s:termBlack)
328 call s:X("Cursor",g:jellybeans_background_color,"b0d0f0","","","") 459 call s:X("Cursor",s:background_color,"b0d0f0","","","")
329 460
330 call s:X("LineNr","605958",g:jellybeans_background_color,"none",s:termBlack,"") 461 call s:X("LineNr","605958",s:background_color,"NONE",s:termBlack,"")
331 call s:X("CursorLineNr","ccc5c4","","none","White","") 462 call s:X("CursorLineNr","ccc5c4","","NONE","White","")
332 call s:X("Comment","888888","","italic","Grey","") 463 call s:X("Comment","888888","","italic","Grey","")
333 call s:X("Todo","c7c7c7","","bold","White",s:termBlack) 464 call s:X("Todo","c7c7c7","","bold","White",s:termBlack)
334 465
335 call s:X("StatusLine","000000","dddddd","italic","","White") 466 call s:X("StatusLine","000000","dddddd","italic","","White")
336 call s:X("StatusLineNC","ffffff","403c41","italic","White","Black") 467 call s:X("StatusLineNC","ffffff","403c41","italic","White","Black")
356 call s:X("Function","fad07a","","","Yellow","") 487 call s:X("Function","fad07a","","","Yellow","")
357 call s:X("Statement","8197bf","","","DarkBlue","") 488 call s:X("Statement","8197bf","","","DarkBlue","")
358 call s:X("PreProc","8fbfdc","","","LightBlue","") 489 call s:X("PreProc","8fbfdc","","","LightBlue","")
359 490
360 hi! link Operator Structure 491 hi! link Operator Structure
492 hi! link Conceal Operator
361 493
362 call s:X("Type","ffb964","","","Yellow","") 494 call s:X("Type","ffb964","","","Yellow","")
363 call s:X("NonText","606060",g:jellybeans_background_color,"",s:termBlack,"") 495 call s:X("NonText","606060",s:background_color,"",s:termBlack,"")
364 496
365 call s:X("SpecialKey","444444","1c1c1c","",s:termBlack,"") 497 call s:X("SpecialKey","444444","1c1c1c","",s:termBlack,"")
366 498
367 call s:X("Search","f0a0c0","302028","underline","Magenta","") 499 call s:X("Search","f0a0c0","302028","underline","Magenta","")
368 500
440 hi! link erlangBIF rubyPredefinedIdentifier 572 hi! link erlangBIF rubyPredefinedIdentifier
441 hi! link erlangFunction rubyPredefinedIdentifier 573 hi! link erlangFunction rubyPredefinedIdentifier
442 hi! link erlangDirective Statement 574 hi! link erlangDirective Statement
443 hi! link erlangNode Identifier 575 hi! link erlangNode Identifier
444 576
577 " Elixir
578
579 hi! link elixirAtom rubySymbol
580
581
445 " JavaScript 582 " JavaScript
446 583
447 hi! link javaScriptValue Constant 584 hi! link javaScriptValue Constant
448 hi! link javaScriptRegexpString rubyRegexp 585 hi! link javaScriptRegexpString rubyRegexp
586 hi! link javaScriptTemplateVar StringDelim
587 hi! link javaScriptTemplateDelim Identifier
588 hi! link javaScriptTemplateString String
449 589
450 " CoffeeScript 590 " CoffeeScript
451 591
452 hi! link coffeeRegExp javaScriptRegexpString 592 hi! link coffeeRegExp javaScriptRegexpString
453 593
475 615
476 " Vimscript 616 " Vimscript
477 617
478 hi! link vimOper Normal 618 hi! link vimOper Normal
479 619
620 " HTML
621
622 hi! link htmlTag Statement
623 hi! link htmlEndTag htmlTag
624 hi! link htmlTagName htmlTag
625
626 " XML
627
628 hi! link xmlTag Statement
629 hi! link xmlEndTag xmlTag
630 hi! link xmlTagName xmlTag
631 hi! link xmlEqual xmlTag
632 hi! link xmlEntity Special
633 hi! link xmlEntityPunct xmlEntity
634 hi! link xmlDocTypeDecl PreProc
635 hi! link xmlDocTypeKeyword PreProc
636 hi! link xmlProcessingDelim xmlAttrib
637
480 " Debugger.vim 638 " Debugger.vim
481 639
482 call s:X("DbgCurrent","DEEBFE","345FA8","","White","DarkBlue") 640 call s:X("DbgCurrent","DEEBFE","345FA8","","White","DarkBlue")
483 call s:X("DbgBreakPt","","4F0037","","","DarkMagenta") 641 call s:X("DbgBreakPt","","4F0037","","","DarkMagenta")
484 642
493 " Plugins, etc. 651 " Plugins, etc.
494 652
495 hi! link TagListFileName Directory 653 hi! link TagListFileName Directory
496 call s:X("PreciseJumpTarget","B9ED67","405026","","White","Green") 654 call s:X("PreciseJumpTarget","B9ED67","405026","","White","Green")
497 655
498 if !exists("g:jellybeans_background_color_256")
499 let g:jellybeans_background_color_256=233
500 end
501 " Manual overrides for 256-color terminals. Dark colors auto-map badly. 656 " Manual overrides for 256-color terminals. Dark colors auto-map badly.
502 if !s:low_color 657 if !s:low_color
503 hi StatusLineNC ctermbg=235 658 hi StatusLineNC ctermbg=235
504 hi Folded ctermbg=236 659 hi Folded ctermbg=236
505 hi FoldColumn ctermbg=234
506 hi SignColumn ctermbg=236
507 hi CursorColumn ctermbg=234
508 hi CursorLine ctermbg=234
509 hi SpecialKey ctermbg=234
510 exec "hi NonText ctermbg=".g:jellybeans_background_color_256
511 exec "hi LineNr ctermbg=".g:jellybeans_background_color_256
512 hi DiffText ctermfg=81 660 hi DiffText ctermfg=81
513 exec "hi Normal ctermbg=".g:jellybeans_background_color_256
514 hi DbgBreakPt ctermbg=53 661 hi DbgBreakPt ctermbg=53
515 hi IndentGuidesOdd ctermbg=235 662 hi IndentGuidesOdd ctermbg=235
516 hi IndentGuidesEven ctermbg=234 663 hi IndentGuidesEven ctermbg=234
517 endif 664 endif
518 665
519 if exists("g:jellybeans_overrides") 666 if !empty("s:overrides")
667 fun! s:current_attr(group)
668 let l:synid = synIDtrans(hlID(a:group))
669 let l:attrs = []
670 for l:attr in ["bold", "italic", "reverse", "standout", "underline", "undercurl"]
671 if synIDattr(l:synid, l:attr, "gui") == 1
672 call add(l:attrs, l:attr)
673 endif
674 endfor
675 return join(l:attrs, ",")
676 endfun
677 fun! s:current_color(group, what, mode)
678 let l:color = synIDattr(synIDtrans(hlID(a:group)), a:what, a:mode)
679 if l:color == -1
680 return ""
681 else
682 return substitute(l:color, "^#", "", "")
683 endif
684 endfun
685 fun! s:load_color_def(group, def)
686 call s:X(a:group, get(a:def, "guifg", s:current_color(a:group, "fg", "gui")),
687 \ get(a:def, "guibg", s:current_color(a:group, "bg", "gui")),
688 \ get(a:def, "attr", s:current_attr(a:group)),
689 \ get(a:def, "ctermfg", s:current_color(a:group, "fg", "cterm")),
690 \ get(a:def, "ctermbg", s:current_color(a:group, "bg", "cterm")))
691 if !s:low_color
692 for l:prop in ["ctermfg", "ctermbg"]
693 let l:override_key = "256".l:prop
694 if has_key(a:def, l:override_key)
695 exec "hi ".a:group." ".l:prop."=".a:def[l:override_key]
696 endif
697 endfor
698 endif
699 endfun
520 fun! s:load_colors(defs) 700 fun! s:load_colors(defs)
521 for [l:group, l:v] in items(a:defs) 701 for [l:group, l:def] in items(a:defs)
522 call s:X(l:group, get(l:v, 'guifg', ''), get(l:v, 'guibg', ''), 702 if l:group == "background"
523 \ get(l:v, 'attr', ''), 703 call s:load_color_def("LineNr", l:def)
524 \ get(l:v, 'ctermfg', ''), get(l:v, 'ctermbg', '')) 704 call s:load_color_def("NonText", l:def)
525 if !s:low_color 705 call s:load_color_def("Normal", l:def)
526 for l:prop in ['ctermfg', 'ctermbg'] 706 else
527 let l:override_key = '256'.l:prop 707 call s:load_color_def(l:group, l:def)
528 if has_key(l:v, l:override_key)
529 exec "hi ".l:group." ".l:prop."=".l:v[l:override_key]
530 endif
531 endfor
532 endif 708 endif
533 unlet l:group 709 unlet l:group
534 unlet l:v 710 unlet l:def
535 endfor 711 endfor
536 endfun 712 endfun
537 call s:load_colors(g:jellybeans_overrides) 713 call s:load_colors(s:overrides)
538 delf s:load_colors 714 delf s:load_colors
715 delf s:load_color_def
716 delf s:current_color
717 delf s:current_attr
539 endif 718 endif
540 719
541 " delete functions {{{ 720 " delete functions {{{
542 delf s:X 721 delf s:X
722 delf s:remove_italic_attr
723 delf s:prefix_highlight_value_with
543 delf s:rgb 724 delf s:rgb
725 delf s:is_empty_or_none
544 delf s:color 726 delf s:color
545 delf s:rgb_color 727 delf s:rgb_color
546 delf s:rgb_level 728 delf s:rgb_level
547 delf s:rgb_number 729 delf s:rgb_number
548 delf s:grey_color 730 delf s:grey_color

mercurial