Home | History | Annotate | Line # | Download | only in indent
opt_eei.c revision 1.9
      1  1.9  rillig /* $NetBSD: opt_eei.c,v 1.9 2023/05/15 12:11:07 rillig Exp $ */
      2  1.1  rillig 
      3  1.3  rillig /*
      4  1.3  rillig  * Tests for the options '-eei' and '-neei'.
      5  1.3  rillig  *
      6  1.3  rillig  * The option '-eei' enables extra indentation on continuation lines of the
      7  1.3  rillig  * expression part of 'if' and 'while' statements. These continuation lines
      8  1.9  rillig  * are indented one extra level to avoid being confused for the first
      9  1.9  rillig  * statement of the body, even if the condition line starts with an operator
     10  1.9  rillig  * such as '&&' or '<' that could not start a statement.
     11  1.3  rillig  *
     12  1.3  rillig  * The option '-neei' indents these conditions in the same way as all other
     13  1.3  rillig  * continued statements.
     14  1.3  rillig  */
     15  1.3  rillig 
     16  1.8  rillig //indent input
     17  1.9  rillig {
     18  1.9  rillig 	if (a <
     19  1.9  rillig b)
     20  1.9  rillig 		stmt();
     21  1.9  rillig 	if (a
     22  1.9  rillig <
     23  1.9  rillig b)
     24  1.9  rillig 		stmt();
     25  1.9  rillig 	while (a
     26  1.9  rillig < b)
     27  1.9  rillig 		stmt();
     28  1.9  rillig 	switch (
     29  1.9  rillig 		a)
     30  1.9  rillig 		stmt();
     31  1.9  rillig }
     32  1.9  rillig //indent end
     33  1.9  rillig 
     34  1.9  rillig /*
     35  1.9  rillig  * By default, continuation lines are aligned on parentheses, and only a
     36  1.9  rillig  * multi-line switch statement would have ambiguous indentation.
     37  1.9  rillig  */
     38  1.9  rillig //indent run
     39  1.1  rillig {
     40  1.1  rillig 	if (a <
     41  1.1  rillig 	    b)
     42  1.9  rillig 		stmt();
     43  1.1  rillig 	if (a
     44  1.1  rillig 	    <
     45  1.1  rillig 	    b)
     46  1.9  rillig 		stmt();
     47  1.9  rillig 	while (a
     48  1.9  rillig 	       < b)
     49  1.9  rillig 		stmt();
     50  1.9  rillig 	switch (
     51  1.9  rillig 		a)
     52  1.9  rillig 		stmt();
     53  1.1  rillig }
     54  1.8  rillig //indent end
     55  1.1  rillig 
     56  1.9  rillig //indent run-equals-prev-output -neei
     57  1.9  rillig 
     58  1.9  rillig /*
     59  1.9  rillig  * For indentation 8, the only expression that needs to be disambiguated is
     60  1.9  rillig  * the one from the switch statement.
     61  1.9  rillig  */
     62  1.8  rillig //indent run -eei
     63  1.1  rillig {
     64  1.1  rillig 	if (a <
     65  1.9  rillig /* $ XXX: No extra indentation necessary. */
     66  1.1  rillig 			b)
     67  1.9  rillig 		stmt();
     68  1.1  rillig 	if (a
     69  1.9  rillig /* $ XXX: No extra indentation necessary. */
     70  1.1  rillig 			<
     71  1.9  rillig /* $ XXX: No extra indentation necessary. */
     72  1.1  rillig 			b)
     73  1.9  rillig 		stmt();
     74  1.9  rillig 	while (a
     75  1.9  rillig /* $ XXX: No extra indentation necessary. */
     76  1.9  rillig 			< b)
     77  1.9  rillig 		stmt();
     78  1.9  rillig 	switch (
     79  1.9  rillig 			a)
     80  1.9  rillig 		stmt();
     81  1.1  rillig }
     82  1.8  rillig //indent end
     83  1.1  rillig 
     84  1.9  rillig /* For indentation 4, the expressions from the 'if' are ambiguous. */
     85  1.8  rillig //indent run -neei -i4
     86  1.3  rillig {
     87  1.3  rillig     if (a <
     88  1.3  rillig 	b)
     89  1.9  rillig 	stmt();
     90  1.3  rillig     if (a
     91  1.3  rillig 	<
     92  1.3  rillig 	b)
     93  1.9  rillig 	stmt();
     94  1.9  rillig     while (a
     95  1.9  rillig 	   < b)
     96  1.9  rillig 	stmt();
     97  1.9  rillig     switch (
     98  1.9  rillig 	    a)
     99  1.9  rillig 	stmt();
    100  1.3  rillig }
    101  1.8  rillig //indent end
    102  1.3  rillig 
    103  1.8  rillig //indent run -eei -i4
    104  1.3  rillig {
    105  1.3  rillig     if (a <
    106  1.3  rillig 	    b)
    107  1.9  rillig 	stmt();
    108  1.3  rillig     if (a
    109  1.3  rillig 	    <
    110  1.3  rillig 	    b)
    111  1.9  rillig 	stmt();
    112  1.9  rillig     while (a
    113  1.9  rillig /* $ XXX: No extra indentation necessary. */
    114  1.9  rillig 	    < b)
    115  1.9  rillig 	stmt();
    116  1.9  rillig     switch (
    117  1.9  rillig /* $ XXX: No extra indentation necessary. */
    118  1.9  rillig 	    a)
    119  1.9  rillig 	stmt();
    120  1.3  rillig }
    121  1.8  rillig //indent end
    122  1.5  rillig 
    123  1.5  rillig /*
    124  1.9  rillig  * The -nlp option uses a fixed indentation for continuation lines. The if
    125  1.9  rillig  * statements are disambiguated.
    126  1.5  rillig  */
    127  1.8  rillig //indent run -eei -i4 -nlp
    128  1.5  rillig {
    129  1.5  rillig     if (a <
    130  1.9  rillig /* $ FIXME: Needs extra indentation. */
    131  1.5  rillig 	b)
    132  1.9  rillig 	stmt();
    133  1.5  rillig     if (a
    134  1.9  rillig /* $ FIXME: Needs extra indentation. */
    135  1.5  rillig 	<
    136  1.9  rillig /* $ FIXME: Needs extra indentation. */
    137  1.5  rillig 	b)
    138  1.9  rillig 	stmt();
    139  1.9  rillig     while (a
    140  1.9  rillig /* $ FIXME: Needs extra indentation. */
    141  1.9  rillig 	< b)
    142  1.9  rillig 	stmt();
    143  1.9  rillig     switch (
    144  1.9  rillig /* $ FIXME: Needs extra indentation. */
    145  1.9  rillig 	a)
    146  1.9  rillig 	stmt();
    147  1.5  rillig }
    148  1.8  rillig //indent end
    149  1.5  rillig 
    150  1.9  rillig /* With a continuation indentation of 2, there is no ambiguity at all. */
    151  1.9  rillig //indent run -eei -i6 -ci2 -nlp
    152  1.5  rillig {
    153  1.9  rillig       if (a <
    154  1.9  rillig 	b)
    155  1.9  rillig 	    stmt();
    156  1.9  rillig       if (a
    157  1.9  rillig 	<
    158  1.9  rillig 	b)
    159  1.9  rillig 	    stmt();
    160  1.9  rillig       while (a
    161  1.9  rillig 	< b)
    162  1.9  rillig 	    stmt();
    163  1.9  rillig       switch (
    164  1.9  rillig 	a)
    165  1.5  rillig 	    stmt();
    166  1.5  rillig }
    167  1.8  rillig //indent end
    168