Skip to content
Permalink
Browse files

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)
  • Loading branch information...
brammool committed Jan 31, 2018
1 parent ec0557f commit 153b704e20f9c269450a7d3ea8cafcf942579ab7
Showing with 29 additions and 1 deletion.
  1. +8 −1 runtime/doc/autocmd.txt
  2. +5 −0 src/ex_getln.c
  3. +1 −0 src/fileio.c
  4. +12 −0 src/testdir/test_autocmd.vim
  5. +2 −0 src/version.c
  6. +1 −0 src/vim.h
@@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 8.0. Last change: 2017 Dec 17
*autocmd.txt* For Vim version 8.0. Last change: 2018 Jan 31


VIM REFERENCE MANUAL by Bram Moolenaar
@@ -500,6 +500,13 @@ CmdUndefined When a user command is used but it isn't
command is defined. An alternative is to
always define the user command and have it
invoke an autoloaded function. See |autoload|.
*CmdlineChanged*
CmdlineChanged After a change was made to the text inside
command line. Be careful not to mess up the
command line, it may cause Vim to lock up.
<afile> is set to a single character,
indicating the type of command-line.
|cmdwin-char|
*CmdlineEnter*
CmdlineEnter After moving the cursor to the command line,
where the user can type a command or search
@@ -1951,6 +1951,11 @@ getcmdline(
#endif

cmdline_changed:
#ifdef FEAT_AUTOCMD
/* Trigger CmdlineChanged autocommands. */
trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINECHANGED);
#endif

#ifdef FEAT_SEARCH_EXTRA
/*
* 'incsearch' highlighting.
@@ -7786,6 +7786,7 @@ static struct event_name
{"BufWritePost", EVENT_BUFWRITEPOST},
{"BufWritePre", EVENT_BUFWRITEPRE},
{"BufWriteCmd", EVENT_BUFWRITECMD},
{"CmdlineChanged", EVENT_CMDLINECHANGED},
{"CmdlineEnter", EVENT_CMDLINEENTER},
{"CmdlineLeave", EVENT_CMDLINELEAVE},
{"CmdwinEnter", EVENT_CMDWINENTER},
@@ -812,6 +812,18 @@ func Test_QuitPre()
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
@@ -771,6 +771,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1445,
/**/
1444,
/**/
@@ -1269,6 +1269,7 @@ enum auto_event
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 */

0 comments on commit 153b704

Please sign in to comment.
You can’t perform that action at this time.