diff options
Diffstat (limited to 'src/normal.c')
-rw-r--r-- | src/normal.c | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/src/normal.c b/src/normal.c index ea9de57..852a767 100644 --- a/src/normal.c +++ b/src/normal.c @@ -1,7 +1,7 @@ /* Normal-format output routines for GNU DIFF. - Copyright (C) 1988-1989, 1993, 1995, 1998, 2001, 2006, 2009-2013 Free - Software Foundation, Inc. + Copyright (C) 1988-1989, 1993, 1995, 1998, 2001, 2006, 2009-2013, 2015-2016 + Free Software Foundation, Inc. This file is part of GNU DIFF. @@ -49,21 +49,43 @@ print_normal_hunk (struct change *hunk) begin_output (); /* Print out the line number header for this hunk */ + set_color_context (LINE_NUMBER_CONTEXT); print_number_range (',', &files[0], first0, last0); fputc (change_letter[changes], outfile); print_number_range (',', &files[1], first1, last1); + set_color_context (RESET_CONTEXT); fputc ('\n', outfile); /* Print the lines that the first file has. */ if (changes & OLD) - for (i = first0; i <= last0; i++) - print_1_line ("<", &files[0].linbuf[i]); + { + if (first0 <= last0) + set_color_context (DELETE_CONTEXT); + for (i = first0; i <= last0; i++) + { + print_1_line_nl ("<", &files[0].linbuf[i], true); + if (i == last0) + set_color_context (RESET_CONTEXT); + if (files[0].linbuf[i + 1][-1] == '\n') + putc ('\n', outfile); + } + } if (changes == CHANGED) fputs ("---\n", outfile); /* Print the lines that the second file has. */ if (changes & NEW) - for (i = first1; i <= last1; i++) - print_1_line (">", &files[1].linbuf[i]); + { + if (first1 <= last1) + set_color_context (ADD_CONTEXT); + for (i = first1; i <= last1; i++) + { + print_1_line_nl (">", &files[1].linbuf[i], true); + if (i == last1) + set_color_context (RESET_CONTEXT); + if (files[1].linbuf[i + 1][-1] == '\n') + putc ('\n', outfile); + } + } } |