diff --git a/autoload/airline/extensions/branch.vim b/autoload/airline/extensions/branch.vim index 83763fd1..d34cd239 100644 --- a/autoload/airline/extensions/branch.vim +++ b/autoload/airline/extensions/branch.vim @@ -162,9 +162,7 @@ function! airline#extensions#branch#head() if empty(b:airline_head) || !found_fugitive_head && !s:check_in_path() let b:airline_head = '' endif - if winwidth(0) < 120 && len(split(b:airline_head, '\zs')) > 9 - let b:airline_head = matchstr(b:airline_head, '^.\{9\}').'…' - endif + let b:airline_head = airline#util#shorten(b:airline_head, 120, 9) return b:airline_head endfunction diff --git a/autoload/airline/extensions/whitespace.vim b/autoload/airline/extensions/whitespace.vim index 825ee50b..15460797 100644 --- a/autoload/airline/extensions/whitespace.vim +++ b/autoload/airline/extensions/whitespace.vim @@ -106,12 +106,7 @@ function! airline#extensions#whitespace#check() endif endif endif - if winwidth(0) < 120 && len(split(b:airline_whitespace_check, '\zs')) > 9 - return matchstr(b:airline_whitespace_check, '^.\{9\}').'…' - else - return b:airline_whitespace_check - endif - + return airline#util#shorten(b:airline_whitespace_check, 120, 9) endfunction function! airline#extensions#whitespace#toggle() diff --git a/autoload/airline/util.vim b/autoload/airline/util.vim index f4525516..157060f0 100644 --- a/autoload/airline/util.vim +++ b/autoload/airline/util.vim @@ -4,6 +4,14 @@ call airline#init#bootstrap() let s:spc = g:airline_symbols.space +function! airline#util#shorten(text, winwidth, minwidth) + if winwidth(0) < a:winwidth && len(split(a:text, '\zs')) > a:minwidth + return matchstr(a:text, '^.\{'.a:minwidth.'}').'…' + else + return a:text + endif +endfunction + function! airline#util#wrap(text, minwidth) if a:minwidth > 0 && winwidth(0) < a:minwidth return ''