Thread (1 message) 1 message, 1 author, 2016-06-15

Re: [PATCH] mergetools: add vimdiff3 mode

From: Junio C Hamano <hidden>
Date: 2016-06-15 23:00:46

David Aguilar [off-list ref] writes:
On Sun, Apr 20, 2014 at 07:24:20PM -0500, Felipe Contreras wrote:
quoted
It's similar to the default, except that the other windows are hidden.
This ensures that removed/added colors are still visible on the main
merge window, but the other windows not visible.

Specially useful with merge.conflictstyle=diff3.
This is a nice addition, thanks.

FWIW,
Acked-by: David Aguilar <redacted>
Thanks for an explicit Ack.

I personally think a new backend vimdiff3 can go in 2.0 (though we
are -rc0), as we can read from the patch below, it is very unlikely
to break anything else (I am not sure what these 'hid' are in the
implementation, but even if we had any breakage there, it would not
affect anybody other than vimdiff3 backend).
quoted
Signed-off-by: Felipe Contreras <redacted>
---

How a conflict looks:
http://felipec.org/vimdiff3-conflict.png

How it looks resolved:
http://felipec.org/vimdiff3-resolved.png

 mergetools/gvimdiff3 |  1 +
 mergetools/vimdiff   | 14 ++++++++++++--
 mergetools/vimdiff3  |  1 +
 3 files changed, 14 insertions(+), 2 deletions(-)
 create mode 100644 mergetools/gvimdiff3
 create mode 100644 mergetools/vimdiff3
diff --git a/mergetools/gvimdiff3 b/mergetools/gvimdiff3
new file mode 100644
index 0000000..04a5bb0
--- /dev/null
+++ b/mergetools/gvimdiff3
@@ -0,0 +1 @@
+. "$MERGE_TOOLS_DIR/vimdiff"
diff --git a/mergetools/vimdiff b/mergetools/vimdiff
index 39d0327..1ddfbfc 100644
--- a/mergetools/vimdiff
+++ b/mergetools/vimdiff
@@ -20,16 +20,26 @@ merge_cmd () {
 		"$merge_tool_path" -f -d -c 'wincmd l' \
 			"$LOCAL" "$MERGED" "$REMOTE"
 		;;
+	gvimdiff3|vimdiff3)
+		if $base_present
+		then
+			"$merge_tool_path" -f -d -c 'hid | hid | hid' \
+				"$LOCAL" "$REMOTE" "$BASE" "$MERGED"
+		else
+			"$merge_tool_path" -f -d -c 'hid | hid' \
+				"$LOCAL" "$REMOTE" "$MERGED"
+		fi
+		;;
 	esac
 	check_unchanged
 }
 
 translate_merge_tool_path() {
 	case "$1" in
-	gvimdiff|gvimdiff2)
+	gvimdiff|gvimdiff2|gvimdiff3)
 		echo gvim
 		;;
-	vimdiff|vimdiff2)
+	vimdiff|vimdiff2|vimdiff3)
 		echo vim
 		;;
 	esac
diff --git a/mergetools/vimdiff3 b/mergetools/vimdiff3
new file mode 100644
index 0000000..04a5bb0
--- /dev/null
+++ b/mergetools/vimdiff3
@@ -0,0 +1 @@
+. "$MERGE_TOOLS_DIR/vimdiff"
-- 
1.9.2+fc1.1.g5c924db
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help