From bbacd03ccc48734fb75fdac90e0bdd6c52c22cd1 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 2 Apr 2019 11:50:25 +0200 Subject: [PATCH] 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 --- editors/vi.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/editors/vi.c b/editors/vi.c index 993630d6f..9d0fc23cf 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; } -- 2.25.1