opt_ci.c revision 1.9 1 1.9 rillig /* $NetBSD: opt_ci.c,v 1.9 2023/05/18 05:33:27 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.2 rillig * Since '-ci4' is half an indentation level, indent all continuations using
51 1.2 rillig * the same level, no matter how many parentheses there are. The rationale for
52 1.2 rillig * this may have been to prevent that the continuation line has the same
53 1.2 rillig * indentation as a follow-up statement, such as in 'if' statements.
54 1.2 rillig */
55 1.8 rillig //indent run -ci4 -nlp
56 1.2 rillig int top_level = 1 +
57 1.2 rillig 2;
58 1.2 rillig int top_level = (1 +
59 1.2 rillig 2 + (
60 1.2 rillig 3));
61 1.8 rillig //indent end
62 1.2 rillig
63 1.4 rillig
64 1.2 rillig /*
65 1.2 rillig * Declarations in functions without parentheses.
66 1.2 rillig */
67 1.8 rillig //indent input
68 1.1 rillig int
69 1.1 rillig sum(int a, int b)
70 1.1 rillig {
71 1.1 rillig return a +
72 1.2 rillig b;
73 1.2 rillig return first +
74 1.2 rillig second;
75 1.2 rillig }
76 1.8 rillig //indent end
77 1.2 rillig
78 1.8 rillig //indent run -ci0
79 1.2 rillig int
80 1.2 rillig sum(int a, int b)
81 1.2 rillig {
82 1.2 rillig return a +
83 1.2 rillig b;
84 1.2 rillig return first +
85 1.2 rillig second;
86 1.1 rillig }
87 1.8 rillig //indent end
88 1.1 rillig
89 1.8 rillig //indent run -ci2
90 1.1 rillig int
91 1.1 rillig sum(int a, int b)
92 1.1 rillig {
93 1.1 rillig return a +
94 1.1 rillig b;
95 1.2 rillig return first +
96 1.2 rillig second;
97 1.2 rillig }
98 1.8 rillig //indent end
99 1.2 rillig
100 1.8 rillig //indent run -ci4
101 1.2 rillig int
102 1.2 rillig sum(int a, int b)
103 1.2 rillig {
104 1.2 rillig return a +
105 1.2 rillig b;
106 1.2 rillig return first +
107 1.2 rillig second;
108 1.2 rillig }
109 1.8 rillig //indent end
110 1.2 rillig
111 1.8 rillig //indent run -ci8
112 1.2 rillig int
113 1.2 rillig sum(int a, int b)
114 1.2 rillig {
115 1.2 rillig return a +
116 1.2 rillig b;
117 1.2 rillig return first +
118 1.2 rillig second;
119 1.2 rillig }
120 1.8 rillig //indent end
121 1.2 rillig
122 1.2 rillig
123 1.2 rillig /*
124 1.2 rillig * Continued statements with expressions in parentheses.
125 1.2 rillig */
126 1.8 rillig //indent input
127 1.2 rillig int
128 1.2 rillig sum(int a, int b)
129 1.2 rillig {
130 1.2 rillig return (a +
131 1.2 rillig b);
132 1.2 rillig return (first +
133 1.2 rillig second + (
134 1.2 rillig third));
135 1.2 rillig }
136 1.8 rillig //indent end
137 1.2 rillig
138 1.8 rillig //indent run -ci0
139 1.2 rillig int
140 1.2 rillig sum(int a, int b)
141 1.2 rillig {
142 1.3 rillig return (a +
143 1.3 rillig b);
144 1.3 rillig return (first +
145 1.3 rillig second + (
146 1.3 rillig third));
147 1.2 rillig }
148 1.8 rillig //indent end
149 1.7 rillig
150 1.8 rillig //indent run-equals-prev-output -ci2
151 1.7 rillig
152 1.8 rillig //indent run-equals-prev-output -ci4
153 1.7 rillig
154 1.8 rillig //indent run-equals-prev-output -ci8
155 1.2 rillig
156 1.8 rillig //indent run -ci2 -nlp
157 1.2 rillig int
158 1.2 rillig sum(int a, int b)
159 1.2 rillig {
160 1.3 rillig return (a +
161 1.2 rillig b);
162 1.3 rillig return (first +
163 1.2 rillig second + (
164 1.2 rillig third));
165 1.2 rillig }
166 1.8 rillig //indent end
167 1.2 rillig
168 1.2 rillig /*
169 1.2 rillig * Since '-ci4' is half an indentation level, indent all continuations using
170 1.2 rillig * the same level, no matter how many parentheses there are. The rationale for
171 1.2 rillig * this may have been to prevent that the continuation line has the same
172 1.2 rillig * indentation as a follow-up statement, such as in 'if' statements.
173 1.2 rillig */
174 1.8 rillig //indent run -ci4 -nlp
175 1.2 rillig int
176 1.2 rillig sum(int a, int b)
177 1.2 rillig {
178 1.3 rillig return (a +
179 1.2 rillig b);
180 1.3 rillig return (first +
181 1.2 rillig second + (
182 1.2 rillig third));
183 1.2 rillig }
184 1.8 rillig //indent end
185 1.2 rillig
186 1.8 rillig //indent run -ci8 -nlp
187 1.2 rillig int
188 1.2 rillig sum(int a, int b)
189 1.2 rillig {
190 1.3 rillig return (a +
191 1.2 rillig b);
192 1.3 rillig return (first +
193 1.2 rillig second + (
194 1.2 rillig third));
195 1.1 rillig }
196 1.8 rillig //indent end
197 1.5 rillig
198 1.5 rillig
199 1.5 rillig /*
200 1.5 rillig * In the default configuration, the indentation level from '-i' is the same
201 1.5 rillig * as the continuation indentation from '-ci'. The difference between these
202 1.5 rillig * becomes visible for structural macros like 'forever' or 'foreach'.
203 1.5 rillig */
204 1.8 rillig //indent input
205 1.5 rillig #define forever for (;;)
206 1.5 rillig void
207 1.5 rillig function(void)
208 1.5 rillig {
209 1.5 rillig forever
210 1.5 rillig stmt();
211 1.5 rillig
212 1.5 rillig forever {
213 1.5 rillig stmt();
214 1.5 rillig }
215 1.5 rillig }
216 1.8 rillig //indent end
217 1.5 rillig
218 1.8 rillig //indent run-equals-input
219 1.5 rillig
220 1.5 rillig /*
221 1.5 rillig * The difference between the block indentation and the continuation
222 1.5 rillig * indentation only becomes visible when these two differ.
223 1.5 rillig */
224 1.8 rillig //indent run -i8 -ci4
225 1.5 rillig #define forever for (;;)
226 1.5 rillig void
227 1.5 rillig function(void)
228 1.5 rillig {
229 1.5 rillig forever
230 1.5 rillig stmt();
231 1.5 rillig
232 1.5 rillig forever {
233 1.5 rillig stmt();
234 1.5 rillig }
235 1.5 rillig }
236 1.8 rillig //indent end
237 1.9 rillig
238 1.9 rillig
239 1.9 rillig //indent input
240 1.9 rillig {
241 1.9 rillig size_t last_word_len = com.len
242 1.9 rillig - (size_t)(last_blank + 1);
243 1.9 rillig }
244 1.9 rillig //indent end
245 1.9 rillig
246 1.9 rillig //indent run -ldi0 -ci4
247 1.9 rillig {
248 1.9 rillig size_t last_word_len = com.len
249 1.9 rillig /* $ FIXME: The '-' must be indented by 4 spaces. */
250 1.9 rillig - (size_t)(last_blank + 1);
251 1.9 rillig }
252 1.9 rillig //indent end
253