@@ -330,4 +330,36 @@ func Test_cmdline_search_range()
330330 bwipe!
331331endfunc
332332
333+ " Tests for getcmdline(), getcmdpos() and getcmdtype()
334+ func Check_cmdline (cmdtype)
335+ call assert_equal (' MyCmd a' , getcmdline ())
336+ call assert_equal (8 , getcmdpos ())
337+ call assert_equal (a: cmdtype , getcmdtype ())
338+ return ' '
339+ endfunc
340+
341+ func Test_getcmdtype ()
342+ call feedkeys (" :MyCmd a\<C-R> =Check_cmdline(':')\<CR>\<Esc> " , " xt" )
343+
344+ let cmdtype = ' '
345+ debuggreedy
346+ call feedkeys (" :debug echo 'test'\<CR> " , " t" )
347+ call feedkeys (" let cmdtype = \<C-R> =string(getcmdtype())\<CR>\<CR> " , " t" )
348+ call feedkeys (" cont\<CR> " , " xt" )
349+ 0 debuggreedy
350+ call assert_equal (' >' , cmdtype)
351+
352+ call feedkeys (" /MyCmd a\<C-R> =Check_cmdline('/')\<CR>\<Esc> " , " xt" )
353+ call feedkeys (" ?MyCmd a\<C-R> =Check_cmdline('?')\<CR>\<Esc> " , " xt" )
354+
355+ call feedkeys (" :call input('Answer?')\<CR> " , " t" )
356+ call feedkeys (" MyCmd a\<C-R> =Check_cmdline('@')\<CR>\<Esc> " , " xt" )
357+
358+ call feedkeys (" :insert\<CR> MyCmd a\<C-R> =Check_cmdline('-')\<CR>\<Esc> " , " xt" )
359+
360+ cnoremap <expr> <F6> Check_cmdline('=')
361+ call feedkeys (" a\<C-R> =MyCmd a\<F6>\<Esc>\<Esc> " , " xt" )
362+ cunmap <F6>
363+ endfunc
364+
333365set cpo &
0 commit comments