Patch 8.2.4722

6 views
Skip to first unread message

Bram Moolenaar

unread,
Apr 9, 2022, 1:18:44 PM4/9/22
to vim...@googlegroups.com

Patch 8.2.4722
Problem: When a recording is ended with a mapped key that key is also
recorded.
Solution: Remember the previous last_recorded_len. (closes #10122)
Files: src/getchar.c, src/testdir/test_registers.vim


*** ../vim-8.2.4721/src/getchar.c 2022-04-07 13:58:00.923085110 +0100
--- src/getchar.c 2022-04-09 17:45:37.373774799 +0100
***************
*** 1705,1714 ****
}
else
{
mod_mask = 0;
vgetc_mod_mask = 0;
vgetc_char = 0;
! last_recorded_len = 0;

for (;;) // this is done twice if there are modifiers
{
--- 1705,1720 ----
}
else
{
+ // number of characters recorded from the last vgetc() call
+ static int last_vgetc_recorded_len = 0;
+
mod_mask = 0;
vgetc_mod_mask = 0;
vgetc_char = 0;
!
! // last_recorded_len can be larger than last_vgetc_recorded_len
! // if peeking records more
! last_recorded_len -= last_vgetc_recorded_len;

for (;;) // this is done twice if there are modifiers
{
***************
*** 1910,1915 ****
--- 1916,1923 ----

break;
}
+
+ last_vgetc_recorded_len = last_recorded_len;
}

#ifdef FEAT_EVAL
*** ../vim-8.2.4721/src/testdir/test_registers.vim 2022-04-07 13:58:00.923085110 +0100
--- src/testdir/test_registers.vim 2022-04-09 17:57:50.121721564 +0100
***************
*** 759,764 ****
--- 759,785 ----
bwipe!
endfunc

+ " mapping that ends macro recording should be removed from recorded macro
+ func Test_end_record_using_mapping()
+ call setline(1, 'aaa')
+ nnoremap s q
+ call feedkeys('safas', 'tx')
+ call assert_equal('fa', @a)
+ nunmap s
+
+ nnoremap xx q
+ call feedkeys('0xxafaxx', 'tx')
+ call assert_equal('fa', @a)
+ nunmap xx
+
+ nnoremap xsx q
+ call feedkeys('0qafaxsx', 'tx')
+ call assert_equal('fa', @a)
+ nunmap xsx
+
+ bwipe!
+ endfunc
+
func Test_end_reg_executing()
nnoremap s <Nop>
let @a = 's'
*** ../vim-8.2.4721/src/version.c 2022-04-09 16:08:04.951820681 +0100
--- src/version.c 2022-04-09 17:47:55.673840708 +0100
***************
*** 748,749 ****
--- 748,751 ----
{ /* Add new patch number below this line */
+ /**/
+ 4722,
/**/

--
SOLDIER: Where did you get the coconuts?
ARTHUR: Through ... We found them.
SOLDIER: Found them? In Mercea. The coconut's tropical!
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages