0
0
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:
K.Takata
2023-02-10 21:38:44 +00:00
committed by Bram Moolenaar
parent 962d916435
commit c4b7dec382
4 changed files with 39 additions and 7 deletions

View File

@@ -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
@@ -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
@@ -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;
}
/*
@@ -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)