diff options
-rw-r--r-- | src/nvim/ex_cmds.c | 2 | ||||
-rw-r--r-- | test/functional/ui/cmdline_spec.lua | 18 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c index 073b9594ed..34217107aa 100644 --- a/src/nvim/ex_cmds.c +++ b/src/nvim/ex_cmds.c @@ -3799,6 +3799,8 @@ static int do_sub(exarg_T *eap, const proftime_T timeout, const int cmdpreview_n typed = prompt_for_input(p, HLF_R, true, NULL); xfree(p); + msg_didout = false; // don't scroll up + gotocmdline(true); p_lz = save_p_lz; RedrawingDisabled = temp; diff --git a/test/functional/ui/cmdline_spec.lua b/test/functional/ui/cmdline_spec.lua index a2722a4139..d6dd62108c 100644 --- a/test/functional/ui/cmdline_spec.lua +++ b/test/functional/ui/cmdline_spec.lua @@ -1050,6 +1050,24 @@ describe('cmdline redraw', function() {6:[Y]es, (N)o, (C)ancel: }^ | ]]) end) + + it('substitute confirm prompt does not scroll', function() + screen:try_resize(75, screen._height) + command('call setline(1, "foo")') + command('set report=0') + feed(':%s/foo/bar/c<CR>') + screen:expect([[ + {2:foo} | + {1:~ }|*3 + {6:replace with bar? (y)es/(n)o/(a)ll/(q)uit/(l)ast/scroll up(^E)/down(^Y)}^ | + ]]) + feed('y') + screen:expect([[ + ^bar | + {1:~ }|*3 + 1 substitution on 1 line | + ]]) + end) end) describe('statusline is redrawn on entering cmdline', function() |