summaryrefslogtreecommitdiff
path: root/undo.c
diff options
context:
space:
mode:
Diffstat (limited to 'undo.c')
-rw-r--r--undo.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/undo.c b/undo.c
index f7f30d1..e29e940 100644
--- a/undo.c
+++ b/undo.c
@@ -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;
}
}