diff --git a/ChangeLog b/ChangeLog index 3ef46487..9ba5f935 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2015-11-30 Benno Schulenberg + * 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 * 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 c0bcc35b..ff9872b7 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: