annotate src/testdir/test_maparg.vim @ 27223:ea2b4cb4515b v8.2.4140

patch 8.2.4140: maparg() does not indicate the type of script Commit: https://github.com/vim/vim/commit/a9528b39a666dbaa026320f73bae4b1628a7fe51 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jan 18 20:51:35 2022 +0000 patch 8.2.4140: maparg() does not indicate the type of script Problem: maparg() does not indicate the type of script where it was defined. Solution: Add "scriptversion".
author Bram Moolenaar <Bram@vim.org>
date Tue, 18 Jan 2022 22:00:05 +0100
parents db2b4e867d06
children d3c966c0cdf7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20506
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
1 " Tests for maparg(), mapcheck() and mapset().
11651
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2 " Also test utf8 map with a 0x80 byte.
17930
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
3 " Also test mapcheck()
11651
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
4
20506
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
5 func s:SID()
11651
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6 return str2nr(matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$'))
20506
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
7 endfunc
11651
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8
20516
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
9 func Test_maparg()
11651
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 new
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 set cpo-=<
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 set encoding=utf8
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 " Test maparg() with a string result
14700
0a3b9ecf7cb8 patch 8.1.0362: cannot get the script line number when executing a function
Christian Brabandt <cb@256bit.org>
parents: 13986
diff changeset
14 let sid = s:SID()
0a3b9ecf7cb8 patch 8.1.0362: cannot get the script line number when executing a function
Christian Brabandt <cb@256bit.org>
parents: 13986
diff changeset
15 let lnum = expand('<sflnum>')
11651
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16 map foo<C-V> is<F4>foo
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17 vnoremap <script> <buffer> <expr> <silent> bar isbar
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 call assert_equal("is<F4>foo", maparg('foo<C-V>'))
19870
658248b68f7c patch 8.2.0491: cannot recognize a <script> mapping using maparg()
Bram Moolenaar <Bram@vim.org>
parents: 19170
diff changeset
19 call assert_equal({'silent': 0, 'noremap': 0, 'script': 0, 'lhs': 'foo<C-V>',
20522
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
20 \ 'lhsraw': "foo\x80\xfc\x04V", 'lhsrawalt': "foo\x16",
27223
ea2b4cb4515b patch 8.2.4140: maparg() does not indicate the type of script
Bram Moolenaar <Bram@vim.org>
parents: 24529
diff changeset
21 \ 'mode': ' ', 'nowait': 0, 'expr': 0, 'sid': sid, 'scriptversion': 1,
ea2b4cb4515b patch 8.2.4140: maparg() does not indicate the type of script
Bram Moolenaar <Bram@vim.org>
parents: 24529
diff changeset
22 \ 'lnum': lnum + 1,
20522
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
23 \ 'rhs': 'is<F4>foo', 'buffer': 0},
14700
0a3b9ecf7cb8 patch 8.1.0362: cannot get the script line number when executing a function
Christian Brabandt <cb@256bit.org>
parents: 13986
diff changeset
24 \ maparg('foo<C-V>', '', 0, 1))
20522
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
25 call assert_equal({'silent': 1, 'noremap': 1, 'script': 1, 'lhs': 'bar',
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
26 \ 'lhsraw': 'bar', 'mode': 'v',
27223
ea2b4cb4515b patch 8.2.4140: maparg() does not indicate the type of script
Bram Moolenaar <Bram@vim.org>
parents: 24529
diff changeset
27 \ 'nowait': 0, 'expr': 1, 'sid': sid, 'scriptversion': 1,
ea2b4cb4515b patch 8.2.4140: maparg() does not indicate the type of script
Bram Moolenaar <Bram@vim.org>
parents: 24529
diff changeset
28 \ 'lnum': lnum + 2,
20522
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
29 \ 'rhs': 'isbar', 'buffer': 1},
17930
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
30 \ 'bar'->maparg('', 0, 1))
14700
0a3b9ecf7cb8 patch 8.1.0362: cannot get the script line number when executing a function
Christian Brabandt <cb@256bit.org>
parents: 13986
diff changeset
31 let lnum = expand('<sflnum>')
11651
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
32 map <buffer> <nowait> foo bar
20522
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
33 call assert_equal({'silent': 0, 'noremap': 0, 'script': 0, 'lhs': 'foo',
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
34 \ 'lhsraw': 'foo', 'mode': ' ',
27223
ea2b4cb4515b patch 8.2.4140: maparg() does not indicate the type of script
Bram Moolenaar <Bram@vim.org>
parents: 24529
diff changeset
35 \ 'nowait': 1, 'expr': 0, 'sid': sid, 'scriptversion': 1,
ea2b4cb4515b patch 8.2.4140: maparg() does not indicate the type of script
Bram Moolenaar <Bram@vim.org>
parents: 24529
diff changeset
36 \ 'lnum': lnum + 1, 'rhs': 'bar',
20522
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
37 \ 'buffer': 1},
11651
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
38 \ maparg('foo', '', 0, 1))
17522
e17cbc3e545d patch 8.1.1759: no mode char for terminal mapping from maparg()
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
39 let lnum = expand('<sflnum>')
e17cbc3e545d patch 8.1.1759: no mode char for terminal mapping from maparg()
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
40 tmap baz foo
20522
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
41 call assert_equal({'silent': 0, 'noremap': 0, 'script': 0, 'lhs': 'baz',
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
42 \ 'lhsraw': 'baz', 'mode': 't',
27223
ea2b4cb4515b patch 8.2.4140: maparg() does not indicate the type of script
Bram Moolenaar <Bram@vim.org>
parents: 24529
diff changeset
43 \ 'nowait': 0, 'expr': 0, 'sid': sid, 'scriptversion': 1,
ea2b4cb4515b patch 8.2.4140: maparg() does not indicate the type of script
Bram Moolenaar <Bram@vim.org>
parents: 24529
diff changeset
44 \ 'lnum': lnum + 1, 'rhs': 'foo',
20522
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
45 \ 'buffer': 0},
17522
e17cbc3e545d patch 8.1.1759: no mode char for terminal mapping from maparg()
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
46 \ maparg('baz', 't', 0, 1))
11651
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
47
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
48 map abc x<char-114>x
13986
4a41a169e5ea patch 8.1.0011: maparg() and mapcheck() confuse empty and non-existing
Christian Brabandt <cb@256bit.org>
parents: 11651
diff changeset
49 call assert_equal("xrx", maparg('abc'))
11651
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
50 map abc y<S-char-114>y
13986
4a41a169e5ea patch 8.1.0011: maparg() and mapcheck() confuse empty and non-existing
Christian Brabandt <cb@256bit.org>
parents: 11651
diff changeset
51 call assert_equal("yRy", maparg('abc'))
4a41a169e5ea patch 8.1.0011: maparg() and mapcheck() confuse empty and non-existing
Christian Brabandt <cb@256bit.org>
parents: 11651
diff changeset
52
19149
643c6c3c0da4 patch 8.2.0134: some map functionality not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 17930
diff changeset
53 omap { w
643c6c3c0da4 patch 8.2.0134: some map functionality not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 17930
diff changeset
54 let d = maparg('{', 'o', 0, 1)
643c6c3c0da4 patch 8.2.0134: some map functionality not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 17930
diff changeset
55 call assert_equal(['{', 'w', 'o'], [d.lhs, d.rhs, d.mode])
643c6c3c0da4 patch 8.2.0134: some map functionality not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 17930
diff changeset
56 ounmap {
643c6c3c0da4 patch 8.2.0134: some map functionality not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 17930
diff changeset
57
19170
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
58 lmap { w
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
59 let d = maparg('{', 'l', 0, 1)
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
60 call assert_equal(['{', 'w', 'l'], [d.lhs, d.rhs, d.mode])
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
61 lunmap {
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
62
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
63 nmap { w
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
64 let d = maparg('{', 'n', 0, 1)
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
65 call assert_equal(['{', 'w', 'n'], [d.lhs, d.rhs, d.mode])
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
66 nunmap {
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
67
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
68 xmap { w
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
69 let d = maparg('{', 'x', 0, 1)
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
70 call assert_equal(['{', 'w', 'x'], [d.lhs, d.rhs, d.mode])
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
71 xunmap {
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
72
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
73 smap { w
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
74 let d = maparg('{', 's', 0, 1)
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
75 call assert_equal(['{', 'w', 's'], [d.lhs, d.rhs, d.mode])
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
76 sunmap {
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
77
13986
4a41a169e5ea patch 8.1.0011: maparg() and mapcheck() confuse empty and non-existing
Christian Brabandt <cb@256bit.org>
parents: 11651
diff changeset
78 map abc <Nop>
4a41a169e5ea patch 8.1.0011: maparg() and mapcheck() confuse empty and non-existing
Christian Brabandt <cb@256bit.org>
parents: 11651
diff changeset
79 call assert_equal("<Nop>", maparg('abc'))
4a41a169e5ea patch 8.1.0011: maparg() and mapcheck() confuse empty and non-existing
Christian Brabandt <cb@256bit.org>
parents: 11651
diff changeset
80 unmap abc
19170
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
81
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
82 call feedkeys(":abbr esc \<C-V>\<C-V>\<C-V>\<C-V>\<C-V>\<Esc>\<CR>", "xt")
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
83 let d = maparg('esc', 'i', 1, 1)
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
84 call assert_equal(['esc', "\<C-V>\<C-V>\<Esc>", '!'], [d.lhs, d.rhs, d.mode])
ad40333f2ec0 patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19149
diff changeset
85 abclear
20506
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
86 endfunc
11651
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
87
21695
f27187782dc6 patch 8.2.1397: Vim9: return type of maparg() not adjusted for fourth arg
Bram Moolenaar <Bram@vim.org>
parents: 20522
diff changeset
88 def Test_vim9_maparg()
f27187782dc6 patch 8.2.1397: Vim9: return type of maparg() not adjusted for fourth arg
Bram Moolenaar <Bram@vim.org>
parents: 20522
diff changeset
89 nmap { w
22435
166a0f17b05e patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
90 var one: string = maparg('{')
21695
f27187782dc6 patch 8.2.1397: Vim9: return type of maparg() not adjusted for fourth arg
Bram Moolenaar <Bram@vim.org>
parents: 20522
diff changeset
91 assert_equal('w', one)
22435
166a0f17b05e patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
92 var two: string = maparg('{', 'n')
21695
f27187782dc6 patch 8.2.1397: Vim9: return type of maparg() not adjusted for fourth arg
Bram Moolenaar <Bram@vim.org>
parents: 20522
diff changeset
93 assert_equal('w', two)
22435
166a0f17b05e patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
94 var three: string = maparg('{', 'n', 0)
21695
f27187782dc6 patch 8.2.1397: Vim9: return type of maparg() not adjusted for fourth arg
Bram Moolenaar <Bram@vim.org>
parents: 20522
diff changeset
95 assert_equal('w', three)
22435
166a0f17b05e patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
96 var four: dict<any> = maparg('{', 'n', 0, 1)
22147
d55008685870 patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents: 21695
diff changeset
97 assert_equal(['{', 'w', 'n'], [four.lhs, four.rhs, four.mode])
21695
f27187782dc6 patch 8.2.1397: Vim9: return type of maparg() not adjusted for fourth arg
Bram Moolenaar <Bram@vim.org>
parents: 20522
diff changeset
98 nunmap {
f27187782dc6 patch 8.2.1397: Vim9: return type of maparg() not adjusted for fourth arg
Bram Moolenaar <Bram@vim.org>
parents: 20522
diff changeset
99 enddef
f27187782dc6 patch 8.2.1397: Vim9: return type of maparg() not adjusted for fourth arg
Bram Moolenaar <Bram@vim.org>
parents: 20522
diff changeset
100
17930
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
101 func Test_mapcheck()
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
102 call assert_equal('', mapcheck('a'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
103 call assert_equal('', mapcheck('abc'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
104 call assert_equal('', mapcheck('ax'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
105 call assert_equal('', mapcheck('b'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
106
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
107 map a something
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
108 call assert_equal('something', mapcheck('a'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
109 call assert_equal('something', mapcheck('a', 'n'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
110 call assert_equal('', mapcheck('a', 'c'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
111 call assert_equal('', mapcheck('a', 'i'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
112 call assert_equal('something', 'abc'->mapcheck())
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
113 call assert_equal('something', 'ax'->mapcheck())
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
114 call assert_equal('', mapcheck('b'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
115 unmap a
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
116
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
117 map ab foobar
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
118 call assert_equal('foobar', mapcheck('a'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
119 call assert_equal('foobar', mapcheck('abc'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
120 call assert_equal('', mapcheck('ax'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
121 call assert_equal('', mapcheck('b'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
122 unmap ab
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
123
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
124 map abc barfoo
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
125 call assert_equal('barfoo', mapcheck('a'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
126 call assert_equal('barfoo', mapcheck('a', 'n', 0))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
127 call assert_equal('', mapcheck('a', 'n', 1))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
128 call assert_equal('barfoo', mapcheck('abc'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
129 call assert_equal('', mapcheck('ax'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
130 call assert_equal('', mapcheck('b'))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
131 unmap abc
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
132
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
133 abbr ab abbrev
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
134 call assert_equal('abbrev', mapcheck('a', 'i', 1))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
135 call assert_equal('', mapcheck('a', 'n', 1))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
136 call assert_equal('', mapcheck('a', 'i', 0))
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
137 unabbr ab
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
138 endfunc
0cdb6ac20748 patch 8.1.1961: more functions can be used as a method
Bram Moolenaar <Bram@vim.org>
parents: 17522
diff changeset
139
20506
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
140 func Test_range_map()
11651
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
141 new
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
142 " Outside of the range, minimum
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
143 inoremap <Char-0x1040> a
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
144 execute "normal a\u1040\<Esc>"
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
145 " Inside of the range, minimum
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
146 inoremap <Char-0x103f> b
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
147 execute "normal a\u103f\<Esc>"
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
148 " Inside of the range, maximum
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
149 inoremap <Char-0xf03f> c
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
150 execute "normal a\uf03f\<Esc>"
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
151 " Outside of the range, maximum
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
152 inoremap <Char-0xf040> d
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
153 execute "normal a\uf040\<Esc>"
140d51d5b5c3 patch 8.0.0708: some tests are old style
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
154 call assert_equal("abcd", getline(1))
20506
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
155 endfunc
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
156
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
157 func One_mapset_test(keys)
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
158 exe 'nnoremap ' .. a:keys .. ' original<CR>'
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
159 let orig = maparg(a:keys, 'n', 0, 1)
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
160 call assert_equal(a:keys, orig.lhs)
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
161 call assert_equal('original<CR>', orig.rhs)
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
162 call assert_equal('n', orig.mode)
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
163
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
164 exe 'nunmap ' .. a:keys
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
165 let d = maparg(a:keys, 'n', 0, 1)
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
166 call assert_equal({}, d)
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
167
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
168 call mapset('n', 0, orig)
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
169 let d = maparg(a:keys, 'n', 0, 1)
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
170 call assert_equal(a:keys, d.lhs)
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
171 call assert_equal('original<CR>', d.rhs)
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
172 call assert_equal('n', d.mode)
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
173
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
174 exe 'nunmap ' .. a:keys
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
175 endfunc
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
176
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
177 func Test_mapset()
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
178 call One_mapset_test('K')
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
179 call One_mapset_test('<F3>')
20516
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
180
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
181 " Check <> key conversion
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
182 new
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
183 inoremap K one<Left>x
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
184 call feedkeys("iK\<Esc>", 'xt')
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
185 call assert_equal('onxe', getline(1))
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
186
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
187 let orig = maparg('K', 'i', 0, 1)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
188 call assert_equal('K', orig.lhs)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
189 call assert_equal('one<Left>x', orig.rhs)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
190 call assert_equal('i', orig.mode)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
191
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
192 iunmap K
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
193 let d = maparg('K', 'i', 0, 1)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
194 call assert_equal({}, d)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
195
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
196 call mapset('i', 0, orig)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
197 call feedkeys("SK\<Esc>", 'xt')
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
198 call assert_equal('onxe', getline(1))
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
199
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
200 iunmap K
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
201
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
202 " Test literal <CR> using a backslash
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
203 let cpo_save = &cpo
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
204 set cpo-=B
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
205 inoremap K one\<CR>two
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
206 call feedkeys("SK\<Esc>", 'xt')
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
207 call assert_equal('one<CR>two', getline(1))
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
208
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
209 let orig = maparg('K', 'i', 0, 1)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
210 call assert_equal('K', orig.lhs)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
211 call assert_equal('one\<CR>two', orig.rhs)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
212 call assert_equal('i', orig.mode)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
213
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
214 iunmap K
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
215 let d = maparg('K', 'i', 0, 1)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
216 call assert_equal({}, d)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
217
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
218 call mapset('i', 0, orig)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
219 call feedkeys("SK\<Esc>", 'xt')
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
220 call assert_equal('one<CR>two', getline(1))
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
221
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
222 iunmap K
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
223
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
224 " Test literal <CR> using CTRL-V
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
225 inoremap K one<CR>two
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
226 call feedkeys("SK\<Esc>", 'xt')
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
227 call assert_equal('one<CR>two', getline(1))
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
228
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
229 let orig = maparg('K', 'i', 0, 1)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
230 call assert_equal('K', orig.lhs)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
231 call assert_equal("one\x16<CR>two", orig.rhs)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
232 call assert_equal('i', orig.mode)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
233
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
234 iunmap K
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
235 let d = maparg('K', 'i', 0, 1)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
236 call assert_equal({}, d)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
237
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
238 call mapset('i', 0, orig)
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
239 call feedkeys("SK\<Esc>", 'xt')
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
240 call assert_equal('one<CR>two', getline(1))
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
241
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
242 iunmap K
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
243 let &cpo = cpo_save
d9e3fdf26cb9 patch 8.2.0812: mapset() does not properly handle <> notation
Bram Moolenaar <Bram@vim.org>
parents: 20506
diff changeset
244 bwipe!
22450
9b09676b9e0e patch 8.2.1773: crash when calling mapset() with a list as first argument
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
245
9b09676b9e0e patch 8.2.1773: crash when calling mapset() with a list as first argument
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
246 call assert_fails('call mapset([], v:false, {})', 'E730:')
23984
e27b5529dc6a patch 8.2.2534: missing test coverage
Bram Moolenaar <Bram@vim.org>
parents: 22450
diff changeset
247 call assert_fails('call mapset("i", 0, "")', 'E716:')
e27b5529dc6a patch 8.2.2534: missing test coverage
Bram Moolenaar <Bram@vim.org>
parents: 22450
diff changeset
248 call assert_fails('call mapset("i", 0, {})', 'E460:')
20506
aee0b72ca6d6 patch 8.2.0807: cannot easily restore a mapping
Bram Moolenaar <Bram@vim.org>
parents: 19870
diff changeset
249 endfunc
19149
643c6c3c0da4 patch 8.2.0134: some map functionality not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 17930
diff changeset
250
20522
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
251 func Check_ctrlb_map(d, check_alt)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
252 call assert_equal('<C-B>', a:d.lhs)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
253 if a:check_alt
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
254 call assert_equal("\x80\xfc\x04B", a:d.lhsraw)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
255 call assert_equal("\x02", a:d.lhsrawalt)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
256 else
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
257 call assert_equal("\x02", a:d.lhsraw)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
258 endif
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
259 endfunc
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
260
24529
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
261 func Test_map_local()
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
262 nmap a global
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
263 nmap <buffer>a local
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
264
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
265 let prev_map_list = split(execute('nmap a'), "\n")
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
266 call assert_match('n\s*a\s*@local', prev_map_list[0])
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
267 call assert_match('n\s*a\s*global', prev_map_list[1])
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
268
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
269 let mapping = maparg('a', 'n', 0, 1)
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
270 call assert_equal(1, mapping.buffer)
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
271 let mapping.rhs = 'new_local'
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
272 call mapset('n', 0, mapping)
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
273
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
274 " Check that the global mapping is left untouched.
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
275 let map_list = split(execute('nmap a'), "\n")
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
276 call assert_match('n\s*a\s*@new_local', map_list[0])
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
277 call assert_match('n\s*a\s*global', map_list[1])
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
278
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
279 nunmap a
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
280 endfunc
db2b4e867d06 patch 8.2.2804: setting buffer local mapping with mapset() changes global
Bram Moolenaar <Bram@vim.org>
parents: 23984
diff changeset
281
20522
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
282 func Test_map_restore()
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
283 " Test restoring map with alternate keycode
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
284 nmap <C-B> back
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
285 let d = maparg('<C-B>', 'n', 0, 1)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
286 call Check_ctrlb_map(d, 1)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
287 let dsimp = maparg("\x02", 'n', 0, 1)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
288 call Check_ctrlb_map(dsimp, 0)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
289 nunmap <C-B>
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
290 call mapset('n', 0, d)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
291 let d = maparg('<C-B>', 'n', 0, 1)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
292 call Check_ctrlb_map(d, 1)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
293 let dsimp = maparg("\x02", 'n', 0, 1)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
294 call Check_ctrlb_map(dsimp, 0)
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
295
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
296 nunmap <C-B>
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
297
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
298 endfunc
729853a754ea patch 8.2.0815: maparg() does not provide enough information for mapset()
Bram Moolenaar <Bram@vim.org>
parents: 20516
diff changeset
299
19149
643c6c3c0da4 patch 8.2.0134: some map functionality not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 17930
diff changeset
300 " vim: shiftwidth=2 sts=2 expandtab