fix(options): do not change inccommand during preview (#25462)

This commit is contained in:
Omar El Halabi 2023-11-10 05:20:26 +01:00 committed by GitHub
parent cd63a9addd
commit 9af03bcd47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 0 deletions

View File

@ -1569,6 +1569,9 @@ const char *did_set_iconstring(optset_T *args)
/// The 'inccommand' option is changed. /// The 'inccommand' option is changed.
const char *did_set_inccommand(optset_T *args FUNC_ATTR_UNUSED) const char *did_set_inccommand(optset_T *args FUNC_ATTR_UNUSED)
{ {
if (cmdpreview) {
return e_invarg;
}
return did_set_opt_strings(p_icm, p_icm_values, false); return did_set_opt_strings(p_icm, p_icm_values, false);
} }

View File

@ -3167,3 +3167,31 @@ it("with 'inccommand' typing :filter doesn't segfault or leak memory #19057", fu
feed('i') feed('i')
assert_alive() assert_alive()
end) end)
it("'inccommand' cannot be changed during preview #23136", function()
clear()
local screen = Screen.new(30, 6)
common_setup(screen, 'nosplit', 'foo\nbar\nbaz')
source([[
function! IncCommandToggle()
let prev = &inccommand
if &inccommand ==# 'split'
set inccommand=nosplit
elseif &inccommand ==# 'nosplit'
set inccommand=split
elseif &inccommand ==# ''
set inccommand=nosplit
else
throw 'unknown inccommand'
endif
return " \<BS>"
endfun
cnoremap <expr> <C-E> IncCommandToggle()
]])
feed(':%s/foo/bar<C-E><C-E><C-E>')
assert_alive()
end)