From e8970f24abe47bbe87626275ee87c67870d016c3 Mon Sep 17 00:00:00 2001
From: Jerome Reybert <jreybert@gmail.com>
Date: Thu, 22 Oct 2015 15:09:54 +0200
Subject: [PATCH] plugin/magit.vim: full buffer cleanup when update

---
 autoload/magit/sign.vim | 10 ++++++++++
 plugin/magit.vim        |  7 ++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/autoload/magit/sign.vim b/autoload/magit/sign.vim
index 646347a..7a53390 100644
--- a/autoload/magit/sign.vim
+++ b/autoload/magit/sign.vim
@@ -14,6 +14,16 @@ let s:supports_star = v:version > 703 || (v:version == 703 && has("patch596"))
 
 let s:bufnr = bufnr(g:magit_buffer_name)
 
+function! magit#sign#remove_all(...)
+	if ( a:0 == 1 )
+		let pattern = a:1
+	else
+		let pattern = '^Magit.*'
+	endif
+	let signs = magit#sign#find_signs(pattern, 1, line('$'))
+	call magit#sign#remove_signs(signs)
+endfunction
+
 " magit#sign#remove_signs: unplace a list of signs
 " param[in] sign_ids: list of signs dict
 function! magit#sign#remove_signs(sign_ids)
diff --git a/plugin/magit.vim b/plugin/magit.vim
index 77daf24..bf5eb4a 100644
--- a/plugin/magit.vim
+++ b/plugin/magit.vim
@@ -576,7 +576,12 @@ function! magit#update_buffer()
 	" Playing with foldenable around does not help.
 	" mkview does not help either.
 	let l:winview = winsaveview()
-	silent! %d
+
+	" remove all signs (needed as long as we wipe buffer)
+	call magit#sign#remove_all()
+	
+	" delete buffer
+	silent! execute "silent :%delete _"
 	
 	call <SID>mg_get_info()
 	call <SID>mg_section_help('global')
-- 
GitLab