Re: [PATCH] diff.c: pass sign_index to emit_line_ws_markup
Hi Stefan, On Wed, 10 Oct 2018, Stefan Beller wrote: > Instead of passing the sign directly to emit_line_ws_markup, pass only the > index to lookup the sign in diff_options->output_indicators. > > Signed-off-by: Stefan Beller > --- > > I still have this patch laying around, it simplifies the diff code > a tiny bit. And I still like it (obviously, was my idea :-)) Thanks, Dscho > > Stefan > > diff.c | 12 +--- > 1 file changed, 5 insertions(+), 7 deletions(-) > > diff --git a/diff.c b/diff.c > index f0c7557b40..9e895f2191 100644 > --- a/diff.c > +++ b/diff.c > @@ -1202,10 +1202,11 @@ static void dim_moved_lines(struct diff_options *o) > static void emit_line_ws_markup(struct diff_options *o, > const char *set_sign, const char *set, > const char *reset, > - char sign, const char *line, int len, > + int sign_index, const char *line, int len, > unsigned ws_rule, int blank_at_eof) > { > const char *ws = NULL; > + int sign = o->output_indicators[sign_index]; > > if (o->ws_error_highlight & ws_rule) { > ws = diff_get_color_opt(o, DIFF_WHITESPACE); > @@ -1285,8 +1286,7 @@ static void emit_diff_symbol_from_struct(struct > diff_options *o, > set = diff_get_color_opt(o, DIFF_FILE_OLD); > } > emit_line_ws_markup(o, set_sign, set, reset, > - > o->output_indicators[OUTPUT_INDICATOR_CONTEXT], > - line, len, > + OUTPUT_INDICATOR_CONTEXT, line, len, > flags & (DIFF_SYMBOL_CONTENT_WS_MASK), 0); > break; > case DIFF_SYMBOL_PLUS: > @@ -1330,8 +1330,7 @@ static void emit_diff_symbol_from_struct(struct > diff_options *o, > flags &= ~DIFF_SYMBOL_CONTENT_WS_MASK; > } > emit_line_ws_markup(o, set_sign, set, reset, > - o->output_indicators[OUTPUT_INDICATOR_NEW], > - line, len, > + OUTPUT_INDICATOR_NEW, line, len, > flags & DIFF_SYMBOL_CONTENT_WS_MASK, > flags & DIFF_SYMBOL_CONTENT_BLANK_LINE_EOF); > break; > @@ -1375,8 +1374,7 @@ static void emit_diff_symbol_from_struct(struct > diff_options *o, > set = diff_get_color_opt(o, DIFF_CONTEXT_DIM); > } > emit_line_ws_markup(o, set_sign, set, reset, > - o->output_indicators[OUTPUT_INDICATOR_OLD], > - line, len, > + OUTPUT_INDICATOR_OLD, line, len, > flags & DIFF_SYMBOL_CONTENT_WS_MASK, 0); > break; > case DIFF_SYMBOL_WORDS_PORCELAIN: > -- > 2.19.0 > >
[PATCH] diff.c: pass sign_index to emit_line_ws_markup
Instead of passing the sign directly to emit_line_ws_markup, pass only the index to lookup the sign in diff_options->output_indicators. Signed-off-by: Stefan Beller --- I still have this patch laying around, it simplifies the diff code a tiny bit. Stefan diff.c | 12 +--- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/diff.c b/diff.c index f0c7557b40..9e895f2191 100644 --- a/diff.c +++ b/diff.c @@ -1202,10 +1202,11 @@ static void dim_moved_lines(struct diff_options *o) static void emit_line_ws_markup(struct diff_options *o, const char *set_sign, const char *set, const char *reset, - char sign, const char *line, int len, + int sign_index, const char *line, int len, unsigned ws_rule, int blank_at_eof) { const char *ws = NULL; + int sign = o->output_indicators[sign_index]; if (o->ws_error_highlight & ws_rule) { ws = diff_get_color_opt(o, DIFF_WHITESPACE); @@ -1285,8 +1286,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o, set = diff_get_color_opt(o, DIFF_FILE_OLD); } emit_line_ws_markup(o, set_sign, set, reset, - o->output_indicators[OUTPUT_INDICATOR_CONTEXT], - line, len, + OUTPUT_INDICATOR_CONTEXT, line, len, flags & (DIFF_SYMBOL_CONTENT_WS_MASK), 0); break; case DIFF_SYMBOL_PLUS: @@ -1330,8 +1330,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o, flags &= ~DIFF_SYMBOL_CONTENT_WS_MASK; } emit_line_ws_markup(o, set_sign, set, reset, - o->output_indicators[OUTPUT_INDICATOR_NEW], - line, len, + OUTPUT_INDICATOR_NEW, line, len, flags & DIFF_SYMBOL_CONTENT_WS_MASK, flags & DIFF_SYMBOL_CONTENT_BLANK_LINE_EOF); break; @@ -1375,8 +1374,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o, set = diff_get_color_opt(o, DIFF_CONTEXT_DIM); } emit_line_ws_markup(o, set_sign, set, reset, - o->output_indicators[OUTPUT_INDICATOR_OLD], - line, len, + OUTPUT_INDICATOR_OLD, line, len, flags & DIFF_SYMBOL_CONTENT_WS_MASK, 0); break; case DIFF_SYMBOL_WORDS_PORCELAIN: -- 2.19.0
Re: [PATCH] diff.c: pass sign_index to emit_line_ws_markup
Hi Stefan, On Wed, 22 Aug 2018, Stefan Beller wrote: > Instead of passing the sign directly to emit_line_ws_markup, pass only the > index to lookup the sign in diff_options->output_indicators. > > Signed-off-by: Stefan Beller Looks good to me! > --- > diff.c | 12 +--- > 1 file changed, 5 insertions(+), 7 deletions(-) > > So something like this on top of sb/range-diff-colors ? If a resend is > needed I'll squash this in (or carry it as a cleanup patch early in the > series), otherwise we could put this on top. I'd leave this as a separate commit. Ciao, Dscho > > Thanks, > Stefan > > > diff --git a/diff.c b/diff.c > index 03486c35b75..17e33d506a1 100644 > --- a/diff.c > +++ b/diff.c > @@ -1199,10 +1199,11 @@ static void dim_moved_lines(struct diff_options *o) > static void emit_line_ws_markup(struct diff_options *o, > const char *set_sign, const char *set, > const char *reset, > - char sign, const char *line, int len, > + int sign_index, const char *line, int len, > unsigned ws_rule, int blank_at_eof) > { > const char *ws = NULL; > + int sign = o->output_indicators[sign_index]; > > if (o->ws_error_highlight & ws_rule) { > ws = diff_get_color_opt(o, DIFF_WHITESPACE); > @@ -1282,8 +1283,7 @@ static void emit_diff_symbol_from_struct(struct > diff_options *o, > set = diff_get_color_opt(o, DIFF_FILE_OLD); > } > emit_line_ws_markup(o, set_sign, set, reset, > - > o->output_indicators[OUTPUT_INDICATOR_CONTEXT], > - line, len, > + OUTPUT_INDICATOR_CONTEXT, line, len, > flags & (DIFF_SYMBOL_CONTENT_WS_MASK), 0); > break; > case DIFF_SYMBOL_PLUS: > @@ -1327,8 +1327,7 @@ static void emit_diff_symbol_from_struct(struct > diff_options *o, > flags &= ~DIFF_SYMBOL_CONTENT_WS_MASK; > } > emit_line_ws_markup(o, set_sign, set, reset, > - o->output_indicators[OUTPUT_INDICATOR_NEW], > - line, len, > + OUTPUT_INDICATOR_NEW, line, len, > flags & DIFF_SYMBOL_CONTENT_WS_MASK, > flags & DIFF_SYMBOL_CONTENT_BLANK_LINE_EOF); > break; > @@ -1372,8 +1371,7 @@ static void emit_diff_symbol_from_struct(struct > diff_options *o, > set = diff_get_color_opt(o, DIFF_CONTEXT_DIM); > } > emit_line_ws_markup(o, set_sign, set, reset, > - o->output_indicators[OUTPUT_INDICATOR_OLD], > - line, len, > + OUTPUT_INDICATOR_OLD, line, len, > flags & DIFF_SYMBOL_CONTENT_WS_MASK, 0); > break; > case DIFF_SYMBOL_WORDS_PORCELAIN: > -- > 2.18.0.265.g16de1b435c9.dirty > >
[PATCH] diff.c: pass sign_index to emit_line_ws_markup
Instead of passing the sign directly to emit_line_ws_markup, pass only the index to lookup the sign in diff_options->output_indicators. Signed-off-by: Stefan Beller --- diff.c | 12 +--- 1 file changed, 5 insertions(+), 7 deletions(-) So something like this on top of sb/range-diff-colors ? If a resend is needed I'll squash this in (or carry it as a cleanup patch early in the series), otherwise we could put this on top. Thanks, Stefan diff --git a/diff.c b/diff.c index 03486c35b75..17e33d506a1 100644 --- a/diff.c +++ b/diff.c @@ -1199,10 +1199,11 @@ static void dim_moved_lines(struct diff_options *o) static void emit_line_ws_markup(struct diff_options *o, const char *set_sign, const char *set, const char *reset, - char sign, const char *line, int len, + int sign_index, const char *line, int len, unsigned ws_rule, int blank_at_eof) { const char *ws = NULL; + int sign = o->output_indicators[sign_index]; if (o->ws_error_highlight & ws_rule) { ws = diff_get_color_opt(o, DIFF_WHITESPACE); @@ -1282,8 +1283,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o, set = diff_get_color_opt(o, DIFF_FILE_OLD); } emit_line_ws_markup(o, set_sign, set, reset, - o->output_indicators[OUTPUT_INDICATOR_CONTEXT], - line, len, + OUTPUT_INDICATOR_CONTEXT, line, len, flags & (DIFF_SYMBOL_CONTENT_WS_MASK), 0); break; case DIFF_SYMBOL_PLUS: @@ -1327,8 +1327,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o, flags &= ~DIFF_SYMBOL_CONTENT_WS_MASK; } emit_line_ws_markup(o, set_sign, set, reset, - o->output_indicators[OUTPUT_INDICATOR_NEW], - line, len, + OUTPUT_INDICATOR_NEW, line, len, flags & DIFF_SYMBOL_CONTENT_WS_MASK, flags & DIFF_SYMBOL_CONTENT_BLANK_LINE_EOF); break; @@ -1372,8 +1371,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o, set = diff_get_color_opt(o, DIFF_CONTEXT_DIM); } emit_line_ws_markup(o, set_sign, set, reset, - o->output_indicators[OUTPUT_INDICATOR_OLD], - line, len, + OUTPUT_INDICATOR_OLD, line, len, flags & DIFF_SYMBOL_CONTENT_WS_MASK, 0); break; case DIFF_SYMBOL_WORDS_PORCELAIN: -- 2.18.0.265.g16de1b435c9.dirty