diff --git a/src/text.c b/src/text.c index 7822bf027d2c1ac9a9b198d01024e0b89371e356..1cbaf768ff1dd4b40d3cf6eeb3e12bae87b57849 100644 --- a/src/text.c +++ b/src/text.c @@ -791,10 +791,7 @@ void do_undo(void) filestruct *oldcutbuffer = cutbuffer, *oldcutbottom = cutbottom; cutbuffer = NULL; cutbottom = NULL; - /* Instead of a line number, u->mark_begin_lineno contains the number - * of lines of the inserted segment, because the file was partitioned - * when update_undo() was called; so, calculate the end-line number. */ - openfile->mark_begin = fsfromline(u->lineno + u->mark_begin_lineno - 1); + openfile->mark_begin = fsfromline(u->mark_begin_lineno); openfile->mark_begin_x = u->mark_begin_x; openfile->mark_set = TRUE; goto_line_posx(u->lineno, u->begin); @@ -855,7 +852,7 @@ void do_redo(void) return; } - f = fsfromline(u->type == INSERT ? 1 : u->mark_begin_lineno); + f = fsfromline(u->mark_begin_lineno); if (!f) return; @@ -1434,14 +1431,8 @@ fprintf(stderr, " >> Updating... action = %d, openfile->last_action = %d, openf u->lineno = openfile->current->lineno; break; case INSERT: - /* Store the number of lines (plus one) of the insertion. */ u->mark_begin_lineno = openfile->current->lineno; - /* When the insertion contains no newline, store the adjusted - * x position; otherwise, store the length of the last line. */ - if (openfile->fileage == openfile->filebot) - u->mark_begin_x = openfile->current_x; - else - u->mark_begin_x = strlen(openfile->filebot->data); + u->mark_begin_x = openfile->current_x; break; case ENTER: u->strdata = mallocstrcpy(NULL, openfile->current->data);