0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 8.2.4672: using :normal with Ex mode may make :substitute hang

Problem:    Using :normal with Ex mode may make :substitute hang.
Solution:   When getting an empty line behave like 'q' was typed.
            (closes #10070)
This commit is contained in:
Bram Moolenaar 2022-04-03 12:59:34 +01:00
parent a3157a476b
commit ce416b453a
3 changed files with 16 additions and 0 deletions

View File

@ -4233,6 +4233,11 @@ ex_substitute(exarg_T *eap)
{
typed = *resp;
vim_free(resp);
// When ":normal" runs out of characters we get
// an empty line. Use "q" to get out of the
// loop.
if (ex_normal_busy && typed == NUL)
typed = 'q';
}
}
else

View File

@ -2641,6 +2641,15 @@ func Test_normal33_g_cmd2()
bw!
endfunc
func Test_normal_ex_substitute()
" This was hanging on the substitute prompt.
new
call setline(1, 'a')
exe "normal! gggQs/a/b/c\<CR>"
call assert_equal('a', getline(1))
bwipe!
endfunc
" Test for g CTRL-G
func Test_g_ctrl_g()
new

View File

@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4672,
/**/
4671,
/**/