1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
-- Tests for correct display (cursor column position) with +conceal and
-- tabulators.
local helpers = require('test.functional.helpers')
local feed, insert, eq, eval = helpers.feed, helpers.insert, helpers.eq, helpers.eval
local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect
describe('cursor and column position with conceal and tabulators', function()
setup(clear)
it('are working', function()
insert([[
start:
.concealed. text
|concealed| text
.concealed. text
|concealed| text
.a. .b. .c. .d.
|a| |b| |c| |d|]])
-- Conceal settings.
execute('set conceallevel=2')
execute('set concealcursor=nc')
execute('syntax match test /|/ conceal')
-- Save current cursor position. Only works in <expr> mode, can't be used
-- with :normal because it moves the cursor to the command line. Thanks to
-- ZyX <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
execute('let positions = []')
execute([[nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"]])
-- Start test.
execute('/^start:')
feed('ztj')
feed('GG')
-- We should end up in the same column when running these commands on the
-- two lines.
execute('normal ft')
feed('GG')
feed('$')
feed('GG')
feed('0j')
feed('GG')
execute('normal ft')
feed('GG')
feed('$')
feed('GG')
feed('j0j')
feed('GG')
-- Same for next test block.
execute('normal ft')
feed('GG')
feed('$')
feed('GG')
feed('0j')
feed('GG')
execute('normal ft')
feed('GG')
feed('$')
feed('GG')
feed('0j0j')
feed('GG')
-- And check W with multiple tabs and conceals in a line.
feed('W')
feed('GG')
feed('W')
feed('GG')
feed('W')
feed('GG')
feed('$')
feed('GG')
feed('0j')
feed('GG')
feed('W')
feed('GG')
feed('W')
feed('GG')
feed('W')
feed('GG')
feed('$')
feed('GG')
execute('set lbr')
feed('$')
feed('GG')
-- Display result.
execute([[call append('$', 'end:')]])
execute([[call append('$', positions)]])
execute('0,/^end/-1 d')
-- Assert buffer contents.
expect([[
end:
2:1
2:17
2:20
3:1
3:17
3:20
5:8
5:25
5:28
6:8
6:25
6:28
8:1
8:9
8:17
8:25
8:27
9:1
9:9
9:17
9:25
9:26
9:26]])
end)
end)
|