Mercurial > vim
annotate src/testdir/test_langmap.vim @ 21303:7c50dfe302f8 v8.2.1202
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Commit: https://github.com/vim/vim/commit/08f7a41b0a280e5901eb4ee4bbfe682113863492
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Jul 13 20:41:08 2020 +0200
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Problem: Vim9: crash when calling a closure from a builtin function.
Solution: Use the current execution context. (closes https://github.com/vim/vim/issues/6441)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 13 Jul 2020 20:45:04 +0200 |
parents | ad40333f2ec0 |
children | 08940efa6b4e |
rev | line source |
---|---|
7703
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
1 " tests for 'langmap' |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
2 |
17089
8e9e9124c7a2
patch 8.1.1544: some balloon tests don't run when they can
Bram Moolenaar <Bram@vim.org>
parents:
17049
diff
changeset
|
3 source check.vim |
8e9e9124c7a2
patch 8.1.1544: some balloon tests don't run when they can
Bram Moolenaar <Bram@vim.org>
parents:
17049
diff
changeset
|
4 CheckFeature langmap |
7708
1a595b2a4d5e
commit https://github.com/vim/vim/commit/09e786e7a7fc952f43e3f88ba49ab1ac6ef3b3a3
Christian Brabandt <cb@256bit.org>
parents:
7703
diff
changeset
|
5 |
7703
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
6 func Test_langmap() |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
7 new |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
8 set langmap=}l,^x,%v |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
9 |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
10 call setline(1, ['abc']) |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
11 call feedkeys('gg0}^', 'tx') |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
12 call assert_equal('ac', getline(1)) |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
13 |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
14 " in Replace mode |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
15 " need silent! to avoid a delay when entering Insert mode |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
16 call setline(1, ['abcde']) |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
17 silent! call feedkeys("gg0lR%{z\<Esc>00", 'tx') |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
18 call assert_equal('a%{ze', getline(1)) |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
19 |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
20 " in Select mode |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
21 " need silent! to avoid a delay when entering Insert mode |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
22 call setline(1, ['abcde']) |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
23 silent! call feedkeys("gg0}%}\<C-G>}^\<Esc>00", 'tx') |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
24 call assert_equal('a}^de', getline(1)) |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
25 |
19170
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
26 " Error cases |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
27 call assert_fails('set langmap=aA,b', 'E357:') |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
28 call assert_fails('set langmap=z;y;y;z', 'E358:') |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
29 |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
30 " Map character > 256 |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
31 enew! |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
32 set langmap=āx,ăl,āx |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
33 call setline(1, ['abcde']) |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
34 call feedkeys('gg2lā', 'tx') |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
35 call assert_equal('abde', getline(1)) |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
36 |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
37 " special characters in langmap |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
38 enew! |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
39 call setline(1, ['Hello World']) |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
40 set langmap=\\;\\,,\\,\\; |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
41 call feedkeys('ggfo,', 'tx') |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
42 call assert_equal(8, col('.')) |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
43 call feedkeys(';', 'tx') |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
44 call assert_equal(5, col('.')) |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
45 set langmap& |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
46 set langmap=\\;\\,;\\,\\; |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
47 call feedkeys('ggfo,', 'tx') |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
48 call assert_equal(8, col('.')) |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
49 call feedkeys(';', 'tx') |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
50 call assert_equal(5, col('.')) |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
51 |
ad40333f2ec0
patch 8.2.0144: some mapping code is not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17089
diff
changeset
|
52 set langmap& |
7703
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
53 quit! |
39251e981d1f
commit https://github.com/vim/vim/commit/25281634cda03ce302aaf9f906a9520b5f81f91e
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
54 endfunc |