forked from aniani/vim
patch 8.2.3461: cannot distinguish Normal and Terminal-Normal mode
Problem: Cannot distinguish Normal and Terminal-Normal mode. Solution: Make mode() return "nt" for Terminal-Normal mode. (issue #8856)
This commit is contained in:
@@ -8061,7 +8061,7 @@ mode([expr]) Return a string that indicates the current mode.
|
||||
returned, otherwise only the first letter is returned.
|
||||
Also see |state()|.
|
||||
|
||||
n Normal, Terminal-Normal
|
||||
n Normal
|
||||
no Operator-pending
|
||||
nov Operator-pending (forced characterwise |o_v|)
|
||||
noV Operator-pending (forced linewise |o_V|)
|
||||
@@ -8070,6 +8070,7 @@ mode([expr]) Return a string that indicates the current mode.
|
||||
niI Normal using |i_CTRL-O| in |Insert-mode|
|
||||
niR Normal using |i_CTRL-O| in |Replace-mode|
|
||||
niV Normal using |i_CTRL-O| in |Virtual-Replace-mode|
|
||||
nt Terminal-Normal (insert goes to Terminal-Job mode)
|
||||
v Visual by character
|
||||
V Visual by line
|
||||
CTRL-V Visual blockwise
|
||||
|
@@ -712,6 +712,10 @@ f_mode(typval_T *argvars, typval_T *rettv)
|
||||
buf[1] = 'i';
|
||||
buf[2] = restart_edit;
|
||||
}
|
||||
#ifdef FEAT_TERMINAL
|
||||
else if (term_in_normal_mode())
|
||||
buf[1] = 't';
|
||||
#endif
|
||||
}
|
||||
|
||||
// Clear out the minor mode when the argument is not a non-zero number or
|
||||
|
@@ -874,6 +874,14 @@ func Test_mode()
|
||||
call assert_equal('c-ce', g:current_modes)
|
||||
" How to test Ex mode?
|
||||
|
||||
if has('terminal')
|
||||
term
|
||||
call feedkeys("\<C-W>N", 'xt')
|
||||
call assert_equal('n', mode())
|
||||
call assert_equal('nt', mode(1))
|
||||
call feedkeys("aexit\<CR>", 'xt')
|
||||
endif
|
||||
|
||||
bwipe!
|
||||
iunmap <F2>
|
||||
xunmap <F2>
|
||||
|
@@ -757,6 +757,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
3461,
|
||||
/**/
|
||||
3460,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user