indent_off_on.c revision 1.6 1 1.6 rillig /* $NetBSD: indent_off_on.c,v 1.6 2021/11/25 17:10:53 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.5 rillig
95 1.1 rillig /*
96 1.1 rillig * The INDENT comments can be written without space between the words, but
97 1.1 rillig * nobody does this.
98 1.1 rillig */
99 1.1 rillig #indent input
100 1.1 rillig int decl ;
101 1.1 rillig /*INDENTOFF*/
102 1.1 rillig int decl ;
103 1.1 rillig /*INDENTON*/
104 1.1 rillig int decl ;
105 1.1 rillig #indent end
106 1.1 rillig
107 1.1 rillig #indent run -di0
108 1.1 rillig int decl;
109 1.1 rillig /*INDENTOFF*/
110 1.1 rillig int decl ;
111 1.1 rillig /* INDENTON */
112 1.1 rillig int decl;
113 1.1 rillig #indent end
114 1.1 rillig
115 1.1 rillig
116 1.1 rillig /*
117 1.1 rillig * Any whitespace around the 'INDENT ON/OFF' is ignored, as is any whitespace
118 1.1 rillig * between the two words.
119 1.1 rillig */
120 1.1 rillig #indent input
121 1.4 rillig int decl ;
122 1.1 rillig /* INDENT OFF */
123 1.1 rillig int decl ;
124 1.1 rillig /* INDENT ON */
125 1.4 rillig int decl ;
126 1.1 rillig #indent end
127 1.1 rillig
128 1.1 rillig /*
129 1.1 rillig * XXX: It is asymmetric that 'INDENT OFF' is indented, while 'INDENT ON'
130 1.4 rillig * is pushed to the start of the line.
131 1.1 rillig */
132 1.1 rillig #indent run -di0
133 1.1 rillig int decl;
134 1.1 rillig /* INDENT OFF */
135 1.1 rillig int decl ;
136 1.1 rillig /* INDENT ON */
137 1.1 rillig int decl;
138 1.1 rillig #indent end
139 1.2 rillig
140 1.2 rillig
141 1.2 rillig #indent input
142 1.2 rillig /*INDENT OFF*/
143 1.2 rillig /* No formatting takes place here. */
144 1.2 rillig int format( void ) {{{
145 1.2 rillig /*INDENT ON*/
146 1.2 rillig }}}
147 1.2 rillig #indent end
148 1.2 rillig
149 1.2 rillig #indent run
150 1.2 rillig /*INDENT OFF*/
151 1.2 rillig /* No formatting takes place here. */
152 1.2 rillig int format( void ) {{{
153 1.2 rillig /* $ XXX: Why is the INDENT ON comment indented? */
154 1.2 rillig /* $ XXX: Why does the INDENT ON comment get spaces, but not the OFF comment? */
155 1.2 rillig /* INDENT ON */
156 1.2 rillig }
157 1.2 rillig }
158 1.2 rillig }
159 1.2 rillig #indent end
160 1.2 rillig
161 1.2 rillig
162 1.2 rillig #indent input
163 1.2 rillig /* INDENT OFF */
164 1.2 rillig void indent_off ( void ) ;
165 1.2 rillig /* INDENT */
166 1.2 rillig void indent_on ( void ) ;
167 1.2 rillig /* INDENT OFF */
168 1.2 rillig void indent_off ( void ) ;
169 1.2 rillig /* INDENT ON */
170 1.2 rillig void indent_on ( void ) ; /* the comment may be indented */
171 1.2 rillig /* INDENT OFF */
172 1.2 rillig void indent_off ( void ) ;
173 1.2 rillig /* INDENTATION ON */
174 1.2 rillig void indent_still_off ( void ) ; /* due to the word 'INDENTATION' */
175 1.2 rillig /* INDENT ON * */
176 1.2 rillig void indent_still_off ( void ) ; /* due to the extra '*' at the end */
177 1.2 rillig /* INDENT ON */
178 1.2 rillig void indent_on ( void ) ;
179 1.2 rillig /* INDENT: OFF */
180 1.2 rillig void indent_still_on ( void ) ; /* due to the colon in the middle */
181 1.2 rillig /* INDENT OFF */ /* extra comment */
182 1.2 rillig void indent_still_on ( void ) ; /* due to the extra comment to the right */
183 1.2 rillig #indent end
184 1.2 rillig
185 1.2 rillig #indent run
186 1.2 rillig /* INDENT OFF */
187 1.2 rillig void indent_off ( void ) ;
188 1.2 rillig /* $ XXX: The double space from the below comment got merged to a single */
189 1.2 rillig /* $ XXX: space even though the comment might be regarded to be still in */
190 1.2 rillig /* $ XXX: the OFF section. */
191 1.2 rillig /* INDENT */
192 1.6 rillig void 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.6 rillig void indent_on(void); /* the comment may be indented */
198 1.2 rillig /* INDENT OFF */
199 1.2 rillig void indent_off ( void ) ;
200 1.2 rillig /* INDENTATION ON */
201 1.2 rillig void indent_still_off ( void ) ; /* due to the word 'INDENTATION' */
202 1.2 rillig /* INDENT ON * */
203 1.2 rillig void indent_still_off ( void ) ; /* due to the extra '*' at the end */
204 1.2 rillig /* INDENT ON */
205 1.6 rillig void indent_on(void);
206 1.2 rillig /* INDENT: OFF */
207 1.6 rillig void indent_still_on(void); /* due to the colon in the middle */
208 1.2 rillig /* $ The extra comment got moved to the left since there is no code in */
209 1.2 rillig /* $ that line. */
210 1.2 rillig /* INDENT OFF *//* extra comment */
211 1.6 rillig void indent_still_on(void); /* due to the extra comment to the
212 1.6 rillig * right */
213 1.2 rillig #indent end
214 1.4 rillig
215 1.4 rillig
216 1.4 rillig /*
217 1.4 rillig * Try to confuse indent by having a string literal that has an embedded
218 1.4 rillig * INDENT comment. Indent doesn't get confused though because it requires the
219 1.4 rillig * INDENT comment to go from the very beginning of the line to the very end of
220 1.4 rillig * the line.
221 1.4 rillig */
222 1.4 rillig #indent input
223 1.4 rillig const char *str = "\
224 1.4 rillig /* INDENT OFF */\
225 1.4 rillig " , ch;
226 1.4 rillig #indent end
227 1.4 rillig
228 1.4 rillig #indent run
229 1.4 rillig const char *str = "\
230 1.4 rillig /* INDENT OFF */\
231 1.4 rillig ", ch;
232 1.4 rillig #indent end
233 1.4 rillig
234 1.4 rillig
235 1.4 rillig /*
236 1.4 rillig * The keywords in the INDENT comments must all be uppercase.
237 1.4 rillig */
238 1.4 rillig #indent input
239 1.4 rillig int on ;
240 1.4 rillig /* indent off */
241 1.4 rillig int still_on ;
242 1.4 rillig /* INDENT off */
243 1.4 rillig int still_on ;
244 1.4 rillig /* indent OFF */
245 1.4 rillig int still_on ;
246 1.4 rillig /* INDENT OFF */
247 1.4 rillig int finally_off ;
248 1.4 rillig #indent end
249 1.4 rillig
250 1.4 rillig #indent run -di0
251 1.4 rillig int on;
252 1.4 rillig /* indent off */
253 1.4 rillig int still_on;
254 1.4 rillig /* INDENT off */
255 1.4 rillig int still_on;
256 1.4 rillig /* indent OFF */
257 1.4 rillig int still_on;
258 1.4 rillig /* INDENT OFF */
259 1.4 rillig int finally_off ;
260 1.4 rillig #indent end
261