0
0
mirror of https://github.com/vim/vim.git synced 2025-09-26 04:04:07 -04:00

patch 8.2.3236: mode() does not indicate using CTRL-O in Select mode

Problem:    mode() does not indicate using CTRL-O in Select mode.
Solution:   Use "vs" and similar. (closes #8640)
This commit is contained in:
zeertzjq
2021-07-28 16:51:53 +02:00
committed by Bram Moolenaar
parent 6868634abd
commit eaf3f36168
6 changed files with 22 additions and 1 deletions

View File

@@ -7978,6 +7978,10 @@ mode([expr]) Return a string that indicates the current mode.
s Select by character s Select by character
S Select by line S Select by line
CTRL-S Select blockwise CTRL-S Select blockwise
vs Visual by character using |v_CTRL-O| from
Select mode
Vs Visual by line using |v_CTRL-O| from Select mode
CTRL-Vs Visual blockwise using |v_CTRL-O| from Select mode
i Insert i Insert
ic Insert mode completion |compl-generic| ic Insert mode completion |compl-generic|
ix Insert mode |i_CTRL-X| completion ix Insert mode |i_CTRL-X| completion

View File

@@ -882,6 +882,8 @@ EXTERN int VIsual_active INIT(= FALSE);
// whether Visual mode is active // whether Visual mode is active
EXTERN int VIsual_select INIT(= FALSE); EXTERN int VIsual_select INIT(= FALSE);
// whether Select mode is active // whether Select mode is active
EXTERN int restart_VIsual_select INIT(= 0);
// restart Select mode when next cmd finished
EXTERN int VIsual_reselect; EXTERN int VIsual_reselect;
// whether to restart the selection after a // whether to restart the selection after a
// Select mode mapping or menu // Select mode mapping or menu

View File

@@ -652,7 +652,11 @@ f_mode(typval_T *argvars, typval_T *rettv)
if (VIsual_select) if (VIsual_select)
buf[0] = VIsual_mode + 's' - 'v'; buf[0] = VIsual_mode + 's' - 'v';
else else
{
buf[0] = VIsual_mode; buf[0] = VIsual_mode;
if (restart_VIsual_select)
buf[1] = 's';
}
} }
else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE
|| State == CONFIRM) || State == CONFIRM)

View File

@@ -15,7 +15,6 @@
#include "vim.h" #include "vim.h"
static int VIsual_mode_orig = NUL; // saved Visual mode static int VIsual_mode_orig = NUL; // saved Visual mode
static int restart_VIsual_select = 0;
#ifdef FEAT_EVAL #ifdef FEAT_EVAL
static void set_vcount_ca(cmdarg_T *cap, int *set_prevcount); static void set_vcount_ca(cmdarg_T *cap, int *set_prevcount);

View File

@@ -746,6 +746,7 @@ func Test_mode()
set complete=. set complete=.
inoremap <F2> <C-R>=Save_mode()<CR> inoremap <F2> <C-R>=Save_mode()<CR>
xnoremap <F2> <Cmd>call Save_mode()<CR>
normal! 3G normal! 3G
exe "normal i\<F2>\<Esc>" exe "normal i\<F2>\<Esc>"
@@ -857,6 +858,14 @@ func Test_mode()
call assert_equal("\<C-S>", mode(1)) call assert_equal("\<C-S>", mode(1))
call feedkeys("\<Esc>", 'xt') call feedkeys("\<Esc>", 'xt')
" v_CTRL-O
exe "normal gh\<C-O>\<F2>\<Esc>"
call assert_equal("v-vs", g:current_modes)
exe "normal gH\<C-O>\<F2>\<Esc>"
call assert_equal("V-Vs", g:current_modes)
exe "normal g\<C-H>\<C-O>\<F2>\<Esc>"
call assert_equal("\<C-V>-\<C-V>s", g:current_modes)
call feedkeys(":echo \<C-R>=Save_mode()\<C-U>\<CR>", 'xt') call feedkeys(":echo \<C-R>=Save_mode()\<C-U>\<CR>", 'xt')
call assert_equal('c-c', g:current_modes) call assert_equal('c-c', g:current_modes)
call feedkeys("gQecho \<C-R>=Save_mode()\<CR>\<CR>vi\<CR>", 'xt') call feedkeys("gQecho \<C-R>=Save_mode()\<CR>\<CR>vi\<CR>", 'xt')
@@ -867,6 +876,7 @@ func Test_mode()
bwipe! bwipe!
iunmap <F2> iunmap <F2>
xunmap <F2>
set complete& set complete&
endfunc endfunc

View File

@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
3236,
/**/ /**/
3235, 3235,
/**/ /**/