]> git.ipfire.org Git - thirdparty/git.git/commitdiff
diff --color-moved: unify moved block growth functions
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Thu, 9 Dec 2021 10:30:04 +0000 (10:30 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 9 Dec 2021 21:24:06 +0000 (13:24 -0800)
After the last two commits pmb_advance_or_null() and
pmb_advance_or_null_multi_match() differ only in the comparison they
perform. Lets simplify the code by combining them into a single
function.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c

diff --git a/diff.c b/diff.c
index 22e0edac173740fb74a1502c3ba1aba6a92e32f2..51f092e724ecd478a1a8a4e6fa3062a9b11f9253 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -1002,36 +1002,23 @@ static void pmb_advance_or_null(struct diff_options *o,
        unsigned flags = o->color_moved_ws_handling & XDF_WHITESPACE_FLAGS;
 
        for (i = 0; i < pmb_nr; i++) {
+               int match;
                struct moved_entry *prev = pmb[i].match;
                struct moved_entry *cur = (prev && prev->next_line) ?
                                prev->next_line : NULL;
-               if (cur && xdiff_compare_lines(cur->es->line, cur->es->len,
-                                               l->line, l->len,
-                                               flags)) {
-                       pmb[i].match = cur;
-               } else {
-                       pmb[i].match = NULL;
-               }
-       }
-}
 
-static void pmb_advance_or_null_multi_match(struct diff_options *o,
-                                           struct emitted_diff_symbol *l,
-                                           struct moved_block *pmb,
-                                           int pmb_nr)
-{
-       int i;
-
-       for (i = 0; i < pmb_nr; i++) {
-               struct moved_entry *prev = pmb[i].match;
-               struct moved_entry *cur = (prev && prev->next_line) ?
-                       prev->next_line : NULL;
-               if (cur && !cmp_in_block_with_wsd(cur, l, &pmb[i])) {
-                       /* Advance to the next line */
+               if (o->color_moved_ws_handling &
+                   COLOR_MOVED_WS_ALLOW_INDENTATION_CHANGE)
+                       match = cur &&
+                               !cmp_in_block_with_wsd(cur, l, &pmb[i]);
+               else
+                       match = cur &&
+                               xdiff_compare_lines(cur->es->line, cur->es->len,
+                                                   l->line, l->len, flags);
+               if (match)
                        pmb[i].match = cur;
-               } else {
+               else
                        moved_block_clear(&pmb[i]);
-               }
        }
 }
 
@@ -1194,11 +1181,7 @@ static void mark_color_as_moved(struct diff_options *o,
                        continue;
                }
 
-               if (o->color_moved_ws_handling &
-                   COLOR_MOVED_WS_ALLOW_INDENTATION_CHANGE)
-                       pmb_advance_or_null_multi_match(o, l, pmb, pmb_nr);
-               else
-                       pmb_advance_or_null(o, l, pmb, pmb_nr);
+               pmb_advance_or_null(o, l, pmb, pmb_nr);
 
                pmb_nr = shrink_potential_moved_blocks(pmb, pmb_nr);