From c117cfc72ad233ca560336789c95c39dff17ce82 Mon Sep 17 00:00:00 2001
From: Jerome Reybert <jreybert@gmail.com>
Date: Tue, 20 Oct 2015 13:14:36 +0200
Subject: [PATCH] plugin/magit.vim: remove signs when they are staged

---
 autoload/magit/sign.vim | 8 +++++---
 plugin/magit.vim        | 3 ++-
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/autoload/magit/sign.vim b/autoload/magit/sign.vim
index fd44abd..f979d8b 100644
--- a/autoload/magit/sign.vim
+++ b/autoload/magit/sign.vim
@@ -15,11 +15,12 @@ let s:supports_star = v:version > 703 || (v:version == 703 && has("patch596"))
 let s:bufnr = bufnr(g:magit_buffer_name)
 
 " magit#sign#remove_signs: unplace a list of signs
-" param[in] sign_ids: list of signs ids
+" param[in] sign_ids: list of signs dict
 function! magit#sign#remove_signs(sign_ids)
     let bufnr = magit#utils#bufnr()
-    for id in a:sign_ids
-        execute "sign unplace" id
+    for sign in values(a:sign_ids)
+        echom "sign unplace" sign.id
+        execute "sign unplace" sign.id
     endfor
 endfunction
 
@@ -62,6 +63,7 @@ endfunction
 
 " magit#sign#find_stage_signs: helper function to get marked lines for stage
 " param[in] startline,endline: range of lines
+" return Dict of marked lines
 function! magit#sign#find_stage_signs(startline, endline)
 	return magit#sign#find_signs(s:magit_mark_sign, a:startline, a:endline)
 endfunction
diff --git a/plugin/magit.vim b/plugin/magit.vim
index 65a5d81..1d1e56e 100644
--- a/plugin/magit.vim
+++ b/plugin/magit.vim
@@ -780,7 +780,8 @@ function! magit#stage_hunk(discard)
 			let selection = getline(start, end)
 		else
 			let selection = <SID>mg_create_diff_from_select(
-				\map(keys(marked_lines), 'str2nr(v:val)'))
+						\ map(keys(marked_lines), 'str2nr(v:val)'))
+			call magit#sign#remove_signs(marked_lines)
 		endif
 	endtry
 	return magit#stage_block(selection, a:discard)
-- 
GitLab