threads / patch / 36459

patchmergetools: add vimdiff3 mode

Subject: [PATCH] mergetools: add vimdiff3 mode

## tl;dr

3 messages between Apr 21, 2014 and Apr 22, 2014. Diffs are folded; open one to read it.

replies: 2people: 3as markdown or json

Felipe Contreras· Apr 21, 2014, 00:24 UTC · lore

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.
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---

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
Show changes to 3 files +14 −2

mergetools/gvimdiff3, mergetools/vimdiff, 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
David Aguilar· Apr 22, 2014, 05:01 UTC · re: Felipe Contreras · lore

Re: [PATCH] mergetools: add vimdiff3 mode

On Sun, Apr 20, 2014 at 07:24:20PM -0500, Felipe Contreras wrote:
Show 5 quoted lines
> 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 <davvid@gmail.com>
Show 66 quoted lines
> 
> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
> ---
> 
> 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
-- 
David
Junio C Hamano· Apr 22, 2014, 17:30 UTC · re: David Aguilar · lore

Re: [PATCH] mergetools: add vimdiff3 mode

David Aguilar <davvid@gmail.com> writes:
Show 11 quoted lines
> On Sun, Apr 20, 2014 at 07:24:20PM -0500, Felipe Contreras wrote:
>> 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 <davvid@gmail.com>
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).

Show 66 quoted lines
>> 
>> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
>> ---
>> 
>> 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

← back to recent threads