basic support for hiding based on win size per part (#200).
This commit is contained in:
parent
f11f871e39
commit
7e1206469c
|
@ -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, '')
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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'
|
||||||
|
|
20
t/util.vim
20
t/util.vim
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue