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