зеркало из https://github.com/microsoft/git.git
diff --color-moved: unify moved block growth functions
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>
This commit is contained in:
Родитель
08fba1076f
Коммит
ff046a0066
41
diff.c
41
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);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче