patch 9.0.1855: mode() doesn't indicate command line for terminal

Commit: 
https://github.com/vim/vim/commit/71ebf3bacaa22c841d9a8cb050c52fb21ac0970a
Author: h-east <h.east....@gmail.com>
Date:   Sun Sep 3 17:12:55 2023 +0200

    patch 9.0.1855: mode() doesn't indicate command line for terminal
    
    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 <c...@256bit.org>
    Co-authored-by: h-east <h.east....@gmail.com>

diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 236454793..507347d97 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 72083504a..5b008c614 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 ab1dbf3b5..654d9125b 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 c1f72ff9d..a07a2bf15 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1855,
 /**/
     1854,
 /**/

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcp35-00Dfdo-3J%40256bit.org.

Raspunde prin e-mail lui