Skip to content

Commit b6014ee

Browse files
felipecgitster
authored andcommitted
mergetools: vimdiff: fix single window layouts
Layouts with a single window other than "MERGED" do not work (e.g. "LOCAL" or "MERGED+LOCAL"). This is because as the documentation of bufdo says: The last buffer (or where an error occurred) becomes the current buffer. And we do always do bufdo the end. Additionally, we do it only once, when it should be per tab. Fix this by doing it once per tab right after it's created and before any buffer is switched. Cc: Fernando Ramos <[email protected]> Signed-off-by: Felipe Contreras <[email protected]> Reviewed-by: Fernando Ramos <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent ffcc33f commit b6014ee

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

mergetools/vimdiff

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -325,21 +325,17 @@ gen_cmd () {
325325
CMD="$CMD | tabnew"
326326
fi
327327

328+
# If this is a single window diff with all the buffers
329+
if ! echo "$tab" | grep ",\|/" >/dev/null
330+
then
331+
CMD="$CMD | silent execute 'bufdo diffthis'"
332+
fi
333+
328334
CMD=$(gen_cmd_aux "$tab" "$CMD")
329335
done
330336
IFS=$oldIFS
331337

332-
333-
# Adjust the just obtained script depending on whether more than one
334-
# windows are visible or not
335-
336-
if echo "$LAYOUT" | grep ",\|/" >/dev/null
337-
then
338-
CMD="$CMD | tabdo windo diffthis"
339-
else
340-
CMD="$CMD | silent bufdo diffthis"
341-
fi
342-
338+
CMD="$CMD | tabdo windo diffthis"
343339

344340
# Add an extra "-c" option to move to the first tab (notice that we
345341
# can't simply append the command to the previous "-c" string as
@@ -552,7 +548,7 @@ run_unit_tests () {
552548
EXPECTED_CMD_01="-c \"set hidden diffopt-=hiddenoff | echo | leftabove split | leftabove vertical split | 1b | wincmd l | leftabove vertical split | 2b | wincmd l | 3b | wincmd j | 4b | tabdo windo diffthis\" -c \"tabfirst\""
553549
EXPECTED_CMD_02="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | 1b | wincmd l | 3b | tabdo windo diffthis\" -c \"tabfirst\""
554550
EXPECTED_CMD_03="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | 1b | wincmd l | leftabove vertical split | 4b | wincmd l | 3b | tabdo windo diffthis\" -c \"tabfirst\""
555-
EXPECTED_CMD_04="-c \"set hidden diffopt-=hiddenoff | echo | 4b | silent bufdo diffthis\" -c \"tabfirst\""
551+
EXPECTED_CMD_04="-c \"set hidden diffopt-=hiddenoff | echo | silent execute 'bufdo diffthis' | 4b | tabdo windo diffthis\" -c \"tabfirst\""
556552
EXPECTED_CMD_05="-c \"set hidden diffopt-=hiddenoff | echo | leftabove split | 1b | wincmd j | leftabove split | 4b | wincmd j | 3b | tabdo windo diffthis\" -c \"tabfirst\""
557553
EXPECTED_CMD_06="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | leftabove split | 1b | wincmd j | 3b | wincmd l | 4b | tabdo windo diffthis\" -c \"tabfirst\""
558554
EXPECTED_CMD_07="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | 4b | wincmd l | leftabove split | 1b | wincmd j | 3b | tabdo windo diffthis\" -c \"tabfirst\""

0 commit comments

Comments
 (0)