]> git.ipfire.org Git - thirdparty/bash.git/blobdiff - lib/readline/undo.c
Imported from ../bash-2.05.tar.gz.
[thirdparty/bash.git] / lib / readline / undo.c
index f7f30d17d9d8dc48d99e7c4e50069d04e647933d..e29e94062bf727cd9a4e48f4ba3f8de07a67d91b 100644 (file)
@@ -86,7 +86,7 @@ rl_add_undo (what, start, end, text)
 
 /* Free the existing undo list. */
 void
-free_undo_list ()
+rl_free_undo_list ()
 {
   while (rl_undo_list)
     {
@@ -107,17 +107,18 @@ int
 rl_do_undo ()
 {
   UNDO_LIST *release;
-  int waiting_for_begin = 0;
-  int start, end;
+  int waiting_for_begin, start, end;
 
 #define TRANS(i) ((i) == -1 ? rl_point : ((i) == -2 ? rl_end : (i)))
 
+  start = end = waiting_for_begin = 0;
   do
     {
       if (!rl_undo_list)
        return (0);
 
       _rl_doing_an_undo = 1;
+      RL_SETSTATE(RL_STATE_UNDOING);
 
       /* To better support vi-mode, a start or end value of -1 means
         rl_point, and a value of -2 means rl_end. */
@@ -152,11 +153,12 @@ rl_do_undo ()
          if (waiting_for_begin)
            waiting_for_begin--;
          else
-           ding ();
+           rl_ding ();
          break;
        }
 
       _rl_doing_an_undo = 0;
+      RL_UNSETSTATE(RL_STATE_UNDOING);
 
       release = rl_undo_list;
       rl_undo_list = rl_undo_list->next;
@@ -231,7 +233,7 @@ rl_revert_line (count, key)
      int count, key;
 {
   if (!rl_undo_list)
-    ding ();
+    rl_ding ();
   else
     {
       while (rl_undo_list)
@@ -254,7 +256,7 @@ rl_undo_command (count, key)
        count--;
       else
        {
-         ding ();
+         rl_ding ();
          break;
        }
     }