]> git.wh0rd.org Git - nano.git/commitdiff
Moving the trimming of the undo stack into a separate function.
authorBenno Schulenberg <bensberg@justemail.net>
Thu, 3 Dec 2015 08:50:34 +0000 (08:50 +0000)
committerBenno Schulenberg <bensberg@justemail.net>
Thu, 3 Dec 2015 08:50:34 +0000 (08:50 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5472 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/text.c

index b9190e10b0c4a8e35b6b36c608ae6653e61b54da..06241bac9a453c47e73d897ec4fa7c51dc9ac936 100644 (file)
--- 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
index eef0a52addc2e8ffcd09e0637d70aca790b00cc6..c63d435cb396836f3471b5cbf6979edd60c9dd40 100644 (file)
@@ -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");