summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-06-04 21:57:57 +0200
committerBram Moolenaar <Bram@vim.org>2021-06-04 21:57:57 +0200
commit21492743e80c6740bac65a91311c28bede8ef2f8 (patch)
treee3330a096ce98a5e4b8c36b748c0a6621ef14d16
parent56cddb38790ba535919524d9d2f32dbec9f3f07a (diff)
downloadvim-git-21492743e80c6740bac65a91311c28bede8ef2f8.tar.gz
patch 8.2.2938: after using motion force from feedkeys() it sticksv8.2.2938
Problem: After using motion force from feedkeys() it may not be reset. Solution: Clear motion_force in clearop(). (closes #8323)
-rw-r--r--src/normal.c1
-rw-r--r--src/testdir/test_visual.vim9
-rw-r--r--src/version.c2
3 files changed, 12 insertions, 0 deletions
diff --git a/src/normal.c b/src/normal.c
index c4c167935..fe47e2b74 100644
--- 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
diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim
index 1b3661c22..b368c32b1 100644
--- 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
diff --git a/src/version.c b/src/version.c
index d59df5c3c..3ac26ab40 100644
--- 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,