summaryrefslogtreecommitdiff
path: root/macro.c
diff options
context:
space:
mode:
Diffstat (limited to 'macro.c')
-rw-r--r--macro.c38
1 files changed, 37 insertions, 1 deletions
diff --git a/macro.c b/macro.c
index c2fac8a..b99a1a6 100644
--- a/macro.c
+++ b/macro.c
@@ -121,6 +121,19 @@ _rl_next_macro_key ()
#endif
}
+int
+_rl_prev_macro_key ()
+{
+ if (rl_executing_macro == 0)
+ return (0);
+
+ if (executing_macro_index == 0)
+ return (0);
+
+ executing_macro_index--;
+ return (rl_executing_macro[executing_macro_index]);
+}
+
/* Save the currently executing macro on a stack of saved macros. */
void
_rl_push_executing_macro ()
@@ -234,7 +247,7 @@ rl_end_kbd_macro (count, ignore)
return -1;
}
- current_macro_index -= rl_key_sequence_length - 1;
+ current_macro_index -= rl_key_sequence_length;
current_macro[current_macro_index] = '\0';
RL_UNSETSTATE(RL_STATE_MACRODEF);
@@ -263,6 +276,29 @@ rl_call_last_kbd_macro (count, ignore)
return 0;
}
+int
+rl_print_last_kbd_macro (count, ignore)
+ int count, ignore;
+{
+ char *m;
+
+ if (current_macro == 0)
+ {
+ rl_ding ();
+ return 0;
+ }
+ m = _rl_untranslate_macro_value (current_macro, 1);
+ rl_crlf ();
+ printf ("%s", m);
+ fflush (stdout);
+ rl_crlf ();
+ FREE (m);
+ rl_forced_update_display ();
+ rl_display_fixed = 1;
+
+ return 0;
+}
+
void
rl_push_macro_input (macro)
char *macro;