diff src/autocmd.c @ 28397:d1702731786c v8.2.4723

patch 8.2.4723: the ModeChanged autocmd event is inefficient Commit: https://github.com/vim/vim/commit/2bf52dd065495cbf28e28792f2c2d50d44546d9f Author: LemonBoy <thatlemon@gmail.com> Date: Sat Apr 9 18:17:34 2022 +0100 patch 8.2.4723: the ModeChanged autocmd event is inefficient Problem: The ModeChanged autocmd event is inefficient. Solution: Avoid allocating memory. (closes https://github.com/vim/vim/issues/10134) Rename trigger_modechanged() to may_trigger_modechanged().
author Bram Moolenaar <Bram@vim.org>
date Sat, 09 Apr 2022 19:30:02 +0200
parents e466fdbe0699
children 80ed5ad30d28
line wrap: on
line diff
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -1240,17 +1240,7 @@ do_autocmd_event(
 		// 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.