From bd9c8ddda6a9fc7c3a7c517cac74e292fdae7287 Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Wed, 17 Sep 2014 05:48:56 +0200 Subject: [PATCH] Add some GNU readline compat functions for prompt handling and redisplay Signed-off-by: Joachim Nilsson --- include/editline.h | 7 +++++++ src/editline.c | 27 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/include/editline.h b/include/editline.h index 0682ffb..a401531 100644 --- a/include/editline.h +++ b/include/editline.h @@ -78,6 +78,13 @@ extern int el_hist_size; /* size of history scrollback buffer, default: extern void rl_initialize(void); extern void rl_reset_terminal(const char *terminal_name); +void rl_save_prompt(void); +void rl_restore_prompt(void); +void rl_set_prompt(const char *prompt); + +void rl_clear_message(void); +void rl_forced_update_display(void); + extern char *readline(const char *prompt); extern void add_history(const char *line); diff --git a/src/editline.c b/src/editline.c index dee283d..6222532 100644 --- a/src/editline.c +++ b/src/editline.c @@ -1134,6 +1134,33 @@ void rl_initialize(void) if (el_outfd < 0) el_outfd = EL_STDOUT; } +static const char *rl_saved_prompt = NULL; +void rl_save_prompt(void) +{ + rl_saved_prompt = rl_prompt; +} + +void rl_restore_prompt(void) +{ + if (rl_saved_prompt) + rl_prompt = rl_saved_prompt; +} + +void rl_set_prompt(const char *prompt) +{ + rl_prompt = prompt; +} + +void rl_clear_message(void) +{ + /* Nothing to do atm. */ +} + +void rl_forced_update_display() +{ + redisplay(); +} + char *readline(const char *prompt) { char *line;