fix(inccommand): skip input() during preview #35272

Problem:
During preview, the `input` still prompts the user to enter something
that won't be used later, which could be a bit confusing.
e.g., `:s/a/\=input("")`.

Solution:
Make the input() return early during 'inccommand' preview.
This commit is contained in:
tao
2025-08-12 06:39:03 +08:00
committed by GitHub
parent bc4bddbb21
commit a26cdcb20e
2 changed files with 16 additions and 0 deletions

View File

@@ -4819,6 +4819,10 @@ void get_user_input(const typval_T *const argvars, typval_T *const rettv, const
rettv->v_type = VAR_STRING;
rettv->vval.v_string = NULL;
if (cmdpreview) {
return;
}
const char *prompt;
const char *defstr = "";
typval_T *cancelreturn = NULL;

View File

@@ -2937,3 +2937,15 @@ it("'inccommand' disables preview if preview buffer can't be created #27086", fu
]])
eq('nosplit', api.nvim_get_option_value('inccommand', {}))
end)
it(':substitute with inccommand, does not show prompt during preview #11940', function()
clear()
local screen = Screen.new(30, 3)
common_setup(screen, 'split', 'foo')
feed([[:s/f/\=input("sub: ")]])
screen:expect([[
oo |
{1:~ }|
:s/f/\=input("sub: ")^ |
]])
end)