diff --git a/autoload/airline/extensions/branch.vim b/autoload/airline/extensions/branch.vim index a877c181..56a49666 100644 --- a/autoload/airline/extensions/branch.vim +++ b/autoload/airline/extensions/branch.vim @@ -248,7 +248,18 @@ function! s:check_in_path() return b:airline_file_in_root endfunction -function! s:reset_untracked_cache() +function! s:reset_untracked_cache(shellcmdpost) + if !s:has_async + 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 + endif if exists("s:untracked_git") let s:untracked_git={} endif @@ -263,5 +274,7 @@ 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 ShellCmdPost,BufWritePost * call s:reset_untracked_cache() + autocmd BufWritePost * call s:reset_untracked_cache(0) + autocmd ShellCmdPost * call s:reset_untracked_cache(1) + endfunction