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