restore highlight group with accents for all types of parts. resolves #272.

This commit is contained in:
Bailey Ling 2013-09-23 15:45:44 +00:00
parent b07362947e
commit 248c9b0e29
2 changed files with 19 additions and 12 deletions

View File

@ -4,15 +4,18 @@
call airline#init#bootstrap() call airline#init#bootstrap()
let s:spc = g:airline_symbols.space let s:spc = g:airline_symbols.space
function! s:wrap_accent(part, value)
if exists('a:part.accent')
return '%#__accent_'.(a:part.accent).'#'.a:value.'%#__restore__#'
endif
return a:value
endfunction
function! s:create(parts, append) function! s:create(parts, append)
let _ = '' let _ = ''
for idx in range(len(a:parts)) for idx in range(len(a:parts))
let part = airline#parts#get(a:parts[idx]) let part = airline#parts#get(a:parts[idx])
let val = '' let val = ''
if exists('part.accent')
let val .= '%#__accent_'.(part.accent).'#'
endif
if exists('part.function') if exists('part.function')
let func = (part.function).'()' let func = (part.function).'()'
@ -26,10 +29,10 @@ function! s:create(parts, append)
let val = s:spc.g:airline_right_alt_sep.s:spc.val let val = s:spc.g:airline_right_alt_sep.s:spc.val
endif endif
if exists('part.raw') if exists('part.raw')
let _ .= val.(part.raw) let _ .= s:wrap_accent(part, val.(part.raw))
continue continue
else else
let _ .= val.a:parts[idx] let _ .= s:wrap_accent(part, val.a:parts[idx])
continue continue
endif endif
endif endif
@ -49,10 +52,7 @@ function! s:create(parts, append)
let partval = substitute(partval, '}', ' : ""}', '') let partval = substitute(partval, '}', ' : ""}', '')
endif endif
let val .= partval let val .= s:wrap_accent(part, partval)
if exists('part.accent')
let val .= '%#__restore__#'
endif
let _ .= val let _ .= val
endfor endfor
return _ return _

View File

@ -26,13 +26,20 @@ describe 'section'
Expect s == '%{airline#util#prepend("text",0)}%{airline#util#wrap("text",0)}' Expect s == '%{airline#util#prepend("text",0)}%{airline#util#wrap("text",0)}'
end end
it 'should prefix with accent group if provided' it 'should prefix with accent group if provided and restore afterwards'
call airline#parts#define('hi', { call airline#parts#define('hi', {
\ 'raw': 'hello', \ 'raw': 'hello',
\ 'accent': 'red', \ 'accent': 'red',
\ }) \ })
let s = airline#section#create(['hi']) let s = airline#section#create(['hi'])
Expect s == '%#__accent_red#hello' Expect s == '%#__accent_red#hello%#__restore__#'
end
it 'should accent functions'
call airline#parts#define_function('hi', 'Hello')
call airline#parts#define_accent('hi', 'bold')
let s = airline#section#create(['hi'])
Expect s == '%#__accent_bold#%{airline#util#wrap(Hello(),0)}%#__restore__#'
end end
it 'should parse out a section from the distro' it 'should parse out a section from the distro'