xref: /vim-8.2.3635/src/testdir/test_listlbr.vim (revision eed9d462)
1544d3bc9SBram Moolenaar" Test for linebreak and list option (non-utf8)
2544d3bc9SBram Moolenaar
3544d3bc9SBram Moolenaarset encoding=latin1
4544d3bc9SBram Moolenaarscriptencoding latin1
5544d3bc9SBram Moolenaar
6b46fecd3SBram Moolenaarsource check.vim
7b46fecd3SBram MoolenaarCheckOption linebreak
8b46fecd3SBram MoolenaarCheckFeature conceal
9544d3bc9SBram Moolenaar
10544d3bc9SBram Moolenaarsource view_util.vim
11544d3bc9SBram Moolenaar
12544d3bc9SBram Moolenaarfunction s:screen_lines(lnum, width) abort
13544d3bc9SBram Moolenaar  return ScreenLines(a:lnum, a:width)
14544d3bc9SBram Moolenaarendfunction
15544d3bc9SBram Moolenaar
161e115360SBram Moolenaarfunc s:compare_lines(expect, actual)
17544d3bc9SBram Moolenaar  call assert_equal(join(a:expect, "\n"), join(a:actual, "\n"))
181e115360SBram Moolenaarendfunc
19544d3bc9SBram Moolenaar
20544d3bc9SBram Moolenaarfunction s:test_windows(...)
21544d3bc9SBram Moolenaar  call NewWindow(10, 20)
22544d3bc9SBram Moolenaar  setl ts=8 sw=4 sts=4 linebreak sbr= wrap
23544d3bc9SBram Moolenaar  exe get(a:000, 0, '')
24544d3bc9SBram Moolenaarendfunction
25544d3bc9SBram Moolenaar
26544d3bc9SBram Moolenaarfunction s:close_windows(...)
27544d3bc9SBram Moolenaar  call CloseWindow()
28544d3bc9SBram Moolenaar  exe get(a:000, 0, '')
29544d3bc9SBram Moolenaarendfunction
30544d3bc9SBram Moolenaar
31544d3bc9SBram Moolenaarfunc Test_set_linebreak()
32544d3bc9SBram Moolenaar  call s:test_windows('setl ts=4 sbr=+')
33544d3bc9SBram Moolenaar  call setline(1, "\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP ")
34544d3bc9SBram Moolenaar  let lines = s:screen_lines([1, 4], winwidth(0))
35544d3bc9SBram Moolenaar  let expect = [
36544d3bc9SBram Moolenaar\ "    abcdef          ",
37544d3bc9SBram Moolenaar\ "+hijklmn            ",
38544d3bc9SBram Moolenaar\ "+pqrstuvwxyz_1060ABC",
39544d3bc9SBram Moolenaar\ "+DEFGHIJKLMNOP      ",
40544d3bc9SBram Moolenaar\ ]
41544d3bc9SBram Moolenaar  call s:compare_lines(expect, lines)
42544d3bc9SBram Moolenaar  call s:close_windows()
43544d3bc9SBram Moolenaarendfunc
44544d3bc9SBram Moolenaar
45544d3bc9SBram Moolenaarfunc Test_linebreak_with_list()
46*eed9d462SBram Moolenaar  set listchars=
47544d3bc9SBram Moolenaar  call s:test_windows('setl ts=4 sbr=+ list listchars=')
48544d3bc9SBram Moolenaar  call setline(1, "\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP ")
49544d3bc9SBram Moolenaar  let lines = s:screen_lines([1, 4], winwidth(0))
50544d3bc9SBram Moolenaar  let expect = [
51544d3bc9SBram Moolenaar\ "^Iabcdef hijklmn^I  ",
52544d3bc9SBram Moolenaar\ "+pqrstuvwxyz_1060ABC",
53544d3bc9SBram Moolenaar\ "+DEFGHIJKLMNOP      ",
54544d3bc9SBram Moolenaar\ "~                   ",
55544d3bc9SBram Moolenaar\ ]
56544d3bc9SBram Moolenaar  call s:compare_lines(expect, lines)
57544d3bc9SBram Moolenaar  call s:close_windows()
58*eed9d462SBram Moolenaar  set listchars&vim
59544d3bc9SBram Moolenaarendfunc
60544d3bc9SBram Moolenaar
61544d3bc9SBram Moolenaarfunc Test_linebreak_with_nolist()
62544d3bc9SBram Moolenaar  call s:test_windows('setl ts=4 sbr=+ nolist')
63544d3bc9SBram Moolenaar  call setline(1, "\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP ")
64544d3bc9SBram Moolenaar  let lines = s:screen_lines([1, 4], winwidth(0))
65544d3bc9SBram Moolenaar  let expect = [
66544d3bc9SBram Moolenaar\ "    abcdef          ",
67544d3bc9SBram Moolenaar\ "+hijklmn            ",
68544d3bc9SBram Moolenaar\ "+pqrstuvwxyz_1060ABC",
69544d3bc9SBram Moolenaar\ "+DEFGHIJKLMNOP      ",
70544d3bc9SBram Moolenaar\ ]
71544d3bc9SBram Moolenaar  call s:compare_lines(expect, lines)
72544d3bc9SBram Moolenaar  call s:close_windows()
73544d3bc9SBram Moolenaarendfunc
74544d3bc9SBram Moolenaar
75544d3bc9SBram Moolenaarfunc Test_should_break()
76544d3bc9SBram Moolenaar  call s:test_windows('setl sbr=+ nolist')
77544d3bc9SBram Moolenaar  call setline(1, "1\t" . repeat('a', winwidth(0)-2))
78544d3bc9SBram Moolenaar  let lines = s:screen_lines([1, 4], winwidth(0))
79544d3bc9SBram Moolenaar  let expect = [
80544d3bc9SBram Moolenaar\ "1                   ",
81544d3bc9SBram Moolenaar\ "+aaaaaaaaaaaaaaaaaa ",
82544d3bc9SBram Moolenaar\ "~                   ",
83544d3bc9SBram Moolenaar\ "~                   ",
84544d3bc9SBram Moolenaar\ ]
85544d3bc9SBram Moolenaar  call s:compare_lines(expect, lines)
86544d3bc9SBram Moolenaar  call s:close_windows()
87544d3bc9SBram Moolenaarendfunc
88544d3bc9SBram Moolenaar
89544d3bc9SBram Moolenaarfunc Test_linebreak_with_conceal()
90544d3bc9SBram Moolenaar  call s:test_windows('setl cpo&vim sbr=+ list conceallevel=2 concealcursor=nv listchars=tab:ab')
91544d3bc9SBram Moolenaar  call setline(1, "_S_\t bla")
92544d3bc9SBram Moolenaar  syn match ConcealVar contained /_/ conceal
93544d3bc9SBram Moolenaar  syn match All /.*/ contains=ConcealVar
94544d3bc9SBram Moolenaar  let lines = s:screen_lines([1, 4], winwidth(0))
95544d3bc9SBram Moolenaar  let expect = [
96544d3bc9SBram Moolenaar\ "Sabbbbbb bla        ",
97544d3bc9SBram Moolenaar\ "~                   ",
98544d3bc9SBram Moolenaar\ "~                   ",
99544d3bc9SBram Moolenaar\ "~                   ",
100544d3bc9SBram Moolenaar\ ]
101544d3bc9SBram Moolenaar  call s:compare_lines(expect, lines)
102544d3bc9SBram Moolenaar  call s:close_windows()
103544d3bc9SBram Moolenaarendfunc
104544d3bc9SBram Moolenaar
10503c3bd9fSBram Moolenaarfunc Test_linebreak_with_visual_operations()
10603c3bd9fSBram Moolenaar  call s:test_windows()
10703c3bd9fSBram Moolenaar  let line = '1234567890 2234567890 3234567890'
10803c3bd9fSBram Moolenaar  call setline(1, line)
10903c3bd9fSBram Moolenaar
11003c3bd9fSBram Moolenaar  " yank
11103c3bd9fSBram Moolenaar  exec "norm! ^w\<C-V>ey"
11203c3bd9fSBram Moolenaar  call assert_equal('2234567890', @@)
11303c3bd9fSBram Moolenaar  exec "norm! w\<C-V>ey"
11403c3bd9fSBram Moolenaar  call assert_equal('3234567890', @@)
11503c3bd9fSBram Moolenaar
11603c3bd9fSBram Moolenaar  " increment / decrement
11703c3bd9fSBram Moolenaar  exec "norm! ^w\<C-V>\<C-A>w\<C-V>\<C-X>"
11803c3bd9fSBram Moolenaar  call assert_equal('1234567890 3234567890 2234567890', getline(1))
11903c3bd9fSBram Moolenaar
12003c3bd9fSBram Moolenaar  " replace
12103c3bd9fSBram Moolenaar  exec "norm! ^w\<C-V>3lraw\<C-V>3lrb"
12203c3bd9fSBram Moolenaar  call assert_equal('1234567890 aaaa567890 bbbb567890', getline(1))
12303c3bd9fSBram Moolenaar
12403c3bd9fSBram Moolenaar  " tilde
12503c3bd9fSBram Moolenaar  exec "norm! ^w\<C-V>2l~w\<C-V>2l~"
12603c3bd9fSBram Moolenaar  call assert_equal('1234567890 AAAa567890 BBBb567890', getline(1))
12703c3bd9fSBram Moolenaar
12803c3bd9fSBram Moolenaar  " delete and insert
12903c3bd9fSBram Moolenaar  exec "norm! ^w\<C-V>3lc2345\<Esc>w\<C-V>3lc3456\<Esc>"
13003c3bd9fSBram Moolenaar  call assert_equal('1234567890 2345567890 3456567890', getline(1))
13103c3bd9fSBram Moolenaar  call assert_equal('BBBb', @@)
13203c3bd9fSBram Moolenaar
13303c3bd9fSBram Moolenaar  call s:close_windows()
13403c3bd9fSBram Moolenaarendfunc
13503c3bd9fSBram Moolenaar
136544d3bc9SBram Moolenaarfunc Test_virtual_block()
137544d3bc9SBram Moolenaar  call s:test_windows('setl sbr=+')
138544d3bc9SBram Moolenaar  call setline(1, [
139544d3bc9SBram Moolenaar\ "REMOVE: this not",
140544d3bc9SBram Moolenaar\ "REMOVE: aaaaaaaaaaaaa",
141544d3bc9SBram Moolenaar\ ])
142544d3bc9SBram Moolenaar  exe "norm! 1/^REMOVE:"
143544d3bc9SBram Moolenaar  exe "norm! 0\<C-V>jf x"
144544d3bc9SBram Moolenaar  $put
145544d3bc9SBram Moolenaar  let lines = s:screen_lines([1, 4], winwidth(0))
146544d3bc9SBram Moolenaar  let expect = [
147544d3bc9SBram Moolenaar\ "this not            ",
148544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaa       ",
149544d3bc9SBram Moolenaar\ "REMOVE:             ",
150544d3bc9SBram Moolenaar\ "REMOVE:             ",
151544d3bc9SBram Moolenaar\ ]
152544d3bc9SBram Moolenaar  call s:compare_lines(expect, lines)
153544d3bc9SBram Moolenaar  call s:close_windows()
154544d3bc9SBram Moolenaarendfunc
155544d3bc9SBram Moolenaar
156544d3bc9SBram Moolenaarfunc Test_virtual_block_and_vbA()
157544d3bc9SBram Moolenaar  call s:test_windows()
158544d3bc9SBram Moolenaar  call setline(1, "long line: " . repeat("foobar ", 40) . "TARGET at end")
159544d3bc9SBram Moolenaar  exe "norm! $3B\<C-v>eAx\<Esc>"
160544d3bc9SBram Moolenaar  let lines = s:screen_lines([1, 10], winwidth(0))
161544d3bc9SBram Moolenaar  let expect = [
162544d3bc9SBram Moolenaar\ "foobar foobar       ",
163544d3bc9SBram Moolenaar\ "foobar foobar       ",
164544d3bc9SBram Moolenaar\ "foobar foobar       ",
165544d3bc9SBram Moolenaar\ "foobar foobar       ",
166544d3bc9SBram Moolenaar\ "foobar foobar       ",
167544d3bc9SBram Moolenaar\ "foobar foobar       ",
168544d3bc9SBram Moolenaar\ "foobar foobar       ",
169544d3bc9SBram Moolenaar\ "foobar foobar       ",
170544d3bc9SBram Moolenaar\ "foobar foobar       ",
171544d3bc9SBram Moolenaar\ "foobar TARGETx at   ",
172544d3bc9SBram Moolenaar\ ]
173544d3bc9SBram Moolenaar  call s:compare_lines(expect, lines)
174544d3bc9SBram Moolenaar  call s:close_windows()
175544d3bc9SBram Moolenaarendfunc
176544d3bc9SBram Moolenaar
177544d3bc9SBram Moolenaarfunc Test_virtual_char_and_block()
178544d3bc9SBram Moolenaar  call s:test_windows()
179544d3bc9SBram Moolenaar  call setline(1, "1111-1111-1111-11-1111-1111-1111")
180544d3bc9SBram Moolenaar  exe "norm! 0f-lv3lc2222\<Esc>bgj."
181544d3bc9SBram Moolenaar  let lines = s:screen_lines([1, 2], winwidth(0))
182544d3bc9SBram Moolenaar  let expect = [
183544d3bc9SBram Moolenaar\ "1111-2222-1111-11-  ",
184544d3bc9SBram Moolenaar\ "1111-2222-1111      ",
185544d3bc9SBram Moolenaar\ ]
186544d3bc9SBram Moolenaar  call s:compare_lines(expect, lines)
187544d3bc9SBram Moolenaar  call s:close_windows()
188544d3bc9SBram Moolenaarendfunc
189544d3bc9SBram Moolenaar
190544d3bc9SBram Moolenaarfunc Test_undo_after_block_visual()
191544d3bc9SBram Moolenaar  call s:test_windows()
192544d3bc9SBram Moolenaar  call setline(1, ["aaa", "aaa", "a"])
193544d3bc9SBram Moolenaar  exe "norm! gg\<C-V>2j~e."
194544d3bc9SBram Moolenaar  let lines = s:screen_lines([1, 3], winwidth(0))
195544d3bc9SBram Moolenaar  let expect = [
196544d3bc9SBram Moolenaar\ "AaA                 ",
197544d3bc9SBram Moolenaar\ "AaA                 ",
198544d3bc9SBram Moolenaar\ "A                   ",
199544d3bc9SBram Moolenaar\ ]
200544d3bc9SBram Moolenaar  call s:compare_lines(expect, lines)
201544d3bc9SBram Moolenaar  call s:close_windows()
202544d3bc9SBram Moolenaarendfunc
203544d3bc9SBram Moolenaar
204544d3bc9SBram Moolenaarfunc Test_norm_after_block_visual()
205544d3bc9SBram Moolenaar  call s:test_windows()
206544d3bc9SBram Moolenaar  call setline(1, ["abcd{ef", "ghijklm", "no}pgrs"])
207544d3bc9SBram Moolenaar  exe "norm! ggf{\<C-V>\<C-V>c%"
208544d3bc9SBram Moolenaar  let lines = s:screen_lines([1, 3], winwidth(0))
209544d3bc9SBram Moolenaar  let expect = [
210544d3bc9SBram Moolenaar\ "abcdpgrs            ",
211544d3bc9SBram Moolenaar\ "~                   ",
212544d3bc9SBram Moolenaar\ "~                   ",
213544d3bc9SBram Moolenaar\ ]
214544d3bc9SBram Moolenaar  call s:compare_lines(expect, lines)
215544d3bc9SBram Moolenaar  call s:close_windows()
216544d3bc9SBram Moolenaarendfunc
217544d3bc9SBram Moolenaar
218544d3bc9SBram Moolenaarfunc Test_block_replace_after_wrapping()
219544d3bc9SBram Moolenaar  call s:test_windows()
220544d3bc9SBram Moolenaar  call setline(1, repeat("a", 150))
221544d3bc9SBram Moolenaar  exe "norm! 0yypk147|\<C-V>jr0"
222544d3bc9SBram Moolenaar  call assert_equal(repeat("a", 146) . "0aaa", getline(1))
223544d3bc9SBram Moolenaar  call assert_equal(repeat("a", 146) . "0aaa", getline(2))
224544d3bc9SBram Moolenaar  let lines = s:screen_lines([1, 10], winwidth(0))
225544d3bc9SBram Moolenaar  let expect = [
226544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa",
227544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa",
228544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa",
229544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa",
230544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa",
231544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa",
232544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa",
233544d3bc9SBram Moolenaar\ "aaaaaa0aaa          ",
234544d3bc9SBram Moolenaar\ "@                   ",
235544d3bc9SBram Moolenaar\ "@                   ",
236544d3bc9SBram Moolenaar\ ]
237544d3bc9SBram Moolenaar  call s:compare_lines(expect, lines)
238544d3bc9SBram Moolenaar  call s:close_windows()
239544d3bc9SBram Moolenaarendfunc
240544d3bc9SBram Moolenaar
241544d3bc9SBram Moolenaarfunc Test_list_with_listchars()
242544d3bc9SBram Moolenaar  call s:test_windows('setl list listchars=space:_,trail:-,tab:>-,eol:$')
243544d3bc9SBram Moolenaar  call setline(1, "a aaaaaaaaaaaaaaaaaaaaaa\ta ")
244544d3bc9SBram Moolenaar  let lines = s:screen_lines([1, 3], winwidth(0))
245544d3bc9SBram Moolenaar  let expect = [
246544d3bc9SBram Moolenaar\ "a_                  ",
247544d3bc9SBram Moolenaar\ "aaaaaaaaaaaaaaaaaaaa",
248544d3bc9SBram Moolenaar\ "aa>-----a-$         ",
249544d3bc9SBram Moolenaar\ ]
250544d3bc9SBram Moolenaar  call s:compare_lines(expect, lines)
251544d3bc9SBram Moolenaar  call s:close_windows()
252544d3bc9SBram Moolenaarendfunc
253abc39ab6SBram Moolenaar
254abc39ab6SBram Moolenaarfunc Test_list_with_tab_and_skipping_first_chars()
255abc39ab6SBram Moolenaar  call s:test_windows('setl list listchars=tab:>- ts=70 nowrap')
256abc39ab6SBram Moolenaar  call setline(1, ["iiiiiiiiiiiiiiii\taaaaaaaaaaaaaaaaaa", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\taaaaaaaaaaaaaaaaaa", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\taaaaaaaaaaaaaaaaaa", "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\taaaaaaaaaaaaaaaaaa"])
257abc39ab6SBram Moolenaar  call cursor(4,64)
258abc39ab6SBram Moolenaar  norm! 2zl
259abc39ab6SBram Moolenaar  let lines = s:screen_lines([1, 4], winwidth(0))
260abc39ab6SBram Moolenaar  let expect = [
261abc39ab6SBram Moolenaar\ "---------------aaaaa",
262abc39ab6SBram Moolenaar\ "---------------aaaaa",
263abc39ab6SBram Moolenaar\ "---------------aaaaa",
264abc39ab6SBram Moolenaar\ "iiiiiiiii>-----aaaaa",
265abc39ab6SBram Moolenaar\ ]
266abc39ab6SBram Moolenaar  call s:compare_lines(expect, lines)
267abc39ab6SBram Moolenaar  call s:close_windows()
2686d91bcb4SBram Moolenaarendfunc
2696d91bcb4SBram Moolenaar
2706d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
271