summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-10-02 16:34:55 +0100
committerBram Moolenaar <Bram@vim.org>2021-10-02 16:34:55 +0100
commit72406a4bd2896915b6f541e26d41521a59b1f846 (patch)
tree8eefa9728408e73f4742c4f079ab4cd7f96f84e1
parentdfa5e464d459f84200a73d178f1ecefe75bbe511 (diff)
downloadvim-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.txt3
-rw-r--r--src/misc1.c4
-rw-r--r--src/testdir/test_functions.vim8
-rw-r--r--src/version.c2
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,