update separator colors when mode changes

This commit is contained in:
Bailey Ling 2013-08-16 01:42:30 +00:00
parent 47c80c31da
commit af7dfc8677
2 changed files with 15 additions and 9 deletions

View File

@ -39,6 +39,7 @@ function! airline#load_theme(name)
let g:airline_theme = a:name let g:airline_theme = a:name
let inactive_colors = g:airline#themes#{g:airline_theme}#inactive "also lazy loads the theme let inactive_colors = g:airline#themes#{g:airline_theme}#inactive "also lazy loads the theme
let w:airline_lastmode = '' let w:airline_lastmode = ''
call airline#update_statusline()
call airline#reload_highlight() call airline#reload_highlight()
call airline#update_highlight() call airline#update_highlight()
endfunction endfunction
@ -55,9 +56,9 @@ function! airline#highlight(modes)
endfor endfor
endif endif
endfor endfor
if exists('w:airline_current_builder') for sep in w:airline_current_info.separator_groups
call w:airline_current_builder.refresh_separator_highlights() call airline#themes#exec_highlight_separator(sep[0], sep[1])
endif endfor
endfunction endfunction
" for 7.2 compatibility " for 7.2 compatibility
@ -74,7 +75,6 @@ endfunction
function! airline#get_statusline(winnr, active) function! airline#get_statusline(winnr, active)
let builder = airline#builder#new(a:active) let builder = airline#builder#new(a:active)
call setwinvar(a:winnr, 'airline_current_builder', builder)
if s:getwinvar(a:winnr, 'airline_render_left', a:active || (!a:active && !g:airline_inactive_collapse)) if s:getwinvar(a:winnr, 'airline_render_left', a:active || (!a:active && !g:airline_inactive_collapse))
call builder.add_section('Al2', s:get_section(a:winnr, 'a').'%{g:airline_detect_paste && &paste ? g:airline_paste_symbol." " : ""}') call builder.add_section('Al2', s:get_section(a:winnr, 'a').'%{g:airline_detect_paste && &paste ? g:airline_paste_symbol." " : ""}')
@ -94,7 +94,10 @@ function! airline#get_statusline(winnr, active)
call builder.add_raw('%)') call builder.add_raw('%)')
endif endif
endif endif
return builder.build()
let info = builder.build()
call setwinvar(a:winnr, 'airline_current_info', info)
return info.statusline
endfunction endfunction
function! airline#exec_funcrefs(list, break_early) function! airline#exec_funcrefs(list, break_early)

View File

@ -4,7 +4,6 @@
function! airline#builder#new(active) function! airline#builder#new(active)
let builder = {} let builder = {}
let builder._sections = [] let builder._sections = []
let builder._separator_groups = []
let builder._active = a:active let builder._active = a:active
function! builder.split(gutter) function! builder.split(gutter)
@ -33,6 +32,7 @@ function! airline#builder#new(active)
let line = '%{airline#update_highlight()}' let line = '%{airline#update_highlight()}'
let side = 0 let side = 0
let prev_group = '' let prev_group = ''
let separator_groups = []
for section in self._sections for section in self._sections
if section[0] == '|' if section[0] == '|'
let side = 1 let side = 1
@ -47,7 +47,7 @@ function! airline#builder#new(active)
if prev_group != '' if prev_group != ''
let sep = side == 0 ? [section[0], prev_group] : [prev_group, section[0]] let sep = side == 0 ? [section[0], prev_group] : [prev_group, section[0]]
call add(self._separator_groups, sep) call add(separator_groups, sep)
let line .= side == 0 let line .= side == 0
\ ? self._group(section[0].'_to_'.prev_group) \ ? self._group(section[0].'_to_'.prev_group)
\ : self._group(prev_group.'_to_'.section[0]) \ : self._group(prev_group.'_to_'.section[0])
@ -59,8 +59,11 @@ function! airline#builder#new(active)
let line .= self._group(section[0]).section[1] let line .= self._group(section[0]).section[1]
let prev_group = section[0] let prev_group = section[0]
endfor endfor
call self.refresh_separator_highlights()
return line return {
\ 'statusline': line,
\ 'separator_groups': separator_groups,
\ }
endfunction endfunction
return builder return builder