diff options
author | Damien George <damien.p.george@gmail.com> | 2015-04-26 17:52:01 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-04-29 00:32:35 +0100 |
commit | b7a4f15b34a490040d87fbcffc728c9c3f64b85a (patch) | |
tree | 709ce0c6449e02aadc0517b8c7cc4432c702f9cc /lib/mp-readline | |
parent | ad9daadf8aa3b3e07abad3a85520624cef62911a (diff) |
mp-readline: Save "prompt" string in readline state.
Diffstat (limited to 'lib/mp-readline')
-rw-r--r-- | lib/mp-readline/readline.c | 12 | ||||
-rw-r--r-- | lib/mp-readline/readline.h | 4 |
2 files changed, 10 insertions, 6 deletions
diff --git a/lib/mp-readline/readline.c b/lib/mp-readline/readline.c index 303d95b15..ce2a75905 100644 --- a/lib/mp-readline/readline.c +++ b/lib/mp-readline/readline.c @@ -85,6 +85,7 @@ typedef struct _readline_t { int hist_cur; int cursor_pos; char escape_seq_buf[1]; + const char *prompt; } readline_t; STATIC readline_t rl; @@ -260,23 +261,26 @@ end_key: return -1; } -void readline_note_newline(void) { +void readline_note_newline(const char *prompt) { rl.orig_line_len = rl.line->len; rl.cursor_pos = rl.orig_line_len; + rl.prompt = prompt; + mp_hal_stdout_tx_str(prompt); } -void readline_init(vstr_t *line) { +void readline_init(vstr_t *line, const char *prompt) { rl.line = line; rl.orig_line_len = line->len; rl.escape_seq = ESEQ_NONE; rl.escape_seq_buf[0] = 0; rl.hist_cur = -1; rl.cursor_pos = rl.orig_line_len; + rl.prompt = prompt; + mp_hal_stdout_tx_str(prompt); } int readline(vstr_t *line, const char *prompt) { - mp_hal_stdout_tx_str(prompt); - readline_init(line); + readline_init(line, prompt); for (;;) { int c = mp_hal_stdin_rx_chr(); int r = readline_process_char(c); diff --git a/lib/mp-readline/readline.h b/lib/mp-readline/readline.h index c80dfb54a..c901464f4 100644 --- a/lib/mp-readline/readline.h +++ b/lib/mp-readline/readline.h @@ -33,6 +33,6 @@ void readline_init0(void); int readline(vstr_t *line, const char *prompt); -void readline_init(vstr_t *line); -void readline_note_newline(void); +void readline_init(vstr_t *line, const char *prompt); +void readline_note_newline(const char *prompt); int readline_process_char(int c); |