basic support for hiding based on win size per part (#200).

This commit is contained in:
Bailey Ling 2013-08-31 12:33:58 -04:00
parent f11f871e39
commit 7e1206469c
6 changed files with 48 additions and 12 deletions

View File

@ -22,6 +22,10 @@ function! airline#parts#define_raw(key, raw)
call airline#parts#define(a:key, { 'raw': a:raw }) call airline#parts#define(a:key, { 'raw': a:raw })
endfunction endfunction
function! airline#parts#define_minwidth(key, width)
call airline#parts#define(a:key, { 'minwidth': a:width })
endfunction
function! airline#parts#define_empty(keys) function! airline#parts#define_empty(keys)
for key in a:keys for key in a:keys
call airline#parts#define_raw(key, '') call airline#parts#define_raw(key, '')

View File

@ -19,12 +19,14 @@ function! s:get_val(key, append)
return a:key return a:key
endif endif
let minwidth = get(part, 'minwidth', 0)
if a:append > 0 if a:append > 0
let val .= '%{airline#util#append('.func.')}' let val .= printf('%%{airline#util#append(%s,%s)}', func, minwidth)
elseif a:append < 0 elseif a:append < 0
let val .= '%{airline#util#prepend('.func.')}' let val .= printf('%%{airline#util#prepend(%s,%s)}', func, minwidth)
else else
let val .= '%{'.func.'}' let val .= printf('%%{airline#util#wrap(%s,%s)}', func, minwidth)
endif endif
return val return val
endfunction endfunction

View File

@ -1,11 +1,24 @@
" MIT License. Copyright (c) 2013 Bailey Ling. " MIT License. Copyright (c) 2013 Bailey Ling.
" vim: et ts=2 sts=2 sw=2 " vim: et ts=2 sts=2 sw=2
function! airline#util#append(text) function! airline#util#wrap(text, minwidth)
if a:minwidth > 0 && winwidth(0) < a:minwidth
return ''
endif
return a:text
endfunction
function! airline#util#append(text, minwidth)
if a:minwidth > 0 && winwidth(0) < a:minwidth
return ''
endif
return empty(a:text) ? '' : ' '.g:airline_left_alt_sep.' '.a:text return empty(a:text) ? '' : ' '.g:airline_left_alt_sep.' '.a:text
endfunction endfunction
function! airline#util#prepend(text) function! airline#util#prepend(text, minwidth)
if a:minwidth > 0 && winwidth(0) < a:minwidth
return ''
endif
return empty(a:text) ? '' : a:text.' '.g:airline_right_alt_sep.' ' return empty(a:text) ? '' : a:text.' '.g:airline_right_alt_sep.' '
endfunction endfunction

View File

@ -20,5 +20,10 @@ describe 'parts'
call airline#parts#define_raw('raw', 'bar') call airline#parts#define_raw('raw', 'bar')
Expect airline#parts#get('raw').raw == 'bar' Expect airline#parts#get('raw').raw == 'bar'
end end
it 'can define a minwidth'
call airline#parts#define_minwidth('mw', 123)
Expect airline#parts#get('mw').minwidth == 123
end
end end

View File

@ -16,17 +16,17 @@ describe 'section'
it 'should create sections with no separators' it 'should create sections with no separators'
let s = airline#section#create(['text', 'raw', 'func']) let s = airline#section#create(['text', 'raw', 'func'])
Expect s == '%{"text"}raw%{SectionSpec()}' Expect s == '%{airline#util#wrap("text",0)}raw%{airline#util#wrap(SectionSpec(),0)}'
end end
it 'should create left sections with separators' it 'should create left sections with separators'
let s = airline#section#create_left(['text', 'text']) let s = airline#section#create_left(['text', 'text'])
Expect s == '%{"text"}%{airline#util#append("text")}' Expect s == '%{airline#util#wrap("text",0)}%{airline#util#append("text",0)}'
end end
it 'should create right sections with separators' it 'should create right sections with separators'
let s = airline#section#create_right(['text', 'text']) let s = airline#section#create_right(['text', 'text'])
Expect s == '%{airline#util#prepend("text")}%{"text"}' Expect s == '%{airline#util#prepend("text",0)}%{airline#util#wrap("text",0)}'
end end
it 'should prefix with highlight group if provided' it 'should prefix with highlight group if provided'

View File

@ -16,13 +16,13 @@ describe 'util'
end end
it 'has append wrapper function' it 'has append wrapper function'
Expect airline#util#append('') == '' Expect airline#util#append('', 0) == ''
Expect airline#util#append('1') == ' > 1' Expect airline#util#append('1', 0) == ' > 1'
end end
it 'has prepend wrapper function' it 'has prepend wrapper function'
Expect airline#util#prepend('') == '' Expect airline#util#prepend('', 0) == ''
Expect airline#util#prepend('1') == '1 < ' Expect airline#util#prepend('1', 0) == '1 < '
end end
it 'has getwinvar function' it 'has getwinvar function'
@ -38,5 +38,17 @@ describe 'util'
call airline#util#exec_funcrefs([function('Util3')], 1, 2, 3, 4) call airline#util#exec_funcrefs([function('Util3')], 1, 2, 3, 4)
Expect g:count == 4 Expect g:count == 4
end end
it 'should ignore minwidth if less than 0'
Expect airline#util#append('foo', -1) == ' > foo'
Expect airline#util#prepend('foo', -1) == 'foo < '
Expect airline#util#wrap('foo', -1) == 'foo'
end
it 'should return empty if winwidth() > minwidth'
Expect airline#util#append('foo', 99999) == ''
Expect airline#util#prepend('foo', 99999) == ''
Expect airline#util#wrap('foo', 99999) == ''
end
end end