From 3d4f6374a276a76228289ccb766b4eb241b43828 Mon Sep 17 00:00:00 2001
From: Jerome Reybert <jreybert@gmail.com>
Date: Tue, 17 Nov 2015 13:59:04 +0100
Subject: [PATCH] plugin/magit.vim: better handling of magit buffer, including
 clean quit command (fix #43)

---
 plugin/magit.vim | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/plugin/magit.vim b/plugin/magit.vim
index 46dc088..6abd5fb 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()
 
-- 
GitLab