2013-08-17 23:25:24 -04:00
|
|
|
" MIT License. Copyright (c) 2013 Bailey Ling.
|
2013-09-14 13:07:37 -04:00
|
|
|
" vim: et ts=2 sts=2 sw=2
|
2013-08-02 13:56:12 -04:00
|
|
|
|
2013-07-23 23:00:23 -04:00
|
|
|
" generates a dictionary which defines the colors for each highlight group
|
2013-09-15 11:59:22 -04:00
|
|
|
function! airline#themes#generate_color_map(sect1, sect2, sect3, ...)
|
2013-09-14 13:07:37 -04:00
|
|
|
let palette = {
|
2013-09-15 11:59:22 -04:00
|
|
|
\ 'airline_a': [ a:sect1[0] , a:sect1[1] , a:sect1[2] , a:sect1[3] , get(a:sect1 , 4 , 'bold') ] ,
|
|
|
|
\ 'airline_b': [ a:sect2[0] , a:sect2[1] , a:sect2[2] , a:sect2[3] , get(a:sect2 , 4 , '' ) ] ,
|
|
|
|
\ 'airline_c': [ a:sect3[0] , a:sect3[1] , a:sect3[2] , a:sect3[3] , get(a:sect3 , 4 , '' ) ] ,
|
2013-09-14 13:07:37 -04:00
|
|
|
\ }
|
|
|
|
|
2013-09-15 11:59:22 -04:00
|
|
|
if a:0 > 0
|
2013-09-14 13:07:37 -04:00
|
|
|
call extend(palette, {
|
2013-09-15 11:59:22 -04:00
|
|
|
\ 'airline_x': [ a:1[0] , a:1[1] , a:1[2] , a:1[3] , get(a:1 , 4 , '' ) ] ,
|
|
|
|
\ 'airline_y': [ a:2[0] , a:2[1] , a:2[2] , a:2[3] , get(a:2 , 4 , '' ) ] ,
|
|
|
|
\ 'airline_z': [ a:3[0] , a:3[1] , a:3[2] , a:3[3] , get(a:3 , 4 , '' ) ] ,
|
2013-09-14 13:07:37 -04:00
|
|
|
\ })
|
|
|
|
else
|
|
|
|
call extend(palette, {
|
2013-09-15 11:59:22 -04:00
|
|
|
\ 'airline_x': [ a:sect3[0] , a:sect3[1] , a:sect3[2] , a:sect3[3] , get(a:sect3 , 4 , '' ) ] ,
|
|
|
|
\ 'airline_y': [ a:sect2[0] , a:sect2[1] , a:sect2[2] , a:sect2[3] , get(a:sect2 , 4 , '' ) ] ,
|
|
|
|
\ 'airline_z': [ a:sect1[0] , a:sect1[1] , a:sect1[2] , a:sect1[3] , get(a:sect1 , 4 , '' ) ] ,
|
2013-09-14 13:07:37 -04:00
|
|
|
\ })
|
|
|
|
endif
|
|
|
|
|
|
|
|
return palette
|
2013-07-08 21:22:04 -04:00
|
|
|
endfunction
|
2013-08-03 21:25:35 -04:00
|
|
|
|
|
|
|
function! airline#themes#get_highlight(group, ...)
|
2013-09-01 22:57:32 -04:00
|
|
|
return call('airline#highlighter#get_highlight', [a:group] + a:000)
|
2013-08-03 21:25:35 -04:00
|
|
|
endfunction
|
|
|
|
|
|
|
|
function! airline#themes#get_highlight2(fg, bg, ...)
|
2013-09-01 22:57:32 -04:00
|
|
|
return call('airline#highlighter#get_highlight2', [a:fg, a:bg] + a:000)
|
2013-08-03 21:25:35 -04:00
|
|
|
endfunction
|
2013-08-09 16:08:36 -04:00
|
|
|
|
2013-08-17 23:25:24 -04:00
|
|
|
function! airline#themes#patch(palette)
|
2013-09-01 10:06:25 -04:00
|
|
|
for mode in keys(a:palette)
|
|
|
|
if !has_key(a:palette[mode], 'airline_warning')
|
|
|
|
let a:palette[mode]['airline_warning'] = [ '#000000', '#df5f00', 232, 166 ]
|
|
|
|
endif
|
|
|
|
endfor
|
|
|
|
|
2013-08-17 23:25:24 -04:00
|
|
|
" this is a pretty heavy handed, but it works...
|
|
|
|
" basically, look for the 'airline_file' group and copy the bg
|
|
|
|
" colors from 'airline_c' into it.
|
|
|
|
for mode in keys(a:palette)
|
|
|
|
let overrides = split(mode, '_')
|
2013-08-23 22:49:24 -04:00
|
|
|
let mode_colors = a:palette[overrides[0]]
|
|
|
|
if exists('mode_colors.airline_file')
|
|
|
|
let file_colors = mode_colors.airline_file
|
|
|
|
let file_colors[1] = mode_colors.airline_c[1]
|
|
|
|
let file_colors[3] = mode_colors.airline_c[3]
|
2013-08-17 23:25:24 -04:00
|
|
|
|
2013-08-23 22:49:24 -04:00
|
|
|
if len(overrides) > 1
|
2013-08-18 00:22:36 -04:00
|
|
|
let override_colors = a:palette[overrides[0].'_'.overrides[1]]
|
|
|
|
let override_colors.airline_file = copy(file_colors)
|
|
|
|
let override_status_colors = get(override_colors, 'airline_c', mode_colors.airline_c)
|
|
|
|
let override_colors.airline_file[1] = override_status_colors[1]
|
|
|
|
let override_colors.airline_file[3] = override_status_colors[3]
|
|
|
|
endif
|
2013-08-17 23:25:24 -04:00
|
|
|
endif
|
|
|
|
endfor
|
|
|
|
endfunction
|
|
|
|
|