From: Jack Bates <jack@xxxxxxxxxxxxxxxx> Piping `git range-diff` through diff-highlight currently has no effect, for two reasons: 1. There are ANSI escapes before and after the `@@` hunk headers (when color is enabled) which diff-highlight fails to match. One solution is to match both escapes (`/^$COLOR*\@\@$COLOR* /`). This patch drops the trailing space from the existing pattern instead. 2. Unlike `git log`, `git range-diff` diffs are indented, which diff-highlight also fails to match. This patch allows hunk headers preceded by any amount of whitespace, and then skips past that indentation when parsing subsequent lines, by reusing the machinery that handles the --graph output. Signed-off-by: Jack Bates <jack@xxxxxxxxxxxxxxxx> --- contrib/diff-highlight/DiffHighlight.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/diff-highlight/DiffHighlight.pm b/contrib/diff-highlight/DiffHighlight.pm index e2589922a6..74f53e53c9 100644 --- a/contrib/diff-highlight/DiffHighlight.pm +++ b/contrib/diff-highlight/DiffHighlight.pm @@ -90,7 +90,8 @@ sub handle_line { if (!$in_hunk) { $line_cb->($orig); - $in_hunk = /^$COLOR*\@\@ /; + $in_hunk = /^( *)$COLOR*\@\@/; + $graph_indent = length($1); } elsif (/^$COLOR*-/) { push @removed, $orig; -- gitgitgadget