diff options
Diffstat (limited to 'macro.c')
-rw-r--r-- | macro.c | 38 |
1 files changed, 37 insertions, 1 deletions
@@ -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; |