patch 8.0.1206: no autocmd for entering or leaving the command line
Problem: No autocmd for entering or leaving the command line.
Solution: Add CmdlineEnter and CmdlineLeave.
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 9f7dad9..ceeeaf8 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -145,6 +145,19 @@
static void set_search_match(pos_T *t);
#endif
+
+#ifdef FEAT_AUTOCMD
+ static void
+trigger_cmd_autocmd(int typechar, int evt)
+{
+ char_u typestr[2];
+
+ typestr[0] = typechar;
+ typestr[1] = NUL;
+ apply_autocmds(evt, typestr, typestr, FALSE, curbuf);
+}
+#endif
+
/*
* getcmdline() - accept a command line starting with firstc.
*
@@ -222,6 +235,9 @@
* custom status line may invoke ":normal". */
struct cmdline_info save_ccline;
#endif
+#ifdef FEAT_AUTOCMD
+ int cmdline_type;
+#endif
#ifdef FEAT_EVAL
if (firstc == -1)
@@ -349,6 +365,12 @@
* terminal mode set to cooked. Need to set raw mode here then. */
settmode(TMODE_RAW);
+#ifdef FEAT_AUTOCMD
+ /* Trigger CmdlineEnter autocommands. */
+ cmdline_type = firstc == NUL ? '-' : firstc;
+ trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINEENTER);
+#endif
+
#ifdef FEAT_CMDHIST
init_history();
hiscnt = hislen; /* set hiscnt to impossible history value */
@@ -2085,6 +2107,11 @@
if (some_key_typed)
need_wait_return = FALSE;
+#ifdef FEAT_AUTOCMD
+ /* Trigger CmdlineLeave autocommands. */
+ trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINELEAVE);
+#endif
+
State = save_State;
#ifdef USE_IM_CONTROL
if (b_im_ptr != NULL && *b_im_ptr != B_IMODE_LMAP)
@@ -6834,9 +6861,6 @@
linenr_T lnum;
int histtype;
garray_T winsizes;
-#ifdef FEAT_AUTOCMD
- char_u typestr[2];
-#endif
int save_restart_edit = restart_edit;
int save_State = State;
int save_exmode = exmode_active;
@@ -6965,9 +6989,7 @@
# ifdef FEAT_AUTOCMD
/* Trigger CmdwinEnter autocommands. */
- typestr[0] = cmdwin_type;
- typestr[1] = NUL;
- apply_autocmds(EVENT_CMDWINENTER, typestr, typestr, FALSE, curbuf);
+ trigger_cmd_autocmd(cmdwin_type, EVENT_CMDWINENTER);
if (restart_edit != 0) /* autocmd with ":startinsert" */
stuffcharReadbuff(K_NOP);
# endif
@@ -6990,7 +7012,7 @@
# endif
/* Trigger CmdwinLeave autocommands. */
- apply_autocmds(EVENT_CMDWINLEAVE, typestr, typestr, FALSE, curbuf);
+ trigger_cmd_autocmd(cmdwin_type, EVENT_CMDWINLEAVE);
# ifdef FEAT_FOLDING
/* Restore KeyTyped in case it is modified by autocommands */