mirror of
https://github.com/vim-airline/vim-airline-themes.git
synced 2024-12-05 00:13:34 +08:00
autogenerate bg colors for the file indicator. resolves #131.
This commit is contained in:
parent
45f0d896e9
commit
a8692a7b97
|
@ -12,6 +12,7 @@ endfunction
|
||||||
function! airline#switch_theme(name)
|
function! airline#switch_theme(name)
|
||||||
let g:airline_theme = a:name
|
let g:airline_theme = a:name
|
||||||
let palette = g:airline#themes#{g:airline_theme}#palette "also lazy loads the theme
|
let palette = g:airline#themes#{g:airline_theme}#palette "also lazy loads the theme
|
||||||
|
call airline#themes#patch(palette)
|
||||||
|
|
||||||
let w:airline_lastmode = ''
|
let w:airline_lastmode = ''
|
||||||
call airline#update_statusline()
|
call airline#update_statusline()
|
||||||
|
|
|
@ -1,19 +1,14 @@
|
||||||
" MIT license. Copyright (c) 2013 Bailey Ling.
|
" MIT License. Copyright (c) 2013 Bailey Ling.
|
||||||
" vim: ts=2 sts=2 sw=2 fdm=indent
|
" vim: ts=2 sts=2 sw=2 fdm=indent
|
||||||
|
|
||||||
" generates a dictionary which defines the colors for each highlight group
|
" generates a dictionary which defines the colors for each highlight group
|
||||||
function! airline#themes#generate_color_map(section1, section2, section3, file)
|
function! airline#themes#generate_color_map(section1, section2, section3, file)
|
||||||
" provide matching background colors if not provided
|
|
||||||
let file = copy(a:file)
|
|
||||||
if file[1] == '' | let file[1] = a:section3[1] | endif
|
|
||||||
if file[3] == '' | let file[3] = a:section3[3] | endif
|
|
||||||
|
|
||||||
" guifg guibg ctermfg ctermbg gui/term
|
" guifg guibg ctermfg ctermbg gui/term
|
||||||
return {
|
return {
|
||||||
\ 'airline_a': [ a:section1[0] , a:section1[1] , a:section1[2] , a:section1[3] , get(a:section1 , 4 , 'bold') ] ,
|
\ 'airline_a': [ a:section1[0] , a:section1[1] , a:section1[2] , a:section1[3] , get(a:section1 , 4 , 'bold') ] ,
|
||||||
\ 'airline_b': [ a:section2[0] , a:section2[1] , a:section2[2] , a:section2[3] , get(a:section2 , 4 , '' ) ] ,
|
\ 'airline_b': [ a:section2[0] , a:section2[1] , a:section2[2] , a:section2[3] , get(a:section2 , 4 , '' ) ] ,
|
||||||
\ 'airline_c': [ a:section3[0] , a:section3[1] , a:section3[2] , a:section3[3] , get(a:section3 , 4 , '' ) ] ,
|
\ 'airline_c': [ a:section3[0] , a:section3[1] , a:section3[2] , a:section3[3] , get(a:section3 , 4 , '' ) ] ,
|
||||||
\ 'airline_file': [ file[0] , file[1] , file[2] , file[3] , get(file , 4, '' ) ] ,
|
\ 'airline_file': [ a:file[0] , a:file[1] , a:file[2] , a:file[3] , get(a:file , 4 , '' ) ] ,
|
||||||
\ }
|
\ }
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
@ -54,3 +49,24 @@ function! airline#themes#get_highlight2(fg, bg, ...)
|
||||||
return s:get_array(fg, bg, a:000)
|
return s:get_array(fg, bg, a:000)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! airline#themes#patch(palette)
|
||||||
|
" 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, '_')
|
||||||
|
if len(overrides) > 1
|
||||||
|
let mode_colors = a:palette[overrides[0]]
|
||||||
|
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]
|
||||||
|
|
||||||
|
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
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
|
@ -23,11 +23,14 @@
|
||||||
"
|
"
|
||||||
" The array is in the format [ guifg, guibg, ctermfg, ctermbg, opts ].
|
" The array is in the format [ guifg, guibg, ctermfg, ctermbg, opts ].
|
||||||
" The opts takes in values from ":help attr-list".
|
" The opts takes in values from ":help attr-list".
|
||||||
let s:file = [ '#ff0000' , '' , 160 , '' , '' ]
|
|
||||||
let s:N1 = [ '#00005f' , '#dfff00' , 17 , 190 ]
|
let s:N1 = [ '#00005f' , '#dfff00' , 17 , 190 ]
|
||||||
let s:N2 = [ '#ffffff' , '#444444' , 255 , 238 ]
|
let s:N2 = [ '#ffffff' , '#444444' , 255 , 238 ]
|
||||||
let s:N3 = [ '#9cffd3' , '#202020' , 85 , 234 ]
|
let s:N3 = [ '#9cffd3' , '#202020' , 85 , 234 ]
|
||||||
|
|
||||||
|
" The file array is a special case, where only the foreground colors are
|
||||||
|
" specified. The background colors are automatically filled.
|
||||||
|
let s:file = [ '#ff0000' , '' , 160 , '' ]
|
||||||
|
|
||||||
" vim-airline is made up of multiple sections, but for theming purposes there
|
" vim-airline is made up of multiple sections, but for theming purposes there
|
||||||
" is only 3 sections: the mode, the branch indicator, and the gutter (which
|
" is only 3 sections: the mode, the branch indicator, and the gutter (which
|
||||||
" then get mirrored on the right side). generate_color_map is a helper
|
" then get mirrored on the right side). generate_color_map is a helper
|
||||||
|
|
|
@ -11,12 +11,7 @@ function! s:generate()
|
||||||
let s:N1 = airline#themes#get_highlight('DbgCurrent', 'bold')
|
let s:N1 = airline#themes#get_highlight('DbgCurrent', 'bold')
|
||||||
let s:N2 = airline#themes#get_highlight('Folded')
|
let s:N2 = airline#themes#get_highlight('Folded')
|
||||||
let s:N3 = airline#themes#get_highlight('NonText')
|
let s:N3 = airline#themes#get_highlight('NonText')
|
||||||
|
|
||||||
" The file indicator is a special case where if the background values are
|
|
||||||
" empty the generate_color_map function will extract a matching color.
|
|
||||||
let s:file = airline#themes#get_highlight('Constant')
|
let s:file = airline#themes#get_highlight('Constant')
|
||||||
let s:file[1] = ''
|
|
||||||
let s:file[3] = ''
|
|
||||||
|
|
||||||
let g:airline#themes#jellybeans#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
|
let g:airline#themes#jellybeans#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
|
||||||
let g:airline#themes#jellybeans#palette.normal_modified = {
|
let g:airline#themes#jellybeans#palette.normal_modified = {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
" (https://github.com/Pychimp/vim-luna)
|
" (https://github.com/Pychimp/vim-luna)
|
||||||
|
|
||||||
let g:airline#themes#luna#palette = {}
|
let g:airline#themes#luna#palette = {}
|
||||||
let s:file = [ '#ffffff' , '#002b2b' , 231 , 23 , '' ]
|
let s:file = [ '#ffffff' , '' , 231 , '' , '' ]
|
||||||
|
|
||||||
|
|
||||||
let s:N1 = [ '#ffffff' , '#005252' , 231 , 36 ]
|
let s:N1 = [ '#ffffff' , '#005252' , 231 , 36 ]
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
let g:airline#themes#molokai#palette = {}
|
let g:airline#themes#molokai#palette = {}
|
||||||
|
|
||||||
|
|
||||||
let s:file = [ '#66d9ef' , '#465457' , 81 , 67 , 'bold' ]
|
let s:file = [ '#66d9ef' , '' , 81 , '' , '' ]
|
||||||
|
|
||||||
" Normal mode
|
" Normal mode
|
||||||
let s:N1 = [ '#080808' , '#e6db74' , 232 , 144 ] " mode
|
let s:N1 = [ '#080808' , '#e6db74' , 232 , 144 ] " mode
|
||||||
|
|
|
@ -2,9 +2,6 @@ let g:airline#themes#tomorrow#palette = {}
|
||||||
|
|
||||||
function! s:generate()
|
function! s:generate()
|
||||||
let s:file = airline#themes#get_highlight('Constant')
|
let s:file = airline#themes#get_highlight('Constant')
|
||||||
" clear out backgrounds so generate_color_map will fill them in
|
|
||||||
let s:file[1] = ''
|
|
||||||
let s:file[3] = ''
|
|
||||||
|
|
||||||
let s:N1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Directory', 'fg'], 'bold')
|
let s:N1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Directory', 'fg'], 'bold')
|
||||||
let s:N2 = airline#themes#get_highlight('Pmenu')
|
let s:N2 = airline#themes#get_highlight('Pmenu')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user