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