From 2a574f7aaaf5cd0803faa9e4337bf3e21e8b8d2a Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 7 Apr 2022 21:13:09 +0800 Subject: fix(input): fix clearing of reg_executing vim-patch:8.2.4705 --- test/functional/editor/macro_spec.lua | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) (limited to 'test/functional') diff --git a/test/functional/editor/macro_spec.lua b/test/functional/editor/macro_spec.lua index c0c9256af2..f97fe44ba2 100644 --- a/test/functional/editor/macro_spec.lua +++ b/test/functional/editor/macro_spec.lua @@ -6,11 +6,13 @@ local feed = helpers.feed local clear = helpers.clear local expect = helpers.expect local command = helpers.command +local meths = helpers.meths local insert = helpers.insert local curbufmeths = helpers.curbufmeths +before_each(clear) + describe('macros', function() - before_each(clear) it('can be recorded and replayed', function() feed('qiahelloq') expect('hello') @@ -47,9 +49,34 @@ hello]] end) end) -describe('reg_recorded()', function() - before_each(clear) +describe('immediately after a macro has finished executing,', function() + before_each(function() + command([[let @a = 'gg0']]) + end) + + describe('characters from a mapping are not treated as a part of the macro #18015', function() + before_each(function() + command('nnoremap s qa') + end) + + it('if the macro does not end with a mapping', function() + feed('@asq') -- "q" from "s" mapping should start recording a macro instead of being no-op + eq({mode = 'n', blocking = false}, meths.get_mode()) + expect('') + eq('', eval('@a')) + end) + it('if the macro ends with a mapping', function() + command('nnoremap 0 ') + feed('@asq') -- "q" from "s" mapping should start recording a macro instead of being no-op + eq({mode = 'n', blocking = false}, meths.get_mode()) + expect('') + eq('', eval('@a')) + end) + end) +end) + +describe('reg_recorded()', function() it('returns the correct value', function() feed [[qqyyq]] eq('q', eval('reg_recorded()')) -- cgit From 64802da6c4304a2700d9471d17c0aae143d9aab1 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 7 Apr 2022 14:27:47 +0800 Subject: fix(event-loop): check if executed register has ended --- test/functional/editor/macro_spec.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'test/functional') diff --git a/test/functional/editor/macro_spec.lua b/test/functional/editor/macro_spec.lua index f97fe44ba2..d4cf6b28fd 100644 --- a/test/functional/editor/macro_spec.lua +++ b/test/functional/editor/macro_spec.lua @@ -6,6 +6,7 @@ local feed = helpers.feed local clear = helpers.clear local expect = helpers.expect local command = helpers.command +local funcs = helpers.funcs local meths = helpers.meths local insert = helpers.insert local curbufmeths = helpers.curbufmeths @@ -54,6 +55,19 @@ describe('immediately after a macro has finished executing,', function() command([[let @a = 'gg0']]) end) + describe('reg_executing() from RPC returns an empty string', function() + it('if the macro does not end with a mapping', function() + feed('@a') + eq('', funcs.reg_executing()) + end) + + it('if the macro ends with a mapping', function() + command('nnoremap 0 ') + feed('@a') + eq('', funcs.reg_executing()) + end) + end) + describe('characters from a mapping are not treated as a part of the macro #18015', function() before_each(function() command('nnoremap s qa') -- cgit