patch 8.2.4723: the ModeChanged autocmd event is inefficient
Problem: The ModeChanged autocmd event is inefficient.
Solution: Avoid allocating memory. (closes #10134) Rename
trigger_modechanged() to may_trigger_modechanged().
diff --git a/src/autocmd.c b/src/autocmd.c
index a0065de..3b384f5 100644
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -1240,17 +1240,7 @@
// need to initialize last_mode for the first ModeChanged
// autocmd
if (event == EVENT_MODECHANGED && !has_modechanged())
- {
- typval_T rettv;
- typval_T tv[2];
-
- tv[0].v_type = VAR_NUMBER;
- tv[0].vval.v_number = 1;
- tv[1].v_type = VAR_UNKNOWN;
- f_mode(tv, &rettv);
- STRCPY(last_mode, rettv.vval.v_string);
- vim_free(rettv.vval.v_string);
- }
+ get_mode(last_mode);
#endif
// Initialize the fields checked by the WinScrolled trigger to
// stop it from firing right after the first autocmd is defined.