Skip to content

Commit

Permalink
patch 9.0.2178: reg_executing() wrong for :normal with range
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
zeertzjq authored and chrisbra committed Dec 19, 2023
1 parent ec14924 commit 615202b
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/globals.h
Original file line number Diff line number Diff line change
Expand Up @@ -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_executing INIT(= 0); // register being executed or zero
// 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
// no longer be used. To be combined with modify_otherkeys_state.
Expand Down
1 change: 1 addition & 0 deletions src/register.c
Original file line number Diff line number Diff line change
Expand Up @@ -703,6 +703,7 @@ do_execreg(
return FAIL;
}
reg_executing = regname == 0 ? '"' : regname; // disable "q" command
pending_end_reg_executing = FALSE;
}
return retval;
}
Expand Down
17 changes: 17 additions & 0 deletions src/testdir/test_registers.vim
Original file line number Diff line number Diff line change
Expand Up @@ -840,6 +840,23 @@ func Test_end_reg_executing()
bwipe!
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
" Insert mode immediately after a character search when replaying.
func Test_replay_charsearch_omap()
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2178,
/**/
2177,
/**/
Expand Down

0 comments on commit 615202b

Please sign in to comment.