patch 9.0.1516: cannot use special keys in <Cmd> mapping
Problem: Cannot use special keys in <Cmd> mapping.
Solution: Do allow for special keys in <Cmd> and <ScriptCmd> mappings.
(closes #12326)
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index b1dd444..f9c21bb 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -1001,10 +1001,6 @@
call assert_fails('call feedkeys("\<F3>", "xt")', 'E1136:')
call assert_equal(0, x)
- noremap <F3> <Cmd><F3>let x = 2<CR>
- call assert_fails('call feedkeys("\<F3>", "xt")', 'E1137:')
- call assert_equal(0, x)
-
noremap <F3> <Cmd>let x = 3
call assert_fails('call feedkeys("\<F3>", "xt!")', 'E1255:')
call assert_equal(0, x)
@@ -1104,11 +1100,6 @@
unmap <F3>
unmap! <F3>
%bw!
-
- " command line ending in "0" is handled without errors
- onoremap ix <cmd>eval 0<cr>
- call feedkeys('dix.', 'xt')
- ounmap ix
endfunc
" text object enters visual mode
@@ -1495,6 +1486,24 @@
call delete('Xcmdtext')
delfunc SelectDash
ounmap i-
+
+ new
+ call setline(1, 'aaa bbb ccc ddd')
+
+ " command can contain special keys
+ onoremap ix <Cmd>let g:foo ..= '…'<Bar>normal! <C-Right><CR>
+ let g:foo = ''
+ call feedkeys('0dix.', 'xt')
+ call assert_equal('……', g:foo)
+ call assert_equal('ccc ddd', getline(1))
+ unlet g:foo
+
+ " command line ending in "0" is handled without errors
+ onoremap ix <Cmd>eval 0<CR>
+ call feedkeys('dix.', 'xt')
+
+ ounmap ix
+ bwipe!
endfunc
func Test_map_script_cmd_restore()