Skip to content

Commit

Permalink
patch 9.0.1298: inserting register on the cmdline does not trigger in…
Browse files Browse the repository at this point in the history
…csearch

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)
  • Loading branch information
k-takata authored and brammool committed Feb 10, 2023
1 parent 962d916 commit c4b7dec
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 7 deletions.
19 changes: 12 additions & 7 deletions src/ex_getln.c
Expand Up @@ -1183,6 +1183,7 @@ cmdline_insert_reg(int *gotesc UNUSED)
{
int i;
int c;
int literally = FALSE;
#ifdef FEAT_EVAL
int save_new_cmdpos = new_cmdpos;
#endif
Expand Down Expand Up @@ -1220,7 +1221,8 @@ cmdline_insert_reg(int *gotesc UNUSED)
#endif
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
// When there was a serious error abort getting the
Expand Down Expand Up @@ -1251,8 +1253,9 @@ cmdline_insert_reg(int *gotesc UNUSED)
// remove the double quote
redrawcmd();

// The text has been stuffed, the command line didn't change yet.
return CMDLINE_NOT_CHANGED;
// The text has been stuffed, the command line didn't change yet, but it
// will change soon. The caller must take care of it.
return literally ? CMDLINE_NOT_CHANGED : CMDLINE_CHANGED;
}

/*
Expand Down Expand Up @@ -2081,11 +2084,13 @@ getcmdline_int(

case Ctrl_R: // insert register
res = cmdline_insert_reg(&gotesc);
if (res == CMDLINE_NOT_CHANGED)
goto cmdline_not_changed;
else if (res == GOTO_NORMAL_MODE)
if (res == GOTO_NORMAL_MODE)
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:
if (showmatches(&xpc, FALSE) == EXPAND_NOTHING)
Expand Down
6 changes: 6 additions & 0 deletions src/testdir/dumps/Test_hlsearch_ctrlr_1.dump
@@ -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
19 changes: 19 additions & 0 deletions src/testdir/test_hlsearch.vim
@@ -1,6 +1,7 @@
" Test for v:hlsearch

source check.vim
source screendump.vim

func Test_hlsearch()
new
Expand Down Expand Up @@ -72,4 +73,22 @@ func Test_hlsearch_eol_highlight()
bwipe!
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
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -695,6 +695,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1298,
/**/
1297,
/**/
Expand Down

0 comments on commit c4b7dec

Please sign in to comment.