From a4d69d53b5c81715ac597db881ec7deae6b0a71a Mon Sep 17 00:00:00 2001 From: Bailey Ling Date: Wed, 18 Feb 2015 23:02:17 -0500 Subject: [PATCH] cache open buffers into a dictionary and loop over the keys --- autoload/airline/extensions/tabline/buflist.vim | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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