forked from aniani/vim
patch 9.0.0285: it is not easy to change the command line from a plugin
Problem: It is not easy to change the command line from a plugin. Solution: Add setcmdline(). (Shougo Matsushita, closes #10869)
This commit is contained in:
committed by
Bram Moolenaar
parent
5ff595d9db
commit
07ea5f1509
@@ -3262,4 +3262,44 @@ func Test_wildmenu_pum_disable_while_shown()
|
||||
set wildoptions& wildmenu&
|
||||
endfunc
|
||||
|
||||
func Test_setcmdline()
|
||||
func SetText(text, pos)
|
||||
call assert_equal(0, setcmdline(a:text))
|
||||
call assert_equal(a:text, getcmdline())
|
||||
call assert_equal(len(a:text) + 1, getcmdpos())
|
||||
|
||||
call assert_equal(0, setcmdline(a:text, a:pos))
|
||||
call assert_equal(a:text, getcmdline())
|
||||
call assert_equal(a:pos, getcmdpos())
|
||||
|
||||
call assert_fails('call setcmdline("' .. a:text .. '", -1)', 'E487:')
|
||||
call assert_fails('call setcmdline({}, 0)', 'E928:')
|
||||
call assert_fails('call setcmdline("' .. a:text .. '", {})', 'E728:')
|
||||
|
||||
return ''
|
||||
endfunc
|
||||
|
||||
call feedkeys(":\<C-R>=SetText('set rtp?', 2)\<CR>\<CR>", 'xt')
|
||||
call assert_equal('set rtp?', @:)
|
||||
|
||||
" setcmdline() returns 1 when not editing the command line.
|
||||
call assert_equal(1, 'foo'->setcmdline())
|
||||
|
||||
" Called in custom function
|
||||
func CustomComplete(A, L, P)
|
||||
call assert_equal(0, setcmdline("DoCmd "))
|
||||
return "January\nFebruary\nMars\n"
|
||||
endfunc
|
||||
|
||||
com! -nargs=* -complete=custom,CustomComplete DoCmd :
|
||||
call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_equal('"DoCmd January February Mars', @:)
|
||||
|
||||
" Called in <expr>
|
||||
cnoremap <expr>a setcmdline('let foo=')
|
||||
call feedkeys(":a\<CR>", 'tx')
|
||||
call assert_equal('let foo=0', @:)
|
||||
cunmap a
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
||||
Reference in New Issue
Block a user