indent_off_on.c revision 1.4 1 1.4 rillig /* $NetBSD: indent_off_on.c,v 1.4 2021/11/19 22:24:29 rillig Exp $ */
2 1.1 rillig /* $FreeBSD$ */
3 1.1 rillig
4 1.1 rillig /*
5 1.1 rillig * Tests for the comments 'INDENT OFF' and 'INDENT ON', which temporarily
6 1.4 rillig * disable formatting, copying the input directly to the output. Internally,
7 1.4 rillig * indent still keeps track of the number of braces and other indentation.
8 1.1 rillig */
9 1.1 rillig
10 1.1 rillig #indent input
11 1.1 rillig {}
12 1.1 rillig
13 1.1 rillig /*INDENT OFF*/
14 1.1 rillig /*INDENT ON*/
15 1.1 rillig
16 1.1 rillig {}
17 1.1 rillig #indent end
18 1.1 rillig
19 1.1 rillig /*
20 1.1 rillig * XXX: It is asymmetric that 'INDENT OFF' is kept as is, while 'INDENT ON'
21 1.1 rillig * gets enclosed with spaces.
22 1.1 rillig */
23 1.1 rillig #indent run
24 1.1 rillig {
25 1.1 rillig }
26 1.1 rillig /* $ FIXME: This empty line must stay. */
27 1.1 rillig /*INDENT OFF*/
28 1.1 rillig /* INDENT ON */
29 1.1 rillig
30 1.1 rillig {
31 1.1 rillig }
32 1.1 rillig #indent end
33 1.1 rillig
34 1.1 rillig
35 1.1 rillig #indent input
36 1.1 rillig {}
37 1.3 rillig
38 1.3 rillig
39 1.3 rillig /*INDENT OFF*/
40 1.3 rillig /*INDENT ON*/
41 1.3 rillig #indent end
42 1.3 rillig
43 1.3 rillig #indent run
44 1.3 rillig {
45 1.3 rillig }
46 1.3 rillig /* $ FIXME: This empty line must stay. */
47 1.3 rillig /* $ FIXME: This empty line must stay. */
48 1.3 rillig /*INDENT OFF*/
49 1.3 rillig /* INDENT ON */
50 1.3 rillig #indent end
51 1.3 rillig
52 1.3 rillig
53 1.3 rillig #indent input
54 1.3 rillig {}
55 1.1 rillig /* INDENT OFF */
56 1.1 rillig /* INDENT ON */
57 1.1 rillig {}
58 1.1 rillig #indent end
59 1.1 rillig
60 1.1 rillig /*
61 1.1 rillig * XXX: It is asymmetric that 'INDENT OFF' is indented, while 'INDENT ON'
62 1.1 rillig * is aligned.
63 1.1 rillig */
64 1.1 rillig #indent run
65 1.1 rillig {
66 1.1 rillig }
67 1.1 rillig /* INDENT OFF */
68 1.1 rillig /* INDENT ON */
69 1.1 rillig {
70 1.1 rillig }
71 1.1 rillig #indent end
72 1.1 rillig
73 1.1 rillig
74 1.1 rillig #indent input
75 1.1 rillig {}
76 1.1 rillig /* INDENT OFF */
77 1.1 rillig /* INDENT ON */
78 1.1 rillig {}
79 1.1 rillig #indent end
80 1.1 rillig
81 1.1 rillig /*
82 1.1 rillig * XXX: It is asymmetric that 'INDENT OFF' is indented, while 'INDENT ON'
83 1.1 rillig * is aligned.
84 1.1 rillig */
85 1.1 rillig #indent run
86 1.1 rillig {
87 1.1 rillig }
88 1.1 rillig /* INDENT OFF */
89 1.1 rillig /* INDENT ON */
90 1.1 rillig {
91 1.1 rillig }
92 1.1 rillig #indent end
93 1.1 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.1 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.1 rillig #indent end
105 1.1 rillig
106 1.1 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.1 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.1 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.1 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.1 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.1 rillig #indent end
138 1.2 rillig
139 1.2 rillig
140 1.2 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.2 rillig #indent end
147 1.2 rillig
148 1.2 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.2 rillig #indent end
159 1.2 rillig
160 1.2 rillig
161 1.2 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.2 rillig #indent end
183 1.2 rillig
184 1.2 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.2 rillig void
192 1.2 rillig indent_on(void);
193 1.2 rillig /* INDENT OFF */
194 1.2 rillig void indent_off ( void ) ;
195 1.2 rillig /* $ XXX: The below comment got moved from column 9 to column 1. */
196 1.2 rillig /* INDENT ON */
197 1.2 rillig void
198 1.2 rillig indent_on(void); /* the comment may be indented */
199 1.2 rillig /* INDENT OFF */
200 1.2 rillig void indent_off ( void ) ;
201 1.2 rillig /* INDENTATION ON */
202 1.2 rillig void indent_still_off ( void ) ; /* due to the word 'INDENTATION' */
203 1.2 rillig /* INDENT ON * */
204 1.2 rillig void indent_still_off ( void ) ; /* due to the extra '*' at the end */
205 1.2 rillig /* INDENT ON */
206 1.2 rillig void
207 1.2 rillig indent_on(void);
208 1.2 rillig /* INDENT: OFF */
209 1.2 rillig void
210 1.2 rillig indent_still_on(void); /* due to the colon in the middle */
211 1.2 rillig /* $ The extra comment got moved to the left since there is no code in */
212 1.2 rillig /* $ that line. */
213 1.2 rillig /* INDENT OFF *//* extra comment */
214 1.2 rillig void
215 1.2 rillig indent_still_on(void); /* due to the extra comment to the right */
216 1.2 rillig #indent end
217 1.4 rillig
218 1.4 rillig
219 1.4 rillig /*
220 1.4 rillig * Try to confuse indent by having a string literal that has an embedded
221 1.4 rillig * INDENT comment. Indent doesn't get confused though because it requires the
222 1.4 rillig * INDENT comment to go from the very beginning of the line to the very end of
223 1.4 rillig * the line.
224 1.4 rillig */
225 1.4 rillig #indent input
226 1.4 rillig const char *str = "\
227 1.4 rillig /* INDENT OFF */\
228 1.4 rillig " , ch;
229 1.4 rillig #indent end
230 1.4 rillig
231 1.4 rillig #indent run
232 1.4 rillig const char *str = "\
233 1.4 rillig /* INDENT OFF */\
234 1.4 rillig ", ch;
235 1.4 rillig #indent end
236 1.4 rillig
237 1.4 rillig
238 1.4 rillig /*
239 1.4 rillig * The keywords in the INDENT comments must all be uppercase.
240 1.4 rillig */
241 1.4 rillig #indent input
242 1.4 rillig int 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 still_on ;
247 1.4 rillig /* indent OFF */
248 1.4 rillig int still_on ;
249 1.4 rillig /* INDENT OFF */
250 1.4 rillig int finally_off ;
251 1.4 rillig #indent end
252 1.4 rillig
253 1.4 rillig #indent run -di0
254 1.4 rillig int 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 still_on;
259 1.4 rillig /* indent OFF */
260 1.4 rillig int still_on;
261 1.4 rillig /* INDENT OFF */
262 1.4 rillig int finally_off ;
263 1.4 rillig #indent end
264