@@ -150,6 +150,7 @@ static struct event_name
150150 {"InsertLeavePre" , EVENT_INSERTLEAVEPRE },
151151 {"InsertCharPre" , EVENT_INSERTCHARPRE },
152152 {"MenuPopup" , EVENT_MENUPOPUP },
153+ {"ModeChanged" , EVENT_MODECHANGED },
153154 {"OptionSet" , EVENT_OPTIONSET },
154155 {"QuickFixCmdPost" , EVENT_QUICKFIXCMDPOST },
155156 {"QuickFixCmdPre" , EVENT_QUICKFIXCMDPRE },
@@ -1817,6 +1818,17 @@ has_completechanged(void)
18171818}
18181819#endif
18191820
1821+ #if defined(FEAT_EVAL ) || defined(PROTO )
1822+ /*
1823+ * Return TRUE when there is a ModeChanged autocommand defined.
1824+ */
1825+ int
1826+ has_modechanged (void )
1827+ {
1828+ return (first_autopat [(int )EVENT_MODECHANGED ] != NULL );
1829+ }
1830+ #endif
1831+
18201832/*
18211833 * Execute autocommands for "event" and file name "fname".
18221834 * Return TRUE if some commands were executed.
@@ -1938,7 +1950,8 @@ apply_autocmds_group(
19381950 if (fname_io == NULL )
19391951 {
19401952 if (event == EVENT_COLORSCHEME || event == EVENT_COLORSCHEMEPRE
1941- || event == EVENT_OPTIONSET )
1953+ || event == EVENT_OPTIONSET
1954+ || event == EVENT_MODECHANGED )
19421955 autocmd_fname = NULL ;
19431956 else if (fname != NULL && !ends_excmd (* fname ))
19441957 autocmd_fname = fname ;
@@ -2011,7 +2024,8 @@ apply_autocmds_group(
20112024 || event == EVENT_COLORSCHEMEPRE
20122025 || event == EVENT_OPTIONSET
20132026 || event == EVENT_QUICKFIXCMDPOST
2014- || event == EVENT_DIRCHANGED )
2027+ || event == EVENT_DIRCHANGED
2028+ || event == EVENT_MODECHANGED )
20152029 {
20162030 fname = vim_strsave (fname );
20172031 autocmd_fname_full = TRUE; // don't expand it later
0 commit comments