1" Tests for the various 'formatoptions' settings
2func Test_text_format()
3  enew!
4
5  setl noai tw=2 fo=t
6  call append('$', [
7	      \ '{',
8	      \ '    ',
9	      \ '',
10	      \ '}'])
11  exe "normal /^{/+1\n0"
12  normal gRa b
13  let lnum = line('.')
14  call assert_equal([
15	      \ 'a',
16	      \ 'b'], getline(lnum - 1, lnum))
17
18  normal ggdG
19  setl ai tw=2 fo=tw
20  call append('$', [
21	      \ '{',
22	      \ 'a  b  ',
23	      \ '',
24	      \ 'a    ',
25	      \ '}'])
26  exe "normal /^{/+1\n0"
27  normal gqgqjjllab
28  let lnum = line('.')
29  call assert_equal([
30	      \ 'a  ',
31	      \ 'b  ',
32	      \ '',
33	      \ 'a  ',
34	      \ 'b'], getline(lnum - 4, lnum))
35
36  normal ggdG
37  setl tw=3 fo=t
38  call append('$', [
39	      \ '{',
40	      \ "a \<C-A>",
41	      \ '}'])
42  exe "normal /^{/+1\n0"
43  exe "normal gqgqo\na \<C-V>\<C-A>"
44  let lnum = line('.')
45  call assert_equal([
46	      \ 'a',
47	      \ "\<C-A>",
48	      \ '',
49	      \ 'a',
50	      \ "\<C-A>"], getline(lnum - 4, lnum))
51
52  normal ggdG
53  setl tw=2 fo=tcq1 comments=:#
54  call append('$', [
55	      \ '{',
56	      \ 'a b',
57	      \ '#a b',
58	      \ '}'])
59  exe "normal /^{/+1\n0"
60  exe "normal gqgqjgqgqo\na b\n#a b"
61  let lnum = line('.')
62  call assert_equal([
63	      \ 'a b',
64	      \ '#a b',
65	      \ '',
66	      \ 'a b',
67	      \ '#a b'], getline(lnum - 4, lnum))
68
69  normal ggdG
70  setl tw=5 fo=tcn comments=:#
71  call append('$', [
72	      \ '{',
73	      \ '  1 a',
74	      \ '# 1 a',
75	      \ '}'])
76  exe "normal /^{/+1\n0"
77  exe "normal A b\<Esc>jA b"
78  let lnum = line('.')
79  call assert_equal([
80	      \ '  1 a',
81	      \ '    b',
82	      \ '# 1 a',
83	      \ '#   b'], getline(lnum - 3, lnum))
84
85  normal ggdG
86  setl tw=5 fo=t2a si
87  call append('$', [
88	      \ '{',
89	      \ '',
90	      \ '  x a',
91	      \ '  b',
92	      \ ' c',
93	      \ '',
94	      \ '}'])
95  exe "normal /^{/+3\n0"
96  exe "normal i  \<Esc>A_"
97  let lnum = line('.')
98  call assert_equal([
99	      \ '',
100	      \ '  x a',
101	      \ '    b_',
102	      \ '    c',
103	      \ ''], getline(lnum - 2, lnum + 2))
104
105  normal ggdG
106  setl tw=5 fo=qn comments=:#
107  call append('$', [
108	      \ '{',
109	      \ '# 1 a b',
110	      \ '}'])
111  exe "normal /^{/+1\n5|"
112  normal gwap
113  call assert_equal(5, col('.'))
114  let lnum = line('.')
115  call assert_equal([
116	      \ '# 1 a',
117	      \ '#   b'], getline(lnum, lnum + 1))
118
119  normal ggdG
120  setl tw=5 fo=q2 comments=:#
121  call append('$', [
122	      \ '{',
123	      \ '# x',
124	      \ '#   a b',
125	      \ '}'])
126  exe "normal /^{/+1\n0"
127  normal gwap
128  let lnum = line('.')
129  call assert_equal([
130	      \ '# x a',
131	      \ '#   b'], getline(lnum, lnum + 1))
132
133  normal ggdG
134  setl tw& fo=a
135  call append('$', [
136	      \ '{',
137	      \ '   1aa',
138	      \ '   2bb',
139	      \ '}'])
140  exe "normal /^{/+2\n0"
141  normal I^^
142  call assert_equal('{ 1aa ^^2bb }', getline('.'))
143
144  normal ggdG
145  setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/
146  call append('$', [
147	      \ '/* abc def ghi jkl ',
148	      \ ' *    mno pqr stu',
149	      \ ' */'])
150  exe "normal /mno pqr/\n"
151  normal A vwx yz
152  let lnum = line('.')
153  call assert_equal([
154	      \ ' *    mno pqr stu ',
155	      \ ' *    vwx yz',
156	      \ ' */'], getline(lnum - 1, lnum + 1))
157
158  normal ggdG
159  setl tw=12 fo=tqnc comments=:#
160  call setline('.', '# 1 xxxxx')
161  normal A foobar
162  call assert_equal([
163	      \ '# 1 xxxxx',
164	      \ '#   foobar'], getline(1, 2))
165
166  setl ai& tw& fo& si& comments&
167  enew!
168endfunc
169