Home | History | Annotate | Line # | Download | only in indent
indent_off_on.c revision 1.10
      1  1.10  rillig /* $NetBSD: indent_off_on.c,v 1.10 2023/05/14 17:53:38 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.10  rillig /* $ The extra comment got moved to a separate line, but indenting is still */
    227  1.10  rillig /* $ off because the 'INDENT OFF' comment was not in a line of its own. */
    228  1.10  rillig /* INDENT OFF */
    229  1.10  rillig /* extra comment */
    230   1.6  rillig void		indent_still_on(void);	/* due to the extra comment to the
    231   1.6  rillig 					 * right */
    232   1.8  rillig //indent end
    233   1.4  rillig 
    234   1.4  rillig 
    235   1.4  rillig /*
    236   1.4  rillig  * Try to confuse indent by having a string literal that has an embedded
    237   1.4  rillig  * INDENT comment.  Indent doesn't get confused though because it requires the
    238   1.4  rillig  * INDENT comment to go from the very beginning of the line to the very end of
    239   1.4  rillig  * the line.
    240   1.4  rillig  */
    241   1.8  rillig //indent input
    242   1.4  rillig const char *str = "\
    243   1.4  rillig /* INDENT OFF */\
    244   1.4  rillig "   ,   ch;
    245   1.8  rillig //indent end
    246   1.4  rillig 
    247   1.8  rillig //indent run
    248   1.4  rillig const char     *str = "\
    249   1.4  rillig /* INDENT OFF */\
    250   1.4  rillig ", ch;
    251   1.8  rillig //indent end
    252   1.4  rillig 
    253   1.4  rillig 
    254   1.4  rillig /*
    255   1.4  rillig  * The keywords in the INDENT comments must all be uppercase.
    256   1.4  rillig  */
    257   1.8  rillig //indent input
    258   1.4  rillig int   on   ;
    259   1.4  rillig /* indent off */
    260   1.4  rillig int   still_on   ;
    261   1.4  rillig /* INDENT off */
    262   1.4  rillig int   still_on   ;
    263   1.4  rillig /* indent OFF */
    264   1.4  rillig int   still_on   ;
    265   1.4  rillig /* INDENT OFF */
    266   1.4  rillig int   finally_off   ;
    267   1.8  rillig //indent end
    268   1.4  rillig 
    269   1.8  rillig //indent run -di0
    270   1.4  rillig int on;
    271   1.4  rillig /* indent off */
    272   1.4  rillig int still_on;
    273   1.4  rillig /* INDENT off */
    274   1.4  rillig int still_on;
    275   1.4  rillig /* indent OFF */
    276   1.4  rillig int still_on;
    277   1.4  rillig /* INDENT OFF */
    278   1.4  rillig int   finally_off   ;
    279   1.8  rillig //indent end
    280