forked from aniani/vim
patch 9.0.2178: reg_executing() wrong for :normal with range
Problem: reg_executing() returns wrong result in :normal with range when 'showcmd' is set (after 8.2.4705). Solution: Reset "pending_end_reg_executing" when executing a register. closes: #13707 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
ec14924368
commit
615202bd0e
@@ -1377,7 +1377,7 @@ EXTERN int ex_no_reprint INIT(= FALSE); // no need to print after z or p
|
|||||||
EXTERN int reg_recording INIT(= 0); // register for recording or zero
|
EXTERN int reg_recording INIT(= 0); // register for recording or zero
|
||||||
EXTERN int reg_executing INIT(= 0); // register being executed or zero
|
EXTERN int reg_executing INIT(= 0); // register being executed or zero
|
||||||
// Flag set when peeking a character and found the end of executed register
|
// Flag set when peeking a character and found the end of executed register
|
||||||
EXTERN int pending_end_reg_executing INIT(= 0);
|
EXTERN int pending_end_reg_executing INIT(= FALSE);
|
||||||
|
|
||||||
// Set when a modifyOtherKeys sequence was seen, then simplified mappings will
|
// Set when a modifyOtherKeys sequence was seen, then simplified mappings will
|
||||||
// no longer be used. To be combined with modify_otherkeys_state.
|
// no longer be used. To be combined with modify_otherkeys_state.
|
||||||
|
@@ -703,6 +703,7 @@ do_execreg(
|
|||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
reg_executing = regname == 0 ? '"' : regname; // disable "q" command
|
reg_executing = regname == 0 ? '"' : regname; // disable "q" command
|
||||||
|
pending_end_reg_executing = FALSE;
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
@@ -840,6 +840,23 @@ func Test_end_reg_executing()
|
|||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_reg_executing_in_range_normal()
|
||||||
|
new
|
||||||
|
set showcmd
|
||||||
|
call setline(1, range(10))
|
||||||
|
let g:log = []
|
||||||
|
nnoremap s <Cmd>let g:log += [reg_executing()]<CR>
|
||||||
|
let @r = 's'
|
||||||
|
|
||||||
|
%normal @r
|
||||||
|
call assert_equal(repeat(['r'], 10), g:log)
|
||||||
|
|
||||||
|
nunmap s
|
||||||
|
unlet g:log
|
||||||
|
set showcmd&
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
|
||||||
" An operator-pending mode mapping shouldn't be applied to keys typed in
|
" An operator-pending mode mapping shouldn't be applied to keys typed in
|
||||||
" Insert mode immediately after a character search when replaying.
|
" Insert mode immediately after a character search when replaying.
|
||||||
func Test_replay_charsearch_omap()
|
func Test_replay_charsearch_omap()
|
||||||
|
@@ -704,6 +704,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 */
|
||||||
|
/**/
|
||||||
|
2178,
|
||||||
/**/
|
/**/
|
||||||
2177,
|
2177,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user