From 34344b939c060d36db719f17088639744ca61c94 Mon Sep 17 00:00:00 2001 From: luukvbaal Date: Wed, 22 Jan 2025 16:36:57 +0100 Subject: fix(editor): avoid scrolling :substitute confirm message #32149 Regression from 48e2a73. --- src/nvim/ex_cmds.c | 2 ++ test/functional/ui/cmdline_spec.lua | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) 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') + 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() -- cgit