mirror of
https://github.com/neovim/neovim.git
synced 2025-09-27 21:48:35 +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
|
||||
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()|.
|
||||
|
||||
msgpackdump({list}) *msgpackdump()*
|
||||
|
@@ -162,6 +162,10 @@ char *get_mode(void)
|
||||
buf[1] = 'o';
|
||||
// to be able to detect force-linewise/blockwise/characterwise operations
|
||||
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(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')
|
||||
|
Reference in New Issue
Block a user