1 1.11 rillig /* $NetBSD: opt_ci.c,v 1.11 2023/06/10 08:17:04 rillig Exp $ */ 2 1.1 rillig 3 1.2 rillig /* 4 1.2 rillig * Tests for the option '-ci', which controls the indentation of continuation 5 1.2 rillig * lines in statements and declarations, but only inside a function. 6 1.2 rillig */ 7 1.2 rillig 8 1.2 rillig /* 9 1.2 rillig * Top level expressions with and without parentheses. 10 1.2 rillig */ 11 1.8 rillig //indent input 12 1.2 rillig int top_level = 1 + 13 1.2 rillig 2; 14 1.2 rillig int top_level = (1 + 15 1.2 rillig 2 + ( 16 1.2 rillig 3)); 17 1.8 rillig //indent end 18 1.2 rillig 19 1.8 rillig //indent run -ci0 20 1.2 rillig int top_level = 1 + 21 1.2 rillig 2; 22 1.2 rillig int top_level = (1 + 23 1.2 rillig 2 + ( 24 1.2 rillig 3)); 25 1.8 rillig //indent end 26 1.7 rillig 27 1.8 rillig //indent run-equals-prev-output -ci2 28 1.7 rillig 29 1.8 rillig //indent run-equals-prev-output -ci4 30 1.7 rillig 31 1.8 rillig //indent run-equals-prev-output -ci8 32 1.2 rillig 33 1.8 rillig //indent run -ci0 -nlp 34 1.2 rillig int top_level = 1 + 35 1.2 rillig 2; 36 1.2 rillig int top_level = (1 + 37 1.2 rillig 2 + ( 38 1.2 rillig 3)); 39 1.8 rillig //indent end 40 1.2 rillig 41 1.8 rillig //indent run -ci2 -nlp 42 1.2 rillig int top_level = 1 + 43 1.2 rillig 2; 44 1.2 rillig int top_level = (1 + 45 1.2 rillig 2 + ( 46 1.2 rillig 3)); 47 1.8 rillig //indent end 48 1.2 rillig 49 1.2 rillig /* 50 1.10 rillig * Between 2019-04-04 and 2023-06-09, there was a special rule that prevented 51 1.10 rillig * indentation based on the number of open parentheses, in the case that the 52 1.10 rillig * continuation indentation is half an indentation level, maybe to prevent that 53 1.10 rillig * the continuation line has the same indentation as a follow-up statement, 54 1.10 rillig * such as in 'if' statements. To prevent such ambiguities, see '-eei'. 55 1.2 rillig */ 56 1.8 rillig //indent run -ci4 -nlp 57 1.2 rillig int top_level = 1 + 58 1.2 rillig 2; 59 1.2 rillig int top_level = (1 + 60 1.2 rillig 2 + ( 61 1.10 rillig 3)); 62 1.8 rillig //indent end 63 1.2 rillig 64 1.4 rillig 65 1.2 rillig /* 66 1.2 rillig * Declarations in functions without parentheses. 67 1.2 rillig */ 68 1.8 rillig //indent input 69 1.1 rillig int 70 1.1 rillig sum(int a, int b) 71 1.1 rillig { 72 1.1 rillig return a + 73 1.2 rillig b; 74 1.2 rillig return first + 75 1.2 rillig second; 76 1.2 rillig } 77 1.8 rillig //indent end 78 1.2 rillig 79 1.8 rillig //indent run -ci0 80 1.2 rillig int 81 1.2 rillig sum(int a, int b) 82 1.2 rillig { 83 1.2 rillig return a + 84 1.2 rillig b; 85 1.2 rillig return first + 86 1.2 rillig second; 87 1.1 rillig } 88 1.8 rillig //indent end 89 1.1 rillig 90 1.8 rillig //indent run -ci2 91 1.1 rillig int 92 1.1 rillig sum(int a, int b) 93 1.1 rillig { 94 1.1 rillig return a + 95 1.1 rillig b; 96 1.2 rillig return first + 97 1.2 rillig second; 98 1.2 rillig } 99 1.8 rillig //indent end 100 1.2 rillig 101 1.8 rillig //indent run -ci4 102 1.2 rillig int 103 1.2 rillig sum(int a, int b) 104 1.2 rillig { 105 1.2 rillig return a + 106 1.2 rillig b; 107 1.2 rillig return first + 108 1.2 rillig second; 109 1.2 rillig } 110 1.8 rillig //indent end 111 1.2 rillig 112 1.8 rillig //indent run -ci8 113 1.2 rillig int 114 1.2 rillig sum(int a, int b) 115 1.2 rillig { 116 1.2 rillig return a + 117 1.2 rillig b; 118 1.2 rillig return first + 119 1.2 rillig second; 120 1.2 rillig } 121 1.8 rillig //indent end 122 1.2 rillig 123 1.2 rillig 124 1.2 rillig /* 125 1.2 rillig * Continued statements with expressions in parentheses. 126 1.2 rillig */ 127 1.8 rillig //indent input 128 1.2 rillig int 129 1.2 rillig sum(int a, int b) 130 1.2 rillig { 131 1.2 rillig return (a + 132 1.2 rillig b); 133 1.2 rillig return (first + 134 1.2 rillig second + ( 135 1.2 rillig third)); 136 1.2 rillig } 137 1.8 rillig //indent end 138 1.2 rillig 139 1.8 rillig //indent run -ci0 140 1.2 rillig int 141 1.2 rillig sum(int a, int b) 142 1.2 rillig { 143 1.3 rillig return (a + 144 1.3 rillig b); 145 1.3 rillig return (first + 146 1.3 rillig second + ( 147 1.3 rillig third)); 148 1.2 rillig } 149 1.8 rillig //indent end 150 1.7 rillig 151 1.8 rillig //indent run-equals-prev-output -ci2 152 1.7 rillig 153 1.8 rillig //indent run-equals-prev-output -ci4 154 1.7 rillig 155 1.8 rillig //indent run-equals-prev-output -ci8 156 1.2 rillig 157 1.8 rillig //indent run -ci2 -nlp 158 1.2 rillig int 159 1.2 rillig sum(int a, int b) 160 1.2 rillig { 161 1.3 rillig return (a + 162 1.2 rillig b); 163 1.3 rillig return (first + 164 1.2 rillig second + ( 165 1.2 rillig third)); 166 1.2 rillig } 167 1.8 rillig //indent end 168 1.2 rillig 169 1.8 rillig //indent run -ci4 -nlp 170 1.2 rillig int 171 1.2 rillig sum(int a, int b) 172 1.2 rillig { 173 1.3 rillig return (a + 174 1.2 rillig b); 175 1.3 rillig return (first + 176 1.2 rillig second + ( 177 1.10 rillig third)); 178 1.2 rillig } 179 1.8 rillig //indent end 180 1.2 rillig 181 1.8 rillig //indent run -ci8 -nlp 182 1.2 rillig int 183 1.2 rillig sum(int a, int b) 184 1.2 rillig { 185 1.3 rillig return (a + 186 1.2 rillig b); 187 1.3 rillig return (first + 188 1.2 rillig second + ( 189 1.2 rillig third)); 190 1.1 rillig } 191 1.8 rillig //indent end 192 1.5 rillig 193 1.5 rillig 194 1.5 rillig /* 195 1.5 rillig * In the default configuration, the indentation level from '-i' is the same 196 1.5 rillig * as the continuation indentation from '-ci'. The difference between these 197 1.5 rillig * becomes visible for structural macros like 'forever' or 'foreach'. 198 1.5 rillig */ 199 1.8 rillig //indent input 200 1.5 rillig #define forever for (;;) 201 1.5 rillig void 202 1.5 rillig function(void) 203 1.5 rillig { 204 1.5 rillig forever 205 1.5 rillig stmt(); 206 1.5 rillig 207 1.5 rillig forever { 208 1.5 rillig stmt(); 209 1.5 rillig } 210 1.5 rillig } 211 1.8 rillig //indent end 212 1.5 rillig 213 1.8 rillig //indent run-equals-input 214 1.5 rillig 215 1.5 rillig /* 216 1.5 rillig * The difference between the block indentation and the continuation 217 1.5 rillig * indentation only becomes visible when these two differ. 218 1.5 rillig */ 219 1.8 rillig //indent run -i8 -ci4 220 1.5 rillig #define forever for (;;) 221 1.5 rillig void 222 1.5 rillig function(void) 223 1.5 rillig { 224 1.5 rillig forever 225 1.5 rillig stmt(); 226 1.5 rillig 227 1.5 rillig forever { 228 1.5 rillig stmt(); 229 1.5 rillig } 230 1.5 rillig } 231 1.8 rillig //indent end 232 1.9 rillig 233 1.9 rillig 234 1.9 rillig //indent input 235 1.9 rillig { 236 1.9 rillig size_t last_word_len = com.len 237 1.9 rillig - (size_t)(last_blank + 1); 238 1.9 rillig } 239 1.9 rillig //indent end 240 1.9 rillig 241 1.11 rillig //indent run-equals-input -ldi0 -ci4 242