Home | History | Annotate | Line # | Download | only in indent
      1  1.13  rillig /* $NetBSD: opt_bc.c,v 1.13 2023/06/17 22:09:24 rillig Exp $ */
      2   1.1  rillig 
      3   1.3  rillig /*
      4   1.3  rillig  * Tests for the options '-bc' and '-nbc'.
      5   1.3  rillig  *
      6   1.3  rillig  * The option '-bc' forces a newline after each comma in a declaration.
      7   1.3  rillig  *
      8   1.4  rillig  * The option '-nbc' removes line breaks between declarators.  In most other
      9   1.4  rillig  * places, indent preserves line breaks.
     10   1.3  rillig  */
     11   1.3  rillig 
     12   1.6  rillig //indent input
     13   1.1  rillig int a,b,c;
     14   1.1  rillig void function_declaration(int a,int b,int c);
     15   1.4  rillig int m1,
     16   1.4  rillig m2,
     17   1.4  rillig m3;
     18   1.4  rillig char plain, *pointer;
     19   1.6  rillig //indent end
     20   1.1  rillig 
     21   1.6  rillig //indent run -bc
     22   1.1  rillig int		a,
     23   1.1  rillig 		b,
     24   1.1  rillig 		c;
     25   1.1  rillig void		function_declaration(int a, int b, int c);
     26   1.4  rillig int		m1,
     27   1.4  rillig 		m2,
     28   1.4  rillig 		m3;
     29   1.4  rillig char		plain,
     30   1.4  rillig 	       *pointer;
     31   1.6  rillig //indent end
     32   1.1  rillig 
     33   1.6  rillig //indent run -nbc
     34   1.1  rillig int		a, b, c;
     35   1.1  rillig void		function_declaration(int a, int b, int c);
     36   1.4  rillig int		m1, m2, m3;
     37   1.4  rillig char		plain, *pointer;
     38   1.6  rillig //indent end
     39   1.4  rillig 
     40   1.4  rillig 
     41   1.6  rillig //indent input
     42   1.4  rillig old_style_definition(a, b, c)
     43   1.4  rillig double a,b,c;
     44   1.4  rillig {
     45   1.4  rillig     return a+b+c;
     46   1.4  rillig }
     47   1.6  rillig //indent end
     48   1.4  rillig 
     49   1.6  rillig //indent run -bc
     50   1.4  rillig old_style_definition(a, b, c)
     51   1.4  rillig double		a,
     52   1.4  rillig 		b,
     53   1.4  rillig 		c;
     54   1.4  rillig {
     55   1.4  rillig 	return a + b + c;
     56   1.4  rillig }
     57   1.6  rillig //indent end
     58   1.4  rillig 
     59   1.6  rillig //indent run -nbc
     60   1.4  rillig old_style_definition(a, b, c)
     61   1.4  rillig double		a, b, c;
     62   1.4  rillig {
     63   1.4  rillig 	return a + b + c;
     64   1.4  rillig }
     65   1.6  rillig //indent end
     66   1.7  rillig 
     67   1.7  rillig 
     68   1.8  rillig /*
     69   1.8  rillig  * Before indent.c 1.311 from 2023-06-02, indent formatted the two '#if'
     70   1.8  rillig  * branches differently and merged the 'b, c' with the preceding preprocessing
     71   1.8  rillig  * line.
     72   1.8  rillig  */
     73   1.7  rillig //indent input
     74   1.7  rillig int a,
     75   1.7  rillig #if 0
     76   1.7  rillig b, c; int d;
     77   1.7  rillig #else
     78   1.7  rillig b, c; int d;
     79   1.7  rillig #endif
     80   1.7  rillig //indent end
     81   1.7  rillig 
     82   1.7  rillig //indent run -bc
     83   1.7  rillig int		a,
     84   1.7  rillig #if 0
     85   1.7  rillig 		b,
     86   1.7  rillig 		c;
     87   1.7  rillig int		d;
     88   1.7  rillig #else
     89   1.8  rillig 		b,
     90   1.8  rillig 		c;
     91   1.7  rillig int		d;
     92   1.7  rillig #endif
     93   1.7  rillig //indent end
     94   1.7  rillig 
     95   1.7  rillig //indent run -nbc
     96   1.7  rillig int		a,
     97   1.8  rillig #if 0
     98   1.8  rillig 		b, c;
     99   1.7  rillig int		d;
    100   1.7  rillig #else
    101   1.7  rillig 		b, c;
    102   1.7  rillig int		d;
    103   1.7  rillig #endif
    104   1.7  rillig //indent end
    105   1.9  rillig 
    106   1.9  rillig 
    107   1.9  rillig /*
    108  1.10  rillig  * Before 2023-06-10, a '(' at the top level started a function definition,
    109  1.10  rillig  * leaving variable declaration mode.
    110   1.9  rillig  */
    111   1.9  rillig //indent input
    112   1.9  rillig int a = 1, b = 2;
    113   1.9  rillig int a = (1), b = 2;
    114   1.9  rillig //indent end
    115   1.9  rillig 
    116   1.9  rillig //indent run -bc
    117   1.9  rillig int		a = 1,
    118   1.9  rillig 		b = 2;
    119  1.10  rillig int		a = (1),
    120  1.10  rillig 		b = 2;
    121   1.9  rillig //indent end
    122  1.11  rillig 
    123  1.11  rillig 
    124  1.12  rillig //indent input
    125  1.12  rillig int a,
    126  1.12  rillig b,
    127  1.12  rillig c;
    128  1.12  rillig //indent end
    129  1.12  rillig 
    130  1.12  rillig //indent run -nbc -di0
    131  1.12  rillig int a, b, c;
    132  1.12  rillig //indent end
    133  1.12  rillig 
    134  1.12  rillig 
    135  1.11  rillig /*
    136  1.11  rillig  * When declarations are too long to fit in a single line, they should not be
    137  1.11  rillig  * joined.
    138  1.11  rillig  */
    139  1.11  rillig //indent input
    140  1.11  rillig {
    141  1.11  rillig 	const struct paren_level *prev = state.prev_ps.paren.item,
    142  1.11  rillig 	    *curr = ps.paren.item;
    143  1.11  rillig }
    144  1.11  rillig //indent end
    145  1.11  rillig 
    146  1.11  rillig //indent run
    147  1.11  rillig // $ FIXME: The line becomes too long.
    148  1.11  rillig {
    149  1.11  rillig 	const struct paren_level *prev = state.prev_ps.paren.item, *curr = ps.paren.item;
    150  1.11  rillig }
    151  1.11  rillig //indent end
    152  1.13  rillig 
    153  1.13  rillig 
    154  1.13  rillig /*
    155  1.13  rillig  * In struct or union declarations, the declarators are split onto separate
    156  1.13  rillig  * lines, just like in ordinary declarations.
    157  1.13  rillig  *
    158  1.13  rillig  * In enum declarations and in initializers, no line breaks are added or
    159  1.13  rillig  * removed.
    160  1.13  rillig  */
    161  1.13  rillig //indent input
    162  1.13  rillig struct triple_struct {
    163  1.13  rillig 	int a, b, c;
    164  1.13  rillig };
    165  1.13  rillig union triple_union {
    166  1.13  rillig 	int a, b, c;
    167  1.13  rillig };
    168  1.13  rillig enum triple_enum {
    169  1.13  rillig 	triple_a, triple_b,
    170  1.13  rillig 
    171  1.13  rillig 	triple_c,
    172  1.13  rillig };
    173  1.13  rillig //indent end
    174  1.13  rillig 
    175  1.13  rillig //indent run -bc
    176  1.13  rillig struct triple_struct {
    177  1.13  rillig 	int		a,
    178  1.13  rillig 			b,
    179  1.13  rillig 			c;
    180  1.13  rillig };
    181  1.13  rillig union triple_union {
    182  1.13  rillig 	int		a,
    183  1.13  rillig 			b,
    184  1.13  rillig 			c;
    185  1.13  rillig };
    186  1.13  rillig enum triple_enum {
    187  1.13  rillig 	triple_a, triple_b,
    188  1.13  rillig 
    189  1.13  rillig 	triple_c,
    190  1.13  rillig };
    191  1.13  rillig //indent end
    192  1.13  rillig 
    193  1.13  rillig //indent run -nbc
    194  1.13  rillig struct triple_struct {
    195  1.13  rillig 	int		a, b, c;
    196  1.13  rillig };
    197  1.13  rillig union triple_union {
    198  1.13  rillig 	int		a, b, c;
    199  1.13  rillig };
    200  1.13  rillig enum triple_enum {
    201  1.13  rillig 	triple_a, triple_b,
    202  1.13  rillig 
    203  1.13  rillig 	triple_c,
    204  1.13  rillig };
    205  1.13  rillig //indent end
    206