From 77c0357868d4a71367fcc0bad71587cc4604df74 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Tue, 8 Dec 2015 15:29:56 +0000 Subject: [PATCH] Making splice_node() update 'filebot', instead of doing it in four different places. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5490 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 4 ++++ src/nano.c | 4 ++++ src/text.c | 16 +--------------- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 861963d3..c71c7fde 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2015-12-08 Benno Schulenberg + * src/nano.c (splice_node): Make this function update 'filebot', + instead of doing it in four different places. + 2015-12-07 Benno Schulenberg * src/winio.c (edit_draw): Quit the loop when there is no end match. * src/files.c (do_writeout): When --tempfile is given, make ^O not diff --git a/src/nano.c b/src/nano.c index b795fe9f..310616ed 100644 --- a/src/nano.c +++ b/src/nano.c @@ -104,6 +104,10 @@ void splice_node(filestruct *afterthis, filestruct *newnode) if (afterthis->next != NULL) afterthis->next->prev = newnode; afterthis->next = newnode; + + /* Update filebot when inserting a node at the end of file. */ + if (openfile && openfile->filebot == afterthis) + openfile->filebot = newnode; } /* Unlink a node from the rest of the filestruct and delete it. */ diff --git a/src/text.c b/src/text.c index 62271726..d1871da4 100644 --- a/src/text.c +++ b/src/text.c @@ -544,8 +544,6 @@ void do_undo(void) free(f->data); f->data = data; splice_node(f, t); - if (f == openfile->filebot) - openfile->filebot = t; goto_line_posx(u->lineno, u->begin); break; case CUT_EOF: @@ -678,8 +676,6 @@ void do_redo(void) free(f->data); f->data = data; splice_node(f, shoveline); - if (f == openfile->filebot) - openfile->filebot = shoveline; renumber(shoveline); goto_line_posx(u->lineno + 1, u->mark_begin_x); break; @@ -798,9 +794,6 @@ void do_enter() openfile->current_x = extra; splice_node(openfile->current, newnode); - - if (openfile->current == openfile->filebot) - openfile->filebot = newnode; openfile->current = newnode; renumber(newnode); @@ -2162,9 +2155,7 @@ void do_justify(bool full_justify) assert(break_pos <= line_len); - /* Make a new line, and copy the text after where we're - * going to break this line to the beginning of the new - * line. */ + /* Insert a new line after the current one. */ splice_node(openfile->current, make_new_node(openfile->current)); /* If this paragraph is non-quoted, and autoindent isn't @@ -2203,11 +2194,6 @@ void do_justify(bool full_justify) /* Break the current line. */ null_at(&openfile->current->data, break_pos); - /* If the current line is the last line of the file, move - * the last line of the file down to the next line. */ - if (openfile->filebot == openfile->current) - openfile->filebot = openfile->filebot->next; - /* Go to the next line. */ par_len--; openfile->current_y++; -- 2.39.5