diff options
Diffstat (limited to 'readline/macro.c')
-rw-r--r-- | readline/macro.c | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/readline/macro.c b/readline/macro.c index c2fac8addbe..c7017cc6b3d 100644 --- a/readline/macro.c +++ b/readline/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 () @@ -206,7 +219,7 @@ rl_start_kbd_macro (ignore1, ignore2) if (RL_ISSTATE (RL_STATE_MACRODEF)) { _rl_abort_internal (); - return -1; + return 1; } if (rl_explicit_arg) @@ -231,10 +244,10 @@ rl_end_kbd_macro (count, ignore) if (RL_ISSTATE (RL_STATE_MACRODEF) == 0) { _rl_abort_internal (); - return -1; + 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; |