From c1704a2de0e3d963714ab462aa34b24f40b492f4 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Fri, 23 Sep 2016 16:11:53 +0200 Subject: [PATCH] Do not overwrite v:shell_overwrite after ShellCmdPost Prevents resetting v:shell_error from the followin system() call in get_git_untracked. Fixes #1266 --- autoload/airline/extensions/branch.vim | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/autoload/airline/extensions/branch.vim b/autoload/airline/extensions/branch.vim index 0618a44..6228bd6 100644 --- a/autoload/airline/extensions/branch.vim +++ b/autoload/airline/extensions/branch.vim @@ -203,7 +203,16 @@ function! s:check_in_path() return b:airline_file_in_root endfunction -function! s:reset_untracked_cache() +function! s:reset_untracked_cache(shellcmdpost) + if a:shellcmdpost + " function called after executing a shell command, + " only clear cache, if there was no error, else the + " system() command from get_git_untracked() would + " overwrite the v:shell_error status + if v:shell_error + return + endif + endif if exists("s:untracked_git") let s:untracked_git={} endif @@ -218,5 +227,6 @@ function! airline#extensions#branch#init(ext) autocmd BufReadPost * unlet! b:airline_file_in_root autocmd CursorHold,ShellCmdPost,CmdwinLeave * unlet! b:airline_head autocmd User AirlineBeforeRefresh unlet! b:airline_head - autocmd BufWritePost,ShellCmdPost * call s:reset_untracked_cache() + autocmd BufWritePost * call s:reset_untracked_cache(0) + autocmd ShellCmdPost * call s:reset_untracked_cache(1) endfunction