diff src/ex_docmd.c @ 7703:39251e981d1f v7.4.1150

commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jan 21 23:32:32 2016 +0100 patch 7.4.1150 Problem: 'langmap' applies to the first character typed in Select mode. (David Watson) Solution: Check for SELECTMODE. (Christian Brabandt, closes https://github.com/vim/vim/issues/572) Add the 'x' flag to feedkeys().
author Christian Brabandt <cb@256bit.org>
date Thu, 21 Jan 2016 23:45:06 +0100
parents b80fb2cfd62b
children af3c41a3c53f
line wrap: on
line diff
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -10226,17 +10226,26 @@ exec_normal_cmd(cmd, remap, silent)
     int		remap;
     int		silent;
 {
+    /* Stuff the argument into the typeahead buffer. */
+    ins_typebuf(cmd, remap, 0, TRUE, silent);
+    exec_normal(FALSE);
+}
+#endif
+
+#if defined(FEAT_EX_EXTRA) || defined(FEAT_MENU) || defined(FEAT_EVAL) \
+	|| defined(PROTO)
+/*
+ * Execute normal_cmd() until there is no typeahead left.
+ */
+    void
+exec_normal(int was_typed)
+{
     oparg_T	oa;
 
-    /*
-     * Stuff the argument into the typeahead buffer.
-     * Execute normal_cmd() until there is no typeahead left.
-     */
     clear_oparg(&oa);
     finish_op = FALSE;
-    ins_typebuf(cmd, remap, 0, TRUE, silent);
-    while ((!stuff_empty() || (!typebuf_typed() && typebuf.tb_len > 0))
-								  && !got_int)
+    while ((!stuff_empty() || ((was_typed || !typebuf_typed())
+		    && typebuf.tb_len > 0)) && !got_int)
     {
 	update_topline_cursor();
 	normal_cmd(&oa, TRUE);	/* execute a Normal mode cmd */