# HG changeset patch # User Bram Moolenaar # Date 1617817504 -7200 # Node ID ea2b697ddea8f7380e349bf89609e4c06bba1452 # Parent ba12300088d41e2c01d78ce7ea5a85ba1cf5e9f9 patch 8.2.2732: prompt for s///c in Ex mode can be wrong Commit: https://github.com/vim/vim/commit/e5b0b98a90acf420bb611fc99534982c98d0645b Author: Bram Moolenaar Date: Wed Apr 7 19:42:57 2021 +0200 patch 8.2.2732: prompt for s///c in Ex mode can be wrong Problem: Prompt for s///c in Ex mode can be wrong. Solution: Position the cursor before showing the prompt. (closes https://github.com/vim/vim/issues/8073) diff --git a/src/ex_cmds.c b/src/ex_cmds.c --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -4153,6 +4153,7 @@ ex_substitute(exarg_T *eap) if (curwin->w_cursor.col < 0) curwin->w_cursor.col = 0; getvcol(curwin, &curwin->w_cursor, NULL, NULL, &ec); + curwin->w_cursor.col = regmatch.startpos[0].col; if (subflags.do_number || curwin->w_p_nu) { int numw = number_width(curwin) + 1; diff --git a/src/testdir/test_ex_mode.vim b/src/testdir/test_ex_mode.vim --- a/src/testdir/test_ex_mode.vim +++ b/src/testdir/test_ex_mode.vim @@ -77,6 +77,9 @@ func Test_Ex_substitute() call WaitForAssert({-> assert_match(' 1 foo foo', term_getline(buf, 5))}, \ 1000) call WaitForAssert({-> assert_match(' ^^^', term_getline(buf, 6))}, 1000) + call term_sendkeys(buf, "N\") + call term_wait(buf) + call WaitForAssert({-> assert_match(' ^^^', term_getline(buf, 6))}, 1000) call term_sendkeys(buf, "n\") call WaitForAssert({-> assert_match(' ^^^', term_getline(buf, 6))}, \ 1000) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2732, +/**/ 2731, /**/ 2730,