From: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> Thanks to Stefan for his feedback on v1. I've updated patches 2 & 8 in response to those comments - see the range-diff below for details (the patch numbers are off by one in the range diff, I think because the first patch is unchanged and so it was used as the merge base by --range-diff=<old-head>. For some reason the range-diff also includes the notes even though I did not give --notes to format-patch) When trying out the new --color-moved-ws=allow-indentation-change I was disappointed to discover it did not work if the indentation contains a mix of spaces and tabs. This series reworks it so that it does. Phillip Wood (9): diff: document --no-color-moved Use "whitespace" consistently diff: allow --no-color-moved-ws diff --color-moved-ws: demonstrate false positives diff --color-moved-ws: fix false positives diff --color-moved=zebra: be stricter with color alternation diff --color-moved-ws: optimize allow-indentation-change diff --color-moved-ws: modify allow-indentation-change diff --color-moved-ws: handle blank lines Documentation/diff-options.txt | 15 ++- Documentation/git-cat-file.txt | 8 +- diff.c | 219 +++++++++++++++++++++------------ t/t4015-diff-whitespace.sh | 99 ++++++++++++++- 4 files changed, 255 insertions(+), 86 deletions(-) Range-diff against v1: 1: ae58ae4f29 ! 1: 4939ee371d diff: use whitespace consistently @@ -1,9 +1,10 @@ Author: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> - diff: use whitespace consistently + Use "whitespace" consistently - Most of the documentation uses 'whitespace' rather than 'white space' - or 'white spaces' convert to latter two to the former for consistency. + Most of the messages and documentation use 'whitespace' rather than + 'white space' or 'white spaces' convert to latter two to the former for + consistency. Signed-off-by: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> @@ -29,6 +30,39 @@ whitespace is the same per line. This is incompatible with the other modes. + diff --git a/Documentation/git-cat-file.txt b/Documentation/git-cat-file.txt + --- a/Documentation/git-cat-file.txt + +++ b/Documentation/git-cat-file.txt +@@ + stdin, and the SHA-1, type, and size of each object is printed on stdout. The + output format can be overridden using the optional `<format>` argument. If + either `--textconv` or `--filters` was specified, the input is expected to +-list the object names followed by the path name, separated by a single white +-space, so that the appropriate drivers can be determined. ++list the object names followed by the path name, separated by a single ++whitespace, so that the appropriate drivers can be determined. + + OPTIONS + ------- +@@ + Print object information and contents for each object provided + on stdin. May not be combined with any other options or arguments + except `--textconv` or `--filters`, in which case the input lines +- also need to specify the path, separated by white space. See the ++ also need to specify the path, separated by whitespace. See the + section `BATCH OUTPUT` below for details. + + --batch-check:: + --batch-check=<format>:: + Print object information for each object provided on stdin. May + not be combined with any other options or arguments except + `--textconv` or `--filters`, in which case the input lines also +- need to specify the path, separated by white space. See the ++ need to specify the path, separated by whitespace. See the + section `BATCH OUTPUT` below for details. + + --batch-all-objects:: + diff --git a/diff.c b/diff.c --- a/diff.c +++ b/diff.c 2: 7072bc6211 = 2: 204c7fea9d diff: allow --no-color-moved-ws 3: ce3ad19eea = 3: 542b79b215 diff --color-moved-ws: demonstrate false positives 4: 700e0b61e7 = 4: 4ffb5c4122 diff --color-moved-ws: fix false positives 5: 9ecd8159a7 = 5: a3a84f90c5 diff --color-moved=zebra: be stricter with color alternation 6: 1b1158b1ca = 6: f94f2e0bae diff --color-moved-ws: optimize allow-indentation-change 7: d8a362be6a ! 7: fe8eb9cdbc diff --color-moved-ws: modify allow-indentation-change @@ -17,7 +17,7 @@ This commit changes the way the indentation is handled to track the visual size of the indentation rather than the characters in the - indentation. This has they benefit that any whitespace errors do not + indentation. This has the benefit that any whitespace errors do not interfer with the move detection (the whitespace errors will still be highlighted according to --ws-error-highlight). During the discussion of this feature there were concerns about the correct detection of @@ -30,7 +30,7 @@ they are uncolored. Signed-off-by: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> - Changes since rfc: + changes since rfc: - It now replaces the existing implementation rather than adding a new mode. - The indentation deltas are now calculated once for each line and @@ -49,8 +49,8 @@ const char *line; int len; int flags; -+ int indent_off; -+ int indent_width; ++ int indent_off; /* Offset to first non-whitespace character */ ++ int indent_width; /* The visual width of the indentation */ enum diff_symbol s; }; #define EMITTED_DIFF_SYMBOL_INIT {NULL} 8: 1f7e99d45c = 8: e600f8247c diff --color-moved-ws: handle blank lines -- 2.19.1.1690.g258b440b18