To: vim_dev@googlegroups.com Subject: Patch 8.2.4722 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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 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 -- Bram@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 ///