patch 8.0.1445: cannot act on edits in the command line
Problem: Cannot act on edits in the command line.
Solution: Add the CmdlineChanged autocommand event. (xtal8, closes #2603,
closes #2524)
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 421c6b7..837d299 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1951,6 +1951,11 @@
#endif
cmdline_changed:
+#ifdef FEAT_AUTOCMD
+ /* Trigger CmdlineChanged autocommands. */
+ trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINECHANGED);
+#endif
+
#ifdef FEAT_SEARCH_EXTRA
/*
* 'incsearch' highlighting.
diff --git a/src/fileio.c b/src/fileio.c
index ba9ec9e..fb5af64 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -7786,6 +7786,7 @@
{"BufWritePost", EVENT_BUFWRITEPOST},
{"BufWritePre", EVENT_BUFWRITEPRE},
{"BufWriteCmd", EVENT_BUFWRITECMD},
+ {"CmdlineChanged", EVENT_CMDLINECHANGED},
{"CmdlineEnter", EVENT_CMDLINEENTER},
{"CmdlineLeave", EVENT_CMDLINELEAVE},
{"CmdwinEnter", EVENT_CMDWINENTER},
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index d8fddff..b7d43b5 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -812,6 +812,18 @@
endfunc
func Test_Cmdline()
+ au! CmdlineChanged : let g:text = getcmdline()
+ let g:text = 0
+ call feedkeys(":echom 'hello'\<CR>", 'xt')
+ call assert_equal("echom 'hello'", g:text)
+ au! CmdlineChanged
+
+ au! CmdlineChanged : let g:entered = expand('<afile>')
+ let g:entered = 0
+ call feedkeys(":echom 'hello'\<CR>", 'xt')
+ call assert_equal(':', g:entered)
+ au! CmdlineChanged
+
au! CmdlineEnter : let g:entered = expand('<afile>')
au! CmdlineLeave : let g:left = expand('<afile>')
let g:entered = 0
diff --git a/src/version.c b/src/version.c
index bab7736..dad2715 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1445,
+/**/
1444,
/**/
1443,
diff --git a/src/vim.h b/src/vim.h
index 4765b78..1f9671a 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1269,6 +1269,7 @@
EVENT_BUFWRITEPOST, /* after writing a buffer */
EVENT_BUFWRITEPRE, /* before writing a buffer */
EVENT_BUFWRITECMD, /* write buffer using command */
+ EVENT_CMDLINECHANGED, /* command line was modified*/
EVENT_CMDLINEENTER, /* after entering the command line */
EVENT_CMDLINELEAVE, /* before leaving the command line */
EVENT_CMDWINENTER, /* after entering the cmdline window */