mirror of
https://github.com/neovim/neovim.git
synced 2024-12-23 20:55:18 -07:00
Merge pull request #30489 from zeertzjq/vim-9.1.0741
vim-patch:9.1.{0741,0742}: No way to get prompt for input()/confirm()
This commit is contained in:
commit
efcfcb1efc
26
runtime/doc/builtin.txt
generated
26
runtime/doc/builtin.txt
generated
@ -2361,18 +2361,18 @@ getcmdcompltype() *getcmdcompltype()*
|
||||
Only works when the command line is being edited, thus
|
||||
requires use of |c_CTRL-\_e| or |c_CTRL-R_=|.
|
||||
See |:command-completion| for the return string.
|
||||
Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()| and
|
||||
|setcmdline()|.
|
||||
Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()|,
|
||||
|getcmdprompt()| and |setcmdline()|.
|
||||
Returns an empty string when completion is not defined.
|
||||
|
||||
getcmdline() *getcmdline()*
|
||||
Return the current command-line. Only works when the command
|
||||
line is being edited, thus requires use of |c_CTRL-\_e| or
|
||||
|c_CTRL-R_=|.
|
||||
Return the current command-line input. Only works when the
|
||||
command line is being edited, thus requires use of
|
||||
|c_CTRL-\_e| or |c_CTRL-R_=|.
|
||||
Example: >vim
|
||||
cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
|
||||
< Also see |getcmdtype()|, |getcmdpos()|, |setcmdpos()| and
|
||||
|setcmdline()|.
|
||||
< Also see |getcmdtype()|, |getcmdpos()|, |setcmdpos()|,
|
||||
|getcmdprompt()| and |setcmdline()|.
|
||||
Returns an empty string when entering a password or using
|
||||
|inputsecret()|.
|
||||
|
||||
@ -2382,8 +2382,16 @@ getcmdpos() *getcmdpos()*
|
||||
Only works when editing the command line, thus requires use of
|
||||
|c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
|
||||
Returns 0 otherwise.
|
||||
Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()| and
|
||||
|setcmdline()|.
|
||||
Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()|,
|
||||
|getcmdprompt()| and |setcmdline()|.
|
||||
|
||||
getcmdprompt() *getcmdprompt()*
|
||||
Return the current command-line prompt when using functions
|
||||
like |input()| or |confirm()|.
|
||||
Only works when the command line is being edited, thus
|
||||
requires use of |c_CTRL-\_e| or |c_CTRL-R_=|.
|
||||
Also see |getcmdtype()|, |getcmdline()|, |getcmdpos()|,
|
||||
|setcmdpos()| and |setcmdline()|.
|
||||
|
||||
getcmdscreenpos() *getcmdscreenpos()*
|
||||
Return the screen position of the cursor in the command line
|
||||
|
@ -908,7 +908,8 @@ Buffers, windows and the argument list:
|
||||
Command line: *command-line-functions*
|
||||
getcmdcompltype() get the type of the current command line
|
||||
completion
|
||||
getcmdline() get the current command line
|
||||
getcmdline() get the current command line input
|
||||
getcmdprompt() get the current command line prompt
|
||||
getcmdpos() get position of the cursor in the command line
|
||||
getcmdscreenpos() get screen position of the cursor in the
|
||||
command line
|
||||
|
28
runtime/lua/vim/_meta/vimfn.lua
generated
28
runtime/lua/vim/_meta/vimfn.lua
generated
@ -2883,20 +2883,20 @@ function vim.fn.getcharstr(expr) end
|
||||
--- Only works when the command line is being edited, thus
|
||||
--- requires use of |c_CTRL-\_e| or |c_CTRL-R_=|.
|
||||
--- See |:command-completion| for the return string.
|
||||
--- Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()| and
|
||||
--- |setcmdline()|.
|
||||
--- Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()|,
|
||||
--- |getcmdprompt()| and |setcmdline()|.
|
||||
--- Returns an empty string when completion is not defined.
|
||||
---
|
||||
--- @return string
|
||||
function vim.fn.getcmdcompltype() end
|
||||
|
||||
--- Return the current command-line. Only works when the command
|
||||
--- line is being edited, thus requires use of |c_CTRL-\_e| or
|
||||
--- |c_CTRL-R_=|.
|
||||
--- Return the current command-line input. Only works when the
|
||||
--- command line is being edited, thus requires use of
|
||||
--- |c_CTRL-\_e| or |c_CTRL-R_=|.
|
||||
--- Example: >vim
|
||||
--- cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
|
||||
--- <Also see |getcmdtype()|, |getcmdpos()|, |setcmdpos()| and
|
||||
--- |setcmdline()|.
|
||||
--- <Also see |getcmdtype()|, |getcmdpos()|, |setcmdpos()|,
|
||||
--- |getcmdprompt()| and |setcmdline()|.
|
||||
--- Returns an empty string when entering a password or using
|
||||
--- |inputsecret()|.
|
||||
---
|
||||
@ -2908,12 +2908,22 @@ function vim.fn.getcmdline() end
|
||||
--- Only works when editing the command line, thus requires use of
|
||||
--- |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
|
||||
--- Returns 0 otherwise.
|
||||
--- Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()| and
|
||||
--- |setcmdline()|.
|
||||
--- Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()|,
|
||||
--- |getcmdprompt()| and |setcmdline()|.
|
||||
---
|
||||
--- @return integer
|
||||
function vim.fn.getcmdpos() end
|
||||
|
||||
--- Return the current command-line prompt when using functions
|
||||
--- like |input()| or |confirm()|.
|
||||
--- Only works when the command line is being edited, thus
|
||||
--- requires use of |c_CTRL-\_e| or |c_CTRL-R_=|.
|
||||
--- Also see |getcmdtype()|, |getcmdline()|, |getcmdpos()|,
|
||||
--- |setcmdpos()| and |setcmdline()|.
|
||||
---
|
||||
--- @return string
|
||||
function vim.fn.getcmdprompt() end
|
||||
|
||||
--- Return the screen position of the cursor in the command line
|
||||
--- as a byte count. The first column is 1.
|
||||
--- Instead of |getcmdpos()|, it adds the prompt position.
|
||||
|
@ -3594,8 +3594,8 @@ M.funcs = {
|
||||
Only works when the command line is being edited, thus
|
||||
requires use of |c_CTRL-\_e| or |c_CTRL-R_=|.
|
||||
See |:command-completion| for the return string.
|
||||
Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()| and
|
||||
|setcmdline()|.
|
||||
Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()|,
|
||||
|getcmdprompt()| and |setcmdline()|.
|
||||
Returns an empty string when completion is not defined.
|
||||
]=],
|
||||
name = 'getcmdcompltype',
|
||||
@ -3605,13 +3605,13 @@ M.funcs = {
|
||||
},
|
||||
getcmdline = {
|
||||
desc = [=[
|
||||
Return the current command-line. Only works when the command
|
||||
line is being edited, thus requires use of |c_CTRL-\_e| or
|
||||
|c_CTRL-R_=|.
|
||||
Return the current command-line input. Only works when the
|
||||
command line is being edited, thus requires use of
|
||||
|c_CTRL-\_e| or |c_CTRL-R_=|.
|
||||
Example: >vim
|
||||
cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
|
||||
<Also see |getcmdtype()|, |getcmdpos()|, |setcmdpos()| and
|
||||
|setcmdline()|.
|
||||
<Also see |getcmdtype()|, |getcmdpos()|, |setcmdpos()|,
|
||||
|getcmdprompt()| and |setcmdline()|.
|
||||
Returns an empty string when entering a password or using
|
||||
|inputsecret()|.
|
||||
]=],
|
||||
@ -3627,14 +3627,28 @@ M.funcs = {
|
||||
Only works when editing the command line, thus requires use of
|
||||
|c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping.
|
||||
Returns 0 otherwise.
|
||||
Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()| and
|
||||
|setcmdline()|.
|
||||
Also see |getcmdtype()|, |setcmdpos()|, |getcmdline()|,
|
||||
|getcmdprompt()| and |setcmdline()|.
|
||||
]=],
|
||||
name = 'getcmdpos',
|
||||
params = {},
|
||||
returns = 'integer',
|
||||
signature = 'getcmdpos()',
|
||||
},
|
||||
getcmdprompt = {
|
||||
desc = [=[
|
||||
Return the current command-line prompt when using functions
|
||||
like |input()| or |confirm()|.
|
||||
Only works when the command line is being edited, thus
|
||||
requires use of |c_CTRL-\_e| or |c_CTRL-R_=|.
|
||||
Also see |getcmdtype()|, |getcmdline()|, |getcmdpos()|,
|
||||
|setcmdpos()| and |setcmdline()|.
|
||||
]=],
|
||||
name = 'getcmdprompt',
|
||||
params = {},
|
||||
returns = 'string',
|
||||
signature = 'getcmdprompt()',
|
||||
},
|
||||
getcmdscreenpos = {
|
||||
desc = [=[
|
||||
Return the screen position of the cursor in the command line
|
||||
|
@ -4132,6 +4132,15 @@ void f_getcmdpos(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
||||
rettv->vval.v_number = p != NULL ? p->cmdpos + 1 : 0;
|
||||
}
|
||||
|
||||
/// "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 && p->cmdprompt != NULL
|
||||
? xstrdup(p->cmdprompt) : NULL;
|
||||
}
|
||||
|
||||
/// "getcmdscreenpos()" function
|
||||
void f_getcmdscreenpos(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
||||
{
|
||||
|
@ -1534,7 +1534,7 @@ endfunc
|
||||
|
||||
set cpo&
|
||||
|
||||
func Test_getcmdtype()
|
||||
func Test_getcmdtype_getcmdprompt()
|
||||
call feedkeys(":MyCmd a\<C-R>=Check_cmdline(':')\<CR>\<Esc>", "xt")
|
||||
|
||||
let cmdtype = ''
|
||||
@ -1558,6 +1558,31 @@ func Test_getcmdtype()
|
||||
cunmap <F6>
|
||||
|
||||
call assert_equal('', getcmdline())
|
||||
|
||||
call assert_equal('', getcmdprompt())
|
||||
augroup test_CmdlineEnter
|
||||
autocmd!
|
||||
autocmd CmdlineEnter * let g:cmdprompt=getcmdprompt()
|
||||
augroup END
|
||||
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!
|
||||
augroup END
|
||||
augroup! test_CmdlineEnter
|
||||
endfunc
|
||||
|
||||
func Test_getcmdwintype()
|
||||
|
Loading…
Reference in New Issue
Block a user