if (old_mapped_len > 0)
old_mapped_len = typebuf_maplen();
+#ifdef FEAT_EVAL
+ int prev_VIsual_active = VIsual_active;
+#endif
+
// If an operation is pending, handle it. But not for K_IGNORE or
// K_MOUSEMOVE.
if (ca.cmdchar != K_IGNORE && ca.cmdchar != K_MOUSEMOVE)
msg_nowait = FALSE;
#ifdef FEAT_EVAL
- if (finish_op)
+ if (finish_op || prev_VIsual_active)
reset_reg_var();
#endif
let s:register = ''
call feedkeys('"_ddS', 'mx')
- call assert_equal('test@', getline('.')) " fails before 8.2.0929
call assert_equal('"', s:register) " fails before 8.2.0929
+ call assert_equal('test@', getline('.')) " fails before 8.2.0929
+
+ let s:register = ''
+ call feedkeys('V"_dS', 'mx')
+ call assert_equal('"', s:register)
+ call assert_equal('test@', getline('.'))
let s:register = ''
call feedkeys('"zS', 'mx')
call assert_equal('"', s:register) " fails before 8.2.0929
call assert_equal('test@', getline('.')) " fails before 8.2.0929
+ let s:register = ''
+ normal V"_dS
+ call assert_equal('"', s:register)
+ call assert_equal('test@', getline('.'))
+
let s:register = ''
execute 'normal "z:call' "s:Put()\n"
call assert_equal('z', s:register)