Home | History | Annotate | Line # | Download | only in indent
indent_off_on.c revision 1.9
      1  1.9  rillig /* $NetBSD: indent_off_on.c,v 1.9 2023/05/11 18:13:55 rillig Exp $ */
      2  1.1  rillig 
      3  1.1  rillig /*
      4  1.1  rillig  * Tests for the comments 'INDENT OFF' and 'INDENT ON', which temporarily
      5  1.4  rillig  * disable formatting, copying the input directly to the output.  Internally,
      6  1.4  rillig  * indent still keeps track of the number of braces and other indentation.
      7  1.1  rillig  */
      8  1.1  rillig 
      9  1.8  rillig //indent input
     10  1.1  rillig {}
     11  1.1  rillig 
     12  1.1  rillig /*INDENT OFF*/
     13  1.1  rillig /*INDENT ON*/
     14  1.1  rillig 
     15  1.1  rillig {}
     16  1.8  rillig //indent end
     17  1.1  rillig 
     18  1.1  rillig /*
     19  1.1  rillig  * XXX: It is asymmetric that 'INDENT OFF' is kept as is, while 'INDENT ON'
     20  1.1  rillig  * gets enclosed with spaces.
     21  1.1  rillig  */
     22  1.8  rillig //indent run
     23  1.1  rillig {
     24  1.1  rillig }
     25  1.1  rillig /* $ FIXME: This empty line must stay. */
     26  1.1  rillig /*INDENT OFF*/
     27  1.9  rillig /* $ FIXME: The empty line below must be above the 'OFF' comment. */
     28  1.9  rillig 
     29  1.1  rillig /* INDENT ON */
     30  1.1  rillig 
     31  1.1  rillig {
     32  1.1  rillig }
     33  1.8  rillig //indent end
     34  1.1  rillig 
     35  1.1  rillig 
     36  1.8  rillig //indent input
     37  1.1  rillig {}
     38  1.3  rillig 
     39  1.3  rillig 
     40  1.3  rillig /*INDENT OFF*/
     41  1.3  rillig /*INDENT ON*/
     42  1.8  rillig //indent end
     43  1.3  rillig 
     44  1.8  rillig //indent run
     45  1.3  rillig {
     46  1.3  rillig }
     47  1.9  rillig 
     48  1.3  rillig /*INDENT OFF*/
     49  1.9  rillig /* $ FIXME: The empty line below must be above the 'OFF' comment. */
     50  1.9  rillig 
     51  1.3  rillig /* INDENT ON */
     52  1.8  rillig //indent end
     53  1.3  rillig 
     54  1.3  rillig 
     55  1.8  rillig //indent input
     56  1.3  rillig {}
     57  1.1  rillig  /* INDENT OFF */
     58  1.1  rillig  /* INDENT ON */
     59  1.1  rillig {}
     60  1.8  rillig //indent end
     61  1.1  rillig 
     62  1.1  rillig /*
     63  1.1  rillig  * XXX: It is asymmetric that 'INDENT OFF' is indented, while 'INDENT ON'
     64  1.1  rillig  * is aligned.
     65  1.1  rillig  */
     66  1.8  rillig //indent run
     67  1.1  rillig {
     68  1.1  rillig }
     69  1.1  rillig  /* INDENT OFF */
     70  1.9  rillig /* $ FIXME: The empty line below must be removed. */
     71  1.9  rillig 
     72  1.1  rillig /* INDENT ON */
     73  1.1  rillig {
     74  1.1  rillig }
     75  1.8  rillig //indent end
     76  1.1  rillig 
     77  1.1  rillig 
     78  1.8  rillig //indent input
     79  1.1  rillig {}
     80  1.1  rillig 	/* INDENT OFF */
     81  1.1  rillig 	/* INDENT ON */
     82  1.1  rillig {}
     83  1.8  rillig //indent end
     84  1.1  rillig 
     85  1.1  rillig /*
     86  1.1  rillig  * XXX: It is asymmetric that 'INDENT OFF' is indented, while 'INDENT ON'
     87  1.1  rillig  * is aligned.
     88  1.1  rillig  */
     89  1.8  rillig //indent run
     90  1.1  rillig {
     91  1.1  rillig }
     92  1.1  rillig 	/* INDENT OFF */
     93  1.9  rillig /* $ FIXME: The empty line below must be removed. */
     94  1.9  rillig 
     95  1.1  rillig /* INDENT ON */
     96  1.1  rillig {
     97  1.1  rillig }
     98  1.8  rillig //indent end
     99  1.1  rillig 
    100  1.5  rillig 
    101  1.1  rillig /*
    102  1.1  rillig  * The INDENT comments can be written without space between the words, but
    103  1.1  rillig  * nobody does this.
    104  1.1  rillig  */
    105  1.8  rillig //indent input
    106  1.1  rillig int   decl   ;
    107  1.1  rillig /*INDENTOFF*/
    108  1.1  rillig int   decl   ;
    109  1.1  rillig /*INDENTON*/
    110  1.1  rillig int   decl   ;
    111  1.8  rillig //indent end
    112  1.1  rillig 
    113  1.8  rillig //indent run -di0
    114  1.1  rillig int decl;
    115  1.1  rillig /*INDENTOFF*/
    116  1.1  rillig int   decl   ;
    117  1.9  rillig /* $ FIXME: The empty line below must be removed. */
    118  1.9  rillig 
    119  1.1  rillig /* INDENTON */
    120  1.1  rillig int decl;
    121  1.8  rillig //indent end
    122  1.1  rillig 
    123  1.1  rillig 
    124  1.1  rillig /*
    125  1.1  rillig  * Any whitespace around the 'INDENT ON/OFF' is ignored, as is any whitespace
    126  1.1  rillig  * between the two words.
    127  1.1  rillig  */
    128  1.8  rillig //indent input
    129  1.4  rillig int   decl   ;
    130  1.1  rillig /*		INDENT		OFF		*/
    131  1.1  rillig int   decl   ;
    132  1.1  rillig /*		INDENT		ON		*/
    133  1.4  rillig int   decl   ;
    134  1.8  rillig //indent end
    135  1.1  rillig 
    136  1.1  rillig /*
    137  1.1  rillig  * XXX: It is asymmetric that 'INDENT OFF' is indented, while 'INDENT ON'
    138  1.4  rillig  * is pushed to the start of the line.
    139  1.1  rillig  */
    140  1.8  rillig //indent run -di0
    141  1.1  rillig int decl;
    142  1.1  rillig /*		INDENT		OFF		*/
    143  1.1  rillig int   decl   ;
    144  1.9  rillig /* $ FIXME: The empty line below must be removed. */
    145  1.9  rillig 
    146  1.1  rillig /* INDENT		ON		*/
    147  1.1  rillig int decl;
    148  1.8  rillig //indent end
    149  1.2  rillig 
    150  1.2  rillig 
    151  1.8  rillig //indent input
    152  1.2  rillig /*INDENT OFF*/
    153  1.2  rillig /* No formatting takes place here. */
    154  1.2  rillig int format( void ) {{{
    155  1.2  rillig /*INDENT ON*/
    156  1.2  rillig }}}
    157  1.8  rillig //indent end
    158  1.2  rillig 
    159  1.8  rillig //indent run
    160  1.2  rillig /*INDENT OFF*/
    161  1.2  rillig /* No formatting takes place here. */
    162  1.2  rillig int format( void ) {{{
    163  1.2  rillig /* $ XXX: Why is the INDENT ON comment indented? */
    164  1.2  rillig /* $ XXX: Why does the INDENT ON comment get spaces, but not the OFF comment? */
    165  1.9  rillig /* $ FIXME: The empty line below must be removed. */
    166  1.9  rillig 
    167  1.2  rillig 			/* INDENT ON */
    168  1.2  rillig }
    169  1.2  rillig }
    170  1.2  rillig }
    171  1.8  rillig //indent end
    172  1.2  rillig 
    173  1.2  rillig 
    174  1.8  rillig //indent input
    175  1.2  rillig /* INDENT OFF */
    176  1.2  rillig void indent_off ( void ) ;
    177  1.2  rillig /*  INDENT */
    178  1.2  rillig void indent_on ( void ) ;
    179  1.2  rillig /* INDENT OFF */
    180  1.2  rillig void indent_off ( void ) ;
    181  1.2  rillig 	/* INDENT ON */
    182  1.2  rillig void indent_on ( void ) ;	/* the comment may be indented */
    183  1.2  rillig /* INDENT		OFF					*/
    184  1.2  rillig void indent_off ( void ) ;
    185  1.2  rillig /* INDENTATION ON */
    186  1.2  rillig void indent_still_off ( void ) ;	/* due to the word 'INDENTATION' */
    187  1.2  rillig /* INDENT ON * */
    188  1.2  rillig void indent_still_off ( void ) ;	/* due to the extra '*' at the end */
    189  1.2  rillig /* INDENT ON */
    190  1.2  rillig void indent_on ( void ) ;
    191  1.2  rillig /* INDENT: OFF */
    192  1.2  rillig void indent_still_on ( void ) ;	/* due to the colon in the middle */
    193  1.2  rillig /* INDENT OFF */		/* extra comment */
    194  1.2  rillig void indent_still_on ( void ) ;	/* due to the extra comment to the right */
    195  1.8  rillig //indent end
    196  1.2  rillig 
    197  1.8  rillig //indent run
    198  1.2  rillig /* INDENT OFF */
    199  1.2  rillig void indent_off ( void ) ;
    200  1.9  rillig /* $ FIXME: The empty line below must be removed. */
    201  1.9  rillig 
    202  1.2  rillig /* $ XXX: The double space from the below comment got merged to a single */
    203  1.2  rillig /* $ XXX: space even though the comment might be regarded to be still in */
    204  1.2  rillig /* $ XXX: the OFF section. */
    205  1.2  rillig /* INDENT */
    206  1.6  rillig void		indent_on(void);
    207  1.2  rillig /* INDENT OFF */
    208  1.2  rillig void indent_off ( void ) ;
    209  1.9  rillig /* $ FIXME: The empty line below must be removed. */
    210  1.9  rillig 
    211  1.2  rillig /* $ XXX: The below comment got moved from column 9 to column 1. */
    212  1.2  rillig /* INDENT ON */
    213  1.6  rillig void		indent_on(void);	/* the comment may be indented */
    214  1.2  rillig /* INDENT		OFF					*/
    215  1.2  rillig void indent_off ( void ) ;
    216  1.2  rillig /* INDENTATION ON */
    217  1.2  rillig void indent_still_off ( void ) ;	/* due to the word 'INDENTATION' */
    218  1.2  rillig /* INDENT ON * */
    219  1.2  rillig void indent_still_off ( void ) ;	/* due to the extra '*' at the end */
    220  1.9  rillig /* $ FIXME: The empty line below must be removed. */
    221  1.9  rillig 
    222  1.2  rillig /* INDENT ON */
    223  1.6  rillig void		indent_on(void);
    224  1.2  rillig /* INDENT: OFF */
    225  1.6  rillig void		indent_still_on(void);	/* due to the colon in the middle */
    226  1.2  rillig /* $ The extra comment got moved to the left since there is no code in */
    227  1.2  rillig /* $ that line. */
    228  1.2  rillig /* INDENT OFF *//* extra comment */
    229  1.6  rillig void		indent_still_on(void);	/* due to the extra comment to the
    230  1.6  rillig 					 * right */
    231  1.8  rillig //indent end
    232  1.4  rillig 
    233  1.4  rillig 
    234  1.4  rillig /*
    235  1.4  rillig  * Try to confuse indent by having a string literal that has an embedded
    236  1.4  rillig  * INDENT comment.  Indent doesn't get confused though because it requires the
    237  1.4  rillig  * INDENT comment to go from the very beginning of the line to the very end of
    238  1.4  rillig  * the line.
    239  1.4  rillig  */
    240  1.8  rillig //indent input
    241  1.4  rillig const char *str = "\
    242  1.4  rillig /* INDENT OFF */\
    243  1.4  rillig "   ,   ch;
    244  1.8  rillig //indent end
    245  1.4  rillig 
    246  1.8  rillig //indent run
    247  1.4  rillig const char     *str = "\
    248  1.4  rillig /* INDENT OFF */\
    249  1.4  rillig ", ch;
    250  1.8  rillig //indent end
    251  1.4  rillig 
    252  1.4  rillig 
    253  1.4  rillig /*
    254  1.4  rillig  * The keywords in the INDENT comments must all be uppercase.
    255  1.4  rillig  */
    256  1.8  rillig //indent input
    257  1.4  rillig int   on   ;
    258  1.4  rillig /* indent off */
    259  1.4  rillig int   still_on   ;
    260  1.4  rillig /* INDENT off */
    261  1.4  rillig int   still_on   ;
    262  1.4  rillig /* indent OFF */
    263  1.4  rillig int   still_on   ;
    264  1.4  rillig /* INDENT OFF */
    265  1.4  rillig int   finally_off   ;
    266  1.8  rillig //indent end
    267  1.4  rillig 
    268  1.8  rillig //indent run -di0
    269  1.4  rillig int on;
    270  1.4  rillig /* indent off */
    271  1.4  rillig int still_on;
    272  1.4  rillig /* INDENT off */
    273  1.4  rillig int still_on;
    274  1.4  rillig /* indent OFF */
    275  1.4  rillig int still_on;
    276  1.4  rillig /* INDENT OFF */
    277  1.4  rillig int   finally_off   ;
    278  1.8  rillig //indent end
    279