From 45e2bbae835fab479f8e900a2f9c7c47ae22caea Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 15 Jul 2022 05:43:27 +0800 Subject: vim-patch:9.0.0051: using CTRL-C wih :append may hang Vim Problem: Using CTRL-C wih :append may hang Vim. Solution: Reset got_int. (closes vim/vim#10729, closes vim/vim#10728) https://github.com/vim/vim/commit/f754fe6a3d5384b5146c38a32db6da9d46e00c40 --- test/functional/legacy/ex_mode_spec.lua | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'test/functional/legacy/ex_mode_spec.lua') diff --git a/test/functional/legacy/ex_mode_spec.lua b/test/functional/legacy/ex_mode_spec.lua index 98f113bbd0..59f4a21f5f 100644 --- a/test/functional/legacy/ex_mode_spec.lua +++ b/test/functional/legacy/ex_mode_spec.lua @@ -6,6 +6,7 @@ local eq = helpers.eq local eval = helpers.eval local feed = helpers.feed local meths = helpers.meths +local sleep = helpers.sleep before_each(clear) @@ -122,4 +123,54 @@ describe('Ex mode', function() | ]]) end) + + it('pressing Ctrl-C in :append inside a loop in Ex mode does not hang', function() + local screen = Screen.new(60, 6) + screen:set_default_attr_ids({ + [0] = {bold = true, reverse = true}, -- MsgSeparator + [1] = {bold = true, foreground = Screen.colors.Blue}, -- NonText + }) + screen:attach() + feed('gQ') + feed('for i in range(1)') + feed('append') + screen:expect([[ + {0: }| + Entering Ex mode. Type "visual" to go to Normal mode. | + :for i in range(1) | + | + : append | + ^ | + ]]) + feed('') + sleep(10) -- Wait for Ctrl-C to flush input + feed('foo') + screen:expect([[ + Entering Ex mode. Type "visual" to go to Normal mode. | + :for i in range(1) | + | + : append | + foo | + ^ | + ]]) + feed('.') + screen:expect([[ + :for i in range(1) | + | + : append | + foo | + . | + : ^ | + ]]) + feed('endfor') + feed('vi') + screen:expect([[ + ^foo | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + | + ]]) + end) end) -- cgit