From df80bfd2fceb0843773937402f250733f90f41e1 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sat, 31 Oct 2015 20:17:09 +0000 Subject: [PATCH] Improving comments and combining two conditions. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5385 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 2 ++ src/nano.c | 26 ++++++++++++-------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 77cc02ca..072a434a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,8 @@ on, the mark's pointer needs to be refreshed only when it is on the same line as the cursor, and the mark's x coordinate only when the mark is located after the cursor. This fixes Savannah bug #46347. + * src/nano.c (copy_from_filestruct): Improve comments and combine + two conditions. 2015-10-29 Benno Schulenberg * src/text.c (add_undo): Only skip adding an undo when the current diff --git a/src/nano.c b/src/nano.c index c88ce0b4..8e50848a 100644 --- a/src/nano.c +++ b/src/nano.c @@ -451,11 +451,12 @@ void copy_from_filestruct(filestruct *somebuffer) while (openfile->filebot->next != NULL) openfile->filebot = openfile->filebot->next; - /* Restore the current line and cursor position. If the mark begins - * inside the partition, adjust the mark coordinates to compensate - * for the change in the current line. */ + /* Put the cursor at the end of the pasted text. */ openfile->current = openfile->filebot; openfile->current_x = strlen(openfile->filebot->data); + + /* Refresh the mark's pointer, and compensate the mark's + * x coordinate for the change in the current line. */ if (openfile->fileage == openfile->filebot) { #ifndef NANO_TINY if (openfile->mark_set && single_line) { @@ -464,20 +465,17 @@ void copy_from_filestruct(filestruct *somebuffer) openfile->mark_begin_x += openfile->current_x; } #endif + /* When the pasted stuff contains no newline, adjust the cursor's + * x coordinate for the text that is before the pasted stuff. */ openfile->current_x += current_x_save; } #ifndef NANO_TINY - else if (openfile->mark_set) { - if (right_side_up) { - if (single_line) - /* Get the new data, stuff was inserted on the mark line. */ - openfile->mark_begin = openfile->fileage; - /* The x is okay, it did not move. */ - } else { - if (single_line) { - openfile->mark_begin = openfile->current; - openfile->mark_begin_x += openfile->current_x - current_x_save; - } + else if (openfile->mark_set && single_line) { + if (right_side_up) + openfile->mark_begin = openfile->fileage; + else { + openfile->mark_begin = openfile->current; + openfile->mark_begin_x += openfile->current_x - current_x_save; } } #endif -- 2.39.5