mirror of
https://github.com/neovim/neovim.git
synced 2025-09-27 13:38:34 +00:00
vim-patch:8.1.0225: mode() does not indicate using CTRL-O from Insert mode (#9644)
Problem: Mode() does not indicate using CTRL-O from Insert mode.
Solution: Add "niI", "niR" and "niV" to mode() result. (closes vim/vim#3000)
612cc3888b
This commit is contained in:
@@ -5774,6 +5774,9 @@ mode([expr]) Return a string that indicates the current mode.
|
|||||||
This is useful in the 'statusline' option or when used
|
This is useful in the 'statusline' option or when used
|
||||||
with |remote_expr()| In most other places it always returns
|
with |remote_expr()| In most other places it always returns
|
||||||
"c" or "n".
|
"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()|.
|
Also see |visualmode()|.
|
||||||
|
|
||||||
msgpackdump({list}) *msgpackdump()*
|
msgpackdump({list}) *msgpackdump()*
|
||||||
|
@@ -162,6 +162,10 @@ char *get_mode(void)
|
|||||||
buf[1] = 'o';
|
buf[1] = 'o';
|
||||||
// to be able to detect force-linewise/blockwise/characterwise operations
|
// to be able to detect force-linewise/blockwise/characterwise operations
|
||||||
buf[2] = (char)motion_force;
|
buf[2] = (char)motion_force;
|
||||||
|
} else if (restart_edit == 'I' || restart_edit == 'R'
|
||||||
|
|| restart_edit == 'V') {
|
||||||
|
buf[1] = 'i';
|
||||||
|
buf[2] = (char)restart_edit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -556,6 +556,18 @@ func Test_mode()
|
|||||||
call assert_equal('n', mode(0))
|
call assert_equal('n', mode(0))
|
||||||
call assert_equal('n', mode(1))
|
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?
|
" How to test operator-pending mode?
|
||||||
|
|
||||||
call feedkeys("v", 'xt')
|
call feedkeys("v", 'xt')
|
||||||
|
Reference in New Issue
Block a user