diff options
author | Denys Vlasenko | 2019-04-02 11:50:25 +0200 |
---|---|---|
committer | Denys Vlasenko | 2019-04-02 11:50:25 +0200 |
commit | bbacd03ccc48734fb75fdac90e0bdd6c52c22cd1 (patch) | |
tree | 6ae3c2bdd742390f521acdd749a9c744b22713cc | |
parent | b29dce4bc293d6800e94569ac7d0df54bd1f8a94 (diff) | |
download | busybox-bbacd03ccc48734fb75fdac90e0bdd6c52c22cd1.zip busybox-bbacd03ccc48734fb75fdac90e0bdd6c52c22cd1.tar.gz |
vi: restore capability to remember insertion cmds for "."
function old new delta
modifying_cmds 17 22 +5
get_one_char 103 98 -5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 5/-5) Total: 0 bytes
text data bss dec hex filename
982121 485 7296 989902 f1ace busybox_old
982094 485 7296 989875 f1ab3 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | editors/vi.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/editors/vi.c b/editors/vi.c index 993630d..9d0fc23 100644 --- a/editors/vi.c +++ b/editors/vi.c @@ -244,9 +244,7 @@ enum { #if ENABLE_FEATURE_VI_DOT_CMD || ENABLE_FEATURE_VI_YANKMARK // cmds modifying text[] -// vda: removed "aAiIs" as they switch us into insert mode -// and remembering input for replay after them makes no sense -static const char modifying_cmds[] ALIGN1 = "cCdDJoOpPrRxX<>~"; +static const char modifying_cmds[] ALIGN1 = "aAcCdDiIJoOpPrRs""xX<>~"; #endif enum { @@ -1053,8 +1051,11 @@ static int get_one_char(void) } // we are adding STDIN chars to q. c = readit(); - if (lmc_len >= MAX_INPUT_LEN - 1) { - status_line_bold("last_modifying_cmd overrun"); + if (lmc_len >= ARRAY_SIZE(last_modifying_cmd) - 1) { + // last_modifying_cmd[] is too small, can't remeber the cmd + // - drop it + adding2q = 0; + lmc_len = 0; } else { last_modifying_cmd[lmc_len++] = c; } |