Skip to content

Commit 4472f5e

Browse files
committed
Merge branch 'fc/vimdiff-layout-vimdiff3-fix' into seen
* fc/vimdiff-layout-vimdiff3-fix: mergetools: vimdiff: simplify tabfirst mergetools: vimdiff: fix single window layouts mergetools: vimdiff: rework tab logic mergetools: vimdiff: fix for diffopt mergetools: vimdiff: silence annoying messages mergetools: vimdiff: make vimdiff3 actually work mergetools: vimdiff: fix comment
2 parents 096f160 + 34133d9 commit 4472f5e

File tree

1 file changed

+43
-59
lines changed

1 file changed

+43
-59
lines changed

mergetools/vimdiff

Lines changed: 43 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
################################################################################
3030

3131
debug_print () {
32-
# Send message to stderr if global variable GIT_MERGETOOL_VIMDIFF is set
33-
# to "true"
32+
# Send message to stderr if global variable GIT_MERGETOOL_VIMDIFF_DEBUG
33+
# is set.
3434

3535
if test -n "$GIT_MERGETOOL_VIMDIFF_DEBUG"
3636
then
@@ -66,11 +66,6 @@ gen_cmd_aux () {
6666
debug_print "LAYOUT : $LAYOUT"
6767
debug_print "CMD : $CMD"
6868

69-
if test -z "$CMD"
70-
then
71-
CMD="echo" # vim "nop" operator
72-
fi
73-
7469
start=0
7570
end=${#LAYOUT}
7671

@@ -144,11 +139,10 @@ gen_cmd_aux () {
144139

145140
# Step 2:
146141
#
147-
# Search for all valid separators ("+", "/" or ",") which are *not*
142+
# Search for all valid separators ("/" or ",") which are *not*
148143
# inside parenthesis. Save the index at which each of them makes the
149144
# first appearance.
150145

151-
index_new_tab=""
152146
index_horizontal_split=""
153147
index_vertical_split=""
154148

@@ -182,14 +176,7 @@ gen_cmd_aux () {
182176
then
183177
current=$c
184178

185-
if test "$current" = "+"
186-
then
187-
if test -z "$index_new_tab"
188-
then
189-
index_new_tab=$i
190-
fi
191-
192-
elif test "$current" = "/"
179+
if test "$current" = "/"
193180
then
194181
if test -z "$index_horizontal_split"
195182
then
@@ -219,14 +206,7 @@ gen_cmd_aux () {
219206

220207
terminate="false"
221208

222-
if ! test -z "$index_new_tab"
223-
then
224-
before="-tabnew"
225-
after="tabnext"
226-
index=$index_new_tab
227-
terminate="true"
228-
229-
elif ! test -z "$index_horizontal_split"
209+
if ! test -z "$index_horizontal_split"
230210
then
231211
before="leftabove split"
232212
after="wincmd j"
@@ -333,25 +313,31 @@ gen_cmd () {
333313

334314
# Obtain the first part of vim "-c" option to obtain the desired layout
335315

336-
CMD=$(gen_cmd_aux "$LAYOUT")
337-
338-
339-
# Adjust the just obtained script depending on whether more than one
340-
# windows are visible or not
316+
CMD=
317+
oldIFS=$IFS
318+
IFS=+
319+
for tab in $LAYOUT
320+
do
321+
if test -z "$CMD"
322+
then
323+
CMD="echo" # vim "nop" operator
324+
else
325+
CMD="$CMD | tabnew"
326+
fi
341327

342-
if echo "$LAYOUT" | grep ",\|/" >/dev/null
343-
then
344-
CMD="$CMD | tabdo windo diffthis"
345-
else
346-
CMD="$CMD | bufdo diffthis"
347-
fi
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
348333

334+
CMD=$(gen_cmd_aux "$tab" "$CMD")
335+
done
336+
IFS=$oldIFS
349337

350-
# Add an extra "-c" option to move to the first tab (notice that we
351-
# can't simply append the command to the previous "-c" string as
352-
# explained here: https://github.com/vim/vim/issues/9076
338+
CMD="$CMD | execute 'tabdo windo diffthis'"
353339

354-
FINAL_CMD="-c \"$CMD\" -c \"tabfirst\""
340+
FINAL_CMD="-c \"set hidden diffopt-=hiddenoff | $CMD | tabfirst\""
355341
}
356342

357343

@@ -555,22 +541,22 @@ run_unit_tests () {
555541
TEST_CASE_15=" (( (LOCAL , BASE , REMOTE) / MERGED)) +(BASE) , LOCAL+ BASE , REMOTE+ (((LOCAL / BASE / REMOTE)) , MERGED ) "
556542
TEST_CASE_16="LOCAL,BASE,REMOTE / MERGED + BASE,LOCAL + BASE,REMOTE + (LOCAL / BASE / REMOTE),MERGED"
557543

558-
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\""
559-
EXPECTED_CMD_02="-c \"echo | leftabove vertical split | 1b | wincmd l | 3b | tabdo windo diffthis\" -c \"tabfirst\""
560-
EXPECTED_CMD_03="-c \"echo | leftabove vertical split | 1b | wincmd l | leftabove vertical split | 4b | wincmd l | 3b | tabdo windo diffthis\" -c \"tabfirst\""
561-
EXPECTED_CMD_04="-c \"echo | 4b | bufdo diffthis\" -c \"tabfirst\""
562-
EXPECTED_CMD_05="-c \"echo | leftabove split | 1b | wincmd j | leftabove split | 4b | wincmd j | 3b | tabdo windo diffthis\" -c \"tabfirst\""
563-
EXPECTED_CMD_06="-c \"echo | leftabove vertical split | leftabove split | 1b | wincmd j | 3b | wincmd l | 4b | tabdo windo diffthis\" -c \"tabfirst\""
564-
EXPECTED_CMD_07="-c \"echo | leftabove vertical split | 4b | wincmd l | leftabove split | 1b | wincmd j | 3b | tabdo windo diffthis\" -c \"tabfirst\""
565-
EXPECTED_CMD_08="-c \"echo | leftabove split | leftabove vertical split | 1b | wincmd l | 3b | wincmd j | 4b | tabdo windo diffthis\" -c \"tabfirst\""
566-
EXPECTED_CMD_09="-c \"echo | leftabove split | 4b | wincmd j | leftabove vertical split | 1b | wincmd l | 3b | tabdo windo diffthis\" -c \"tabfirst\""
567-
EXPECTED_CMD_10="-c \"echo | leftabove vertical split | leftabove split | 1b | wincmd j | leftabove split | 2b | wincmd j | 3b | wincmd l | 4b | tabdo windo diffthis\" -c \"tabfirst\""
568-
EXPECTED_CMD_11="-c \"echo | -tabnew | leftabove split | leftabove vertical split | 1b | wincmd l | leftabove vertical split | 2b | wincmd l | 3b | wincmd j | 4b | tabnext | -tabnew | leftabove vertical split | 2b | wincmd l | 1b | tabnext | -tabnew | leftabove vertical split | 2b | wincmd l | 3b | tabnext | leftabove vertical split | leftabove split | 1b | wincmd j | leftabove split | 2b | wincmd j | 3b | wincmd l | 4b | tabdo windo diffthis\" -c \"tabfirst\""
569-
EXPECTED_CMD_12="-c \"echo | leftabove vertical split | leftabove split | leftabove vertical split | 1b | wincmd l | 3b | wincmd j | 2b | wincmd l | 4b | tabdo windo diffthis\" -c \"tabfirst\""
570-
EXPECTED_CMD_13="-c \"echo | leftabove vertical split | leftabove split | leftabove vertical split | 1b | wincmd l | 3b | wincmd j | 2b | wincmd l | leftabove vertical split | leftabove split | 1b | wincmd j | 3b | wincmd l | 4b | tabdo windo diffthis\" -c \"tabfirst\""
571-
EXPECTED_CMD_14="-c \"echo | -tabnew | leftabove vertical split | 2b | wincmd l | 3b | tabnext | leftabove vertical split | 2b | wincmd l | 1b | tabdo windo diffthis\" -c \"tabfirst\""
572-
EXPECTED_CMD_15="-c \"echo | -tabnew | leftabove split | leftabove vertical split | 1b | wincmd l | leftabove vertical split | 2b | wincmd l | 3b | wincmd j | 4b | tabnext | -tabnew | leftabove vertical split | 2b | wincmd l | 1b | tabnext | -tabnew | leftabove vertical split | 2b | wincmd l | 3b | tabnext | leftabove vertical split | leftabove split | 1b | wincmd j | leftabove split | 2b | wincmd j | 3b | wincmd l | 4b | tabdo windo diffthis\" -c \"tabfirst\""
573-
EXPECTED_CMD_16="-c \"echo | -tabnew | leftabove split | leftabove vertical split | 1b | wincmd l | leftabove vertical split | 2b | wincmd l | 3b | wincmd j | 4b | tabnext | -tabnew | leftabove vertical split | 2b | wincmd l | 1b | tabnext | -tabnew | leftabove vertical split | 2b | wincmd l | 3b | tabnext | leftabove vertical split | leftabove split | 1b | wincmd j | leftabove split | 2b | wincmd j | 3b | wincmd l | 4b | tabdo windo diffthis\" -c \"tabfirst\""
544+
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 | execute 'tabdo windo diffthis' | tabfirst\""
545+
EXPECTED_CMD_02="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | 1b | wincmd l | 3b | execute 'tabdo windo diffthis' | tabfirst\""
546+
EXPECTED_CMD_03="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | 1b | wincmd l | leftabove vertical split | 4b | wincmd l | 3b | execute 'tabdo windo diffthis' | tabfirst\""
547+
EXPECTED_CMD_04="-c \"set hidden diffopt-=hiddenoff | echo | silent execute 'bufdo diffthis' | 4b | execute 'tabdo windo diffthis' | tabfirst\""
548+
EXPECTED_CMD_05="-c \"set hidden diffopt-=hiddenoff | echo | leftabove split | 1b | wincmd j | leftabove split | 4b | wincmd j | 3b | execute 'tabdo windo diffthis' | tabfirst\""
549+
EXPECTED_CMD_06="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | leftabove split | 1b | wincmd j | 3b | wincmd l | 4b | execute 'tabdo windo diffthis' | tabfirst\""
550+
EXPECTED_CMD_07="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | 4b | wincmd l | leftabove split | 1b | wincmd j | 3b | execute 'tabdo windo diffthis' | tabfirst\""
551+
EXPECTED_CMD_08="-c \"set hidden diffopt-=hiddenoff | echo | leftabove split | leftabove vertical split | 1b | wincmd l | 3b | wincmd j | 4b | execute 'tabdo windo diffthis' | tabfirst\""
552+
EXPECTED_CMD_09="-c \"set hidden diffopt-=hiddenoff | echo | leftabove split | 4b | wincmd j | leftabove vertical split | 1b | wincmd l | 3b | execute 'tabdo windo diffthis' | tabfirst\""
553+
EXPECTED_CMD_10="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | leftabove split | 1b | wincmd j | leftabove split | 2b | wincmd j | 3b | wincmd l | 4b | execute 'tabdo windo diffthis' | tabfirst\""
554+
EXPECTED_CMD_11="-c \"set hidden diffopt-=hiddenoff | echo | leftabove split | leftabove vertical split | 1b | wincmd l | leftabove vertical split | 2b | wincmd l | 3b | wincmd j | 4b | tabnew | leftabove vertical split | 2b | wincmd l | 1b | tabnew | leftabove vertical split | 2b | wincmd l | 3b | tabnew | leftabove vertical split | leftabove split | 1b | wincmd j | leftabove split | 2b | wincmd j | 3b | wincmd l | 4b | execute 'tabdo windo diffthis' | tabfirst\""
555+
EXPECTED_CMD_12="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | leftabove split | leftabove vertical split | 1b | wincmd l | 3b | wincmd j | 2b | wincmd l | 4b | execute 'tabdo windo diffthis' | tabfirst\""
556+
EXPECTED_CMD_13="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | leftabove split | leftabove vertical split | 1b | wincmd l | 3b | wincmd j | 2b | wincmd l | leftabove vertical split | leftabove split | 1b | wincmd j | 3b | wincmd l | 4b | execute 'tabdo windo diffthis' | tabfirst\""
557+
EXPECTED_CMD_14="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | 2b | wincmd l | 3b | tabnew | leftabove vertical split | 2b | wincmd l | 1b | execute 'tabdo windo diffthis' | tabfirst\""
558+
EXPECTED_CMD_15="-c \"set hidden diffopt-=hiddenoff | echo | leftabove split | leftabove vertical split | 1b | wincmd l | leftabove vertical split | 2b | wincmd l | 3b | wincmd j | 4b | tabnew | leftabove vertical split | 2b | wincmd l | 1b | tabnew | leftabove vertical split | 2b | wincmd l | 3b | tabnew | leftabove vertical split | leftabove split | 1b | wincmd j | leftabove split | 2b | wincmd j | 3b | wincmd l | 4b | execute 'tabdo windo diffthis' | tabfirst\""
559+
EXPECTED_CMD_16="-c \"set hidden diffopt-=hiddenoff | echo | leftabove split | leftabove vertical split | 1b | wincmd l | leftabove vertical split | 2b | wincmd l | 3b | wincmd j | 4b | tabnew | leftabove vertical split | 2b | wincmd l | 1b | tabnew | leftabove vertical split | 2b | wincmd l | 3b | tabnew | leftabove vertical split | leftabove split | 1b | wincmd j | leftabove split | 2b | wincmd j | 3b | wincmd l | 4b | execute 'tabdo windo diffthis' | tabfirst\""
574560

575561
EXPECTED_TARGET_01="MERGED"
576562
EXPECTED_TARGET_02="LOCAL"
@@ -635,9 +621,7 @@ run_unit_tests () {
635621
cat >expect <<-\EOF
636622
-f
637623
-c
638-
echo | leftabove split | leftabove vertical split | 1b | wincmd l | leftabove vertical split | quit | wincmd l | 2b | wincmd j | 3b | tabdo windo diffthis
639-
-c
640-
tabfirst
624+
set hidden diffopt-=hiddenoff | echo | leftabove split | leftabove vertical split | 1b | wincmd l | leftabove vertical split | quit | wincmd l | 2b | wincmd j | 3b | execute 'tabdo windo diffthis' | tabfirst
641625
lo cal
642626
' '
643627
mer ged

0 commit comments

Comments
 (0)