diff mbox series

[v2,9/9] mergetools: vimdiff: use vimdiff for vimdiff3

Message ID 20220807024941.222018-10-felipe.contreras@gmail.com (mailing list archive)
State New, archived
Headers show
Series mergetools: vimdiff: regression fix and reorg | expand

Commit Message

Felipe Contreras Aug. 7, 2022, 2:49 a.m. UTC
We are pretty close to actually using vimdiff (-d) so let's just go
ahead and do it: no need for do the same thing vimdiff does.

Also, we need to disable diffopt=closeoff because we are closing all the
other windows.

Cc: Fernando Ramos <greenfoo@u92.eu>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 mergetools/vimdiff | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Fernando Ramos Aug. 7, 2022, 2:46 p.m. UTC | #1
On 22/08/06 09:49PM, Felipe Contreras wrote:
> 
> diff --git a/mergetools/vimdiff b/mergetools/vimdiff
> index 34373ad92c..daeb3cf1d0 100644
> --- a/mergetools/vimdiff
> +++ b/mergetools/vimdiff
> @@ -325,7 +325,7 @@ gen_cmd () {
>  	if ! echo "$LAYOUT" | grep ",\|/" >/dev/null
>  	then
>  		buf=$(get_buf "$LAYOUT")
> -		FINAL_CMD="-c \"set hidden diffopt-=hiddenoff | silent execute 'bufdo diffthis' | ${buf}b\""
> +		FINAL_CMD="-d -c \"set hidden diffopt-=hiddenoff diffopt-=closeoff | ${buf}b | only\""
>  		return
>  	fi

I found something strange while testing this:

This is the final command that is generated now:

    vim -d -c "set hidden diffopt-=hiddenoff diffopt-=closeoff | 4b | only" LOCAL BASE REMOTE MERGED 

Turns out that now colors "kind of work", but not completely:

    - The buffer that is shown by default ("MERGED") contains colors.
    - If you switch to the "LOCAL" buffer (":buffer 1") it also contains colors.
    - *But* if you switch to any of the other buffers ("BASE" with ":buffer 2"
      or "REMOTE" with ":buffer 3"), there are no colors.

For some reason, the command that was generated by my patch to v1, does work (?)
and all buffers contain diff colors:

    vimdiff -c "echo | silent 4b | set hidden | let tmp=bufnr('%') | silent bufdo diffthis | exe 'buffer '.tmp" LOCAL BASE REMOTE MERGED
diff mbox series

Patch

diff --git a/mergetools/vimdiff b/mergetools/vimdiff
index 34373ad92c..daeb3cf1d0 100644
--- a/mergetools/vimdiff
+++ b/mergetools/vimdiff
@@ -325,7 +325,7 @@  gen_cmd () {
 	if ! echo "$LAYOUT" | grep ",\|/" >/dev/null
 	then
 		buf=$(get_buf "$LAYOUT")
-		FINAL_CMD="-c \"set hidden diffopt-=hiddenoff | silent execute 'bufdo diffthis' | ${buf}b\""
+		FINAL_CMD="-d -c \"set hidden diffopt-=hiddenoff diffopt-=closeoff | ${buf}b | only\""
 		return
 	fi
 
@@ -560,7 +560,7 @@  run_unit_tests () {
 	EXPECTED_CMD_01="-c \"echo | leftabove split | leftabove vertical split | 1b | wincmd l | leftabove vertical split | 2b | wincmd l | 3b | wincmd j | 4b | tabdo windo diffthis\" -c \"tabfirst\""
 	EXPECTED_CMD_02="-c \"echo | leftabove vertical split | 1b | wincmd l | 3b | tabdo windo diffthis\" -c \"tabfirst\""
 	EXPECTED_CMD_03="-c \"echo | leftabove vertical split | 1b | wincmd l | leftabove vertical split | 4b | wincmd l | 3b | tabdo windo diffthis\" -c \"tabfirst\""
-	EXPECTED_CMD_04="-c \"set hidden diffopt-=hiddenoff | silent execute 'bufdo diffthis' | 4b\""
+	EXPECTED_CMD_04="-d -c \"set hidden diffopt-=hiddenoff diffopt-=closeoff | 4b | only\""
 	EXPECTED_CMD_05="-c \"echo | leftabove split | 1b | wincmd j | leftabove split | 4b | wincmd j | 3b | tabdo windo diffthis\" -c \"tabfirst\""
 	EXPECTED_CMD_06="-c \"echo | leftabove vertical split | leftabove split | 1b | wincmd j | 3b | wincmd l | 4b | tabdo windo diffthis\" -c \"tabfirst\""
 	EXPECTED_CMD_07="-c \"echo | leftabove vertical split | 4b | wincmd l | leftabove split | 1b | wincmd j | 3b | tabdo windo diffthis\" -c \"tabfirst\""