Home | History | Annotate | Line # | Download | only in indent
opt_eei.c revision 1.10
      1  1.10  rillig /* $NetBSD: opt_eei.c,v 1.10 2023/05/15 12:59:43 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.10  rillig 	    b)
    131   1.9  rillig 	stmt();
    132   1.5  rillig     if (a
    133  1.10  rillig 	    <
    134  1.10  rillig 	    b)
    135   1.9  rillig 	stmt();
    136   1.9  rillig     while (a
    137  1.10  rillig 	    < b)
    138   1.9  rillig 	stmt();
    139   1.9  rillig     switch (
    140  1.10  rillig 	    a)
    141   1.9  rillig 	stmt();
    142   1.5  rillig }
    143   1.8  rillig //indent end
    144   1.5  rillig 
    145   1.9  rillig /* With a continuation indentation of 2, there is no ambiguity at all. */
    146   1.9  rillig //indent run -eei -i6 -ci2 -nlp
    147   1.5  rillig {
    148   1.9  rillig       if (a <
    149   1.9  rillig 	b)
    150   1.9  rillig 	    stmt();
    151   1.9  rillig       if (a
    152   1.9  rillig 	<
    153   1.9  rillig 	b)
    154   1.9  rillig 	    stmt();
    155   1.9  rillig       while (a
    156   1.9  rillig 	< b)
    157   1.9  rillig 	    stmt();
    158   1.9  rillig       switch (
    159   1.9  rillig 	a)
    160   1.5  rillig 	    stmt();
    161   1.5  rillig }
    162   1.8  rillig //indent end
    163