about summary refs log tree commit diff
path: root/mergetools/vimdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mergetools/vimdiff')
-rw-r--r--mergetools/vimdiff48
1 files changed, 48 insertions, 0 deletions
diff --git a/mergetools/vimdiff b/mergetools/vimdiff
new file mode 100644
index 000000000000..10d86f3e1930
--- /dev/null
+++ b/mergetools/vimdiff
@@ -0,0 +1,48 @@
+diff_cmd () {
+	"$merge_tool_path" -R -f -d \
+		-c 'wincmd l' -c 'cd $GIT_PREFIX' "$LOCAL" "$REMOTE"
+}
+
+merge_cmd () {
+	case "$1" in
+	gvimdiff|vimdiff)
+		if $base_present
+		then
+			"$merge_tool_path" -f -d -c '4wincmd w | wincmd J' \
+				"$LOCAL" "$BASE" "$REMOTE" "$MERGED"
+		else
+			"$merge_tool_path" -f -d -c 'wincmd l' \
+				"$LOCAL" "$MERGED" "$REMOTE"
+		fi
+		;;
+	gvimdiff2|vimdiff2)
+		"$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
+}
+
+translate_merge_tool_path() {
+	case "$1" in
+	gvimdiff|gvimdiff2|gvimdiff3)
+		echo gvim
+		;;
+	vimdiff|vimdiff2|vimdiff3)
+		echo vim
+		;;
+	esac
+}
+
+exit_code_trustable () {
+	true
+}