annotate src/testdir/test_mapping.vim @ 18689:8cc12c8d7842 v8.1.2336

patch 8.1.2336: when an expr mapping moves the cursor it is not restored Commit: https://github.com/vim/vim/commit/4ebe0e62d097d68c5312f9c32714fb41a4c947a3 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Nov 22 20:55:40 2019 +0100 patch 8.1.2336: when an expr mapping moves the cursor it is not restored Problem: When an expr mapping moves the cursor it is not restored. Solution: Position the cursor after an expr mapping. (closes https://github.com/vim/vim/issues/5256)
author Bram Moolenaar <Bram@vim.org>
date Fri, 22 Nov 2019 21:00:04 +0100
parents 5b12fd0c39c3
children 643c6c3c0da4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9867
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Tests for mappings and abbreviations
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2
15659
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
3 source shared.vim
17657
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17249
diff changeset
4 source check.vim
18689
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
5 source screendump.vim
15659
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
6
9867
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 func Test_abbreviation()
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 " abbreviation with 0x80 should work
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 inoreab чкпр vim
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 call feedkeys("Goчкпр \<Esc>", "xt")
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 call assert_equal('vim ', getline('$'))
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 iunab чкпр
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 set nomodified
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14 endfunc
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15
16389
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
16 func Test_abclear()
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
17 abbrev foo foobar
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
18 iabbrev fooi foobari
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
19 cabbrev fooc foobarc
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
20 call assert_equal("\n\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
21 \ .. "c fooc foobarc\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
22 \ .. "i fooi foobari\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
23 \ .. "! foo foobar", execute('abbrev'))
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
24
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
25 iabclear
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
26 call assert_equal("\n\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
27 \ .. "c fooc foobarc\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
28 \ .. "c foo foobar", execute('abbrev'))
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
29 abbrev foo foobar
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
30 iabbrev fooi foobari
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
31
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
32 cabclear
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
33 call assert_equal("\n\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
34 \ .. "i fooi foobari\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
35 \ .. "i foo foobar", execute('abbrev'))
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
36 abbrev foo foobar
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
37 cabbrev fooc foobarc
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
38
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
39 abclear
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
40 call assert_equal("\n\nNo abbreviation found", execute('abbrev'))
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
41 endfunc
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
42
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
43 func Test_abclear_buffer()
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
44 abbrev foo foobar
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
45 new X1
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
46 abbrev <buffer> foo1 foobar1
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
47 new X2
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
48 abbrev <buffer> foo2 foobar2
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
49
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
50 call assert_equal("\n\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
51 \ .. "! foo2 @foobar2\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
52 \ .. "! foo foobar", execute('abbrev'))
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
53
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
54 abclear <buffer>
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
55 call assert_equal("\n\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
56 \ .. "! foo foobar", execute('abbrev'))
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
57
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
58 b X1
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
59 call assert_equal("\n\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
60 \ .. "! foo1 @foobar1\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
61 \ .. "! foo foobar", execute('abbrev'))
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
62 abclear <buffer>
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
63 call assert_equal("\n\n"
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
64 \ .. "! foo foobar", execute('abbrev'))
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
65
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
66 abclear
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
67 call assert_equal("\n\nNo abbreviation found", execute('abbrev'))
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
68
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
69 %bwipe
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
70 endfunc
fb7cf38a1c7a patch 8.1.1199: no test for :abclear
Bram Moolenaar <Bram@vim.org>
parents: 16101
diff changeset
71
9867
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
72 func Test_map_ctrl_c_insert()
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
73 " mapping of ctrl-c in Insert mode
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
74 set cpo-=< cpo-=k
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
75 inoremap <c-c> <ctrl-c>
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
76 cnoremap <c-c> dummy
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
77 cunmap <c-c>
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
78 call feedkeys("GoTEST2: CTRL-C |\<C-C>A|\<Esc>", "xt")
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
79 call assert_equal('TEST2: CTRL-C |<ctrl-c>A|', getline('$'))
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
80 unmap! <c-c>
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
81 set nomodified
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
82 endfunc
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
83
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
84 func Test_map_ctrl_c_visual()
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
85 " mapping of ctrl-c in Visual mode
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
86 vnoremap <c-c> :<C-u>$put ='vmap works'
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
87 call feedkeys("GV\<C-C>\<CR>", "xt")
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
88 call assert_equal('vmap works', getline('$'))
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
89 vunmap <c-c>
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
90 set nomodified
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
91 endfunc
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
92
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
93 func Test_map_langmap()
9925
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
94 if !has('langmap')
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
95 return
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
96 endif
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
97
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
98 " check langmap applies in normal mode
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
99 set langmap=+- nolangremap
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
100 new
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
101 call setline(1, ['a', 'b', 'c'])
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
102 2
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
103 call assert_equal('b', getline('.'))
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
104 call feedkeys("+", "xt")
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
105 call assert_equal('a', getline('.'))
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
106
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
107 " check no remapping
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
108 map x +
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
109 2
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
110 call feedkeys("x", "xt")
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
111 call assert_equal('c', getline('.'))
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
112
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
113 " check with remapping
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
114 set langremap
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
115 2
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
116 call feedkeys("x", "xt")
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
117 call assert_equal('a', getline('.'))
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
118
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
119 unmap x
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
120 bwipe!
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
121
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
122 " 'langnoremap' follows 'langremap' and vise versa
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
123 set langremap
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
124 set langnoremap
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
125 call assert_equal(0, &langremap)
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
126 set langremap
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
127 call assert_equal(0, &langnoremap)
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
128 set nolangremap
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
129 call assert_equal(1, &langnoremap)
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
130
10070
09c7df6f8dd3 commit https://github.com/vim/vim/commit/da9ce2cde11ddd0e16cdfbab6d4ac4e8110218e1
Christian Brabandt <cb@256bit.org>
parents: 9925
diff changeset
131 " check default values
09c7df6f8dd3 commit https://github.com/vim/vim/commit/da9ce2cde11ddd0e16cdfbab6d4ac4e8110218e1
Christian Brabandt <cb@256bit.org>
parents: 9925
diff changeset
132 set langnoremap&
09c7df6f8dd3 commit https://github.com/vim/vim/commit/da9ce2cde11ddd0e16cdfbab6d4ac4e8110218e1
Christian Brabandt <cb@256bit.org>
parents: 9925
diff changeset
133 call assert_equal(0, &langnoremap)
09c7df6f8dd3 commit https://github.com/vim/vim/commit/da9ce2cde11ddd0e16cdfbab6d4ac4e8110218e1
Christian Brabandt <cb@256bit.org>
parents: 9925
diff changeset
134 call assert_equal(1, &langremap)
09c7df6f8dd3 commit https://github.com/vim/vim/commit/da9ce2cde11ddd0e16cdfbab6d4ac4e8110218e1
Christian Brabandt <cb@256bit.org>
parents: 9925
diff changeset
135 set langremap&
09c7df6f8dd3 commit https://github.com/vim/vim/commit/da9ce2cde11ddd0e16cdfbab6d4ac4e8110218e1
Christian Brabandt <cb@256bit.org>
parents: 9925
diff changeset
136 call assert_equal(0, &langnoremap)
09c7df6f8dd3 commit https://github.com/vim/vim/commit/da9ce2cde11ddd0e16cdfbab6d4ac4e8110218e1
Christian Brabandt <cb@256bit.org>
parents: 9925
diff changeset
137 call assert_equal(1, &langremap)
09c7df6f8dd3 commit https://github.com/vim/vim/commit/da9ce2cde11ddd0e16cdfbab6d4ac4e8110218e1
Christian Brabandt <cb@256bit.org>
parents: 9925
diff changeset
138
9925
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
139 " langmap should not apply in insert mode, 'langremap' doesn't matter
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
140 set langmap=+{ nolangremap
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
141 call feedkeys("Go+\<Esc>", "xt")
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
142 call assert_equal('+', getline('$'))
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
143 set langmap=+{ langremap
9867
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
144 call feedkeys("Go+\<Esc>", "xt")
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
145 call assert_equal('+', getline('$'))
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
146
9925
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
147 " langmap used for register name in insert mode.
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
148 call setreg('a', 'aaaa')
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
149 call setreg('b', 'bbbb')
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
150 call setreg('c', 'cccc')
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
151 set langmap=ab langremap
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
152 call feedkeys("Go\<C-R>a\<Esc>", "xt")
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
153 call assert_equal('bbbb', getline('$'))
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
154 call feedkeys("Go\<C-R>\<C-R>a\<Esc>", "xt")
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
155 call assert_equal('bbbb', getline('$'))
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
156 " mapping does not apply
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
157 imap c a
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
158 call feedkeys("Go\<C-R>c\<Esc>", "xt")
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
159 call assert_equal('cccc', getline('$'))
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
160 imap a c
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
161 call feedkeys("Go\<C-R>a\<Esc>", "xt")
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
162 call assert_equal('bbbb', getline('$'))
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
163
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
164 " langmap should not apply in Command-line mode
3fba3e8326a7 commit https://github.com/vim/vim/commit/920694c1b60fac8017b8909efcc24f189804a9bb
Christian Brabandt <cb@256bit.org>
parents: 9869
diff changeset
165 set langmap=+{ nolangremap
9867
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
166 call feedkeys(":call append(line('$'), '+')\<CR>", "xt")
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
167 call assert_equal('+', getline('$'))
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
168
10787
09926123316b patch 8.0.0283: mode() does not indicate Insert mode completion
Christian Brabandt <cb@256bit.org>
parents: 10070
diff changeset
169 iunmap a
09926123316b patch 8.0.0283: mode() does not indicate Insert mode completion
Christian Brabandt <cb@256bit.org>
parents: 10070
diff changeset
170 iunmap c
9867
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
171 set nomodified
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
172 endfunc
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
173
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
174 func Test_map_feedkeys()
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
175 " issue #212 (feedkeys insert mapping at current position)
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
176 nnoremap . :call feedkeys(".", "in")<cr>
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
177 call setline('$', ['a b c d', 'a b c d'])
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
178 $-1
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
179 call feedkeys("0qqdw.ifoo\<Esc>qj0@q\<Esc>", "xt")
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
180 call assert_equal(['fooc d', 'fooc d'], getline(line('$') - 1, line('$')))
10787
09926123316b patch 8.0.0283: mode() does not indicate Insert mode completion
Christian Brabandt <cb@256bit.org>
parents: 10070
diff changeset
181 nunmap .
9867
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
182 set nomodified
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
183 endfunc
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
184
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
185 func Test_map_cursor()
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
186 " <c-g>U<cursor> works only within a single line
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
187 imapclear
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
188 imap ( ()<c-g>U<left>
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
189 call feedkeys("G2o\<Esc>ki\<CR>Test1: text with a (here some more text\<Esc>k.", "xt")
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
190 call assert_equal('Test1: text with a (here some more text)', getline(line('$') - 2))
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
191 call assert_equal('Test1: text with a (here some more text)', getline(line('$') - 1))
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
192
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
193 " test undo
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
194 call feedkeys("G2o\<Esc>ki\<CR>Test2: text wit a (here some more text [und undo]\<C-G>u\<Esc>k.u", "xt")
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
195 call assert_equal('', getline(line('$') - 2))
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
196 call assert_equal('Test2: text wit a (here some more text [und undo])', getline(line('$') - 1))
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
197 set nomodified
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
198 imapclear
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
199 endfunc
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
200
16101
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
201 func Test_map_cursor_ctrl_gU()
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
202 " <c-g>U<cursor> works only within a single line
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
203 nnoremap c<* *Ncgn<C-r>"<C-G>U<S-Left>
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
204 call setline(1, ['foo', 'foobar', '', 'foo'])
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
205 call cursor(1,2)
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
206 call feedkeys("c<*PREFIX\<esc>.", 'xt')
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
207 call assert_equal(['PREFIXfoo', 'foobar', '', 'PREFIXfoo'], getline(1,'$'))
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
208 " break undo manually
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
209 set ul=1000
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
210 exe ":norm! uu"
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
211 call assert_equal(['foo', 'foobar', '', 'foo'], getline(1,'$'))
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
212
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
213 " Test that it does not work if the cursor moves to the previous line
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
214 " 2 times <S-Left> move to the previous line
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
215 nnoremap c<* *Ncgn<C-r>"<C-G>U<S-Left><C-G>U<S-Left>
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
216 call setline(1, ['', ' foo', 'foobar', '', 'foo'])
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
217 call cursor(2,3)
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
218 call feedkeys("c<*PREFIX\<esc>.", 'xt')
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
219 call assert_equal(['PREFIXPREFIX', ' foo', 'foobar', '', 'foo'], getline(1,'$'))
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
220 nmapclear
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
221 endfunc
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
222
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
223
9867
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
224 " This isn't actually testing a mapping, but similar use of CTRL-G U as above.
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
225 func Test_break_undo()
16101
5c5d211bd5a8 patch 8.1.1055: CTRL-G U in Insert mode doesn't work for shift-Left
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
226 set whichwrap=<,>,[,]
9867
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
227 call feedkeys("G4o2k", "xt")
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
228 exe ":norm! iTest3: text with a (parenthesis here\<C-G>U\<Right>new line here\<esc>\<up>\<up>."
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
229 call assert_equal('new line here', getline(line('$') - 3))
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
230 call assert_equal('Test3: text with a (parenthesis here', getline(line('$') - 2))
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
231 call assert_equal('new line here', getline(line('$') - 1))
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
232 set nomodified
86f73f026a9a commit https://github.com/vim/vim/commit/2d1a248762f069e470acde389ff4686a45d2f817
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
233 endfunc
9869
989d44d35a66 commit https://github.com/vim/vim/commit/35a4cfa200917dd171b1fff3cd5b6cee9add673d
Christian Brabandt <cb@256bit.org>
parents: 9867
diff changeset
234
989d44d35a66 commit https://github.com/vim/vim/commit/35a4cfa200917dd171b1fff3cd5b6cee9add673d
Christian Brabandt <cb@256bit.org>
parents: 9867
diff changeset
235 func Test_map_meta_quotes()
989d44d35a66 commit https://github.com/vim/vim/commit/35a4cfa200917dd171b1fff3cd5b6cee9add673d
Christian Brabandt <cb@256bit.org>
parents: 9867
diff changeset
236 imap <M-"> foo
989d44d35a66 commit https://github.com/vim/vim/commit/35a4cfa200917dd171b1fff3cd5b6cee9add673d
Christian Brabandt <cb@256bit.org>
parents: 9867
diff changeset
237 call feedkeys("Go-\<M-\">-\<Esc>", "xt")
989d44d35a66 commit https://github.com/vim/vim/commit/35a4cfa200917dd171b1fff3cd5b6cee9add673d
Christian Brabandt <cb@256bit.org>
parents: 9867
diff changeset
238 call assert_equal("-foo-", getline('$'))
989d44d35a66 commit https://github.com/vim/vim/commit/35a4cfa200917dd171b1fff3cd5b6cee9add673d
Christian Brabandt <cb@256bit.org>
parents: 9867
diff changeset
239 set nomodified
989d44d35a66 commit https://github.com/vim/vim/commit/35a4cfa200917dd171b1fff3cd5b6cee9add673d
Christian Brabandt <cb@256bit.org>
parents: 9867
diff changeset
240 iunmap <M-">
989d44d35a66 commit https://github.com/vim/vim/commit/35a4cfa200917dd171b1fff3cd5b6cee9add673d
Christian Brabandt <cb@256bit.org>
parents: 9867
diff changeset
241 endfunc
11295
d772bf077b3f patch 8.0.0533: abbreviation doesn't work after backspacing newline
Christian Brabandt <cb@256bit.org>
parents: 10787
diff changeset
242
17720
844f470532b6 patch 8.1.1857: cannot use modifier with multi-byte character
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
243 func Test_map_meta_multibyte()
844f470532b6 patch 8.1.1857: cannot use modifier with multi-byte character
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
244 imap <M-á> foo
17722
bf807c68ac80 patch 8.1.1858: test for multi-byte mapping fails on some systems
Bram Moolenaar <Bram@vim.org>
parents: 17720
diff changeset
245 call assert_match('i <M-á>\s*foo', execute('imap'))
17720
844f470532b6 patch 8.1.1857: cannot use modifier with multi-byte character
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
246 iunmap <M-á>
844f470532b6 patch 8.1.1857: cannot use modifier with multi-byte character
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
247 endfunc
844f470532b6 patch 8.1.1857: cannot use modifier with multi-byte character
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
248
11295
d772bf077b3f patch 8.0.0533: abbreviation doesn't work after backspacing newline
Christian Brabandt <cb@256bit.org>
parents: 10787
diff changeset
249 func Test_abbr_after_line_join()
d772bf077b3f patch 8.0.0533: abbreviation doesn't work after backspacing newline
Christian Brabandt <cb@256bit.org>
parents: 10787
diff changeset
250 new
d772bf077b3f patch 8.0.0533: abbreviation doesn't work after backspacing newline
Christian Brabandt <cb@256bit.org>
parents: 10787
diff changeset
251 abbr foo bar
d772bf077b3f patch 8.0.0533: abbreviation doesn't work after backspacing newline
Christian Brabandt <cb@256bit.org>
parents: 10787
diff changeset
252 set backspace=indent,eol,start
d772bf077b3f patch 8.0.0533: abbreviation doesn't work after backspacing newline
Christian Brabandt <cb@256bit.org>
parents: 10787
diff changeset
253 exe "normal o\<BS>foo "
d772bf077b3f patch 8.0.0533: abbreviation doesn't work after backspacing newline
Christian Brabandt <cb@256bit.org>
parents: 10787
diff changeset
254 call assert_equal("bar ", getline(1))
d772bf077b3f patch 8.0.0533: abbreviation doesn't work after backspacing newline
Christian Brabandt <cb@256bit.org>
parents: 10787
diff changeset
255 bwipe!
d772bf077b3f patch 8.0.0533: abbreviation doesn't work after backspacing newline
Christian Brabandt <cb@256bit.org>
parents: 10787
diff changeset
256 unabbr foo
d772bf077b3f patch 8.0.0533: abbreviation doesn't work after backspacing newline
Christian Brabandt <cb@256bit.org>
parents: 10787
diff changeset
257 set backspace&
d772bf077b3f patch 8.0.0533: abbreviation doesn't work after backspacing newline
Christian Brabandt <cb@256bit.org>
parents: 10787
diff changeset
258 endfunc
11403
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
259
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
260 func Test_map_timeout()
15659
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
261 if !has('timers')
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
262 return
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
263 endif
11403
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
264 nnoremap aaaa :let got_aaaa = 1<CR>
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
265 nnoremap bb :let got_bb = 1<CR>
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
266 nmap b aaa
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
267 new
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
268 func ExitInsert(timer)
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
269 let g:line = getline(1)
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
270 call feedkeys("\<Esc>", "t")
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
271 endfunc
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
272 set timeout timeoutlen=200
15659
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
273 let timer = timer_start(300, 'ExitInsert')
11403
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
274 " After the 'b' Vim waits for another character to see if it matches 'bb'.
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
275 " When it times out it is expanded to "aaa", but there is no wait for
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
276 " "aaaa". Can't check that reliably though.
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
277 call feedkeys("b", "xt!")
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
278 call assert_equal("aa", g:line)
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
279 call assert_false(exists('got_aaa'))
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
280 call assert_false(exists('got_bb'))
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
281
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
282 bwipe!
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
283 nunmap aaaa
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
284 nunmap bb
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
285 nunmap b
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
286 set timeoutlen&
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
287 delfunc ExitInsert
15659
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
288 call timer_stop(timer)
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
289 endfunc
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
290
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
291 func Test_map_timeout_with_timer_interrupt()
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
292 if !has('job') || !has('timers')
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
293 return
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
294 endif
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
295
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
296 " Confirm the timer invoked in exit_cb of the job doesn't disturb mapped key
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
297 " sequence.
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
298 new
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
299 let g:val = 0
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
300 nnoremap \12 :let g:val = 1<CR>
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
301 nnoremap \123 :let g:val = 2<CR>
17726
586558396b7e patch 8.1.1860: map timeout test is flaky
Bram Moolenaar <Bram@vim.org>
parents: 17722
diff changeset
302 set timeout timeoutlen=200
15659
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
303
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
304 func ExitCb(job, status)
15687
cb501b3c9fb5 patch 8.1.0851: feedkeys() with "L" does not work properly
Bram Moolenaar <Bram@vim.org>
parents: 15659
diff changeset
305 let g:timer = timer_start(1, {-> feedkeys("3\<Esc>", 't')})
15659
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
306 endfunc
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
307
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
308 call job_start([&shell, &shellcmdflag, 'echo'], {'exit_cb': 'ExitCb'})
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
309 call feedkeys('\12', 'xt!')
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
310 call assert_equal(2, g:val)
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
311
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
312 bwipe!
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
313 nunmap \12
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
314 nunmap \123
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
315 set timeoutlen&
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
316 call WaitFor({-> exists('g:timer')})
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
317 call timer_stop(g:timer)
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
318 unlet g:timer
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
319 unlet g:val
8513d9864f7e patch 8.1.0837: timer interrupting cursorhold and mapping not tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
320 delfunc ExitCb
11403
74a40efb39ea patch 8.0.0586: no test for mapping timing out
Christian Brabandt <cb@256bit.org>
parents: 11295
diff changeset
321 endfunc
13788
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
322
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
323 func Test_abbreviation_CR()
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
324 new
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
325 func Eatchar(pat)
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
326 let c = nr2char(getchar(0))
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
327 return (c =~ a:pat) ? '' : c
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
328 endfunc
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
329 iabbrev <buffer><silent> ~~7 <c-r>=repeat('~', 7)<CR><c-r>=Eatchar('\s')<cr>
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
330 call feedkeys("GA~~7 \<esc>", 'xt')
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
331 call assert_equal('~~~~~~~', getline('$'))
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
332 %d
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
333 call feedkeys("GA~~7\<cr>\<esc>", 'xt')
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
334 call assert_equal(['~~~~~~~', ''], getline(1,'$'))
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
335 delfunc Eatchar
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
336 bw!
a27d380b257f patch 8.0.1766: expanding abbreviation doesn't work
Christian Brabandt <cb@256bit.org>
parents: 11403
diff changeset
337 endfunc
13933
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
338
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
339 func Test_cabbr_visual_mode()
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
340 cabbr s su
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
341 call feedkeys(":s \<c-B>\"\<CR>", 'itx')
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
342 call assert_equal('"su ', getreg(':'))
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
343 call feedkeys(":'<,'>s \<c-B>\"\<CR>", 'itx')
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
344 let expected = '"'. "'<,'>su "
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
345 call assert_equal(expected, getreg(':'))
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
346 call feedkeys(": '<,'>s \<c-B>\"\<CR>", 'itx')
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
347 let expected = '" '. "'<,'>su "
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
348 call assert_equal(expected, getreg(':'))
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
349 call feedkeys(":'a,'bs \<c-B>\"\<CR>", 'itx')
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
350 let expected = '"'. "'a,'bsu "
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
351 call assert_equal(expected, getreg(':'))
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
352 cunabbr s
bea665293ea0 patch 8.0.1837: one character cmdline abbreviation not triggered after '<,'>
Christian Brabandt <cb@256bit.org>
parents: 13788
diff changeset
353 endfunc
15279
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
354
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
355 func Test_motionforce_omap()
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
356 func GetCommand()
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
357 let g:m=mode(1)
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
358 let [g:lnum1, g:col1] = searchpos('-', 'Wb')
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
359 if g:lnum1 == 0
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
360 return "\<Esc>"
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
361 endif
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
362 let [g:lnum2, g:col2] = searchpos('-', 'W')
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
363 if g:lnum2 == 0
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
364 return "\<Esc>"
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
365 endif
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
366 return ":call Select()\<CR>"
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
367 endfunc
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
368 func Select()
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
369 call cursor([g:lnum1, g:col1])
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
370 exe "normal! 1 ". (strlen(g:m) == 2 ? 'v' : g:m[2])
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
371 call cursor([g:lnum2, g:col2])
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
372 execute "normal! \<BS>"
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
373 endfunc
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
374 new
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
375 onoremap <buffer><expr> i- GetCommand()
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
376 " 1) default omap mapping
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
377 %d_
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
378 call setline(1, ['aaa - bbb', 'x', 'ddd - eee'])
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
379 call cursor(2, 1)
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
380 norm di-
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
381 call assert_equal('no', g:m)
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
382 call assert_equal(['aaa -- eee'], getline(1, '$'))
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
383 " 2) forced characterwise operation
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
384 %d_
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
385 call setline(1, ['aaa - bbb', 'x', 'ddd - eee'])
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
386 call cursor(2, 1)
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
387 norm dvi-
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
388 call assert_equal('nov', g:m)
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
389 call assert_equal(['aaa -- eee'], getline(1, '$'))
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
390 " 3) forced linewise operation
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
391 %d_
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
392 call setline(1, ['aaa - bbb', 'x', 'ddd - eee'])
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
393 call cursor(2, 1)
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
394 norm dVi-
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
395 call assert_equal('noV', g:m)
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
396 call assert_equal([''], getline(1, '$'))
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
397 " 4) forced blockwise operation
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
398 %d_
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
399 call setline(1, ['aaa - bbb', 'x', 'ddd - eee'])
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
400 call cursor(2, 1)
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
401 exe "norm d\<C-V>i-"
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
402 call assert_equal("no\<C-V>", g:m)
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
403 call assert_equal(['aaabbb', 'x', 'dddeee'], getline(1, '$'))
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
404 bwipe!
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
405 delfunc Select
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
406 delfunc GetCommand
54457fc4af0b patch 8.1.0648: custom operators can't act upon a forced motion
Bram Moolenaar <Bram@vim.org>
parents: 13933
diff changeset
407 endfunc
17184
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
408
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
409 func Test_error_in_map_expr()
17657
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17249
diff changeset
410 " Unlike CheckRunVimInTerminal this does work in a win32 console
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17249
diff changeset
411 CheckFeature terminal
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17249
diff changeset
412 if has('win32') && has('gui_running')
17184
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
413 throw 'Skipped: cannot run Vim in a terminal window'
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
414 endif
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
415
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
416 let lines =<< trim [CODE]
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
417 func Func()
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
418 " fail to create list
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
419 let x = [
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
420 endfunc
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
421 nmap <expr> ! Func()
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
422 set updatetime=50
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
423 [CODE]
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
424 call writefile(lines, 'Xtest.vim')
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
425
17249
3e2e998ce0db patch 8.1.1624: when testing in the GUI may try to run gvim in a terminal
Bram Moolenaar <Bram@vim.org>
parents: 17239
diff changeset
426 let buf = term_start(GetVimCommandCleanTerm() .. ' -S Xtest.vim', {'term_rows': 8})
17184
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
427 let job = term_getjob(buf)
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
428 call WaitForAssert({-> assert_notequal('', term_getline(buf, 8))})
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
429
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
430 " GC must not run during map-expr processing, which can make Vim crash.
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
431 call term_sendkeys(buf, '!')
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
432 call term_wait(buf, 100)
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
433 call term_sendkeys(buf, "\<CR>")
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
434 call term_wait(buf, 100)
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
435 call assert_equal('run', job_status(job))
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
436
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
437 call term_sendkeys(buf, ":qall!\<CR>")
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
438 call WaitFor({-> job_status(job) ==# 'dead'})
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
439 if has('unix')
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
440 call assert_equal('', job_info(job).termsig)
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
441 endif
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
442
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
443 call delete('Xtest.vim')
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
444 exe buf .. 'bwipe!'
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 16389
diff changeset
445 endfunc
18329
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
446
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
447 func Test_list_mappings()
18346
5b12fd0c39c3 patch 8.1.2167: mapping test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 18341
diff changeset
448 " Remove default mappings
5b12fd0c39c3 patch 8.1.2167: mapping test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 18341
diff changeset
449 imapclear
18341
a9d518b1271b patch 8.1.2165: mapping test fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 18329
diff changeset
450
18329
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
451 inoremap <C-M> CtrlM
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
452 inoremap <A-S> AltS
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
453 inoremap <S-/> ShiftSlash
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
454 call assert_equal([
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
455 \ 'i <S-/> * ShiftSlash',
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
456 \ 'i <M-S> * AltS',
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
457 \ 'i <C-M> * CtrlM',
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
458 \], execute('imap')->trim()->split("\n"))
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
459 iunmap <C-M>
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
460 iunmap <A-S>
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
461 call assert_equal(['i <S-/> * ShiftSlash'], execute('imap')->trim()->split("\n"))
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
462 iunmap <S-/>
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
463 call assert_equal(['No mapping found'], execute('imap')->trim()->split("\n"))
1784afa654c8 patch 8.1.2159: some mappings are listed twice
Bram Moolenaar <Bram@vim.org>
parents: 17726
diff changeset
464 endfunc
18689
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
465
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
466 func Test_expr_map_restore_cursor()
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
467 CheckScreendump
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
468
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
469 let lines =<< trim END
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
470 call setline(1, ['one', 'two', 'three'])
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
471 2
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
472 set ls=2
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
473 hi! link StatusLine ErrorMsg
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
474 noremap <expr> <C-B> Func()
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
475 func Func()
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
476 let g:on = !get(g:, 'on', 0)
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
477 redraws
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
478 return ''
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
479 endfunc
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
480 func Status()
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
481 return get(g:, 'on', 0) ? '[on]' : ''
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
482 endfunc
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
483 set stl=%{Status()}
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
484 END
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
485 call writefile(lines, 'XtestExprMap')
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
486 let buf = RunVimInTerminal('-S XtestExprMap', #{rows: 10})
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
487 call term_wait(buf)
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
488 call term_sendkeys(buf, "\<C-B>")
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
489 call VerifyScreenDump(buf, 'Test_map_expr_1', {})
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
490
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
491 " clean up
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
492 call StopVimInTerminal(buf)
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
493 call delete('XtestExprMap')
8cc12c8d7842 patch 8.1.2336: when an expr mapping moves the cursor it is not restored
Bram Moolenaar <Bram@vim.org>
parents: 18346
diff changeset
494 endfunc