v6: * fixed issues hinted at by Andrei, thanks! (range-diff below) * incorporates the new config option, sent separately previously. v5: This is a resend of sb/diff-color-move-more https://public-inbox.org/git/20180629001958.85143-1-sbeller@xxxxxxxxxx/ that fixes an errornous squashing within the series; the end result is the same. range diff is below. (As the latest cooking email said this series is going to land in next soon, I hope this is not too late of a resend; otherwise just ignore it as the end result is the same) Thanks, Stefan Stefan Beller (10): xdiff/xdiff.h: remove unused flags xdiff/xdiffi.c: remove unneeded function declarations t4015: avoid git as a pipe input diff.c: do not pass diff options as keydata to hashmap diff.c: adjust hash function signature to match hashmap expectation diff.c: add a blocks mode for moved code detection diff.c: decouple white space treatment from move detection algorithm diff.c: factor advance_or_nullify out of mark_color_as_moved diff.c: add white space mode to move detection that allows indent changes diff.c: offer config option to control ws handling in move detection Documentation/config.txt | 5 + Documentation/diff-options.txt | 33 ++++- diff.c | 262 +++++++++++++++++++++++++++++---- diff.h | 9 +- t/t4015-diff-whitespace.sh | 243 +++++++++++++++++++++++++----- xdiff/xdiff.h | 8 - xdiff/xdiffi.c | 17 --- 7 files changed, 489 insertions(+), 88 deletions(-) 1: a512cd40cae ! 1: aabbc4e8aff diff.c: add white space mode to move detection that allows indent changes @@ -27,8 +27,8 @@ modes in the move detection. This patch brings some challenges, related to the detection of blocks. - We need a white net the catch the possible moved lines, but then need to - narrow down to check if the blocks are still in tact. Consider this + We need a wide net to catch the possible moved lines, but then need to + narrow down to check if the blocks are still intact. Consider this example (ignoring block sizes): - A @@ -254,7 +254,7 @@ + } + } + -+ for (i = 0; i <pmb_nr; i++) { ++ for (i = 0; i < pmb_nr; i++) { + if (got_match[i]) { + /* Carry the white space delta forward */ + pmb[i]->next_line->wsd = pmb[i]->wsd; -: ----------- > 2: f80fbe78d9b diff.c: offer config option to control ws handling in move detection