indent_off_on.c revision 1.8 1 1.8 rillig /* $NetBSD: indent_off_on.c,v 1.8 2022/04/24 09:04:12 rillig Exp $ */
2 1.1 rillig
3 1.1 rillig /*
4 1.1 rillig * Tests for the comments 'INDENT OFF' and 'INDENT ON', which temporarily
5 1.4 rillig * disable formatting, copying the input directly to the output. Internally,
6 1.4 rillig * indent still keeps track of the number of braces and other indentation.
7 1.1 rillig */
8 1.1 rillig
9 1.8 rillig //indent input
10 1.1 rillig {}
11 1.1 rillig
12 1.1 rillig /*INDENT OFF*/
13 1.1 rillig /*INDENT ON*/
14 1.1 rillig
15 1.1 rillig {}
16 1.8 rillig //indent end
17 1.1 rillig
18 1.1 rillig /*
19 1.1 rillig * XXX: It is asymmetric that 'INDENT OFF' is kept as is, while 'INDENT ON'
20 1.1 rillig * gets enclosed with spaces.
21 1.1 rillig */
22 1.8 rillig //indent run
23 1.1 rillig {
24 1.1 rillig }
25 1.1 rillig /* $ FIXME: This empty line must stay. */
26 1.1 rillig /*INDENT OFF*/
27 1.1 rillig /* INDENT ON */
28 1.1 rillig
29 1.1 rillig {
30 1.1 rillig }
31 1.8 rillig //indent end
32 1.1 rillig
33 1.1 rillig
34 1.8 rillig //indent input
35 1.1 rillig {}
36 1.3 rillig
37 1.3 rillig
38 1.3 rillig /*INDENT OFF*/
39 1.3 rillig /*INDENT ON*/
40 1.8 rillig //indent end
41 1.3 rillig
42 1.8 rillig //indent run
43 1.3 rillig {
44 1.3 rillig }
45 1.3 rillig /* $ FIXME: This empty line must stay. */
46 1.3 rillig /* $ FIXME: This empty line must stay. */
47 1.3 rillig /*INDENT OFF*/
48 1.3 rillig /* INDENT ON */
49 1.8 rillig //indent end
50 1.3 rillig
51 1.3 rillig
52 1.8 rillig //indent input
53 1.3 rillig {}
54 1.1 rillig /* INDENT OFF */
55 1.1 rillig /* INDENT ON */
56 1.1 rillig {}
57 1.8 rillig //indent end
58 1.1 rillig
59 1.1 rillig /*
60 1.1 rillig * XXX: It is asymmetric that 'INDENT OFF' is indented, while 'INDENT ON'
61 1.1 rillig * is aligned.
62 1.1 rillig */
63 1.8 rillig //indent run
64 1.1 rillig {
65 1.1 rillig }
66 1.1 rillig /* INDENT OFF */
67 1.1 rillig /* INDENT ON */
68 1.1 rillig {
69 1.1 rillig }
70 1.8 rillig //indent end
71 1.1 rillig
72 1.1 rillig
73 1.8 rillig //indent input
74 1.1 rillig {}
75 1.1 rillig /* INDENT OFF */
76 1.1 rillig /* INDENT ON */
77 1.1 rillig {}
78 1.8 rillig //indent end
79 1.1 rillig
80 1.1 rillig /*
81 1.1 rillig * XXX: It is asymmetric that 'INDENT OFF' is indented, while 'INDENT ON'
82 1.1 rillig * is aligned.
83 1.1 rillig */
84 1.8 rillig //indent run
85 1.1 rillig {
86 1.1 rillig }
87 1.1 rillig /* INDENT OFF */
88 1.1 rillig /* INDENT ON */
89 1.1 rillig {
90 1.1 rillig }
91 1.8 rillig //indent end
92 1.1 rillig
93 1.5 rillig
94 1.1 rillig /*
95 1.1 rillig * The INDENT comments can be written without space between the words, but
96 1.1 rillig * nobody does this.
97 1.1 rillig */
98 1.8 rillig //indent input
99 1.1 rillig int decl ;
100 1.1 rillig /*INDENTOFF*/
101 1.1 rillig int decl ;
102 1.1 rillig /*INDENTON*/
103 1.1 rillig int decl ;
104 1.8 rillig //indent end
105 1.1 rillig
106 1.8 rillig //indent run -di0
107 1.1 rillig int decl;
108 1.1 rillig /*INDENTOFF*/
109 1.1 rillig int decl ;
110 1.1 rillig /* INDENTON */
111 1.1 rillig int decl;
112 1.8 rillig //indent end
113 1.1 rillig
114 1.1 rillig
115 1.1 rillig /*
116 1.1 rillig * Any whitespace around the 'INDENT ON/OFF' is ignored, as is any whitespace
117 1.1 rillig * between the two words.
118 1.1 rillig */
119 1.8 rillig //indent input
120 1.4 rillig int decl ;
121 1.1 rillig /* INDENT OFF */
122 1.1 rillig int decl ;
123 1.1 rillig /* INDENT ON */
124 1.4 rillig int decl ;
125 1.8 rillig //indent end
126 1.1 rillig
127 1.1 rillig /*
128 1.1 rillig * XXX: It is asymmetric that 'INDENT OFF' is indented, while 'INDENT ON'
129 1.4 rillig * is pushed to the start of the line.
130 1.1 rillig */
131 1.8 rillig //indent run -di0
132 1.1 rillig int decl;
133 1.1 rillig /* INDENT OFF */
134 1.1 rillig int decl ;
135 1.1 rillig /* INDENT ON */
136 1.1 rillig int decl;
137 1.8 rillig //indent end
138 1.2 rillig
139 1.2 rillig
140 1.8 rillig //indent input
141 1.2 rillig /*INDENT OFF*/
142 1.2 rillig /* No formatting takes place here. */
143 1.2 rillig int format( void ) {{{
144 1.2 rillig /*INDENT ON*/
145 1.2 rillig }}}
146 1.8 rillig //indent end
147 1.2 rillig
148 1.8 rillig //indent run
149 1.2 rillig /*INDENT OFF*/
150 1.2 rillig /* No formatting takes place here. */
151 1.2 rillig int format( void ) {{{
152 1.2 rillig /* $ XXX: Why is the INDENT ON comment indented? */
153 1.2 rillig /* $ XXX: Why does the INDENT ON comment get spaces, but not the OFF comment? */
154 1.2 rillig /* INDENT ON */
155 1.2 rillig }
156 1.2 rillig }
157 1.2 rillig }
158 1.8 rillig //indent end
159 1.2 rillig
160 1.2 rillig
161 1.8 rillig //indent input
162 1.2 rillig /* INDENT OFF */
163 1.2 rillig void indent_off ( void ) ;
164 1.2 rillig /* INDENT */
165 1.2 rillig void indent_on ( void ) ;
166 1.2 rillig /* INDENT OFF */
167 1.2 rillig void indent_off ( void ) ;
168 1.2 rillig /* INDENT ON */
169 1.2 rillig void indent_on ( void ) ; /* the comment may be indented */
170 1.2 rillig /* INDENT OFF */
171 1.2 rillig void indent_off ( void ) ;
172 1.2 rillig /* INDENTATION ON */
173 1.2 rillig void indent_still_off ( void ) ; /* due to the word 'INDENTATION' */
174 1.2 rillig /* INDENT ON * */
175 1.2 rillig void indent_still_off ( void ) ; /* due to the extra '*' at the end */
176 1.2 rillig /* INDENT ON */
177 1.2 rillig void indent_on ( void ) ;
178 1.2 rillig /* INDENT: OFF */
179 1.2 rillig void indent_still_on ( void ) ; /* due to the colon in the middle */
180 1.2 rillig /* INDENT OFF */ /* extra comment */
181 1.2 rillig void indent_still_on ( void ) ; /* due to the extra comment to the right */
182 1.8 rillig //indent end
183 1.2 rillig
184 1.8 rillig //indent run
185 1.2 rillig /* INDENT OFF */
186 1.2 rillig void indent_off ( void ) ;
187 1.2 rillig /* $ XXX: The double space from the below comment got merged to a single */
188 1.2 rillig /* $ XXX: space even though the comment might be regarded to be still in */
189 1.2 rillig /* $ XXX: the OFF section. */
190 1.2 rillig /* INDENT */
191 1.6 rillig void indent_on(void);
192 1.2 rillig /* INDENT OFF */
193 1.2 rillig void indent_off ( void ) ;
194 1.2 rillig /* $ XXX: The below comment got moved from column 9 to column 1. */
195 1.2 rillig /* INDENT ON */
196 1.6 rillig void indent_on(void); /* the comment may be indented */
197 1.2 rillig /* INDENT OFF */
198 1.2 rillig void indent_off ( void ) ;
199 1.2 rillig /* INDENTATION ON */
200 1.2 rillig void indent_still_off ( void ) ; /* due to the word 'INDENTATION' */
201 1.2 rillig /* INDENT ON * */
202 1.2 rillig void indent_still_off ( void ) ; /* due to the extra '*' at the end */
203 1.2 rillig /* INDENT ON */
204 1.6 rillig void indent_on(void);
205 1.2 rillig /* INDENT: OFF */
206 1.6 rillig void indent_still_on(void); /* due to the colon in the middle */
207 1.2 rillig /* $ The extra comment got moved to the left since there is no code in */
208 1.2 rillig /* $ that line. */
209 1.2 rillig /* INDENT OFF *//* extra comment */
210 1.6 rillig void indent_still_on(void); /* due to the extra comment to the
211 1.6 rillig * right */
212 1.8 rillig //indent end
213 1.4 rillig
214 1.4 rillig
215 1.4 rillig /*
216 1.4 rillig * Try to confuse indent by having a string literal that has an embedded
217 1.4 rillig * INDENT comment. Indent doesn't get confused though because it requires the
218 1.4 rillig * INDENT comment to go from the very beginning of the line to the very end of
219 1.4 rillig * the line.
220 1.4 rillig */
221 1.8 rillig //indent input
222 1.4 rillig const char *str = "\
223 1.4 rillig /* INDENT OFF */\
224 1.4 rillig " , ch;
225 1.8 rillig //indent end
226 1.4 rillig
227 1.8 rillig //indent run
228 1.4 rillig const char *str = "\
229 1.4 rillig /* INDENT OFF */\
230 1.4 rillig ", ch;
231 1.8 rillig //indent end
232 1.4 rillig
233 1.4 rillig
234 1.4 rillig /*
235 1.4 rillig * The keywords in the INDENT comments must all be uppercase.
236 1.4 rillig */
237 1.8 rillig //indent input
238 1.4 rillig int on ;
239 1.4 rillig /* indent off */
240 1.4 rillig int still_on ;
241 1.4 rillig /* INDENT off */
242 1.4 rillig int still_on ;
243 1.4 rillig /* indent OFF */
244 1.4 rillig int still_on ;
245 1.4 rillig /* INDENT OFF */
246 1.4 rillig int finally_off ;
247 1.8 rillig //indent end
248 1.4 rillig
249 1.8 rillig //indent run -di0
250 1.4 rillig int on;
251 1.4 rillig /* indent off */
252 1.4 rillig int still_on;
253 1.4 rillig /* INDENT off */
254 1.4 rillig int still_on;
255 1.4 rillig /* indent OFF */
256 1.4 rillig int still_on;
257 1.4 rillig /* INDENT OFF */
258 1.4 rillig int finally_off ;
259 1.8 rillig //indent end
260