diff --git a/ChangeLog b/ChangeLog index 3ef464877c7a1bb2b7dd82ba84bc51eadc3810a4..9ba5f93587f9d34f4160ac5de289b46f34f80c15 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2015-11-30 Benno Schulenberg <bensberg@justemail.net> + * src/text.c (redo_cut, update_undo): When cutting reaches the EOF, + and NONEWLINES is set, there is no next line at which to put the + cutting point for a redo. So put it at the very end of the cut. + This fixes Savannah bug #46541. + 2015-11-29 Benno Schulenberg <bensberg@justemail.net> * src/color.c (reset_multis): Evaluate correctly whether to reset the multidata cache. This fixes Savannah bug #46543. diff --git a/src/text.c b/src/text.c index c0bcc35ba4af667790be5e6698738ac4b205b977..ff9872b76ee06a5d4d49234dfe03927d0256903a 100644 --- a/src/text.c +++ b/src/text.c @@ -451,11 +451,6 @@ void redo_cut(undo *u) goto_line_posx(u->lineno, u->begin); - if (ISSET(NO_NEWLINES) && openfile->current->lineno != u->lineno) { - openfile->current_x = strlen(openfile->current->data); - openfile->placewewant = xplustabs(); - } - openfile->mark_set = TRUE; openfile->mark_begin = fsfromline(u->mark_begin_lineno); openfile->mark_begin_x = (u->xflags == WAS_WHOLE_LINE) ? 0 : u->mark_begin_x; @@ -1140,7 +1135,9 @@ fprintf(stderr, " >> Updating... action = %d, openfile->last_action = %d, openf u->begin = strlen(u->cutbottom->data); if (u->lineno == u->mark_begin_lineno) u->begin += u->mark_begin_x; - } + } else if (openfile->current == openfile->filebot && + ISSET(NO_NEWLINES)) + u->begin = strlen(u->cutbottom->data); } break; case REPLACE: