neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 34344b939c060d36db719f17088639744ca61c94
parent 22fd52325bf60cadaf24bca328a602764f53d6a9
Author: luukvbaal <luukvbaal@gmail.com>
Date:   Wed, 22 Jan 2025 16:36:57 +0100

fix(editor): avoid scrolling :substitute confirm message #32149

Regression from 48e2a73.
Diffstat:
Msrc/nvim/ex_cmds.c | 2++
Mtest/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 @@ -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 @@ -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()