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 })
endfunction
function! airline#parts#define_minwidth(key, width)
call airline#parts#define(a:key, { 'minwidth': a:width })
endfunction
function! airline#parts#define_empty(keys)
for key in a:keys
call airline#parts#define_raw(key, '')

View File

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

View File

@@ -1,11 +1,24 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" 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
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.' '
endfunction