From b8590e8dccf27a426cdabcad10dce906701a56b7 Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Sat, 31 Oct 2026 13:35:51 -0700 Subject: Print every deferred run through one loop --- source/ui-ssdiff.c | 41 +++++------------------------------------ 1 file changed, 5 insertions(+), 36 deletions(-) (limited to 'source') diff --git a/source/ui-ssdiff.c b/source/ui-ssdiff.c index 75f8185..61573d9 100644 --- a/source/ui-ssdiff.c +++ b/source/ui-ssdiff.c @@ -270,38 +270,12 @@ static int count_deferred(struct deferred_line *item) return count; } -static void print_deferred_old_lines(void) -{ - struct deferred_line *item = deferred_old; - struct deferred_line *next; - - while (item) { - print_row("del", item->line_no, item->line, -1, NULL, 0); - next = item->next; - free_deferred(item); - item = next; - } -} - -static void print_deferred_new_lines(void) -{ - struct deferred_line *item = deferred_new; - struct deferred_line *next; - - while (item) { - print_row("add", -1, NULL, item->line_no, item->line, 0); - next = item->next; - free_deferred(item); - item = next; - } -} - /* * Pairing a removal with an addition only stands for anything when the two * runs are the same length, which is why the character marking is offered only * then. */ -static void print_deferred_changed_lines(void) +static void print_deferred_run(const char *class) { struct deferred_line *old_item = deferred_old; struct deferred_line *new_item = deferred_new; @@ -311,12 +285,12 @@ static void print_deferred_changed_lines(void) highlight_chars = count_deferred(old_item) == count_deferred(new_item); while (old_item || new_item) { if (old_item && new_item) - print_row("changed", old_item->line_no, old_item->line, + print_row(class, old_item->line_no, old_item->line, new_item->line_no, new_item->line, highlight_chars); else if (old_item) - print_row("changed", old_item->line_no, old_item->line, -1, NULL, 0); + print_row(class, old_item->line_no, old_item->line, -1, NULL, 0); else if (new_item) - print_row("changed", -1, NULL, new_item->line_no, new_item->line, 0); + print_row(class, -1, NULL, new_item->line_no, new_item->line, 0); if (old_item) { next = old_item->next; free_deferred(old_item); @@ -355,12 +329,7 @@ static void print_deferred_lines(void) { if (!deferred_old && !deferred_new) return; - if (deferred_old && !deferred_new) - print_deferred_old_lines(); - else if (!deferred_old && deferred_new) - print_deferred_new_lines(); - else - print_deferred_changed_lines(); + print_deferred_run(!deferred_new ? "del" : !deferred_old ? "add" : "changed"); deferred_old = deferred_old_last = NULL; deferred_new = deferred_new_last = NULL; } -- cgit