mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 9.0.1855: mode() doesn't indicate command line for terminal
Problem: mode() doesn't indicate command line for terminal Solution: make it return 'ct' for command-line from Terminal mode closes: #6265 closes: #13017 closes: #13018 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: h-east <h.east.727@gmail.com>
This commit is contained in:
committed by
Christian Brabandt
parent
db510ca805
commit
71ebf3baca
@@ -6408,6 +6408,7 @@ mode([expr]) Return a string that indicates the current mode.
|
|||||||
Rvc Virtual Replace mode completion |compl-generic|
|
Rvc Virtual Replace mode completion |compl-generic|
|
||||||
Rvx Virtual Replace mode |i_CTRL-X| completion
|
Rvx Virtual Replace mode |i_CTRL-X| completion
|
||||||
c Command-line editing
|
c Command-line editing
|
||||||
|
ct Command-line editing via Terminal-Job mode
|
||||||
cv Vim Ex mode |gQ|
|
cv Vim Ex mode |gQ|
|
||||||
ce Normal Ex mode |Q|
|
ce Normal Ex mode |Q|
|
||||||
r Hit-enter prompt
|
r Hit-enter prompt
|
||||||
|
@@ -664,7 +664,11 @@ get_mode(char_u *buf)
|
|||||||
}
|
}
|
||||||
#ifdef FEAT_TERMINAL
|
#ifdef FEAT_TERMINAL
|
||||||
else if (term_use_loop())
|
else if (term_use_loop())
|
||||||
|
{
|
||||||
|
if (State & MODE_CMDLINE)
|
||||||
|
buf[i++] = 'c';
|
||||||
buf[i++] = 't';
|
buf[i++] = 't';
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
else if (VIsual_active)
|
else if (VIsual_active)
|
||||||
{
|
{
|
||||||
|
@@ -935,9 +935,19 @@ func Test_mode()
|
|||||||
|
|
||||||
if has('terminal')
|
if has('terminal')
|
||||||
term
|
term
|
||||||
|
" Terminal-Job mode
|
||||||
|
call assert_equal('t', mode())
|
||||||
|
call assert_equal('t', mode(1))
|
||||||
|
call feedkeys("\<C-W>:echo \<C-R>=Save_mode()\<C-U>\<CR>", 'xt')
|
||||||
|
call assert_equal("c-ct", g:current_modes)
|
||||||
|
call feedkeys("\<Esc>", 'xt')
|
||||||
|
|
||||||
|
" Terminal-Normal mode
|
||||||
call feedkeys("\<C-W>N", 'xt')
|
call feedkeys("\<C-W>N", 'xt')
|
||||||
call assert_equal('n', mode())
|
call assert_equal('n', mode())
|
||||||
call assert_equal('nt', mode(1))
|
call assert_equal('nt', mode(1))
|
||||||
|
call feedkeys(":echo \<C-R>=Save_mode()\<C-U>\<CR>", 'xt')
|
||||||
|
call assert_equal("c-c", g:current_modes)
|
||||||
call feedkeys("aexit\<CR>", 'xt')
|
call feedkeys("aexit\<CR>", 'xt')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@@ -699,6 +699,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1855,
|
||||||
/**/
|
/**/
|
||||||
1854,
|
1854,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user