From 7a2f6525c3e5de618d8481f5b1b5b35678022193 Mon Sep 17 00:00:00 2001 From: Bailey Ling Date: Fri, 6 Sep 2013 21:50:06 +0000 Subject: [PATCH] implement customizable file name formatting (#230). --- autoload/airline/deprecation.vim | 3 ++- autoload/airline/extensions/tabline.vim | 9 +++++++-- doc/airline.txt | 11 +++++++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/autoload/airline/deprecation.vim b/autoload/airline/deprecation.vim index 7df9150f..1c66c58f 100644 --- a/autoload/airline/deprecation.vim +++ b/autoload/airline/deprecation.vim @@ -19,10 +19,11 @@ function! airline#deprecation#check() \ [ 'g:airline_enable_branch', 'g:airline#extensions#branch#enabled' ], \ [ 'g:airline_enable_bufferline', 'g:airline#extensions#bufferline#enabled' ], \ [ 'g:airline_enable_syntastic', 'g:airline#extensions#syntastic#enabled' ], + \ [ 'g:airline#extensions#tabline#fnamemod', 'g:airline#extensions#tabline#fnamefunc' ], \ ] for test in tests if exists(test[0]) - echom printf('The variable %s is deprecated and may not work in the future. It has been replaced with %s', test[0], test[1]) + echom printf('The variable %s is deprecated and may not work in the future. It has been replaced with %s. Please read the documentation.', test[0], test[1]) endif endfor endfunction diff --git a/autoload/airline/extensions/tabline.vim b/autoload/airline/extensions/tabline.vim index 7969f6ff..81b81e7a 100644 --- a/autoload/airline/extensions/tabline.vim +++ b/autoload/airline/extensions/tabline.vim @@ -1,7 +1,7 @@ " MIT License. Copyright (c) 2013 Bailey Ling. " vim: et ts=2 sts=2 sw=2 -let s:fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':p:.') +let s:fnamefunc = get(g:, 'airline#extensions#tabline#fnamefunc', 'airline#extensions#tabline#fname_func') let s:excludes = get(g:, 'airline#extensions#tabline#excludes', []) let s:tab_nr_type = get(g:, 'airline#extensions#tabline#tab_nr_type', 0) let s:show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1) @@ -82,6 +82,11 @@ function! airline#extensions#tabline#title(n) return airline#extensions#tabline#get_buffer_name(buflist[winnr - 1]) endfunction +function! airline#extensions#tabline#fname_func(name) + let fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':p:.') + return substitute(fnamemodify(a:name, fmod), '\w\zs.\{-}\ze\/', '', 'g') +endfunction + function! airline#extensions#tabline#get_buffer_name(nr) let _ = '' let name = bufname(a:nr) @@ -93,7 +98,7 @@ function! airline#extensions#tabline#get_buffer_name(nr) if empty(name) let _ .= '[No Name]' else - let _ .= fnamemodify(name, s:fmod) + let _ .= call(s:fnamefunc, [name]) endif if getbufvar(a:nr, '&modified') == 1 diff --git a/doc/airline.txt b/doc/airline.txt index c35d7aed..9239f3b0 100644 --- a/doc/airline.txt +++ b/doc/airline.txt @@ -305,8 +305,15 @@ virtualenv * enable/disable displaying buffers with a single tab. > let g:airline#extensions#tabline#show_buffers = 1 < -* configure the formatting of filenames (see |filename-modifiers|). > - let g:airline#extensions#tabline#fnamemod = ':p:.' +* defines a function for how to format the file name. > + " the default renders /foo/bar/file.txt => /f/b/file.txt + let g:airline#extensions#tabline#fnamefunc + + " here's a simple example to show only the file name: + function! MyFileFormat(file) + return fnamemodify(a:file, ':t') + endfunction + let g:airline#extensions#tabline#fnamefunc = 'MyFileFormat' < * configure filename match rules to exclude from the tabline. > let g:airline#extensions#tabline#excludes = []