diff --color-moved: clear all flags on blocks that are too short
If a block of potentially moved lines is not long enough then the DIFF_SYMBOL_MOVED_LINE flag is cleared on the matching lines so they are not marked as moved. To avoid problems when we start rewinding after an unsuccessful match in a couple of commits time make sure all the move related flags are cleared, not just DIFF_SYMBOL_MOVED_LINE. Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
f73613ac33
commit
bea084ba41
6
diff.c
6
diff.c
@ -1114,6 +1114,8 @@ static int shrink_potential_moved_blocks(struct moved_block *pmb,
|
||||
* NEEDSWORK: This uses the same heuristic as blame_entry_score() in blame.c.
|
||||
* Think of a way to unify them.
|
||||
*/
|
||||
#define DIFF_SYMBOL_MOVED_LINE_ZEBRA_MASK \
|
||||
(DIFF_SYMBOL_MOVED_LINE | DIFF_SYMBOL_MOVED_LINE_ALT)
|
||||
static int adjust_last_block(struct diff_options *o, int n, int block_length)
|
||||
{
|
||||
int i, alnum_count = 0;
|
||||
@ -1130,7 +1132,7 @@ static int adjust_last_block(struct diff_options *o, int n, int block_length)
|
||||
}
|
||||
}
|
||||
for (i = 1; i < block_length + 1; i++)
|
||||
o->emitted_symbols->buf[n - i].flags &= ~DIFF_SYMBOL_MOVED_LINE;
|
||||
o->emitted_symbols->buf[n - i].flags &= ~DIFF_SYMBOL_MOVED_LINE_ZEBRA_MASK;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1237,8 +1239,6 @@ static void mark_color_as_moved(struct diff_options *o,
|
||||
free(pmb);
|
||||
}
|
||||
|
||||
#define DIFF_SYMBOL_MOVED_LINE_ZEBRA_MASK \
|
||||
(DIFF_SYMBOL_MOVED_LINE | DIFF_SYMBOL_MOVED_LINE_ALT)
|
||||
static void dim_moved_lines(struct diff_options *o)
|
||||
{
|
||||
int n;
|
||||
|
Loading…
Reference in New Issue
Block a user