mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.1.0225: mode() does not indicate using CTRL-O from Insert mode
Problem: Mode() does not indicate using CTRL-O from Insert mode. Solution: Add "niI", "niR" and "niV" to mode() result. (closes #3000)
This commit is contained in:
@@ -6226,6 +6226,9 @@ mode([expr]) Return a string that indicates the current mode.
|
||||
|
||||
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
|
||||
@@ -6250,6 +6253,9 @@ mode([expr]) Return a string that indicates the current mode.
|
||||
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()*
|
||||
|
@@ -8366,10 +8366,9 @@ f_mkdir(typval_T *argvars, typval_T *rettv)
|
||||
static void
|
||||
f_mode(typval_T *argvars, typval_T *rettv)
|
||||
{
|
||||
char_u buf[3];
|
||||
char_u buf[4];
|
||||
|
||||
buf[1] = NUL;
|
||||
buf[2] = NUL;
|
||||
vim_memset(buf, 0, sizeof(buf));
|
||||
|
||||
if (time_for_testing == 93784)
|
||||
{
|
||||
@@ -8435,6 +8434,12 @@ f_mode(typval_T *argvars, typval_T *rettv)
|
||||
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
|
||||
|
@@ -464,6 +464,18 @@ func Test_mode()
|
||||
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')
|
||||
|
@@ -798,6 +798,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
225,
|
||||
/**/
|
||||
224,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user