1 1.15 rillig /* $NetBSD: indent_off_on.c,v 1.15 2023/06/04 22:20:04 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.8 rillig //indent run 19 1.1 rillig { 20 1.1 rillig } 21 1.11 rillig 22 1.1 rillig /*INDENT OFF*/ 23 1.11 rillig /*INDENT ON*/ 24 1.1 rillig 25 1.1 rillig { 26 1.1 rillig } 27 1.8 rillig //indent end 28 1.1 rillig 29 1.1 rillig 30 1.8 rillig //indent input 31 1.1 rillig {} 32 1.3 rillig 33 1.3 rillig 34 1.3 rillig /*INDENT OFF*/ 35 1.3 rillig /*INDENT ON*/ 36 1.8 rillig //indent end 37 1.3 rillig 38 1.8 rillig //indent run 39 1.3 rillig { 40 1.3 rillig } 41 1.9 rillig 42 1.11 rillig 43 1.3 rillig /*INDENT OFF*/ 44 1.11 rillig /*INDENT ON*/ 45 1.8 rillig //indent end 46 1.3 rillig 47 1.3 rillig 48 1.8 rillig //indent input 49 1.3 rillig {} 50 1.1 rillig /* INDENT OFF */ 51 1.1 rillig /* INDENT ON */ 52 1.1 rillig {} 53 1.8 rillig //indent end 54 1.1 rillig 55 1.8 rillig //indent run 56 1.1 rillig { 57 1.1 rillig } 58 1.1 rillig /* INDENT OFF */ 59 1.11 rillig /* INDENT ON */ 60 1.1 rillig { 61 1.1 rillig } 62 1.8 rillig //indent end 63 1.1 rillig 64 1.1 rillig 65 1.8 rillig //indent input 66 1.1 rillig {} 67 1.1 rillig /* INDENT OFF */ 68 1.1 rillig /* INDENT ON */ 69 1.1 rillig {} 70 1.8 rillig //indent end 71 1.1 rillig 72 1.8 rillig //indent run 73 1.1 rillig { 74 1.1 rillig } 75 1.1 rillig /* INDENT OFF */ 76 1.11 rillig /* INDENT ON */ 77 1.1 rillig { 78 1.1 rillig } 79 1.8 rillig //indent end 80 1.1 rillig 81 1.5 rillig 82 1.1 rillig /* 83 1.1 rillig * The INDENT comments can be written without space between the words, but 84 1.1 rillig * nobody does this. 85 1.1 rillig */ 86 1.8 rillig //indent input 87 1.1 rillig int decl ; 88 1.1 rillig /*INDENTOFF*/ 89 1.1 rillig int decl ; 90 1.1 rillig /*INDENTON*/ 91 1.1 rillig int decl ; 92 1.8 rillig //indent end 93 1.1 rillig 94 1.8 rillig //indent run -di0 95 1.1 rillig int decl; 96 1.1 rillig /*INDENTOFF*/ 97 1.1 rillig int decl ; 98 1.11 rillig /*INDENTON*/ 99 1.1 rillig int decl; 100 1.8 rillig //indent end 101 1.1 rillig 102 1.1 rillig 103 1.1 rillig /* 104 1.1 rillig * Any whitespace around the 'INDENT ON/OFF' is ignored, as is any whitespace 105 1.1 rillig * between the two words. 106 1.1 rillig */ 107 1.8 rillig //indent input 108 1.4 rillig int decl ; 109 1.1 rillig /* INDENT OFF */ 110 1.1 rillig int decl ; 111 1.1 rillig /* INDENT ON */ 112 1.4 rillig int decl ; 113 1.8 rillig //indent end 114 1.1 rillig 115 1.8 rillig //indent run -di0 116 1.1 rillig int decl; 117 1.1 rillig /* INDENT OFF */ 118 1.1 rillig int decl ; 119 1.11 rillig /* INDENT ON */ 120 1.1 rillig int decl; 121 1.8 rillig //indent end 122 1.2 rillig 123 1.2 rillig 124 1.8 rillig //indent input 125 1.2 rillig /*INDENT OFF*/ 126 1.2 rillig /* No formatting takes place here. */ 127 1.2 rillig int format( void ) {{{ 128 1.2 rillig /*INDENT ON*/ 129 1.2 rillig }}} 130 1.8 rillig //indent end 131 1.2 rillig 132 1.8 rillig //indent run 133 1.2 rillig /*INDENT OFF*/ 134 1.2 rillig /* No formatting takes place here. */ 135 1.2 rillig int format( void ) {{{ 136 1.11 rillig /*INDENT ON*/ 137 1.14 rillig } 138 1.14 rillig } 139 1.2 rillig } 140 1.8 rillig //indent end 141 1.2 rillig 142 1.2 rillig 143 1.8 rillig //indent input 144 1.2 rillig /* INDENT OFF */ 145 1.2 rillig void indent_off ( void ) ; 146 1.2 rillig /* INDENT */ 147 1.2 rillig void indent_on ( void ) ; 148 1.2 rillig /* INDENT OFF */ 149 1.2 rillig void indent_off ( void ) ; 150 1.2 rillig /* INDENT ON */ 151 1.2 rillig void indent_on ( void ) ; /* the comment may be indented */ 152 1.2 rillig /* INDENT OFF */ 153 1.2 rillig void indent_off ( void ) ; 154 1.2 rillig /* INDENTATION ON */ 155 1.2 rillig void indent_still_off ( void ) ; /* due to the word 'INDENTATION' */ 156 1.2 rillig /* INDENT ON * */ 157 1.2 rillig void indent_still_off ( void ) ; /* due to the extra '*' at the end */ 158 1.2 rillig /* INDENT ON */ 159 1.2 rillig void indent_on ( void ) ; 160 1.2 rillig /* INDENT: OFF */ 161 1.2 rillig void indent_still_on ( void ) ; /* due to the colon in the middle */ 162 1.2 rillig /* INDENT OFF */ /* extra comment */ 163 1.2 rillig void indent_still_on ( void ) ; /* due to the extra comment to the right */ 164 1.8 rillig //indent end 165 1.2 rillig 166 1.8 rillig //indent run 167 1.2 rillig /* INDENT OFF */ 168 1.2 rillig void indent_off ( void ) ; 169 1.11 rillig /* INDENT */ 170 1.6 rillig void indent_on(void); 171 1.2 rillig /* INDENT OFF */ 172 1.2 rillig void indent_off ( void ) ; 173 1.11 rillig /* INDENT ON */ 174 1.6 rillig void indent_on(void); /* the comment may be indented */ 175 1.2 rillig /* INDENT OFF */ 176 1.2 rillig void indent_off ( void ) ; 177 1.2 rillig /* INDENTATION ON */ 178 1.2 rillig void indent_still_off ( void ) ; /* due to the word 'INDENTATION' */ 179 1.2 rillig /* INDENT ON * */ 180 1.2 rillig void indent_still_off ( void ) ; /* due to the extra '*' at the end */ 181 1.2 rillig /* INDENT ON */ 182 1.6 rillig void indent_on(void); 183 1.2 rillig /* INDENT: OFF */ 184 1.6 rillig void indent_still_on(void); /* due to the colon in the middle */ 185 1.10 rillig /* $ The extra comment got moved to a separate line, but indenting is still */ 186 1.13 rillig /* $ on because the 'INDENT OFF' comment was not in a line of its own. */ 187 1.10 rillig /* INDENT OFF */ 188 1.10 rillig /* extra comment */ 189 1.6 rillig void indent_still_on(void); /* due to the extra comment to the 190 1.6 rillig * right */ 191 1.8 rillig //indent end 192 1.4 rillig 193 1.4 rillig 194 1.4 rillig /* 195 1.4 rillig * Try to confuse indent by having a string literal that has an embedded 196 1.4 rillig * INDENT comment. Indent doesn't get confused though because it requires the 197 1.4 rillig * INDENT comment to go from the very beginning of the line to the very end of 198 1.4 rillig * the line. 199 1.4 rillig */ 200 1.8 rillig //indent input 201 1.4 rillig const char *str = "\ 202 1.4 rillig /* INDENT OFF */\ 203 1.4 rillig " , ch; 204 1.8 rillig //indent end 205 1.4 rillig 206 1.8 rillig //indent run 207 1.4 rillig const char *str = "\ 208 1.4 rillig /* INDENT OFF */\ 209 1.4 rillig ", ch; 210 1.8 rillig //indent end 211 1.4 rillig 212 1.4 rillig 213 1.4 rillig /* 214 1.4 rillig * The keywords in the INDENT comments must all be uppercase. 215 1.4 rillig */ 216 1.8 rillig //indent input 217 1.4 rillig int on ; 218 1.4 rillig /* indent off */ 219 1.4 rillig int still_on ; 220 1.4 rillig /* INDENT off */ 221 1.4 rillig int still_on ; 222 1.4 rillig /* indent OFF */ 223 1.4 rillig int still_on ; 224 1.4 rillig /* INDENT OFF */ 225 1.4 rillig int finally_off ; 226 1.8 rillig //indent end 227 1.4 rillig 228 1.8 rillig //indent run -di0 229 1.4 rillig int on; 230 1.4 rillig /* indent off */ 231 1.4 rillig int still_on; 232 1.4 rillig /* INDENT off */ 233 1.4 rillig int still_on; 234 1.4 rillig /* indent OFF */ 235 1.4 rillig int still_on; 236 1.4 rillig /* INDENT OFF */ 237 1.4 rillig int finally_off ; 238 1.8 rillig //indent end 239 1.12 rillig 240 1.12 rillig 241 1.12 rillig /* 242 1.12 rillig * Ensure that in 'INDENT OFF' mode, no blank line is added between lines, even 243 1.12 rillig * when requested via the -bacc option. 244 1.12 rillig */ 245 1.12 rillig //indent input 246 1.12 rillig /* INDENT OFF */ 247 1.12 rillig int declaration; 248 1.12 rillig #if 0 249 1.12 rillig #endif 250 1.12 rillig int declaration; 251 1.12 rillig /* INDENT ON */ 252 1.12 rillig //indent end 253 1.12 rillig 254 1.12 rillig //indent run-equals-input -bacc 255 1.15 rillig 256 1.15 rillig 257 1.15 rillig /* 258 1.15 rillig * If an 'INDENT OFF' comment directly follows a line continuation, the line 259 1.15 rillig * continuation is dropped but the rest of the line is still formatted. 260 1.15 rillig */ 261 1.15 rillig //indent input 262 1.15 rillig int x ; \ 263 1.15 rillig /* INDENT OFF */ 264 1.15 rillig int y ; 265 1.15 rillig /* INDENT ON */ 266 1.15 rillig int z ; 267 1.15 rillig //indent end 268 1.15 rillig 269 1.15 rillig //indent run 270 1.15 rillig int x; 271 1.15 rillig /* INDENT OFF */ 272 1.15 rillig int y ; 273 1.15 rillig /* INDENT ON */ 274 1.15 rillig int z; 275 1.15 rillig //indent end 276