Stefan Beller <[email protected]> writes:

> Reuse the compare function from the hash map instead of calling the
> compare function directly. Then we pick the correct compare function
> when told to compare ignoring white space.
>
> Signed-off-by: Stefan Beller <[email protected]>
> ---
>  diff.c                     |  3 +--
>  t/t4015-diff-whitespace.sh | 65 
> ++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 66 insertions(+), 2 deletions(-)
>
> diff --git a/diff.c b/diff.c
> index 1d93e98e3a..4bcf938e3a 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -903,8 +903,7 @@ static void mark_color_as_moved(struct diff_options *o,
>                       struct moved_entry *p = pmb[i];
>                       struct moved_entry *pnext = (p && p->next_line) ?
>                                       p->next_line : NULL;
> -                     if (pnext &&
> -                         !emitted_symbol_cmp(pnext->es, l, o)) {
> +                     if (pnext && !hm->cmpfn(pnext, match, NULL)) {
>                               pmb[i] = p->next_line;
>                       } else {
>                               pmb[i] = NULL;

I presume that this makes the use of emitted_symbol_cmp() vs
emitted_symbol_cmp_no_ws() consistent with the remainder of the
file.

Looking at the implementation of get_ws_cleaned_string() that is the
workhorse of emitted_symbol_cmp_no_ws(), it seems to be doing wrong
things for various "ignore whitespace" options (i.e. there is only
one implementation, while "git diff" family takes things like
"ignore space change", "ignore all whitespace", etc.), though.

Reply via email to