diff options
Diffstat (limited to 'src/autocmd.c')
-rw-r--r-- | src/autocmd.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/autocmd.c b/src/autocmd.c index 07681bbe52..a721e708aa 100644 --- a/src/autocmd.c +++ b/src/autocmd.c @@ -150,6 +150,7 @@ static struct event_name {"InsertLeavePre", EVENT_INSERTLEAVEPRE}, {"InsertCharPre", EVENT_INSERTCHARPRE}, {"MenuPopup", EVENT_MENUPOPUP}, + {"ModeChanged", EVENT_MODECHANGED}, {"OptionSet", EVENT_OPTIONSET}, {"QuickFixCmdPost", EVENT_QUICKFIXCMDPOST}, {"QuickFixCmdPre", EVENT_QUICKFIXCMDPRE}, @@ -1817,6 +1818,17 @@ has_completechanged(void) } #endif +#if defined(FEAT_EVAL) || defined(PROTO) +/* + * Return TRUE when there is a ModeChanged autocommand defined. + */ + int +has_modechanged(void) +{ + return (first_autopat[(int)EVENT_MODECHANGED] != NULL); +} +#endif + /* * Execute autocommands for "event" and file name "fname". * Return TRUE if some commands were executed. @@ -1938,7 +1950,8 @@ apply_autocmds_group( if (fname_io == NULL) { if (event == EVENT_COLORSCHEME || event == EVENT_COLORSCHEMEPRE - || event == EVENT_OPTIONSET) + || event == EVENT_OPTIONSET + || event == EVENT_MODECHANGED) autocmd_fname = NULL; else if (fname != NULL && !ends_excmd(*fname)) autocmd_fname = fname; @@ -2011,7 +2024,8 @@ apply_autocmds_group( || event == EVENT_COLORSCHEMEPRE || event == EVENT_OPTIONSET || event == EVENT_QUICKFIXCMDPOST - || event == EVENT_DIRCHANGED) + || event == EVENT_DIRCHANGED + || event == EVENT_MODECHANGED) { fname = vim_strsave(fname); autocmd_fname_full = TRUE; // don't expand it later |