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:
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");