summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorh-east <h.east.727@gmail.com>2023-09-03 17:12:55 +0200
committerChristian Brabandt <cb@256bit.org>2023-09-03 17:12:55 +0200
commit71ebf3bacaa22c841d9a8cb050c52fb21ac0970a (patch)
tree513a98d2fc72bdeb637cec71343c752cfe1ac6be
parentdb510ca8052884fd260f425025bacf44f6c92fa9 (diff)
patch 9.0.1855: mode() doesn't indicate command line for terminalv9.0.1855
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>
-rw-r--r--runtime/doc/builtin.txt1
-rw-r--r--src/misc1.c4
-rw-r--r--src/testdir/test_functions.vim10
-rw-r--r--src/version.c2
4 files changed, 17 insertions, 0 deletions
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 2364547937..507347d973 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -6408,6 +6408,7 @@ mode([expr]) Return a string that indicates the current mode.
Rvc Virtual Replace mode completion |compl-generic|
Rvx Virtual Replace mode |i_CTRL-X| completion
c Command-line editing
+ ct Command-line editing via Terminal-Job mode
cv Vim Ex mode |gQ|
ce Normal Ex mode |Q|
r Hit-enter prompt
diff --git a/src/misc1.c b/src/misc1.c
index 72083504a3..5b008c614a 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -664,7 +664,11 @@ get_mode(char_u *buf)
}
#ifdef FEAT_TERMINAL
else if (term_use_loop())
+ {
+ if (State & MODE_CMDLINE)
+ buf[i++] = 'c';
buf[i++] = 't';
+ }
#endif
else if (VIsual_active)
{
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index ab1dbf3b59..654d9125bf 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -935,9 +935,19 @@ func Test_mode()
if has('terminal')
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 assert_equal('n', mode())
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')
endif
diff --git a/src/version.c b/src/version.c
index c1f72ff9d2..a07a2bf153 100644
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1855,
+/**/
1854,
/**/
1853,