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.