aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-02-17 08:37:33 +0800
committerzeertzjq <zeertzjq@outlook.com>2022-02-17 10:07:42 +0800
commit9938961fd8bdaf7375cd17578c1ef2d43bef6763 (patch)
treebd44045493bcec2183e95083c90976769626f93c
parenta92046e43ff22a04d9ca0d861937463f6e262d38 (diff)
downloadrneovim-9938961fd8bdaf7375cd17578c1ef2d43bef6763.tar.gz
rneovim-9938961fd8bdaf7375cd17578c1ef2d43bef6763.tar.bz2
rneovim-9938961fd8bdaf7375cd17578c1ef2d43bef6763.zip
test: add more tests for :*map cursor and redrawing
-rw-r--r--test/functional/ex_cmds/map_spec.lua78
1 files changed, 70 insertions, 8 deletions
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 <expr>', function()
+describe(':*map cursor and redrawing', function()
local screen
before_each(function()
clear()
@@ -36,8 +37,8 @@ describe(':*map <expr>', function()
screen:attach()
end)
- it('cursor is restored after :map <expr>', function()
- command(':map <expr> x input("> ")')
+ it('cursor is restored after :map <expr> which calls input()', function()
+ command('map <expr> x input("> ")')
screen:expect([[
^ |
~ |
@@ -63,8 +64,8 @@ describe(':*map <expr>', function()
]])
end)
- it('cursor is restored after :imap <expr>', function()
- command(':imap <expr> x input("> ")')
+ it('cursor is restored after :imap <expr> which calls input()', function()
+ command('imap <expr> x input("> ")')
feed('i')
screen:expect([[
^ |
@@ -91,9 +92,57 @@ describe(':*map <expr>', function()
]])
end)
- it('error in :cmap <expr> handled correctly', function()
+ it('cursor is restored after :map <expr> 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 <expr> <C-B> 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('<C-B>')
+ screen:expect([[
+ one |
+ ^two |
+ three |
+ [on] |
+ |
+ ]])
+ end)
+
+ it('error in :nmap <expr> does not mess up display vim-patch:4.2.4338', function()
screen:try_resize(40, 5)
- command(':cmap <expr> x execute("throw 42")')
+ command('nmap <expr> <F2> execute("throw 42")')
+ feed('<F2>')
+ screen:expect([[
+ |
+ |
+ Error detected while processing : |
+ E605: Exception not caught: 42 |
+ Press ENTER or type command to continue^ |
+ ]])
+ feed('<CR>')
+ screen:expect([[
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ |
+ ]])
+ end)
+
+ it('error in :cmap <expr> handled correctly vim-patch:4.2.4338', function()
+ screen:try_resize(40, 5)
+ command('cmap <expr> <F2> execute("throw 42")')
feed(':echo "foo')
screen:expect([[
|
@@ -102,7 +151,7 @@ describe(':*map <expr>', function()
~ |
:echo "foo^ |
]])
- feed('x')
+ feed('<F2>')
screen:expect([[
|
:echo "foo |
@@ -127,4 +176,17 @@ describe(':*map <expr>', 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<CR>')
+ screen:expect([[
+ ^ |
+ ~ |
+ ~ |
+ ~ |
+ n a b |
+ ]])
+ end)
end)