diff --git a/autoload/airline/extensions/tabline/buflist.vim b/autoload/airline/extensions/tabline/buflist.vim index 95873ba6..a0b2d2bc 100644 --- a/autoload/airline/extensions/tabline/buflist.vim +++ b/autoload/airline/extensions/tabline/buflist.vim @@ -2,6 +2,14 @@ " vim: et ts=2 sts=2 sw=2 let s:excludes = get(g:, 'airline#extensions#tabline#excludes', []) +let s:buffers = {} + +for nr in range(1, bufnr('$')) + let s:buffers[nr] = 1 +endfor + +autocmd BufAdd * let s:buffers[expand('')] = 1 +autocmd BufDelete * let nr = expand('') | if has_key(s:buffers, nr) | unlet s:buffers[nr] | endif function! airline#extensions#tabline#buflist#invalidate() unlet! s:current_buffer_list @@ -13,8 +21,8 @@ function! airline#extensions#tabline#buflist#list() endif let buffers = [] - let cur = bufnr('%') - for nr in range(1, bufnr('$')) + for key in keys(s:buffers) + let nr = str2nr(key) if buflisted(nr) && bufexists(nr) let toadd = 1 for ex in s:excludes