0
0
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:
h-east
2023-09-03 17:12:55 +02:00
committed by Christian Brabandt
parent db510ca805
commit 71ebf3baca
4 changed files with 17 additions and 0 deletions

View File

@@ -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

View File

@@ -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)
{ {

View File

@@ -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

View File

@@ -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,
/**/ /**/