diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER

Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Stefan Beller committed Jun 29, 2017 at 17:06 UTC c64b420b4c393c369d738cea00fb4ddac062c963
1 file changed +9 -1
diff.c
+9 -1
@@ -561,13 +561,20 @@ static void emit_line(struct diff_options *o, const char *set, const char *reset
561 }
562
563 enum diff_symbol {
564 + DIFF_SYMBOL_CONTEXT_MARKER,
565 DIFF_SYMBOL_SEPARATOR
566 };
567
568 static void emit_diff_symbol(struct diff_options *o, enum diff_symbol s,
569 const char *line, int len)
570 {
571 + const char *context, *reset;
572 switch (s) {
573 + case DIFF_SYMBOL_CONTEXT_MARKER:
574 + context = diff_get_color_opt(o, DIFF_CONTEXT);
575 + reset = diff_get_color_opt(o, DIFF_RESET);
576 + emit_line(o, context, reset, line, len);
577 + break;
578 case DIFF_SYMBOL_SEPARATOR:
579 fprintf(o->file, "%s%c",
580 diff_line_prefix(o),
@@ -662,7 +669,8 @@ static void emit_hunk_header(struct emit_callback *ecbdata,
669 if (len < 10 ||
670 memcmp(line, atat, 2) ||
671 !(ep = memmem(line + 2, len - 2, atat, 2))) {
665 - emit_line(ecbdata->opt, context, reset, line, len);
672 + emit_diff_symbol(ecbdata->opt,
673 + DIFF_SYMBOL_CONTEXT_MARKER, line, len);
674 return;
675 }
676 ep += 2; /* skip over @@ */