From e5b0b98a90acf420bb611fc99534982c98d0645b Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 7 Apr 2021 19:42:57 +0200 Subject: 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 #8073) --- src/ex_cmds.c | 1 + src/testdir/test_ex_mode.vim | 3 +++ src/version.c | 2 ++ 3 files changed, 6 insertions(+) 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\") + 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 index 7a865de2a1..0bf907354c 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2732, /**/ 2731, /**/ -- cgit v1.2.3