summaryrefslogtreecommitdiffstats
path: root/linenoise
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-10-02 06:48:26 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-10-02 06:48:26 -0700
commitbfd251f813aee284d9cd3886a5aeffdb58497ea6 (patch)
treeddfeeffd6197f76e423e0ca75ef73cd6eaa23afa /linenoise
parent19b8654f3cc6b51e8c22138b42bee7031bef151a (diff)
downloadtxr-bfd251f813aee284d9cd3886a5aeffdb58497ea6.tar.gz
txr-bfd251f813aee284d9cd3886a5aeffdb58497ea6.tar.bz2
txr-bfd251f813aee284d9cd3886a5aeffdb58497ea6.zip
linenoise: insert previous line command.
* linenoise/linenoise.c (edit): Extended Ctrl-X Ctrl-R/r command added. * txr.1: Documented.
Diffstat (limited to 'linenoise')
-rw-r--r--linenoise/linenoise.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/linenoise/linenoise.c b/linenoise/linenoise.c
index de12bdb4..b5b9908f 100644
--- a/linenoise/linenoise.c
+++ b/linenoise/linenoise.c
@@ -1782,6 +1782,20 @@ static int edit(lino_t *l, const char *prompt)
}
}
break;
+ case CTL('R'): case 'r':
+ extended = 0;
+ if (extend_num < 0)
+ extend_num = 1;
+ if (l->history_len > extend_num) {
+ char *prev_line = l->history[l->history_len - 1
+ - extend_num];
+ int res = edit_insert_str(l, prev_line, strlen(prev_line));
+ if (res) {
+ l->error = lino_ioerr;
+ goto out;
+ }
+ }
+ break;
case CTL('Q'):
extended = 0;
{