2008-10-04 Chris Allegretta <chrisa@asty.org>

* cut.c (Add_undo): Save last cut undo information so it can be used for next uncut, fixes
          Savannah bug 24183.



git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4338 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
Chris Allegretta 2008-10-04 11:10:11 +00:00
parent 3c4e99137d
commit 5c1c143ed2
2 changed files with 14 additions and 9 deletions

View File

@ -1,3 +1,7 @@
2008-10-04 Chris Allegretta <chrisa@asty.org>
* cut.c (Add_undo): Save last cut undo information so it can be used for next uncut, fixes
Savannah bug 24183.
GNU nano 2.1.6 - 2008.10.03 GNU nano 2.1.6 - 2008.10.03
2008-10-03 Pascal Gentil <pascal.gentil@univ-rennes1.fr> 2008-10-03 Pascal Gentil <pascal.gentil@univ-rennes1.fr>
* fortran.nanorc: Sample python syntax highlighting file * fortran.nanorc: Sample python syntax highlighting file

View File

@ -822,6 +822,7 @@ void add_undo(undo_type current_action)
undo *u, *cutu; undo *u, *cutu;
char *data; char *data;
openfilestruct *fs = openfile; openfilestruct *fs = openfile;
static undo *last_cutu = NULL; /* Last thing we cut to set up the undo for uncut */
/* Ugh, if we were called while cutting not-to-end, non-marked and on the same lineno, /* Ugh, if we were called while cutting not-to-end, non-marked and on the same lineno,
we need to abort here */ we need to abort here */
@ -896,22 +897,22 @@ void add_undo(undo_type current_action)
u->mark_begin_x = openfile->mark_begin_x; u->mark_begin_x = openfile->mark_begin_x;
} }
u->to_end = (current_action == CUTTOEND); u->to_end = (current_action == CUTTOEND);
last_cutu = u;
break; break;
case UNCUT: case UNCUT:
for (cutu = u; cutu != NULL && cutu->type != CUT; cutu = cutu->next) if (!last_cutu)
; statusbar(_("Internal error: can't setup uncut. Please save your work."));
if (cutu->type == CUT) { else if (last_cutu->type == CUT) {
u->cutbuffer = cutu->cutbuffer; u->cutbuffer = last_cutu->cutbuffer;
u->cutbottom = cutu->cutbottom; u->cutbottom = last_cutu->cutbottom;
if (!cutu->mark_set) if (!last_cutu->mark_set)
u->linescut = cutu->linescut; u->linescut = last_cutu->linescut;
else { else {
filestruct *c; filestruct *c;
for (c = u->cutbuffer; c != NULL; c = c->next) for (c = u->cutbuffer; c != NULL; c = c->next)
u->linescut++; u->linescut++;
} }
} else }
statusbar(_("Internal error: can't setup uncut. Please save your work."));
break; break;
case OTHER: case OTHER:
statusbar(_("Internal error: unknown type. Please save your work.")); statusbar(_("Internal error: unknown type. Please save your work."));