check background of groups to determine transition. resolves #599.

This commit is contained in:
Bailey Ling
2014-10-18 13:59:24 -04:00
parent 727192ad6a
commit be6e4d6dd6
5 changed files with 58 additions and 25 deletions

View File

@@ -23,36 +23,35 @@ function! s:prototype.build()
let side = 1
let prev_group = ''
let line = ''
let i = 0
let length = len(self._sections)
for section in self._sections
while i < length
let section = self._sections[i]
let group = section[0]
let contents = section[1]
if group == '|'
if group == ''
let line .= contents
elseif group == '|'
let side = 0
let line .= contents
continue
endif
if prev_group != ''
if prev_group == group
let line .= side ? self._context.left_alt_sep : self._context.right_alt_sep
elseif group != ''
call airline#highlighter#add_separator(prev_group, group, side)
let line .= '%#'.prev_group.'_to_'.group.'#'
let line .= side ? self._context.left_sep : self._context.right_sep
let prev_group = ''
else
if i == 0
let line .= '%#'.group.'#'
endif
endif
if group != prev_group
let line .= '%#'.group.'#'
endif
let line .= s:get_accented_line(self, group, contents)
if prev_group != '' && group != ''
let line .= s:get_seperator(self, prev_group, group, side)
endif
if group != ''
let line .= s:get_accented_line(self, group, contents)
let prev_group = group
endif
endfor
let i = i + 1
endwhile
if !self._context.active
let line = substitute(line, '%#.\{-}\ze#', '\0_inactive', 'g')
@@ -60,6 +59,19 @@ function! s:prototype.build()
return line
endfunction
function! s:get_seperator(self, prev_group, group, side)
let line = ''
if airline#highlighter#is_same_bg(a:prev_group, a:group)
let line .= a:side ? a:self._context.left_alt_sep : a:self._context.right_alt_sep
else
call airline#highlighter#add_separator(a:prev_group, a:group, a:side)
let line .= '%#'.a:prev_group.'_to_'.a:group.'#'
let line .= a:side ? a:self._context.left_sep : a:self._context.right_sep
let line .= '%#'.a:group.'#'
endif
return line
endfunction
function! s:get_accented_line(self, group, contents)
if a:self._context.active
let contents = []