From: Stefan Beller Date: Tue, 14 Aug 2018 01:41:20 GMT Subject: [PATCH 6/8] diff: use emit_line_0 once per line Message-ID: <20180814014122.30662-7-sbeller@google.com> In-Reply-To: <20180814014122.30662-1-sbeller@google.com> All lines that use emit_line_0 multiple times per line, are combined into a single call to emit_line_0, making use of the 'set' argument. We gain a little efficiency here, as we can omit emission of color and accompanying reset if 'len == 0'. Signed-off-by: Stefan Beller Signed-off-by: Junio C Hamano --- diff.c | 16 ++++++++-------- t/t3206-range-diff.sh | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/diff.c b/diff.c index 4ef66389282..4f430f44e64 100644 --- a/diff.c +++ b/diff.c @@ -656,12 +656,14 @@ static void emit_line_0(struct diff_options *o, fputs(set_sign, file); if (first && !nofirst) fputc(first, file); - if (set && set != set_sign) { - if (set_sign) - fputs(reset, file); - fputs(set, file); + if (len) { + if (set && set != set_sign) { + if (set_sign) + fputs(reset, file); + fputs(set, file); + } + fwrite(line, len, 1, file); } - fwrite(line, len, 1, file); fputs(reset, file); } if (has_trailing_carriage_return) @@ -1207,9 +1209,7 @@ static void emit_line_ws_markup(struct diff_options *o, if (!ws && !set_sign) emit_line_0(o, set, NULL, 0, reset, sign, line, len); else if (!ws) { - /* Emit just the prefix, then the rest. */ - emit_line_0(o, set_sign, NULL, !!set_sign, reset, sign, "", 0); - emit_line_0(o, set, NULL, 0, reset, 0, line, len); + emit_line_0(o, set_sign, set, !!set_sign, reset, sign, line, len); } else if (blank_at_eof) /* Blank line at EOF - paint '+' as well */ emit_line_0(o, ws, NULL, 0, reset, sign, line, len); diff --git a/t/t3206-range-diff.sh b/t/t3206-range-diff.sh index 31f6458f961..7dc7c80a1de 100755 --- a/t/t3206-range-diff.sh +++ b/t/t3206-range-diff.sh @@ -151,7 +151,7 @@ test_expect_success 'dual-coloring' ' : s/4/A/ : : + Also a silly comment here! - : + + : + : diff --git a/file b/file : --- a/file : +++ b/file -- 2.18.0.865.gffc8e1a3cd6-goog