nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit ee5cdcbce589ea3eb4cf930d65a360745ede2cc9
parent a41968eeef01f465e5cfe5a0ccdf34c12f1382fd
Author: Benno Schulenberg <bensberg@justemail.net>
Date:   Thu,  3 Dec 2015 08:50:34 +0000

Moving the trimming of the undo stack into a separate function.


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5472 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

Diffstat:
MChangeLog | 4++++
Msrc/text.c | 24++++++++++++++++--------
2 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,7 @@ +2015-12-03 Benno Schulenberg <bensberg@justemail.net> + * src/text.c (discard_until): Move the trimming of the undo stack + into a separate function, so it can be used elsewhere. + 2015-12-02 Benno Schulenberg <bensberg@justemail.net> * doc/syntax/python.nanorc: Don't colour triple quotes by themselves. * doc/syntax/python.nanorc: Treat backslashed quotes properly, and diff --git a/src/text.c b/src/text.c @@ -904,6 +904,21 @@ bool execute_command(const char *command) return TRUE; } +/* Discard undo items that are newer than thisone, or all if NULL. */ +void discard_until(undo *thisone) +{ + undo *dropit = openfile->undotop; + + while (dropit != NULL && dropit != thisone) { + openfile->undotop = dropit->next; + free(dropit->strdata); + if (dropit->cutbuffer) + free_filestruct(dropit->cutbuffer); + free(dropit); + dropit = openfile->undotop; + } +} + /* Add a new undo struct to the top of the current pile. */ void add_undo(undo_type action) { @@ -918,14 +933,7 @@ void add_undo(undo_type action) return; /* Blow away newer undo items if we add somewhere in the middle. */ - while (openfile->undotop != NULL && openfile->undotop != u) { - undo *dropit = openfile->undotop; - openfile->undotop = openfile->undotop->next; - free(dropit->strdata); - if (dropit->cutbuffer) - free_filestruct(dropit->cutbuffer); - free(dropit); - } + discard_until(u); #ifdef DEBUG fprintf(stderr, " >> Adding an undo...\n");