Diff options
Diffstat (limited to 'source')
-rw-r--r--source/ui-ssdiff.c41
1 file changed, 5 insertions, 36 deletions
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;
}