updated for version 7.0003
diff --git a/src/edit.c b/src/edit.c
index 7619a55..1adcda4 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -270,6 +270,23 @@
ins_compl_clear(); /* clear stuff for CTRL-X mode */
#endif
+#ifdef FEAT_AUTOCMD
+ /*
+ * Trigger InsertEnter autocommands. Do not do this for "r<CR>" or "grx".
+ */
+ if (cmdchar != 'r' && cmdchar != 'v')
+ {
+ if (cmdchar == 'R')
+ ptr = (char_u *)"r";
+ else if (cmdchar == 'V')
+ ptr = (char_u *)"v";
+ else
+ ptr = (char_u *)"i";
+ set_vim_var_string(VV_INSERTMODE, ptr, 1);
+ apply_autocmds(EVENT_INSERTENTER, NULL, NULL, FALSE, curbuf);
+ }
+#endif
+
#ifdef FEAT_MOUSE
/*
* When doing a paste with the middle mouse button, Insstart is set to
@@ -725,6 +742,12 @@
break;
}
#endif
+#ifdef FEAT_AUTOCMD
+ set_vim_var_string(VV_INSERTMODE,
+ (char_u *)((State & REPLACE_FLAG) ? "i" :
+ replaceState == VREPLACE ? "v" : "r"), 1);
+ apply_autocmds(EVENT_INSERTCHANGE, NULL, NULL, FALSE, curbuf);
+#endif
if (State & REPLACE_FLAG)
State = INSERT | (State & LANGMAP);
else
@@ -859,7 +882,14 @@
o_lnum = curwin->w_cursor.lnum;
if (ins_esc(&count, cmdchar))
+ {
+#ifdef FEAT_AUTOCMD
+ if (cmdchar != 'r' && cmdchar != 'v')
+ apply_autocmds(EVENT_INSERTLEAVE, NULL, NULL,
+ FALSE, curbuf);
+#endif
return (c == Ctrl_O);
+ }
continue;
/*