For the diff of diffs, we have more than one character at the beginning of the line with special meaning, so let's pass around a string that contains all the markup for the line Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- diff.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/diff.c b/diff.c index 32500716740..028d7d9a59c 100644 --- a/diff.c +++ b/diff.c @@ -969,7 +969,7 @@ static void dim_moved_lines(struct diff_options *o) static void emit_line_ws_markup(struct diff_options *o, const char *set, const char *reset, const char *line, int len, - const char *set_sign, char sign, + const char *set_sign, const char *sign, unsigned ws_rule, int blank_at_eof) { const char *ws = NULL; @@ -981,19 +981,19 @@ static void emit_line_ws_markup(struct diff_options *o, } if (!ws && !set_sign) - emit_line_0(o, set, 0, reset, sign, line, len); + emit_line_0(o, set, 0, reset, sign[0], line, len); else if (!ws) { /* Emit just the prefix, then the rest. */ emit_line_0(o, set_sign ? set_sign : set, !!set_sign, reset, - sign, "", 0); + sign[0], "", 0); emit_line_0(o, set, 0, reset, 0, line, len); } else if (blank_at_eof) /* Blank line at EOF - paint '+' as well */ - emit_line_0(o, ws, 0, reset, sign, line, len); + emit_line_0(o, ws, 0, reset, sign[0], line, len); else { /* Emit just the prefix, then the rest. */ emit_line_0(o, set_sign ? set_sign : set, !!set_sign, reset, - sign, "", 0); + sign[0], "", 0); ws_check_emit(line, len, ws_rule, o->file, set, reset, ws); } @@ -1054,7 +1054,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o, else if (c == '-') set = diff_get_color_opt(o, DIFF_FILE_OLD); } - emit_line_ws_markup(o, set, reset, line, len, set_sign, ' ', + emit_line_ws_markup(o, set, reset, line, len, set_sign, " ", flags & (DIFF_SYMBOL_CONTENT_WS_MASK), 0); break; case DIFF_SYMBOL_PLUS: @@ -1100,7 +1100,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o, len--; } } - emit_line_ws_markup(o, set, reset, line, len, set_sign, '+', + emit_line_ws_markup(o, set, reset, line, len, set_sign, "+", flags & DIFF_SYMBOL_CONTENT_WS_MASK, flags & DIFF_SYMBOL_CONTENT_BLANK_LINE_EOF); break; @@ -1141,7 +1141,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o, else if (c != '-') set = diff_get_color_opt(o, DIFF_CONTEXT); } - emit_line_ws_markup(o, set, reset, line, len, set_sign, '-', + emit_line_ws_markup(o, set, reset, line, len, set_sign, "-", flags & DIFF_SYMBOL_CONTENT_WS_MASK, 0); break; case DIFF_SYMBOL_WORDS_PORCELAIN: -- 2.18.0.203.gfac676dfb9-goog