summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-04-07 19:42:57 +0200
committerBram Moolenaar <Bram@vim.org>2021-04-07 19:42:57 +0200
commite5b0b98a90acf420bb611fc99534982c98d0645b (patch)
tree81013cd5e07207da723f8b27db2d0724ac1dabe4
parent8dddc1f0e2e9eeb29fc59477b515bcd6bb1243ec (diff)
patch 8.2.2732: prompt for s///c in Ex mode can be wrongv8.2.2732
Problem: Prompt for s///c in Ex mode can be wrong. Solution: Position the cursor before showing the prompt. (closes #8073)
-rw-r--r--src/ex_cmds.c1
-rw-r--r--src/testdir/test_ex_mode.vim3
-rw-r--r--src/version.c2
3 files changed, 6 insertions, 0 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 90a9403ff3..6cd54d20ce 100644
--- 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
index ffde11e3e9..a761cbf8b4 100644
--- 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\<CR>")
+ call term_wait(buf)
+ call WaitForAssert({-> assert_match(' ^^^', term_getline(buf, 6))}, 1000)
call term_sendkeys(buf, "n\<CR>")
call WaitForAssert({-> assert_match(' ^^^', term_getline(buf, 6))},
\ 1000)
diff --git a/src/version.c b/src/version.c
index 7a865de2a1..0bf907354c 100644
--- 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,