mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 9.0.1298: inserting register on the cmdline does not trigger incsearch
Problem: Inserting a register on the command line does not trigger incsearch or update hlsearch. Solution: Have cmdline_insert_reg() return CMDLINE_CHANGED when appropriate and handle it correctly. (Ken Takata, closes #11960)
This commit is contained in:
@@ -1183,6 +1183,7 @@ cmdline_insert_reg(int *gotesc UNUSED)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int c;
|
int c;
|
||||||
|
int literally = FALSE;
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
int save_new_cmdpos = new_cmdpos;
|
int save_new_cmdpos = new_cmdpos;
|
||||||
#endif
|
#endif
|
||||||
@@ -1220,7 +1221,8 @@ cmdline_insert_reg(int *gotesc UNUSED)
|
|||||||
#endif
|
#endif
|
||||||
if (c != ESC) // use ESC to cancel inserting register
|
if (c != ESC) // use ESC to cancel inserting register
|
||||||
{
|
{
|
||||||
cmdline_paste(c, i == Ctrl_R, FALSE);
|
literally = i == Ctrl_R;
|
||||||
|
cmdline_paste(c, literally, FALSE);
|
||||||
|
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
// When there was a serious error abort getting the
|
// When there was a serious error abort getting the
|
||||||
@@ -1251,8 +1253,9 @@ cmdline_insert_reg(int *gotesc UNUSED)
|
|||||||
// remove the double quote
|
// remove the double quote
|
||||||
redrawcmd();
|
redrawcmd();
|
||||||
|
|
||||||
// The text has been stuffed, the command line didn't change yet.
|
// The text has been stuffed, the command line didn't change yet, but it
|
||||||
return CMDLINE_NOT_CHANGED;
|
// will change soon. The caller must take care of it.
|
||||||
|
return literally ? CMDLINE_NOT_CHANGED : CMDLINE_CHANGED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -2081,11 +2084,13 @@ getcmdline_int(
|
|||||||
|
|
||||||
case Ctrl_R: // insert register
|
case Ctrl_R: // insert register
|
||||||
res = cmdline_insert_reg(&gotesc);
|
res = cmdline_insert_reg(&gotesc);
|
||||||
if (res == CMDLINE_NOT_CHANGED)
|
if (res == GOTO_NORMAL_MODE)
|
||||||
goto cmdline_not_changed;
|
|
||||||
else if (res == GOTO_NORMAL_MODE)
|
|
||||||
goto returncmd;
|
goto returncmd;
|
||||||
goto cmdline_changed;
|
#ifdef FEAT_SEARCH_EXTRA
|
||||||
|
if (res == CMDLINE_NOT_CHANGED)
|
||||||
|
is_state.incsearch_postponed = TRUE;
|
||||||
|
#endif
|
||||||
|
goto cmdline_not_changed;
|
||||||
|
|
||||||
case Ctrl_D:
|
case Ctrl_D:
|
||||||
if (showmatches(&xpc, FALSE) == EXPAND_NOTHING)
|
if (showmatches(&xpc, FALSE) == EXPAND_NOTHING)
|
||||||
|
6
src/testdir/dumps/Test_hlsearch_ctrlr_1.dump
Normal file
6
src/testdir/dumps/Test_hlsearch_ctrlr_1.dump
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
| +0&#ffffff0@59
|
||||||
|
|t+1&&|e|x|t| +0&&@55
|
||||||
|
|~+0#4040ff13&| @58
|
||||||
|
|~| @58
|
||||||
|
|~| @58
|
||||||
|
|/+0#0000000&|t|e|x|t> @54
|
@@ -1,6 +1,7 @@
|
|||||||
" Test for v:hlsearch
|
" Test for v:hlsearch
|
||||||
|
|
||||||
source check.vim
|
source check.vim
|
||||||
|
source screendump.vim
|
||||||
|
|
||||||
func Test_hlsearch()
|
func Test_hlsearch()
|
||||||
new
|
new
|
||||||
@@ -72,4 +73,22 @@ func Test_hlsearch_eol_highlight()
|
|||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_hlsearch_Ctrl_R()
|
||||||
|
CheckRunVimInTerminal
|
||||||
|
|
||||||
|
let lines =<< trim END
|
||||||
|
set incsearch hlsearch
|
||||||
|
let @" = "text"
|
||||||
|
put
|
||||||
|
END
|
||||||
|
call writefile(lines, 'XhlsearchCtrlR', 'D')
|
||||||
|
let buf = RunVimInTerminal('-S XhlsearchCtrlR', #{rows: 6, cols: 60})
|
||||||
|
|
||||||
|
call term_sendkeys(buf, "/\<C-R>\<C-R>\"")
|
||||||
|
call VerifyScreenDump(buf, 'Test_hlsearch_ctrlr_1', {})
|
||||||
|
|
||||||
|
call term_sendkeys(buf, "\<Esc>")
|
||||||
|
call StopVimInTerminal(buf)
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -695,6 +695,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 */
|
||||||
|
/**/
|
||||||
|
1298,
|
||||||
/**/
|
/**/
|
||||||
1297,
|
1297,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user