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>
This commit is contained in:
Denys Vlasenko 2019-04-02 11:50:25 +02:00
parent b29dce4bc2
commit bbacd03ccc

View File

@ -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;
}