changeset 24800:b032da736676 v8.2.2938

patch 8.2.2938: after using motion force from feedkeys() it sticks Commit: https://github.com/vim/vim/commit/21492743e80c6740bac65a91311c28bede8ef2f8 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jun 4 21:57:57 2021 +0200 patch 8.2.2938: after using motion force from feedkeys() it sticks Problem: After using motion force from feedkeys() it may not be reset. Solution: Clear motion_force in clearop(). (closes https://github.com/vim/vim/issues/8323)
author Bram Moolenaar <Bram@vim.org>
date Fri, 04 Jun 2021 22:00:05 +0200
parents 7aa2abb13864
children ce2fdacbc25b
files src/normal.c src/testdir/test_visual.vim src/version.c
diffstat 3 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/normal.c
+++ b/src/normal.c
@@ -1750,6 +1750,7 @@ clearop(oparg_T *oap)
     oap->regname = 0;
     oap->motion_force = NUL;
     oap->use_reg_one = FALSE;
+    motion_force = NUL;
 }
 
     void
--- a/src/testdir/test_visual.vim
+++ b/src/testdir/test_visual.vim
@@ -913,6 +913,15 @@ func Test_visual_block_mode()
   set tabstop& shiftwidth&
 endfunc
 
+func Test_visual_force_motion_feedkeys()
+    onoremap <expr> i- execute('let g:mode = mode(1)')->slice(0, 0)
+    call feedkeys('dvi-', 'x')
+    call assert_equal('nov', g:mode)
+    call feedkeys('di-', 'x')
+    call assert_equal('no', g:mode)
+    ounmap i-
+endfunc
+
 " Test block-insert using cursor keys for movement
 func Test_visual_block_insert_cursor_keys()
   new
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2938,
+/**/
     2937,
 /**/
     2936,