diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-10-02 16:34:55 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-10-02 16:34:55 +0100 |
commit | 72406a4bd2896915b6f541e26d41521a59b1f846 (patch) | |
tree | 8eefa9728408e73f4742c4f079ab4cd7f96f84e1 | |
parent | dfa5e464d459f84200a73d178f1ecefe75bbe511 (diff) | |
download | vim-git-72406a4bd2896915b6f541e26d41521a59b1f846.tar.gz |
patch 8.2.3461: cannot distinguish Normal and Terminal-Normal modev8.2.3461
Problem: Cannot distinguish Normal and Terminal-Normal mode.
Solution: Make mode() return "nt" for Terminal-Normal mode. (issue #8856)
-rw-r--r-- | runtime/doc/eval.txt | 3 | ||||
-rw-r--r-- | src/misc1.c | 4 | ||||
-rw-r--r-- | src/testdir/test_functions.vim | 8 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 16 insertions, 1 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 00ba2e41b..43aae40d4 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -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 diff --git a/src/misc1.c b/src/misc1.c index 1dd07f906..b4a4a8cc7 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -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 diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim index 9a4b5975f..e8762aa6c 100644 --- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -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> diff --git a/src/version.c b/src/version.c index 9331e3492..57865cded 100644 --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3461, +/**/ 3460, /**/ 3459, |