mirror of
https://github.com/vim-airline/vim-airline-themes.git
synced 2026-02-27 15:12:19 +08:00
check background of groups to determine transition. resolves #599.
This commit is contained in:
@@ -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 = []
|
||||
|
||||
Reference in New Issue
Block a user