From 9938961fd8bdaf7375cd17578c1ef2d43bef6763 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 17 Feb 2022 08:37:33 +0800 Subject: test: add more tests for :*map cursor and redrawing --- test/functional/ex_cmds/map_spec.lua | 78 ++++++++++++++++++++++++++++++++---- 1 file changed, 70 insertions(+), 8 deletions(-) (limited to 'test') diff --git a/test/functional/ex_cmds/map_spec.lua b/test/functional/ex_cmds/map_spec.lua index 9663eb75c1..75f644da0f 100644 --- a/test/functional/ex_cmds/map_spec.lua +++ b/test/functional/ex_cmds/map_spec.lua @@ -2,6 +2,7 @@ local helpers = require("test.functional.helpers")(after_each) local Screen = require('test.functional.ui.screen') local eq = helpers.eq +local exec = helpers.exec local feed = helpers.feed local meths = helpers.meths local clear = helpers.clear @@ -28,7 +29,7 @@ describe(':*map', function() end) end) -describe(':*map ', function() +describe(':*map cursor and redrawing', function() local screen before_each(function() clear() @@ -36,8 +37,8 @@ describe(':*map ', function() screen:attach() end) - it('cursor is restored after :map ', function() - command(':map x input("> ")') + it('cursor is restored after :map which calls input()', function() + command('map x input("> ")') screen:expect([[ ^ | ~ | @@ -63,8 +64,8 @@ describe(':*map ', function() ]]) end) - it('cursor is restored after :imap ', function() - command(':imap x input("> ")') + it('cursor is restored after :imap which calls input()', function() + command('imap x input("> ")') feed('i') screen:expect([[ ^ | @@ -91,9 +92,57 @@ describe(':*map ', function() ]]) end) - it('error in :cmap handled correctly', function() + it('cursor is restored after :map which redraws statusline vim-patch:8.1.2336', function() + exec([[ + call setline(1, ['one', 'two', 'three']) + 2 + set ls=2 + hi! link StatusLine ErrorMsg + noremap Func() + func Func() + let g:on = !get(g:, 'on', 0) + redraws + return '' + endfunc + func Status() + return get(g:, 'on', 0) ? '[on]' : '' + endfunc + set stl=%{Status()} + ]]) + feed('') + screen:expect([[ + one | + ^two | + three | + [on] | + | + ]]) + end) + + it('error in :nmap does not mess up display vim-patch:4.2.4338', function() screen:try_resize(40, 5) - command(':cmap x execute("throw 42")') + command('nmap execute("throw 42")') + feed('') + screen:expect([[ + | + | + Error detected while processing : | + E605: Exception not caught: 42 | + Press ENTER or type command to continue^ | + ]]) + feed('') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + | + ]]) + end) + + it('error in :cmap handled correctly vim-patch:4.2.4338', function() + screen:try_resize(40, 5) + command('cmap execute("throw 42")') feed(':echo "foo') screen:expect([[ | @@ -102,7 +151,7 @@ describe(':*map ', function() ~ | :echo "foo^ | ]]) - feed('x') + feed('') screen:expect([[ | :echo "foo | @@ -127,4 +176,17 @@ describe(':*map ', function() Press ENTER or type command to continue^ | ]]) end) + + it('listing mappings clears command line vim-patch:8.2.4401', function() + screen:try_resize(40, 5) + command('nmap a b') + feed(': nmap a') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + n a b | + ]]) + end) end) -- cgit