mergetools: vimdiff: rework tab logic
If we treat tabs especially, the logic becomes much simpler. Cc: Fernando Ramos <greenfoo@u92.eu> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Reviewed-by: Fernando Ramos <greenfoo@u92.eu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Felipe Contreras committed
Aug 10, 2022 at 10:46 UTC
ffcc33f6a6923ade435a65d6cba751b3b95e6fd8
1 file changed
+22
-28
mergetools/vimdiff
+22
-28
@@ -66,11 +66,6 @@ gen_cmd_aux () {
66
debug_print "LAYOUT : $LAYOUT"
67
debug_print "CMD : $CMD"
68
69
- if test -z "$CMD"
70
- then
71
- CMD="echo" # vim "nop" operator
72
- fi
73
-
69
start=0
70
end=${#LAYOUT}
71
@@ -144,11 +139,10 @@ gen_cmd_aux () {
139
140
# Step 2:
141
#
147
- # Search for all valid separators ("+", "/" or ",") which are *not*
142
+ # Search for all valid separators ("/" or ",") which are *not*
143
# inside parenthesis. Save the index at which each of them makes the
144
# first appearance.
145
151
- index_new_tab=""
146
index_horizontal_split=""
147
index_vertical_split=""
148
@@ -182,14 +176,7 @@ gen_cmd_aux () {
176
then
177
current=$c
178
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" = "/"
180
then
181
if test -z "$index_horizontal_split"
182
then
@@ -219,14 +206,7 @@ gen_cmd_aux () {
206
207
terminate="false"
208
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"
210
then
211
before="leftabove split"
212
after="wincmd j"
@@ -333,7 +313,21 @@ gen_cmd () {
313
314
# Obtain the first part of vim "-c" option to obtain the desired layout
315
336
- CMD=$(gen_cmd_aux "$LAYOUT")
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
327
+
328
+ CMD=$(gen_cmd_aux "$tab" "$CMD")
329
+ done
330
+ IFS=$oldIFS
331
332
333
# Adjust the just obtained script depending on whether more than one
@@ -565,12 +559,12 @@ run_unit_tests () {
559
EXPECTED_CMD_08="-c \"set hidden diffopt-=hiddenoff | echo | leftabove split | leftabove vertical split | 1b | wincmd l | 3b | wincmd j | 4b | tabdo windo diffthis\" -c \"tabfirst\""
560
EXPECTED_CMD_09="-c \"set hidden diffopt-=hiddenoff | echo | leftabove split | 4b | wincmd j | leftabove vertical split | 1b | wincmd l | 3b | tabdo windo diffthis\" -c \"tabfirst\""
561
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 | tabdo windo diffthis\" -c \"tabfirst\""
568
- EXPECTED_CMD_11="-c \"set hidden diffopt-=hiddenoff | 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\""
562
+ 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 | tabdo windo diffthis\" -c \"tabfirst\""
563
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 | tabdo windo diffthis\" -c \"tabfirst\""
564
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 | tabdo windo diffthis\" -c \"tabfirst\""
571
- EXPECTED_CMD_14="-c \"set hidden diffopt-=hiddenoff | 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 \"set hidden diffopt-=hiddenoff | 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 \"set hidden diffopt-=hiddenoff | 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\""
565
+ EXPECTED_CMD_14="-c \"set hidden diffopt-=hiddenoff | echo | leftabove vertical split | 2b | wincmd l | 3b | tabnew | leftabove vertical split | 2b | wincmd l | 1b | tabdo windo diffthis\" -c \"tabfirst\""
566
+ 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 | tabdo windo diffthis\" -c \"tabfirst\""
567
+ 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 | tabdo windo diffthis\" -c \"tabfirst\""
568
569
EXPECTED_TARGET_01="MERGED"
570
EXPECTED_TARGET_02="LOCAL"