Home | History | Annotate | Line # | Download | only in indent
opt_ci.c revision 1.11
      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