1
0
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:
Bram Moolenaar
2021-10-02 16:34:55 +01:00
parent dfa5e464d4
commit 72406a4bd2
4 changed files with 16 additions and 1 deletions

View File

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

View File

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

View File

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

View File

@@ -757,6 +757,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3461,
/**/
3460,
/**/