]> git.ipfire.org Git - thirdparty/git.git/commitdiff
diff: refactor output of incomplete line
authorJunio C Hamano <gitster@pobox.com>
Wed, 12 Nov 2025 22:02:51 +0000 (14:02 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 12 Nov 2025 22:04:04 +0000 (14:04 -0800)
Create a helper function that reacts to "\ No newline at the end of
file" in preparation for unifying the incomplete line handling in
the code path that handles xdiff output and the code path that
bypasses xdiff and produces a complete-rewrite patch.

Currently the output from the DIFF_SYMBOL_CONTEXT_INCOMPLETE case
still (ab)uses the same code as what is used for context lines, but
that would change in a later step where we introduce support to treat
an incomplete line as a whitespace error.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c

diff --git a/diff.c b/diff.c
index ff8fc91f88d30edd8f7a705abf86d37834eae86e..7ee8620429116187e660c2ba2b093037dd1f9b3d 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -1379,6 +1379,10 @@ static void emit_diff_symbol_from_struct(struct diff_options *o,
                emit_line(o, "", "", line, len);
                break;
        case DIFF_SYMBOL_CONTEXT_INCOMPLETE:
+               set = diff_get_color_opt(o, DIFF_CONTEXT);
+               reset = diff_get_color_opt(o, DIFF_RESET);
+               emit_line(o, set, reset, line, len);
+               break;
        case DIFF_SYMBOL_CONTEXT_MARKER:
                context = diff_get_color_opt(o, DIFF_CONTEXT);
                reset = diff_get_color_opt(o, DIFF_RESET);
@@ -1668,6 +1672,13 @@ static void emit_context_line(struct emit_callback *ecbdata,
        emit_diff_symbol(ecbdata->opt, DIFF_SYMBOL_CONTEXT, line, len, flags);
 }
 
+static void emit_incomplete_line_marker(struct emit_callback *ecbdata,
+                                       const char *line, int len)
+{
+       emit_diff_symbol(ecbdata->opt, DIFF_SYMBOL_CONTEXT_INCOMPLETE,
+                        line, len, 0);
+}
+
 static void emit_hunk_header(struct emit_callback *ecbdata,
                             const char *line, int len)
 {
@@ -2437,8 +2448,7 @@ static int fn_out_consume(void *priv, char *line, unsigned long len)
                            ecbdata->last_line_kind);
                }
                ecbdata->lno_in_preimage++;
-               emit_diff_symbol(o, DIFF_SYMBOL_CONTEXT_INCOMPLETE,
-                                line, len, 0);
+               emit_incomplete_line_marker(ecbdata, line, len);
                break;
        default:
                BUG("fn_out_consume: unknown line '%s'", line);