mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
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)
This commit is contained in:
@@ -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
|
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
|
command is defined. An alternative is to
|
||||||
always define the user command and have it
|
always define the user command and have it
|
||||||
invoke an autoloaded function. See |autoload|.
|
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*
|
||||||
CmdlineEnter After moving the cursor to the command line,
|
CmdlineEnter After moving the cursor to the command line,
|
||||||
where the user can type a command or search
|
where the user can type a command or search
|
||||||
|
@@ -1951,6 +1951,11 @@ cmdline_not_changed:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
cmdline_changed:
|
cmdline_changed:
|
||||||
|
#ifdef FEAT_AUTOCMD
|
||||||
|
/* Trigger CmdlineChanged autocommands. */
|
||||||
|
trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINECHANGED);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef FEAT_SEARCH_EXTRA
|
#ifdef FEAT_SEARCH_EXTRA
|
||||||
/*
|
/*
|
||||||
* 'incsearch' highlighting.
|
* 'incsearch' highlighting.
|
||||||
|
@@ -7786,6 +7786,7 @@ static struct event_name
|
|||||||
{"BufWritePost", EVENT_BUFWRITEPOST},
|
{"BufWritePost", EVENT_BUFWRITEPOST},
|
||||||
{"BufWritePre", EVENT_BUFWRITEPRE},
|
{"BufWritePre", EVENT_BUFWRITEPRE},
|
||||||
{"BufWriteCmd", EVENT_BUFWRITECMD},
|
{"BufWriteCmd", EVENT_BUFWRITECMD},
|
||||||
|
{"CmdlineChanged", EVENT_CMDLINECHANGED},
|
||||||
{"CmdlineEnter", EVENT_CMDLINEENTER},
|
{"CmdlineEnter", EVENT_CMDLINEENTER},
|
||||||
{"CmdlineLeave", EVENT_CMDLINELEAVE},
|
{"CmdlineLeave", EVENT_CMDLINELEAVE},
|
||||||
{"CmdwinEnter", EVENT_CMDWINENTER},
|
{"CmdwinEnter", EVENT_CMDWINENTER},
|
||||||
|
@@ -812,6 +812,18 @@ func Test_QuitPre()
|
|||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_Cmdline()
|
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! CmdlineEnter : let g:entered = expand('<afile>')
|
||||||
au! CmdlineLeave : let g:left = expand('<afile>')
|
au! CmdlineLeave : let g:left = expand('<afile>')
|
||||||
let g:entered = 0
|
let g:entered = 0
|
||||||
|
@@ -771,6 +771,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1445,
|
||||||
/**/
|
/**/
|
||||||
1444,
|
1444,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -1269,6 +1269,7 @@ enum auto_event
|
|||||||
EVENT_BUFWRITEPOST, /* after writing a buffer */
|
EVENT_BUFWRITEPOST, /* after writing a buffer */
|
||||||
EVENT_BUFWRITEPRE, /* before writing a buffer */
|
EVENT_BUFWRITEPRE, /* before writing a buffer */
|
||||||
EVENT_BUFWRITECMD, /* write buffer using command */
|
EVENT_BUFWRITECMD, /* write buffer using command */
|
||||||
|
EVENT_CMDLINECHANGED, /* command line was modified*/
|
||||||
EVENT_CMDLINEENTER, /* after entering the command line */
|
EVENT_CMDLINEENTER, /* after entering the command line */
|
||||||
EVENT_CMDLINELEAVE, /* before leaving the command line */
|
EVENT_CMDLINELEAVE, /* before leaving the command line */
|
||||||
EVENT_CMDWINENTER, /* after entering the cmdline window */
|
EVENT_CMDWINENTER, /* after entering the cmdline window */
|
||||||
|
Reference in New Issue
Block a user