diff src/testdir/test_normal.vim @ 31099:3396d7f4b580 v9.0.0884

patch 9.0.0884: mouse shape remains in op-pending mode after failed change Commit: https://github.com/vim/vim/commit/cdeb65729d96c90320b9009e583ade305c396f29 Author: zeertzjq <zeertzjq@outlook.com> Date: Tue Nov 15 13:46:12 2022 +0000 patch 9.0.0884: mouse shape remains in op-pending mode after failed change Problem: Mouse shape remains in op-pending mode after failed change. Solution: Reset finish_op and restore it. (closes https://github.com/vim/vim/issues/11545)
author Bram Moolenaar <Bram@vim.org>
date Tue, 15 Nov 2022 15:00:06 +0100
parents a57e6da5860f
children ee50174810ac
line wrap: on
line diff
--- a/src/testdir/test_normal.vim
+++ b/src/testdir/test_normal.vim
@@ -3807,4 +3807,37 @@ func Test_normal_count_out_of_range()
   bwipe!
 endfunc
 
+" Test that mouse shape is restored to Normal mode after failed "c" operation.
+func Test_mouse_shape_after_failed_change()
+  CheckFeature mouseshape
+  CheckCanRunGui
+
+  let lines =<< trim END
+    set mouseshape+=o:busy
+    setlocal nomodifiable
+    let g:mouse_shapes = []
+
+    func SaveMouseShape(timer)
+      let g:mouse_shapes += [getmouseshape()]
+    endfunc
+
+    func SaveAndQuit(timer)
+      call writefile(g:mouse_shapes, 'Xmouseshapes')
+      quit
+    endfunc
+
+    call timer_start(50, {_ -> feedkeys('c')})
+    call timer_start(100, 'SaveMouseShape')
+    call timer_start(150, {_ -> feedkeys('c')})
+    call timer_start(200, 'SaveMouseShape')
+    call timer_start(250, 'SaveAndQuit')
+  END
+  call writefile(lines, 'Xmouseshape.vim', 'D')
+  call RunVim([], [], "-g -S Xmouseshape.vim")
+  sleep 300m
+  call assert_equal(['busy', 'arrow'], readfile('Xmouseshapes'))
+
+  call delete('Xmouseshapes')
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab