]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.1855: mode() doesn't indicate command line for terminal v9.0.1855
authorh-east <h.east.727@gmail.com>
Sun, 3 Sep 2023 15:12:55 +0000 (17:12 +0200)
committerChristian Brabandt <cb@256bit.org>
Sun, 3 Sep 2023 15:12:55 +0000 (17:12 +0200)
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>
runtime/doc/builtin.txt
src/misc1.c
src/testdir/test_functions.vim
src/version.c

index 236454793792e9e56656cf4ec06302a74d4866d5..507347d973a1dbe56f0b242ab500f7a62cf38518 100644 (file)
@@ -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
index 72083504a37aee97fe7099fb4e4e8fc2939fd871..5b008c614a9bbfc5ae75a2f405108cc393020f8d 100644 (file)
@@ -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)
     {
index ab1dbf3b59851776833ea903567d398d3dad3aa6..654d9125bfb356e9afa1986004fc495b497ae6c8 100644 (file)
@@ -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
 
index c1f72ff9d23eccdbaf8633cae09b07e52bbc45d8..a07a2bf153c5ab7cbcd8fed8f76a4f4cbcaed176 100644 (file)
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1855,
 /**/
     1854,
 /**/