From 3c1295bb712ee6f1747031e96568e96ae4985c2e Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Mon, 9 Feb 2015 17:44:13 +0100 Subject: [PATCH] tabline: fix s:current_buffer_list invalidation Use `s:current_buffer_list` always in `s:get_buffer_list()`, and invalidate it via BufAdd and BufUnload. Fixes regression from https://github.com/bling/vim-airline/commit/ce58af719109f83f965b1d8b87232b8161fcfe90#commitcomment-9647487. --- autoload/airline/extensions/tabline.vim | 26 ++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/autoload/airline/extensions/tabline.vim b/autoload/airline/extensions/tabline.vim index a761107a..978eacdc 100644 --- a/autoload/airline/extensions/tabline.vim +++ b/autoload/airline/extensions/tabline.vim @@ -59,19 +59,22 @@ function! s:toggle_on() let [ s:original_tabline, s:original_showtabline ] = [ &tabline, &showtabline ] set tabline=%!airline#extensions#tabline#get() - if s:buf_min_count <= 0 && s:tab_min_count <= 1 - set showtabline=2 - else - augroup airline_tabline - autocmd! + augroup airline_tabline + autocmd! + " Invalidate cache. + autocmd BufAdd,BufUnload * unlet! s:current_buffer_list + + if s:buf_min_count <= 0 && s:tab_min_count <= 1 + set showtabline=2 + else if s:show_buffers == 1 autocmd BufEnter * call show_tabline(s:buf_min_count, len(s:get_buffer_list())) autocmd BufUnload * call show_tabline(s:buf_min_count, len(s:get_buffer_list()) - 1) else autocmd TabEnter * call show_tabline(s:tab_min_count, tabpagenr('$')) endif - augroup END - endif + endif + augroup END endfunction function! airline#extensions#tabline#load_theme(palette) @@ -130,13 +133,14 @@ function! airline#extensions#tabline#title(n) endfunction function! airline#extensions#tabline#get_buffer_name(nr) - let buffer_list = exists('s:current_buffer_list') - \ ? s:current_buffer_list - \ : s:get_buffer_list() - return airline#extensions#tabline#{s:formatter}#format(a:nr, buffer_list) + return airline#extensions#tabline#{s:formatter}#format(a:nr, s:get_buffer_list()) endfunction function! s:get_buffer_list() + if exists('s:current_buffer_list') + return s:current_buffer_list + endif + let buffers = [] let cur = bufnr('%') for nr in range(1, bufnr('$'))