Mercurial > vim
changeset 25864:44e9d98555a9 v8.2.3466
patch 8.2.3466: completion submode not indicated for virtual replace
Commit: https://github.com/vim/vim/commit/cc8cd4453332276d55b4a1109eace5785a4f319d
Author: zeertzjq <zeertzjq@outlook.com>
Date: Sun Oct 3 15:19:14 2021 +0100
patch 8.2.3466: completion submode not indicated for virtual replace
Problem: Completion submode not indicated for virtual replace.
Solution: Add submode to "Rv". (closes https://github.com/vim/vim/issues/8945)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 03 Oct 2021 16:30:04 +0200 |
parents | 420553a4d806 |
children | cbbd4c48beed |
files | runtime/doc/eval.txt src/misc1.c src/testdir/test_functions.vim src/version.c |
diffstat | 4 files changed, 53 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -8074,22 +8074,23 @@ mode([expr]) Return a string that indica niV Normal using |i_CTRL-O| in |Virtual-Replace-mode| nt Terminal-Normal (insert goes to Terminal-Job mode) v Visual by character + vs Visual by character using |v_CTRL-O| in Select mode V Visual by line + Vs Visual by line using |v_CTRL-O| in Select mode CTRL-V Visual blockwise + CTRL-Vs Visual blockwise using |v_CTRL-O| in Select mode s Select by character S Select by line 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 ic Insert mode completion |compl-generic| ix Insert mode |i_CTRL-X| completion R Replace |R| Rc Replace mode completion |compl-generic| + Rx Replace mode |i_CTRL-X| completion Rv Virtual Replace |gR| - Rx Replace mode |i_CTRL-X| completion + Rvc Virtual Replace mode completion |compl-generic| + Rvx Virtual Replace mode |i_CTRL-X| completion c Command-line editing cv Vim Ex mode |gQ| ce Normal Ex mode |Q| @@ -8098,6 +8099,7 @@ mode([expr]) Return a string that indica 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".
--- a/src/misc1.c +++ b/src/misc1.c @@ -675,6 +675,11 @@ f_mode(typval_T *argvars, typval_T *rett { buf[0] = 'R'; buf[1] = 'v'; + + if (ins_compl_active()) + buf[2] = 'c'; + else if (ctrl_x_mode_not_defined_yet()) + buf[2] = 'x'; } else { @@ -682,6 +687,7 @@ f_mode(typval_T *argvars, typval_T *rett buf[0] = 'R'; else buf[0] = 'i'; + if (ins_compl_active()) buf[1] = 'c'; else if (ctrl_x_mode_not_defined_yet())
--- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -785,6 +785,8 @@ func Test_mode() exe "normal iabc\<C-X>\<C-L>\<F2>\<Esc>u" call assert_equal('i-ic', g:current_modes) + exe "normal R\<F2>\<Esc>" + call assert_equal('R-R', g:current_modes) " R_CTRL-P: Multiple matches exe "normal RBa\<C-P>\<F2>\<Esc>u" call assert_equal('R-Rc', g:current_modes) @@ -819,6 +821,42 @@ func Test_mode() exe "normal Rabc\<C-X>\<C-L>\<F2>\<Esc>u" call assert_equal('R-Rc', g:current_modes) + exe "normal gR\<F2>\<Esc>" + call assert_equal('R-Rv', g:current_modes) + " gR_CTRL-P: Multiple matches + exe "normal gRBa\<C-P>\<F2>\<Esc>u" + call assert_equal('R-Rvc', g:current_modes) + " gR_CTRL-P: Single match + exe "normal gRBro\<C-P>\<F2>\<Esc>u" + call assert_equal('R-Rvc', g:current_modes) + " gR_CTRL-X + exe "normal gRBa\<C-X>\<F2>\<Esc>u" + call assert_equal('R-Rvx', g:current_modes) + " gR_CTRL-X CTRL-P: Multiple matches + exe "normal gRBa\<C-X>\<C-P>\<F2>\<Esc>u" + call assert_equal('R-Rvc', g:current_modes) + " gR_CTRL-X CTRL-P: Single match + exe "normal gRBro\<C-X>\<C-P>\<F2>\<Esc>u" + call assert_equal('R-Rvc', g:current_modes) + " gR_CTRL-X CTRL-P + CTRL-P: Single match + exe "normal gRBro\<C-X>\<C-P>\<C-P>\<F2>\<Esc>u" + call assert_equal('R-Rvc', g:current_modes) + " gR_CTRL-X CTRL-L: Multiple matches + exe "normal gR\<C-X>\<C-L>\<F2>\<Esc>u" + call assert_equal('R-Rvc', g:current_modes) + " gR_CTRL-X CTRL-L: Single match + exe "normal gRBlu\<C-X>\<C-L>\<F2>\<Esc>u" + call assert_equal('R-Rvc', g:current_modes) + " gR_CTRL-P: No match + exe "normal gRCom\<C-P>\<F2>\<Esc>u" + call assert_equal('R-Rvc', g:current_modes) + " gR_CTRL-X CTRL-P: No match + exe "normal gRCom\<C-X>\<C-P>\<F2>\<Esc>u" + call assert_equal('R-Rvc', g:current_modes) + " gR_CTRL-X CTRL-L: No match + exe "normal gRabc\<C-X>\<C-L>\<F2>\<Esc>u" + call assert_equal('R-Rvc', g:current_modes) + call assert_equal('n', 0->mode()) call assert_equal('n', 1->mode())