From 5d3cfa40453fd8216be6ca68e9bd3846eed05176 Mon Sep 17 00:00:00 2001 From: huanhuan_zhuang Date: Fri, 21 Aug 2020 13:07:47 +0800 Subject: [PATCH] add 'g:airline#extensions#tabline#tabtitle_formatter' option The option can be used to specify a customized format() function to display tab title in tab mode --- autoload/airline/extensions/tabline.vim | 5 +++++ doc/airline.txt | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/autoload/airline/extensions/tabline.vim b/autoload/airline/extensions/tabline.vim index 30a2fa8d..63e0b3fe 100644 --- a/autoload/airline/extensions/tabline.vim +++ b/autoload/airline/extensions/tabline.vim @@ -186,6 +186,11 @@ function! airline#extensions#tabline#title(n) let title = gettabvar(a:n, 'title') endif + let formatter = get(g:, 'airline#extensions#tabline#tabtitle_formatter') + if empty(title) && formatter !=# '' && exists("*".formatter) + let title = call(formatter, [a:n]) + endif + if empty(title) let buflist = tabpagebuflist(a:n) let winnr = tabpagewinnr(a:n) diff --git a/doc/airline.txt b/doc/airline.txt index 5d3c7ec8..466547b1 100644 --- a/doc/airline.txt +++ b/doc/airline.txt @@ -1216,6 +1216,30 @@ Note: Not displayed if the number of tabs is less than 1 let g:airline#extensions#tabline#formatter = 'short_path' +* defines the customized format() function to display tab title in tab mode. > + let g:airline#extensions#tabline#tabtitle_formatter = 'MyTabTitleFormatter' +< + Then define the MyTabTitleFormatter() function in your vimrc. > + function MyTabTitleFormatter(n) + let buflist = tabpagebuflist(a:n) + let winnr = tabpagewinnr(a:n) + let bufnr = buflist[winnr - 1] + let winid = win_getid(winnr, a:n) + let title = bufname(bufnr) + + if empty(title) + if getqflist({'qfbufnr' : 0}).qfbufnr == bufnr + let title = '[Quickfix List]' + elseif winid && getloclist(winid, {'qfbufnr' : 0}).qfbufnr == bufnr + let title = '[Location List]' + else + let title = '[No Name]' + endif + endif + + return title + endfunction + * configure the minimum number of buffers needed to show the tabline. > let g:airline#extensions#tabline#buffer_min_count = 0 <