xref: /vim-8.2.3635/src/testdir/test_join.vim (revision 6d91bcb4)
141e0f2f4SBram Moolenaar" Test for joining lines.
241e0f2f4SBram Moolenaar
341e0f2f4SBram Moolenaarfunc Test_join_with_count()
441e0f2f4SBram Moolenaar  new
541e0f2f4SBram Moolenaar  call setline(1, ['one', 'two', 'three', 'four'])
641e0f2f4SBram Moolenaar  normal J
741e0f2f4SBram Moolenaar  call assert_equal('one two', getline(1))
841e0f2f4SBram Moolenaar  %del
941e0f2f4SBram Moolenaar  call setline(1, ['one', 'two', 'three', 'four'])
1041e0f2f4SBram Moolenaar  normal 10J
1141e0f2f4SBram Moolenaar  call assert_equal('one two three four', getline(1))
12cc184cfbSBram Moolenaar
13cc184cfbSBram Moolenaar  call setline(1, ['one', '', 'two'])
14cc184cfbSBram Moolenaar  normal J
15cc184cfbSBram Moolenaar  call assert_equal('one', getline(1))
16cc184cfbSBram Moolenaar
17cc184cfbSBram Moolenaar  call setline(1, ['one', ' ', 'two'])
18cc184cfbSBram Moolenaar  normal J
19cc184cfbSBram Moolenaar  call assert_equal('one', getline(1))
20cc184cfbSBram Moolenaar
21cc184cfbSBram Moolenaar  call setline(1, ['one', '', '', 'two'])
22cc184cfbSBram Moolenaar  normal JJ
23cc184cfbSBram Moolenaar  call assert_equal('one', getline(1))
24cc184cfbSBram Moolenaar
25cc184cfbSBram Moolenaar  call setline(1, ['one', ' ', ' ', 'two'])
26cc184cfbSBram Moolenaar  normal JJ
27cc184cfbSBram Moolenaar  call assert_equal('one', getline(1))
28cc184cfbSBram Moolenaar
29cc184cfbSBram Moolenaar  call setline(1, ['one', '', '', 'two'])
30cc184cfbSBram Moolenaar  normal 2J
31cc184cfbSBram Moolenaar  call assert_equal('one', getline(1))
32cc184cfbSBram Moolenaar
3341e0f2f4SBram Moolenaar  quit!
3441e0f2f4SBram Moolenaarendfunc
3553f0c962SBram Moolenaar
3653f0c962SBram Moolenaar" Tests for setting the '[,'] marks when joining lines.
3753f0c962SBram Moolenaarfunc Test_join_marks()
3853f0c962SBram Moolenaar  enew
3953f0c962SBram Moolenaar  call append(0, [
4053f0c962SBram Moolenaar	      \ "\t\tO sodales, ludite, vos qui",
4153f0c962SBram Moolenaar	      \ "attamen consulite per voster honur. Tua pulchra " .
4253f0c962SBram Moolenaar	      \ "facies me fay planszer milies",
4353f0c962SBram Moolenaar	      \ "",
4453f0c962SBram Moolenaar	      \ "This line.",
4553f0c962SBram Moolenaar	      \ "Should be joined with the next line",
4653f0c962SBram Moolenaar	      \ "and with this line"])
4753f0c962SBram Moolenaar
4853f0c962SBram Moolenaar  normal gg0gqj
4953f0c962SBram Moolenaar  call assert_equal([0, 1, 1, 0], getpos("'["))
5053f0c962SBram Moolenaar  call assert_equal([0, 2, 1, 0], getpos("']"))
5153f0c962SBram Moolenaar
5253f0c962SBram Moolenaar  /^This line/;'}-join
5353f0c962SBram Moolenaar  call assert_equal([0, 4, 11, 0], getpos("'["))
5453f0c962SBram Moolenaar  call assert_equal([0, 4, 67, 0], getpos("']"))
5553f0c962SBram Moolenaar  enew!
5653f0c962SBram Moolenaarendfunc
57fb222df2SBram Moolenaar
58fb222df2SBram Moolenaar" Test for joining lines and marks in them
59fb222df2SBram Moolenaar"   in compatible and nocompatible modes
60fb222df2SBram Moolenaar"   and with 'joinspaces' set or not
61fb222df2SBram Moolenaar"   and with 'cpoptions' flag 'j' set or not
62fb222df2SBram Moolenaarfunc Test_join_spaces_marks()
63fb222df2SBram Moolenaar  new
64fb222df2SBram Moolenaar  " Text used for the test
65fb222df2SBram Moolenaar  insert
66fb222df2SBram Moolenaarasdfasdf.
67fb222df2SBram Moolenaarasdf
68fb222df2SBram Moolenaarasdfasdf.
69fb222df2SBram Moolenaarasdf
70fb222df2SBram Moolenaarasdfasdf.
71fb222df2SBram Moolenaarasdf
72fb222df2SBram Moolenaarasdfasdf.
73fb222df2SBram Moolenaarasdf
74fb222df2SBram Moolenaarasdfasdf.
75fb222df2SBram Moolenaarasdf
76fb222df2SBram Moolenaarasdfasdf.
77fb222df2SBram Moolenaarasdf
78fb222df2SBram Moolenaarasdfasdf.
79fb222df2SBram Moolenaarasdf
80fb222df2SBram Moolenaarasdfasdf
81fb222df2SBram Moolenaarasdf
82fb222df2SBram Moolenaarasdfasdf
83fb222df2SBram Moolenaarasdf
84fb222df2SBram Moolenaarasdfasdf
85fb222df2SBram Moolenaarasdf
86fb222df2SBram Moolenaarasdfasdf
87fb222df2SBram Moolenaarasdf
88fb222df2SBram Moolenaarasdfasdf
89fb222df2SBram Moolenaarasdf
90fb222df2SBram Moolenaarasdfasdf
91fb222df2SBram Moolenaarasdf
92fb222df2SBram Moolenaarasdfasdf
93fb222df2SBram Moolenaarasdf
94fb222df2SBram Moolenaarzx cvn.
95fb222df2SBram Moolenaaras dfg?
96fb222df2SBram Moolenaarhjkl iop!
97fb222df2SBram Moolenaarert
98fb222df2SBram Moolenaarzx cvn.
99fb222df2SBram Moolenaaras dfg?
100fb222df2SBram Moolenaarhjkl iop!
101fb222df2SBram Moolenaarert
102fb222df2SBram Moolenaar.
103fb222df2SBram Moolenaar  let text = getline(1, '$')
104fb222df2SBram Moolenaar  normal gg
105fb222df2SBram Moolenaar
106fb222df2SBram Moolenaar  set nojoinspaces
107fb222df2SBram Moolenaar  set cpoptions-=j
108fb222df2SBram Moolenaar  normal JjJjJjJjJjJjJjJjJjJjJjJjJjJ
109fb222df2SBram Moolenaar  normal j05lmx
110fb222df2SBram Moolenaar  normal 2j06lmy
111fb222df2SBram Moolenaar  normal 2k4Jy3l$p
112fb222df2SBram Moolenaar  normal `xyl$p
113fb222df2SBram Moolenaar  normal `yy2l$p
114fb222df2SBram Moolenaar
115fb222df2SBram Moolenaar  set cpoptions+=j
116fb222df2SBram Moolenaar  normal j05lmx
117fb222df2SBram Moolenaar  normal 2j06lmy
118fb222df2SBram Moolenaar  normal 2k4Jy3l$p
119fb222df2SBram Moolenaar  normal `xyl$p
120fb222df2SBram Moolenaar  normal `yy2l$p
121fb222df2SBram Moolenaar
122fb222df2SBram Moolenaar  " Expected output
123c79745a8SBram Moolenaar  let expected =<< trim [DATA]
124fb222df2SBram Moolenaar    asdfasdf. asdf
125fb222df2SBram Moolenaar    asdfasdf. asdf
126fb222df2SBram Moolenaar    asdfasdf.  asdf
127fb222df2SBram Moolenaar    asdfasdf.	asdf
128fb222df2SBram Moolenaar    asdfasdf. 	asdf
129fb222df2SBram Moolenaar    asdfasdf.	 asdf
130fb222df2SBram Moolenaar    asdfasdf.		asdf
131fb222df2SBram Moolenaar    asdfasdf asdf
132fb222df2SBram Moolenaar    asdfasdf asdf
133fb222df2SBram Moolenaar    asdfasdf  asdf
134fb222df2SBram Moolenaar    asdfasdf	asdf
135fb222df2SBram Moolenaar    asdfasdf	 asdf
136fb222df2SBram Moolenaar    asdfasdf 	asdf
137fb222df2SBram Moolenaar    asdfasdf		asdf
138fb222df2SBram Moolenaar    zx cvn. as dfg? hjkl iop! ert ernop
139fb222df2SBram Moolenaar    zx cvn. as dfg? hjkl iop! ert ernop
140c79745a8SBram Moolenaar  [DATA]
141fb222df2SBram Moolenaar
142c79745a8SBram Moolenaar  call assert_equal(expected, getline(1, '$'))
143fb222df2SBram Moolenaar
144fb222df2SBram Moolenaar  enew!
145fb222df2SBram Moolenaar  call append(0, text)
146fb222df2SBram Moolenaar  normal gg
147fb222df2SBram Moolenaar
148fb222df2SBram Moolenaar  set cpoptions-=j
149fb222df2SBram Moolenaar  set joinspaces
150fb222df2SBram Moolenaar  normal JjJjJjJjJjJjJjJjJjJjJjJjJjJ
151fb222df2SBram Moolenaar  normal j05lmx
152fb222df2SBram Moolenaar  normal 2j06lmy
153fb222df2SBram Moolenaar  normal 2k4Jy3l$p
154fb222df2SBram Moolenaar  normal `xyl$p
155fb222df2SBram Moolenaar  normal `yy2l$p
156fb222df2SBram Moolenaar
157fb222df2SBram Moolenaar  set cpoptions+=j
158fb222df2SBram Moolenaar  normal j05lmx
159fb222df2SBram Moolenaar  normal 2j06lmy
160fb222df2SBram Moolenaar  normal 2k4Jy3l$p
161fb222df2SBram Moolenaar  normal `xyl$p
162fb222df2SBram Moolenaar  normal `yy2l$p
163fb222df2SBram Moolenaar
164fb222df2SBram Moolenaar  " Expected output
165c79745a8SBram Moolenaar  let expected =<< trim [DATA]
166fb222df2SBram Moolenaar    asdfasdf.  asdf
167fb222df2SBram Moolenaar    asdfasdf.  asdf
168fb222df2SBram Moolenaar    asdfasdf.  asdf
169fb222df2SBram Moolenaar    asdfasdf.	asdf
170fb222df2SBram Moolenaar    asdfasdf. 	asdf
171fb222df2SBram Moolenaar    asdfasdf.	 asdf
172fb222df2SBram Moolenaar    asdfasdf.		asdf
173fb222df2SBram Moolenaar    asdfasdf asdf
174fb222df2SBram Moolenaar    asdfasdf asdf
175fb222df2SBram Moolenaar    asdfasdf  asdf
176fb222df2SBram Moolenaar    asdfasdf	asdf
177fb222df2SBram Moolenaar    asdfasdf	 asdf
178fb222df2SBram Moolenaar    asdfasdf 	asdf
179fb222df2SBram Moolenaar    asdfasdf		asdf
180fb222df2SBram Moolenaar    zx cvn.  as dfg?  hjkl iop!  ert  enop
181fb222df2SBram Moolenaar    zx cvn.  as dfg? hjkl iop! ert ernop
182fb222df2SBram Moolenaar
183c79745a8SBram Moolenaar  [DATA]
184fb222df2SBram Moolenaar
185c79745a8SBram Moolenaar  call assert_equal(expected, getline(1, '$'))
186fb222df2SBram Moolenaar
187fb222df2SBram Moolenaar  enew!
188fb222df2SBram Moolenaar  call append(0, text)
189fb222df2SBram Moolenaar  normal gg
190fb222df2SBram Moolenaar
191fb222df2SBram Moolenaar  set cpoptions-=j
192fb222df2SBram Moolenaar  set nojoinspaces
193fb222df2SBram Moolenaar  set compatible
194fb222df2SBram Moolenaar
195fb222df2SBram Moolenaar  normal JjJjJjJjJjJjJjJjJjJjJjJjJjJ
196fb222df2SBram Moolenaar  normal j4Jy3l$pjdG
197fb222df2SBram Moolenaar
198fb222df2SBram Moolenaar  " Expected output
199c79745a8SBram Moolenaar  let expected =<< trim [DATA]
200fb222df2SBram Moolenaar    asdfasdf.  asdf
201fb222df2SBram Moolenaar    asdfasdf.  asdf
202fb222df2SBram Moolenaar    asdfasdf.  asdf
203fb222df2SBram Moolenaar    asdfasdf.	asdf
204fb222df2SBram Moolenaar    asdfasdf. 	asdf
205fb222df2SBram Moolenaar    asdfasdf.	 asdf
206fb222df2SBram Moolenaar    asdfasdf.		asdf
207fb222df2SBram Moolenaar    asdfasdf asdf
208fb222df2SBram Moolenaar    asdfasdf asdf
209fb222df2SBram Moolenaar    asdfasdf  asdf
210fb222df2SBram Moolenaar    asdfasdf	asdf
211fb222df2SBram Moolenaar    asdfasdf	 asdf
212fb222df2SBram Moolenaar    asdfasdf 	asdf
213fb222df2SBram Moolenaar    asdfasdf		asdf
214fb222df2SBram Moolenaar    zx cvn.  as dfg? hjkl iop! ert  a
215c79745a8SBram Moolenaar  [DATA]
216fb222df2SBram Moolenaar
217c79745a8SBram Moolenaar  call assert_equal(expected, getline(1, '$'))
218fb222df2SBram Moolenaar
219fb222df2SBram Moolenaar  set nocompatible
220fb222df2SBram Moolenaar  set cpoptions&vim
221fb222df2SBram Moolenaar  set joinspaces&vim
222fb222df2SBram Moolenaar  close!
223fb222df2SBram Moolenaarendfunc
224fb222df2SBram Moolenaar
225fb222df2SBram Moolenaar" Test for joining lines with comments
226fb222df2SBram Moolenaarfunc Test_join_lines_with_comments()
227fb222df2SBram Moolenaar  new
228fb222df2SBram Moolenaar
229fb222df2SBram Moolenaar  " Text used by the test
230fb222df2SBram Moolenaar  insert
231fb222df2SBram Moolenaar{
232fb222df2SBram Moolenaar
233fb222df2SBram Moolenaar/*
234fb222df2SBram Moolenaar* Make sure the previous comment leader is not removed.
235fb222df2SBram Moolenaar*/
236fb222df2SBram Moolenaar
237fb222df2SBram Moolenaar/*
238fb222df2SBram Moolenaar* Make sure the previous comment leader is not removed.
239fb222df2SBram Moolenaar*/
240fb222df2SBram Moolenaar
241fb222df2SBram Moolenaar// Should the next comment leader be left alone?
242fb222df2SBram Moolenaar// Yes.
243fb222df2SBram Moolenaar
244fb222df2SBram Moolenaar// Should the next comment leader be left alone?
245fb222df2SBram Moolenaar// Yes.
246fb222df2SBram Moolenaar
247fb222df2SBram Moolenaar/* Here the comment leader should be left intact. */
248fb222df2SBram Moolenaar// And so should this one.
249fb222df2SBram Moolenaar
250fb222df2SBram Moolenaar/* Here the comment leader should be left intact. */
251fb222df2SBram Moolenaar// And so should this one.
252fb222df2SBram Moolenaar
253fb222df2SBram Moolenaarif (condition) // Remove the next comment leader!
254fb222df2SBram Moolenaar// OK, I will.
255fb222df2SBram Moolenaaraction();
256fb222df2SBram Moolenaar
257fb222df2SBram Moolenaarif (condition) // Remove the next comment leader!
258fb222df2SBram Moolenaar// OK, I will.
259fb222df2SBram Moolenaaraction();
260fb222df2SBram Moolenaar}
261fb222df2SBram Moolenaar.
262fb222df2SBram Moolenaar
263fb222df2SBram Moolenaar  call cursor(2, 1)
264fb222df2SBram Moolenaar  set comments=s1:/*,mb:*,ex:*/,://
265fb222df2SBram Moolenaar  set nojoinspaces fo=j
266fb222df2SBram Moolenaar  set backspace=eol,start
267fb222df2SBram Moolenaar
268fb222df2SBram Moolenaar  .,+3join
269fb222df2SBram Moolenaar  exe "normal j4J\<CR>"
270fb222df2SBram Moolenaar  .,+2join
271fb222df2SBram Moolenaar  exe "normal j3J\<CR>"
272fb222df2SBram Moolenaar  .,+2join
273fb222df2SBram Moolenaar  exe "normal j3J\<CR>"
274fb222df2SBram Moolenaar  .,+2join
275fb222df2SBram Moolenaar  exe "normal jj3J\<CR>"
276fb222df2SBram Moolenaar
277fb222df2SBram Moolenaar  " Expected output
278c79745a8SBram Moolenaar  let expected =<< trim [CODE]
279fb222df2SBram Moolenaar    {
280fb222df2SBram Moolenaar    /* Make sure the previous comment leader is not removed. */
281fb222df2SBram Moolenaar    /* Make sure the previous comment leader is not removed. */
282fb222df2SBram Moolenaar    // Should the next comment leader be left alone? Yes.
283fb222df2SBram Moolenaar    // Should the next comment leader be left alone? Yes.
284fb222df2SBram Moolenaar    /* Here the comment leader should be left intact. */ // And so should this one.
285fb222df2SBram Moolenaar    /* Here the comment leader should be left intact. */ // And so should this one.
286fb222df2SBram Moolenaar    if (condition) // Remove the next comment leader! OK, I will.
287fb222df2SBram Moolenaar    action();
288fb222df2SBram Moolenaar    if (condition) // Remove the next comment leader! OK, I will.
289fb222df2SBram Moolenaar    action();
290fb222df2SBram Moolenaar    }
291c79745a8SBram Moolenaar  [CODE]
292fb222df2SBram Moolenaar
293c79745a8SBram Moolenaar  call assert_equal(expected, getline(1, '$'))
294fb222df2SBram Moolenaar
295fb222df2SBram Moolenaar  set comments&vim
296fb222df2SBram Moolenaar  set joinspaces&vim
297fb222df2SBram Moolenaar  set fo&vim
298fb222df2SBram Moolenaar  set backspace&vim
299fb222df2SBram Moolenaar  close!
300fb222df2SBram Moolenaarendfunc
301fb222df2SBram Moolenaar
302fb222df2SBram Moolenaar" Test for joining lines with different comment leaders
303fb222df2SBram Moolenaarfunc Test_join_comments_2()
304fb222df2SBram Moolenaar  new
305fb222df2SBram Moolenaar
306fb222df2SBram Moolenaar  insert
307fb222df2SBram Moolenaar{
308fb222df2SBram Moolenaar
309fb222df2SBram Moolenaar/*
310fb222df2SBram Moolenaar * Make sure the previous comment leader is not removed.
311fb222df2SBram Moolenaar */
312fb222df2SBram Moolenaar
313fb222df2SBram Moolenaar/*
314fb222df2SBram Moolenaar * Make sure the previous comment leader is not removed.
315fb222df2SBram Moolenaar */
316fb222df2SBram Moolenaar
317fb222df2SBram Moolenaar/* List:
318fb222df2SBram Moolenaar * - item1
319fb222df2SBram Moolenaar *   foo bar baz
320fb222df2SBram Moolenaar *   foo bar baz
321fb222df2SBram Moolenaar * - item2
322fb222df2SBram Moolenaar *   foo bar baz
323fb222df2SBram Moolenaar *   foo bar baz
324fb222df2SBram Moolenaar */
325fb222df2SBram Moolenaar
326fb222df2SBram Moolenaar/* List:
327fb222df2SBram Moolenaar * - item1
328fb222df2SBram Moolenaar *   foo bar baz
329fb222df2SBram Moolenaar *   foo bar baz
330fb222df2SBram Moolenaar * - item2
331fb222df2SBram Moolenaar *   foo bar baz
332fb222df2SBram Moolenaar *   foo bar baz
333fb222df2SBram Moolenaar */
334fb222df2SBram Moolenaar
335fb222df2SBram Moolenaar// Should the next comment leader be left alone?
336fb222df2SBram Moolenaar// Yes.
337fb222df2SBram Moolenaar
338fb222df2SBram Moolenaar// Should the next comment leader be left alone?
339fb222df2SBram Moolenaar// Yes.
340fb222df2SBram Moolenaar
341fb222df2SBram Moolenaar/* Here the comment leader should be left intact. */
342fb222df2SBram Moolenaar// And so should this one.
343fb222df2SBram Moolenaar
344fb222df2SBram Moolenaar/* Here the comment leader should be left intact. */
345fb222df2SBram Moolenaar// And so should this one.
346fb222df2SBram Moolenaar
347fb222df2SBram Moolenaarif (condition) // Remove the next comment leader!
348fb222df2SBram Moolenaar               // OK, I will.
349fb222df2SBram Moolenaar    action();
350fb222df2SBram Moolenaar
351fb222df2SBram Moolenaarif (condition) // Remove the next comment leader!
352fb222df2SBram Moolenaar               // OK, I will.
353fb222df2SBram Moolenaar    action();
354fb222df2SBram Moolenaar
355fb222df2SBram Moolenaarint i = 7 /* foo *// 3
356fb222df2SBram Moolenaar // comment
357fb222df2SBram Moolenaar ;
358fb222df2SBram Moolenaar
359fb222df2SBram Moolenaarint i = 7 /* foo *// 3
360fb222df2SBram Moolenaar // comment
361fb222df2SBram Moolenaar ;
362fb222df2SBram Moolenaar
363fb222df2SBram Moolenaar># Note that the last character of the ending comment leader (left angle
364fb222df2SBram Moolenaar # bracket) is a comment leader itself. Make sure that this comment leader is
365fb222df2SBram Moolenaar # not removed from the next line #<
366fb222df2SBram Moolenaar< On this line a new comment is opened which spans 2 lines. This comment should
367fb222df2SBram Moolenaar< retain its comment leader.
368fb222df2SBram Moolenaar
369fb222df2SBram Moolenaar># Note that the last character of the ending comment leader (left angle
370fb222df2SBram Moolenaar # bracket) is a comment leader itself. Make sure that this comment leader is
371fb222df2SBram Moolenaar # not removed from the next line #<
372fb222df2SBram Moolenaar< On this line a new comment is opened which spans 2 lines. This comment should
373fb222df2SBram Moolenaar< retain its comment leader.
374fb222df2SBram Moolenaar
375fb222df2SBram Moolenaar}
376fb222df2SBram Moolenaar.
377fb222df2SBram Moolenaar
378fb222df2SBram Moolenaar  call cursor(2, 1)
379fb222df2SBram Moolenaar  set comments=sO:*\ -,mO:*\ \ ,exO:*/
380fb222df2SBram Moolenaar  set comments+=s1:/*,mb:*,ex:*/,://
381fb222df2SBram Moolenaar  set comments+=s1:>#,mb:#,ex:#<,:<
382fb222df2SBram Moolenaar  set cpoptions-=j joinspaces fo=j
383fb222df2SBram Moolenaar  set backspace=eol,start
384fb222df2SBram Moolenaar
385fb222df2SBram Moolenaar  .,+3join
386fb222df2SBram Moolenaar  exe "normal j4J\<CR>"
387fb222df2SBram Moolenaar  .,+8join
388fb222df2SBram Moolenaar  exe "normal j9J\<CR>"
389fb222df2SBram Moolenaar  .,+2join
390fb222df2SBram Moolenaar  exe "normal j3J\<CR>"
391fb222df2SBram Moolenaar  .,+2join
392fb222df2SBram Moolenaar  exe "normal j3J\<CR>"
393fb222df2SBram Moolenaar  .,+2join
394fb222df2SBram Moolenaar  exe "normal jj3J\<CR>j"
395fb222df2SBram Moolenaar  .,+2join
396fb222df2SBram Moolenaar  exe "normal jj3J\<CR>j"
397fb222df2SBram Moolenaar  .,+5join
398fb222df2SBram Moolenaar  exe "normal j6J\<CR>"
399fb222df2SBram Moolenaar  exe "normal oSome code!\<CR>// Make sure backspacing does not remove this comment leader.\<Esc>0i\<C-H>\<Esc>"
400fb222df2SBram Moolenaar
401fb222df2SBram Moolenaar  " Expected output
402e7eb9270SBram Moolenaar  let expected =<< trim [CODE]
403fb222df2SBram Moolenaar    {
404fb222df2SBram Moolenaar    /* Make sure the previous comment leader is not removed.  */
405fb222df2SBram Moolenaar    /* Make sure the previous comment leader is not removed.  */
406fb222df2SBram Moolenaar    /* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */
407fb222df2SBram Moolenaar    /* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */
408fb222df2SBram Moolenaar    // Should the next comment leader be left alone?  Yes.
409fb222df2SBram Moolenaar    // Should the next comment leader be left alone?  Yes.
410fb222df2SBram Moolenaar    /* Here the comment leader should be left intact. */ // And so should this one.
411fb222df2SBram Moolenaar    /* Here the comment leader should be left intact. */ // And so should this one.
412fb222df2SBram Moolenaar    if (condition) // Remove the next comment leader!  OK, I will.
413fb222df2SBram Moolenaar        action();
414fb222df2SBram Moolenaar    if (condition) // Remove the next comment leader!  OK, I will.
415fb222df2SBram Moolenaar        action();
416fb222df2SBram Moolenaar    int i = 7 /* foo *// 3 // comment
417fb222df2SBram Moolenaar     ;
418fb222df2SBram Moolenaar    int i = 7 /* foo *// 3 // comment
419fb222df2SBram Moolenaar     ;
420fb222df2SBram Moolenaar    ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader.
421fb222df2SBram Moolenaar    ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader.
422fb222df2SBram Moolenaar
423fb222df2SBram Moolenaar    Some code!// Make sure backspacing does not remove this comment leader.
424fb222df2SBram Moolenaar    }
425c79745a8SBram Moolenaar  [CODE]
426fb222df2SBram Moolenaar
427c79745a8SBram Moolenaar  call assert_equal(expected, getline(1, '$'))
428fb222df2SBram Moolenaar  close!
429fb222df2SBram Moolenaarendfunc
43091b65e49SBram Moolenaar
43191b65e49SBram Moolenaarfunc Test_join_lines()
43291b65e49SBram Moolenaar  new
43391b65e49SBram Moolenaar  call setline(1, ['a', 'b', '', 'c', 'd'])
43491b65e49SBram Moolenaar  %join
43591b65e49SBram Moolenaar  call assert_equal('a b c d', getline(1))
43691b65e49SBram Moolenaar  call setline(1, ['a', 'b', '', 'c', 'd'])
43791b65e49SBram Moolenaar  normal 5J
43891b65e49SBram Moolenaar  call assert_equal('a b c d', getline(1))
439bc2b71d4SBram Moolenaar  call setline(1, ['a', 'b', 'c'])
440bc2b71d4SBram Moolenaar  2,2join
441bc2b71d4SBram Moolenaar  call assert_equal(['a', 'b', 'c'], getline(1, '$'))
442bc2b71d4SBram Moolenaar  call assert_equal(2, line('.'))
443bc2b71d4SBram Moolenaar  2join
444bc2b71d4SBram Moolenaar  call assert_equal(['a', 'b c'], getline(1, '$'))
44591b65e49SBram Moolenaar  bwipe!
44691b65e49SBram Moolenaarendfunc
447*6d91bcb4SBram Moolenaar
448*6d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
449