Patch 8.1.0225
Problem: Mode() does not indicate using CTRL-O from Insert mode.
Solution: Add "niI", "niR" and "niV" to mode() result. (closes #3000)
Files: runtime/doc/eval.txt, src/evalfunc.c,
src/testdir/test_functions.vim
*** ../vim-8.1.0224/runtime/doc/eval.txt 2018-07-28 16:55:51.435217148
+0200
--- runtime/doc/eval.txt 2018-07-29 15:22:39.416519885 +0200
***************
*** 6223,6254 ****
a non-empty String (|non-zero-arg|), then the full mode is
returned, otherwise only the first letter is returned.
! n Normal, Terminal-Normal
! no Operator-pending
! v Visual by character
! V Visual by line
! CTRL-V Visual blockwise
! s Select by character
! S Select by line
! CTRL-S Select blockwise
! i Insert
! ic Insert mode completion |compl-generic|
! ix Insert mode |i_CTRL-X| completion
! R Replace |R|
! Rc Replace mode completion |compl-generic|
! Rv Virtual Replace |gR|
! Rx Replace mode |i_CTRL-X| completion
! c Command-line editing
! cv Vim Ex mode |gQ|
! ce Normal Ex mode |Q|
! r Hit-enter prompt
! rm The -- more -- prompt
! r? A |:confirm| query of some sort
! ! Shell or external command is executing
! t Terminal-Job mode: keys go to the job
This is useful in the 'statusline' option or when used
with |remote_expr()| In most other places it always returns
"c" or "n".
Also see |visualmode()|.
mzeval({expr})
*mzeval()*
--- 6224,6261 ----
a non-empty String (|non-zero-arg|), then the full mode is
returned, otherwise only the first letter is returned.
! n Normal, Terminal-Normal
! no Operator-pending
! 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|
! v Visual by character
! V Visual by line
! CTRL-V Visual blockwise
! s Select by character
! S Select by line
! CTRL-S Select blockwise
! i Insert
! ic Insert mode completion |compl-generic|
! ix Insert mode |i_CTRL-X| completion
! R Replace |R|
! Rc Replace mode completion |compl-generic|
! Rv Virtual Replace |gR|
! Rx Replace mode |i_CTRL-X| completion
! c Command-line editing
! cv Vim Ex mode |gQ|
! ce Normal Ex mode |Q|
! r Hit-enter prompt
! rm The -- more -- prompt
! r? A |:confirm| query of some sort
! ! Shell or external command is executing
! t Terminal-Job mode: keys go to the job
This is useful in the 'statusline' option or when used
with |remote_expr()| In most other places it always returns
"c" or "n".
+ Note that in the future more modes and more specific modes may
+ be added. It's better not to compare the whole string but only
+ the leading character(s).
Also see |visualmode()|.
mzeval({expr})
*mzeval()*
*** ../vim-8.1.0224/src/evalfunc.c 2018-07-28 16:55:51.435217148 +0200
--- src/evalfunc.c 2018-07-29 15:23:57.768058068 +0200
***************
*** 8366,8375 ****
static void
f_mode(typval_T *argvars, typval_T *rettv)
{
! char_u buf[3];
! buf[1] = NUL;
! buf[2] = NUL;
if (time_for_testing == 93784)
{
--- 8366,8374 ----
static void
f_mode(typval_T *argvars, typval_T *rettv)
{
! char_u buf[4];
! vim_memset(buf, 0, sizeof(buf));
if (time_for_testing == 93784)
{
***************
*** 8435,8440 ****
--- 8434,8445 ----
buf[0] = 'n';
if (finish_op)
buf[1] = 'o';
+ else if (restart_edit == 'I' || restart_edit == 'R'
+ || restart_edit == 'V')
+ {
+ buf[1] = 'i';
+ buf[2] = restart_edit;
+ }
}
/* Clear out the minor mode when the argument is not a non-zero number or
*** ../vim-8.1.0224/src/testdir/test_functions.vim 2018-07-22
19:36:29.251125855 +0200
--- src/testdir/test_functions.vim 2018-07-29 15:31:26.897360022 +0200
***************
*** 464,469 ****
--- 464,481 ----
call assert_equal('n', mode(0))
call assert_equal('n', mode(1))
+ " i_CTRL-O
+ exe "normal i\<C-O>:call Save_mode()\<Cr>\<Esc>"
+ call assert_equal("n-niI", g:current_modes)
+
+ " R_CTRL-O
+ exe "normal R\<C-O>:call Save_mode()\<Cr>\<Esc>"
+ call assert_equal("n-niR", g:current_modes)
+
+ " gR_CTRL-O
+ exe "normal gR\<C-O>:call Save_mode()\<Cr>\<Esc>"
+ call assert_equal("n-niV", g:current_modes)
+
" How to test operator-pending mode?
call feedkeys("v", 'xt')
*** ../vim-8.1.0224/src/version.c 2018-07-28 23:12:01.578163697 +0200
--- src/version.c 2018-07-29 15:17:05.914434445 +0200
***************
*** 800,801 ****
--- 800,803 ----
{ /* Add new patch number below this line */
+ /**/
+ 225,
/**/
--
MORTICIAN: What?
CUSTOMER: Nothing -- here's your nine pence.
DEAD PERSON: I'm not dead!
MORTICIAN: Here -- he says he's not dead!
CUSTOMER: Yes, he is.
DEAD PERSON: I'm not!
The Quest for the Holy Grail (Monty Python)
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.