diff options
-rw-r--r-- | src/nvim/eval/funcs.c | 2 | ||||
-rw-r--r-- | src/nvim/ex_getln.c | 19 | ||||
-rw-r--r-- | test/old/testdir/test_cmdline.vim | 11 |
3 files changed, 13 insertions, 19 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 4a96c9a3f3..e8b9288717 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -813,8 +813,6 @@ static void f_confirm(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) const char *message = tv_get_string_chk(&argvars[0]); if (message == NULL) { error = true; - } else { - set_prompt(message); } if (argvars[1].v_type != VAR_UNKNOWN) { buttons = tv_get_string_buf_chk(&argvars[1], buf); diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 7eb4fe67a1..69fcdac095 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -4132,26 +4132,13 @@ void f_getcmdpos(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) rettv->vval.v_number = p != NULL ? p->cmdpos + 1 : 0; } -static char current_prompt[CMDBUFFSIZE + 1] = ""; - -/// Get current command line prompt. -static char *get_prompt(void) -{ - return current_prompt; -} - -/// Set current command line prompt. -void set_prompt(const char *str) -{ - xstrlcpy(current_prompt, str, sizeof(current_prompt)); -} - /// "getcmdprompt()" function void f_getcmdprompt(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) { CmdlineInfo *p = get_ccline_ptr(); rettv->v_type = VAR_STRING; - rettv->vval.v_string = p != NULL ? xstrdup(get_prompt()) : NULL; + rettv->vval.v_string = p != NULL && p->cmdprompt != NULL + ? xstrdup(p->cmdprompt) : NULL; } /// "getcmdscreenpos()" function @@ -4752,8 +4739,6 @@ void get_user_input(const typval_T *const argvars, typval_T *const rettv, const const bool cmd_silent_save = cmd_silent; cmd_silent = false; // Want to see the prompt. - set_prompt(prompt); - // Only the part of the message after the last NL is considered as // prompt for the command line, unlsess cmdline is externalized const char *p = prompt; diff --git a/test/old/testdir/test_cmdline.vim b/test/old/testdir/test_cmdline.vim index ba71f4b785..d8a217fd05 100644 --- a/test/old/testdir/test_cmdline.vim +++ b/test/old/testdir/test_cmdline.vim @@ -1567,6 +1567,17 @@ func Test_getcmdtype_getcmdprompt() call feedkeys(":call input('Answer?')\<CR>a\<CR>\<ESC>", "xt") call assert_equal('Answer?', g:cmdprompt) call assert_equal('', getcmdprompt()) + call feedkeys(":\<CR>\<ESC>", "xt") + call assert_equal('', g:cmdprompt) + call assert_equal('', getcmdprompt()) + + let str = "C" .. repeat("c", 1023) .. "xyz" + call feedkeys(":call input('" .. str .. "')\<CR>\<CR>\<ESC>", "xt") + call assert_equal(str, g:cmdprompt) + + call feedkeys(':call input("Msg1\nMessage2\nAns?")' .. "\<CR>b\<CR>\<ESC>", "xt") + call assert_equal('Ans?', g:cmdprompt) + call assert_equal('', getcmdprompt()) augroup test_CmdlineEnter au! |