static const char CMup[] ALIGN1 = "\033[A";
static const char CMdown[] ALIGN1 = "\n";
+#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[] = "cCdDJoOpPrRxX<>~";
+#endif
enum {
YANKONLY = FALSE,
#if ENABLE_FEATURE_VI_USE_SIGNALS || ENABLE_FEATURE_VI_CRASHME
int my_pid;
#endif
-#if ENABLE_FEATURE_VI_DOT_CMD || ENABLE_FEATURE_VI_YANKMARK
- char *modifying_cmds; // cmds that modify text[]
-#endif
#if ENABLE_FEATURE_VI_SEARCH
char *last_search_pattern; // last pattern from a '/' or '?' search
#endif
#define ioq_start (G.ioq_start )
#define last_row (G.last_row )
#define my_pid (G.my_pid )
-#define modifying_cmds (G.modifying_cmds )
#define last_search_pattern (G.last_search_pattern)
#define chars_to_parse (G.chars_to_parse )
#endif
vi_setops = VI_AUTOINDENT | VI_SHOWMATCH | VI_IGNORECASE;
-#if ENABLE_FEATURE_VI_DOT_CMD || ENABLE_FEATURE_VI_YANKMARK
- modifying_cmds = (char *) "aAcCdDiIJoOpPrRsxX<>~"; // cmds modifying text[]
-#endif
-
// 1- process $HOME/.exrc file (not inplemented yet)
// 2- process EXINIT variable from environment
// 3- process command line args
// These are commands that change text[].
// Remember the input for the "." command
if (!adding2q && ioq_start == NULL
+ && cmd_mode == 0 /* command mode */
&& c != '\0' && strchr(modifying_cmds, c)
) {
start_new_cmd_q(c);
// Known escape sequences for cursor and function keys.
static const struct esc_cmds {
const char seq[4];
- char val;
+ char val; //TODO: int? Need to make it at least 8-bit clean!
} esccmds[] = {
- {"OA" , VI_K_UP }, // cursor key Up
- {"OB" , VI_K_DOWN }, // cursor key Down
+ {"OA" , VI_K_UP }, // Cursor Key Up
+ {"OB" , VI_K_DOWN }, // Cursor Key Down
{"OC" , VI_K_RIGHT }, // Cursor Key Right
- {"OD" , VI_K_LEFT }, // cursor key Left
+ {"OD" , VI_K_LEFT }, // Cursor Key Left
{"OH" , VI_K_HOME }, // Cursor Key Home
{"OF" , VI_K_END }, // Cursor Key End
{"OP" , VI_K_FUN1 }, // Function Key F1
{"OR" , VI_K_FUN3 }, // Function Key F3
{"OS" , VI_K_FUN4 }, // Function Key F4
- {"[A" , VI_K_UP }, // cursor key Up
- {"[B" , VI_K_DOWN }, // cursor key Down
+ {"[A" , VI_K_UP }, // Cursor Key Up
+ {"[B" , VI_K_DOWN }, // Cursor Key Down
{"[C" , VI_K_RIGHT }, // Cursor Key Right
- {"[D" , VI_K_LEFT }, // cursor key Left
+ {"[D" , VI_K_LEFT }, // Cursor Key Left
{"[H" , VI_K_HOME }, // Cursor Key Home
{"[F" , VI_K_END }, // Cursor Key End
{"[1~" , VI_K_HOME }, // Cursor Key Home
case VI_K_END:
case VI_K_PAGEUP:
case VI_K_PAGEDOWN:
+ case VI_K_DELETE:
goto key_cmd_mode;
}