From c346701d093daaa6938a8b52eba49260b853137f Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Thu, 13 Jul 2006 04:19:53 +0000 Subject: [PATCH] in do_insertfile(), if we don't insert a file into a new buffer, properly update the x-coordinate to account for the number of characters inserted on the current line git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3786 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 3 +++ src/files.c | 27 +++++++++++++++++---------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 23020d65..65fdadf0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -83,6 +83,9 @@ CVS code - - If we execute a command in a new buffer, move back to the beginning of the first line of the buffer afterwards, for consistency. (DLR) + - If we don't insert a file into a new buffer, properly update + the x-coordinate to account for the number of characters + inserted on the current line. (DLR) get_full_path() - Don't return NULL when the current directory doesn't exist, as we can still recover from that. (DLR, found by Mike Frysinger) diff --git a/src/files.c b/src/files.c index cf4234c9..d4511ddb 100644 --- a/src/files.c +++ b/src/files.c @@ -683,6 +683,7 @@ void do_insertfile( char *ans = mallocstrcpy(NULL, ""); /* The last answer the user typed on the statusbar. */ filestruct *edittop_save = openfile->edittop; + size_t current_x_save = openfile->current_x; ssize_t current_y_save = openfile->current_y; bool at_edittop = FALSE; /* Whether we're at the top of the edit window. */ @@ -845,20 +846,26 @@ void do_insertfile( { filestruct *top_save = openfile->fileage; - /* If we didn't insert into a new buffer, and we were at - * the top of the edit window before, set the saved - * value of edittop to the new top of the edit window, - * and update the current y-coordinate to account for - * the number of lines inserted. */ + /* If we were at the top of the edit window before, set + * the saved value of edittop to the new top of the edit + * window. */ if (at_edittop) edittop_save = openfile->fileage; + + /* Update the current x-coordinate to account for the + * number of characters inserted on the current line. */ + openfile->current_x = strlen(openfile->filebot->data); + if (openfile->fileage == openfile->filebot) + openfile->current_x += current_x_save; + + /* Update the current y-coordinate to account for the + * number of lines inserted. */ openfile->current_y += current_y_save; - /* If we didn't insert into a new buffer, unpartition - * the filestruct so that it contains all the text - * again. Note that we've replaced the non-text - * originally in the partition with the text in the - * inserted file/executed command output. */ + /* Unpartition the filestruct so that it contains all + * the text again. Note that we've replaced the + * non-text originally in the partition with the text in + * the inserted file/executed command output. */ unpartition_filestruct(&filepart); /* Renumber starting with the beginning line of the old -- 2.39.5