diff --git a/plugin/magit.vim b/plugin/magit.vim index 46dc088b4ebd1244e3a80cfd4da3f055eee3b8cf..6abd5fb6393938b186615fc9768794ec6ee26a35 100644 --- a/plugin/magit.vim +++ b/plugin/magit.vim @@ -583,11 +583,15 @@ function! magit#show_magit(display, ...) return endif if ( a:display == 'v' ) - vnew + vnew elseif ( a:display == 'h' ) - new + new elseif ( a:display == 'c' ) - enew + if ( bufname("%") == "" ) + keepalt enew + else + enew + endif else throw 'parameter_error' endif @@ -603,19 +607,21 @@ function! magit#show_magit(display, ...) let b:magit_default_fold_level = a:2 endif - if ( bufexists(g:magit_buffer_name) ) - silent! execute "bdelete " . g:magit_buffer_name - endif - silent! execute "file " . g:magit_buffer_name - setlocal buftype=nofile setlocal bufhidden=hide setlocal noswapfile setlocal foldmethod=syntax + setlocal nobuflisted let &l:foldlevel = b:magit_default_fold_level setlocal filetype=magit "setlocal readonly + try + silent execute "buffer " . g:magit_buffer_name + catch /^Vim\%((\a\+)\)\=:E94/ + silent execute "keepalt file " . g:magit_buffer_name + endtry + call magit#utils#setbufnr(bufnr(g:magit_buffer_name)) call magit#sign#init()