git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/2] mergetools: split config files for vim and gvim

From
Tim Henigan <tim.henigan@gmail.com>
Date
Mar 28, 2012, 19:58 UTC
Message-ID
<1332964693-4058-1-git-send-email-tim.henigan@gmail.com>

In ae69fd0 (mergetool-lib: combine vimdiff and gvimdiff run blocks), the config files for these two tools were combined since they were nearly identical. This remains true, but having a single config file for both makes it difficult to test that each is installed and capable of running.

This commit splits the two config files. Now 'vim' and 'gvim'
follow the pattern used by all the other diff/merge tools:
  - There is a single file per tool
  - To use the tool, 'diff.tool' (or other similar option) may be
    set to the exact name of the file.
Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
---

This series should apply cleanly on the current master, but it was developed on top of the series that implements the 'difftool --dir-diff' option (currently th/difftool-diffall branched from pu).

This patch does some cleanup needed to be compatible with the new '--dir-diff' option for 'difftool'.

One side-effect of this change which may be a problem is that we lose support for the 'vimdiff2' and 'gvimdiff2' tools that were created in 0008669 (mergetool-lib: make the three-way diff the default for vim/gvim). The 2-panel options were not advertised in any way, so I don't know if it is important to keep them.

 git-mergetool--lib.sh |    9 +--------
 mergetools/gvim       |   21 +++++++++++++++++++++
 mergetools/vim        |   41 +++++++++--------------------------------
 3 files changed, 31 insertions(+), 40 deletions(-)
 create mode 100644 mergetools/gvim
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index ed630b2..89b16dc 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -44,14 +44,7 @@ valid_tool () {
 }
 
 setup_tool () {
-	case "$1" in
-	vim*|gvim*)
-		tool=vim
-		;;
-	*)
-		tool="$1"
-		;;
-	esac
+	tool="$1"
 	mergetools="$(git --exec-path)/mergetools"
 
 	# Load the default definitions
diff --git a/mergetools/gvim b/mergetools/gvim
new file mode 100644
index 0000000..b746e6f
--- /dev/null
+++ b/mergetools/gvim
@@ -0,0 +1,21 @@
+diff_cmd () {
+	"$merge_tool_path" -R -f -d \
+		-c 'wincmd l' -c 'cd $GIT_PREFIX' "$LOCAL" "$REMOTE"
+}
+
+merge_cmd () {
+	touch "$BACKUP"
+	if $base_present
+	then
+		"$merge_tool_path" -f -d -c 'wincmd J' \
+			"$MERGED" "$LOCAL" "$BASE" "$REMOTE"
+	else
+		"$merge_tool_path" -f -d -c 'wincmd l' \
+			"$LOCAL" "$MERGED" "$REMOTE"
+	fi
+	check_unchanged
+}
+
+translate_merge_tool_path() {
+	echo gvim
+}
diff --git a/mergetools/vim b/mergetools/vim
index 619594a..6817708 100644
--- a/mergetools/vim
+++ b/mergetools/vim
@@ -1,44 +1,21 @@
 diff_cmd () {
-	case "$1" in
-	gvimdiff|vimdiff)
-		"$merge_tool_path" -R -f -d \
-			-c 'wincmd l' -c 'cd $GIT_PREFIX' "$LOCAL" "$REMOTE"
-		;;
-	gvimdiff2|vimdiff2)
-		"$merge_tool_path" -R -f -d \
-			-c 'wincmd l' -c 'cd $GIT_PREFIX' "$LOCAL" "$REMOTE"
-		;;
-	esac
+	"$merge_tool_path" -R -f -d \
+		-c 'wincmd l' -c 'cd $GIT_PREFIX' "$LOCAL" "$REMOTE"
 }
 
 merge_cmd () {
 	touch "$BACKUP"
-	case "$1" in
-	gvimdiff|vimdiff)
-		if $base_present
-		then
-			"$merge_tool_path" -f -d -c 'wincmd J' \
-				"$MERGED" "$LOCAL" "$BASE" "$REMOTE"
-		else
-			"$merge_tool_path" -f -d -c 'wincmd l' \
-				"$LOCAL" "$MERGED" "$REMOTE"
-		fi
-		;;
-	gvimdiff2|vimdiff2)
+	if $base_present
+	then
+		"$merge_tool_path" -f -d -c 'wincmd J' \
+			"$MERGED" "$LOCAL" "$BASE" "$REMOTE"
+	else
 		"$merge_tool_path" -f -d -c 'wincmd l' \
 			"$LOCAL" "$MERGED" "$REMOTE"
-		;;
-	esac
+	fi
 	check_unchanged
 }
 
 translate_merge_tool_path() {
-	case "$1" in
-	gvimdiff|gvimdiff2)
-		echo gvim
-		;;
-	vimdiff|vimdiff2)
-		echo vim
-		;;
-	esac
+	echo vim
 }
-- 
1.7.10.rc2.21.g8cb1a
Next: Tim Henigan
Message 1 of 4 in “mergetools: split config files for vim and gvim”
  1. 1/2 mergetools: split config files for vim and gvimTim Henigan, Mar 28, 2012
  2. 2/2 mergetools: fail if display needed but not presentTim Henigan, Mar 28, 2012
  3. Junio C HamanoMar 28, 2012
  4. Junio C HamanoMar 28, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.