neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

indent.txt (43639B)


      1 *indent.txt*    Nvim
      2 
      3 
      4 	  VIM REFERENCE MANUAL	  by Bram Moolenaar
      5 
      6 
      7 This file is about indenting C programs and other files.
      8 
      9                                      Type |gO| to see the table of contents.
     10 
     11 ==============================================================================
     12 1. Indenting C style programs				*C-indenting*
     13 
     14 The basics for C style indenting are explained in section |30.2| of the user
     15 manual.
     16 
     17 Vim has options for automatically indenting C style program files. Many
     18 programming languages including Java and C++ follow very closely the
     19 formatting conventions established with C.  These options affect only the
     20 indent and do not perform other formatting.  There are additional options that
     21 affect other kinds of formatting as well as indenting, see |format-comments|,
     22 |fo-table|, |gq| and |formatting| for the main ones.
     23 
     24 There are in fact four main methods available for indentation, each one
     25 overrides the previous if it is enabled, or non-empty for 'indentexpr':
     26 'autoindent'	uses the indent from the previous line.
     27 'smartindent'	is like 'autoindent' but also recognizes some C syntax to
     28 	increase/reduce the indent where appropriate.
     29 'cindent'	Works more cleverly than the other two and is configurable to
     30 	different indenting styles.
     31 'indentexpr'	The most flexible of all: Evaluates an expression to compute
     32 	the indent of a line.  When non-empty this method overrides
     33 	the other ones.  See |indent-expression|.
     34 The rest of this section describes the 'cindent' option.
     35 
     36 Note that 'cindent' indenting does not work for every code scenario.  Vim
     37 is not a C compiler: it does not recognize all syntax.  One requirement is
     38 that toplevel functions have a "{" in the first column.  Otherwise they are
     39 easily confused with declarations.
     40 
     41 These five options control C program indenting:
     42 'cindent'	Enables Vim to perform C program indenting automatically.
     43 'cinkeys'	Specifies which keys trigger reindenting in insert mode.
     44 'cinoptions'	Sets your preferred indent style.
     45 'cinwords'	Defines keywords that start an extra indent in the next line.
     46 'cinscopedecls'	Defines strings that are recognized as a C++ scope
     47 	declaration.
     48 
     49 If 'lisp' is not on and 'equalprg' is empty, the "=" operator indents using
     50 Vim's built-in algorithm rather than calling an external program.
     51 
     52 See |autocommand| for how to set the 'cindent' option automatically for C code
     53 files and reset it for others.
     54 
     55 				*cinkeys-format* *indentkeys-format*
     56 The 'cinkeys' option is a string that controls Vim's indenting in response to
     57 typing certain characters or commands in certain contexts.  Note that this not
     58 only triggers C-indenting.  When 'indentexpr' is not empty 'indentkeys' is
     59 used instead.  The format of 'cinkeys' and 'indentkeys' is equal.
     60 
     61 The default is "0{,0},0),0],:,0#,!^F,o,O,e" which specifies that indenting
     62 occurs as follows:
     63 
     64 "0{"	if you type "{" as the first character in a line
     65 "0}"	if you type "}" as the first character in a line
     66 "0)"	if you type ")" as the first character in a line
     67 "0]"	if you type "]" as the first character in a line
     68 ":"	if you type ":" after a label or case statement
     69 "0#"	if you type "#" as the first character in a line
     70 "!^F"	if you type CTRL-F (which is not inserted)
     71 "o"	if you type a <CR> anywhere or use the "o" command (not in
     72 	insert mode!)
     73 "O"	if you use the "O" command (not in insert mode!)
     74 "e"	if you type the second 'e' for an "else" at the start of a
     75 	line
     76 
     77 Characters that can precede each key:				*i_CTRL-F*
     78 !	When a "!" precedes the key, Vim will not insert the key but will
     79 instead reindent the current line.  This allows you to define a
     80 command key for reindenting the current line.  CTRL-F is the default
     81 key for this.  Be careful if you define CTRL-I for this because CTRL-I
     82 is the ASCII code for <Tab>.
     83 *	When a "*" precedes the key, Vim will reindent the line before
     84 inserting the key.  If 'cinkeys' contains "*<Return>", Vim reindents
     85 the current line before opening a new line.
     86 0	When a zero precedes the key (but appears after "!" or "*") Vim will
     87 reindent the line only if the key is the first character you type in
     88 the line.  When used before "=" Vim will only reindent the line if
     89 there is only white space before the word.
     90 
     91 When neither "!" nor "*" precedes the key, Vim reindents the line after you
     92 type the key.  So ";" sets the indentation of a line which includes the ";".
     93 
     94 Special key names:
     95 <>	Angle brackets mean spelled-out names of keys.  For example: "<Up>",
     96 "<Ins>" (see |key-notation|).
     97 ^	Letters preceded by a caret (^) are control characters.  For example:
     98 "^F" is CTRL-F.
     99 o	Reindent a line when you use the "o" command or when Vim opens a new
    100 line below the current one (e.g., when you type <Enter> in insert
    101 mode).
    102 O	Reindent a line when you use the "O" command.
    103 e	Reindent a line that starts with "else" when you type the second 'e'.
    104 :	Reindent a line when a ':' is typed which is after a label or case
    105 statement.  Don't reindent for a ":" in "class::method" for C++.  To
    106 Reindent for any ":", use "<:>".
    107 =word	Reindent when typing the last character of "word".  "word" may
    108 actually be part of another word.  Thus "=end" would cause reindenting
    109 when typing the "d" in "endif" or "endwhile".  But not when typing
    110 "bend".  Also reindent when completion produces a word that starts
    111 with "word".  "0=word" reindents when there is only white space before
    112 the word.
    113 =~word	Like =word, but ignore case.
    114 
    115 If you really want to reindent when you type 'o', 'O', 'e', '0', '<', '>',
    116 "*", ':' or '!', use "<o>", "<O>", "<e>", "<0>", "<<>", "<>>", "<*>", "<:>" or
    117 "<!>", respectively, for those keys.
    118 
    119 For an emacs-style indent mode where lines aren't indented every time you
    120 press <Enter> but only if you press <Tab>, I suggest: >
    121 :set cinkeys=0{,0},:,0#,!<Tab>,!^F
    122 You might also want to switch off 'autoindent' then.
    123 
    124 Note: If you change the current line's indentation manually, Vim ignores the
    125 cindent settings for that line.  This prevents vim from reindenting after you
    126 have changed the indent by typing <BS>, <Tab>, or <Space> in the indent or
    127 used CTRL-T or CTRL-D.
    128 
    129 					*cinoptions-values*
    130 The 'cinoptions' option sets how Vim performs indentation.  The value after
    131 the option character can be one of these (N is any number):
    132 N	indent N spaces
    133 -N	indent N spaces to the left
    134 Ns	N times 'shiftwidth' spaces
    135 -Ns	N times 'shiftwidth' spaces to the left
    136 
    137 In the list below,
    138 "N" represents a number of your choice (the number can be negative).  When
    139 there is an 's' after the number, Vim multiplies the number by 'shiftwidth':
    140 "1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc.  You can use a
    141 decimal point, too: "-0.5s" is minus half a 'shiftwidth'.
    142 The examples below assume a 'shiftwidth' of 4.
    143 						*cino->*
    144 >N    Amount added for "normal" indent.  Used after a line that should
    145       increase the indent (lines starting with "if", an opening brace,
    146       etc.).  (default 'shiftwidth').
    147 
    148 	cino=		    cino=>2		cino=>2s >
    149 	  if (cond)	      if (cond)		  if (cond)
    150 	  {		      {			  {
    151 	      foo;		foo;			  foo;
    152 	  }		      }			  }
    153 <
    154 						*cino-e*
    155 eN    Add N to the prevailing indent inside a set of braces if the
    156       opening brace at the End of the line (more precise: is not the
    157       first character in a line).  This is useful if you want a
    158       different indent when the "{" is at the start of the line from
    159       when "{" is at the end of the line.  (default 0).
    160 
    161 	cino=		    cino=e2		cino=e-2 >
    162 	  if (cond) {	      if (cond) {	  if (cond) {
    163 	      foo;		    foo;	    foo;
    164 	  }		      }			  }
    165 	  else		      else		  else
    166 	  {		      {			  {
    167 	      bar;		  bar;		      bar;
    168 	  }		      }			  }
    169 <
    170 						*cino-n*
    171 nN    Add N to the prevailing indent for a statement after an "if",
    172       "while", etc., if it is NOT inside a set of braces.  This is
    173       useful if you want a different indent when there is no "{"
    174       before the statement from when there is a "{" before it.
    175       (default 0).
    176 
    177 	cino=		    cino=n2		cino=n-2 >
    178 	  if (cond)	      if (cond)		  if (cond)
    179 	      foo;		    foo;	    foo;
    180 	  else		      else		  else
    181 	  {		      {			  {
    182 	      bar;		  bar;		      bar;
    183 	  }		      }			  }
    184 <
    185 						*cino-f*
    186 fN    Place the first opening brace of a function or other block in
    187       column N.  This applies only for an opening brace that is not
    188       inside other braces and is at the start of the line.  What comes
    189       after the brace is put relative to this brace.  (default 0).
    190 
    191 	cino=		    cino=f.5s		cino=f1s >
    192 	  func()	      func()		  func()
    193 	  {			{		      {
    194 	      int foo;		    int foo;		  int foo;
    195 <
    196 						*cino-{*
    197 `{N`    Place opening braces N characters from the prevailing indent.
    198       This applies only for opening braces that are inside other
    199       braces.  (default 0).
    200 
    201 	cino=		    cino={.5s		cino={1s >
    202 	  if (cond)	      if (cond)		  if (cond)
    203 	  {			{		      {
    204 	      foo;		  foo;		      foo;
    205 <
    206 						*cino-}*
    207 `}N`    Place closing braces N characters from the matching opening
    208       brace.  (default 0).
    209 
    210 	cino=		    cino={2,}-0.5s	cino=}2 >
    211 	  if (cond)	      if (cond)		  if (cond)
    212 	  {			{		  {
    213 	      foo;		  foo;		      foo;
    214 	  }		      }			    }
    215 <
    216 						*cino-^*
    217 ^N    Add N to the prevailing indent inside a set of braces if the
    218       opening brace is in column 0.  This can specify a different
    219       indent for whole of a function (some may like to set it to a
    220       negative number).  (default 0).
    221 
    222 	cino=		    cino=^-2		cino=^-s >
    223 	  func()	      func()		  func()
    224 	  {		      {			  {
    225 	      if (cond)		if (cond)	  if (cond)
    226 	      {			{		  {
    227 		  a = b;	    a = b;	      a = b;
    228 	      }			}		  }
    229 	  }		      }			  }
    230 <
    231 						*cino-L*
    232 LN    Controls placement of jump labels.  If N is negative, the label
    233       will be placed at column 1.  If N is non-negative, the indent of
    234       the label will be the prevailing indent minus N.  (default -1).
    235 
    236 	cino=               cino=L2             cino=Ls >
    237 	  func()              func()              func()
    238 	  {                   {                   {
    239 	      {                   {                   {
    240 	          stmt;               stmt;               stmt;
    241 	  LABEL:                    LABEL:            LABEL:
    242 	      }                   }                   }
    243 	  }                   }                   }
    244 <
    245 						*cino-:*
    246 :N    Place case labels N characters from the indent of the switch().
    247       (default 'shiftwidth').
    248 
    249 	cino=		    cino=:0 >
    250 	  switch (x)	      switch(x)
    251 	  {		      {
    252 	      case 1:	      case 1:
    253 		  a = b;	  a = b;
    254 	      default:	      default:
    255 	  }		      }
    256 <
    257 						*cino-=*
    258 =N    Place statements occurring after a case label N characters from
    259       the indent of the label.  (default 'shiftwidth').
    260 
    261 	cino=		    cino==10 >
    262 	   case 11:		case 11:  a = a + 1;
    263 	       a = a + 1;		  b = b + 1;
    264 <
    265 						*cino-l*
    266 lN    If N != 0 Vim will align with a case label instead of the
    267       statement after it in the same line.
    268 
    269 	cino=			    cino=l1 >
    270 	    switch (a) {	      switch (a) {
    271 		case 1: {		  case 1: {
    272 			    break;	      break;
    273 			}		  }
    274 <
    275 						*cino-b*
    276 bN    If N != 0 Vim will align a final "break" with the case label,
    277       so that case..break looks like a sort of block.  (default: 0).
    278       When using 1, consider adding "0=break" to 'cinkeys'.
    279 
    280 	cino=		    cino=b1 >
    281 	  switch (x)	      switch(x)
    282 	  {		      {
    283 	      case 1:		  case 1:
    284 		  a = b;	      a = b;
    285 		  break;	  break;
    286 
    287 	      default:		  default:
    288 		  a = 0;	      a = 0;
    289 		  break;	  break;
    290 	  }		      }
    291 <
    292 						*cino-g*
    293 gN    Place C++ scope declarations N characters from the indent of the
    294       block they are in.  (default 'shiftwidth').  By default, a scope
    295       declaration is "public:", "protected:" or "private:".  This can
    296       be adjusted with the 'cinscopedecls' option.
    297 
    298 	cino=		    cino=g0 >
    299 	  {		      {
    300 	      public:	      public:
    301 		  a = b;	  a = b;
    302 	      private:	      private:
    303 	  }		      }
    304 <
    305 						*cino-h*
    306 hN    Place statements occurring after a C++ scope declaration N
    307       characters from the indent of the label.  (default
    308       'shiftwidth').
    309 
    310 	cino=		    cino=h10 >
    311 	   public:		public:   a = a + 1;
    312 	       a = a + 1;		  b = b + 1;
    313 <
    314 						*cino-N*
    315 NN    Indent inside C++ namespace N characters extra compared to a
    316       normal block.  (default 0).
    317 
    318 	cino=			   cino=N-s >
    319 	  namespace {                namespace {
    320 	      void function();       void function();
    321 	  }                          }
    322 
    323 	  namespace my               namespace my
    324 	  {                          {
    325 	      void function();       void function();
    326 	  }                          }
    327 <
    328 						*cino-E*
    329 EN    Indent inside C++ linkage specifications (extern "C" or
    330       extern "C++") N characters extra compared to a normal block.
    331       (default 0).
    332 
    333 	cino=			   cino=E-s >
    334 	  extern "C" {               extern "C" {
    335 	      void function();       void function();
    336 	  }                          }
    337 
    338 	  extern "C"                 extern "C"
    339 	  {                          {
    340 	      void function();       void function();
    341 	  }                          }
    342 <
    343 						*cino-p*
    344 pN    Parameter declarations for K&R-style function declarations will
    345       be indented N characters from the margin.  (default
    346       'shiftwidth').
    347 
    348 	cino=		    cino=p0		cino=p2s >
    349 	  func(a, b)	      func(a, b)	  func(a, b)
    350 	      int a;	      int a;			  int a;
    351 	      char b;	      char b;			  char b;
    352 <
    353 						*cino-t*
    354 tN    Indent a function return type declaration N characters from the
    355       margin.  (default 'shiftwidth').
    356 
    357 	cino=		    cino=t0		cino=t7 >
    358 	      int	      int			 int
    359 	  func()	      func()		  func()
    360 <
    361 						*cino-i*
    362 iN    Indent C++ base class declarations and constructor
    363       initializations, if they start in a new line (otherwise they
    364       are aligned at the right side of the ':').
    365       (default 'shiftwidth').
    366 
    367 	cino=			  cino=i0 >
    368 	  class MyClass :	    class MyClass :
    369 	      public BaseClass      public BaseClass
    370 	  {}			    {}
    371 	  MyClass::MyClass() :	    MyClass::MyClass() :
    372 	      BaseClass(3)	    BaseClass(3)
    373 	  {}			    {}
    374 <
    375 						*cino-+*
    376 +N    Indent a continuation line (a line that spills onto the next)
    377              inside a function N additional characters.  (default
    378              'shiftwidth').
    379              Outside of a function, when the previous line ended in a
    380              backslash, the 2 * N is used.
    381 
    382 	cino=			  cino=+10 >
    383 	  a = b + 9 *		    a = b + 9 *
    384 	      c;			      c;
    385 <
    386 						*cino-c*
    387 cN    Indent comment lines after the comment opener, when there is no
    388       other text with which to align, N characters from the comment
    389       opener.  (default 3).  See also |format-comments|.
    390 
    391 	cino=			  cino=c5 >
    392 	  /*			    /*
    393 	     text.			 text.
    394 	   */			     */
    395 <
    396 						*cino-C*
    397 CN    When N is non-zero, indent comment lines by the amount specified
    398       with the c flag above even if there is other text behind the
    399       comment opener.  (default 0).
    400 
    401 	cino=c0			  cino=c0,C1 >
    402 	  /********		    /********
    403 	    text.		    text.
    404 	  ********/		    ********/
    405 <	      (Example uses ":set comments& comments-=s1:/* comments^=s0:/*")
    406 
    407 						*cino-/*
    408 /N    Indent comment lines N characters extra.  (default 0).
    409 	cino=			  cino=/4 >
    410 	  a = b;		    a = b;
    411 	  /* comment */			/* comment */
    412 	  c = d;		    c = d;
    413 <
    414 						*cino-(*
    415 (N    When in unclosed parentheses, indent N characters from the line
    416       with the unclosed parenthesis.  Add a 'shiftwidth' for every
    417       extra unclosed parentheses.  When N is 0 or the unclosed
    418       parenthesis is the first non-white character in its line, line
    419       up with the next non-white character after the unclosed
    420       parenthesis.  (default 'shiftwidth' * 2).
    421 
    422 	cino=			  cino=(0 >
    423 	  if (c1 && (c2 ||	    if (c1 && (c2 ||
    424 		      c3))		       c3))
    425 	      foo;			foo;
    426 	  if (c1 &&		    if (c1 &&
    427 		  (c2 || c3))		(c2 || c3))
    428 	     {			       {
    429 <
    430 						*cino-u*
    431 uN    Same as (N, but for one nesting level deeper.
    432       (default 'shiftwidth').
    433 
    434 	cino=			  cino=u2 >
    435 	  if (c123456789	    if (c123456789
    436 		  && (c22345		    && (c22345
    437 		      || c3))		      || c3))
    438 <
    439 						*cino-U*
    440 UN    When N is non-zero, do not ignore the indenting specified by
    441       ( or u in case that the unclosed parenthesis is the first
    442       non-white character in its line.  (default 0).
    443 
    444 	cino= or cino=(s	  cino=(s,U1 >
    445 	  c = c1 &&		    c = c1 &&
    446 	      (				(
    447 	       c2 ||			    c2 ||
    448 	       c3			    c3
    449 	      ) && c4;			) && c4;
    450 <
    451 						*cino-w*
    452 wN    When in unclosed parentheses and N is non-zero and either
    453       using "(0" or "u0", respectively, or using "U0" and the unclosed
    454       parenthesis is the first non-white character in its line, line
    455       up with the character immediately after the unclosed parenthesis
    456       rather than the first non-white character.  (default 0).
    457 
    458 	cino=(0			  cino=(0,w1 >
    459 	  if (   c1		    if (   c1
    460 		 && (   c2		&& (   c2
    461 			|| c3))		    || c3))
    462 	      foo;			foo;
    463 <
    464 						*cino-W*
    465 WN    When in unclosed parentheses and N is non-zero and either
    466       using "(0" or "u0", respectively and the unclosed parenthesis is
    467       the last non-white character in its line and it is not the
    468       closing parenthesis, indent the following line N characters
    469       relative to the outer context (i.e. start of the line or the
    470       next unclosed parenthesis).  (default: 0).
    471 
    472 	cino=(0			   cino=(0,W4 >
    473 	  a_long_line(		    a_long_line(
    474 		      argument,		argument,
    475 		      argument);	argument);
    476 	  a_short_line(argument,    a_short_line(argument,
    477 		       argument);		 argument);
    478 <
    479 						*cino-k*
    480 kN    When in unclosed parentheses which follow "if", "for" or
    481       "while" and N is non-zero, overrides the behaviour defined by
    482       "(N": causes the indent to be N characters relative to the outer
    483       context (i.e. the line where "if", "for" or "while" is).  Has
    484       no effect on deeper levels of nesting.  Affects flags like "wN"
    485       only for the "if", "for" and "while" conditions.  If 0, defaults
    486       to behaviour defined by the "(N" flag.  (default: 0).
    487 
    488 	cino=(0			   cino=(0,ks >
    489 	  if (condition1	    if (condition1
    490 	      && condition2)		    && condition2)
    491 	      action();			action();
    492 	  function(argument1	    function(argument1
    493 		   && argument2);	     && argument2);
    494 <
    495 						*cino-m*
    496 mN    When N is non-zero, line up a line starting with a closing
    497       parenthesis with the first character of the line with the
    498       matching opening parenthesis.  (default 0).
    499 
    500 	cino=(s			  cino=(s,m1 >
    501 	  c = c1 && (		    c = c1 && (
    502 	      c2 ||			c2 ||
    503 	      c3			c3
    504 	      ) && c4;		    ) && c4;
    505 	  if (			    if (
    506 	      c1 && c2			c1 && c2
    507 	     )			    )
    508 	      foo;			foo;
    509 <
    510 						*cino-M*
    511 MN    When N is non-zero, line up a line starting with a closing
    512       parenthesis with the first character of the previous line.
    513       (default 0).
    514 
    515 	cino=			  cino=M1 >
    516 	  if (cond1 &&		    if (cond1 &&
    517 		 cond2			   cond2
    518 	     )				   )
    519 <
    520 			*java-cinoptions* *java-indenting* *cino-j*
    521 jN    Indent Java anonymous classes correctly.  Also works well for
    522       Javascript.  The value 'N' is currently unused but must be
    523       non-zero (e.g. 'j1').  'j1' will indent for example the
    524       following code snippet correctly: >
    525 
    526 	object.add(new ChangeListener() {
    527 	    public void stateChanged(ChangeEvent e) {
    528 		do_something();
    529 	    }
    530 	});
    531 <
    532 		*javascript-cinoptions* *javascript-indenting* *cino-J*
    533 JN    Indent JavaScript object declarations correctly by not confusing
    534       them with labels.  The value 'N' is currently unused but must be
    535       non-zero (e.g. 'J1').  If you enable this you probably also want
    536       to set |cino-j|. >
    537 
    538 	var bar = {
    539 	    foo: {
    540 		that: this,
    541 		some: ok,
    542 	    },
    543 	    "bar":{
    544 		a : 2,
    545 		b: "123abc",
    546 		x: 4,
    547 		"y": 5
    548 	    }
    549 	}
    550 <
    551 							*cino-)*
    552 )N    Vim searches for unclosed parentheses at most N lines away.
    553       This limits the time needed to search for parentheses.  (default
    554       20 lines).
    555 
    556 							*cino-star*
    557 `*N`    Vim searches for unclosed comments at most N lines away.  This
    558       limits the time needed to search for the start of a comment.
    559       If your `/* */` comments stop indenting after N lines this is the
    560       value you will want to change.
    561       (default 70 lines).
    562 
    563 							*cino-#*
    564 #N    When N is non-zero recognize shell/Perl comments starting with
    565       '#', do not recognize preprocessor lines; allow right-shifting
    566       lines that start with "#".
    567       When N is zero (default): don't recognize '#' comments, do
    568       recognize preprocessor lines; right-shifting lines that start
    569       with "#" does not work.
    570 
    571 							*cino-P*
    572 PN    When N is non-zero recognize C pragmas, and indent them like any
    573       other code; does not concern other preprocessor directives.
    574       When N is zero (default): don't recognize C pragmas, treating
    575       them like every other preprocessor directive.
    576 
    577 
    578 The defaults, spelled out in full, are: >
    579 cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,E0,ps,ts,is,+s,
    580 		c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0,P0
    581 
    582 Vim puts a line in column 1 if:
    583 - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#0'.
    584 - It starts with a label (a keyword followed by ':', other than "case" and
    585  "default") and 'cinoptions' does not contain an 'L' entry with a positive
    586  value.
    587 - Any combination of indentations causes the line to have less than 0
    588  indentation.
    589 
    590 ==============================================================================
    591 2. Indenting by expression				*indent-expression*
    592 
    593 The basics for using flexible indenting are explained in section |30.3| of the
    594 user manual.
    595 
    596 If you want to write your own indent file, it must set the 'indentexpr'
    597 option.  Setting the 'indentkeys' option is often useful.
    598 See the $VIMRUNTIME/indent/README.txt file for hints.
    599 See the $VIMRUNTIME/indent directory for examples.
    600 
    601 
    602 REMARKS ABOUT SPECIFIC INDENT FILES ~
    603 
    604 
    605 CLOJURE					*ft-clojure-indent* *clojure-indent*
    606 
    607 Clojure indentation differs somewhat from traditional Lisps, due in part to
    608 the use of square and curly brackets, and otherwise by community convention.
    609 These conventions are not universally followed, so the Clojure indent script
    610 offers a few configuration options.
    611 
    612 
    613 						*g:clojure_maxlines*
    614 
    615 Sets maximum scan distance of `searchpairpos()`.  Larger values trade
    616 performance for correctness when dealing with very long forms.  A value of
    617 0 will scan without limits.  The default is 300.
    618 
    619 
    620 					*g:clojure_fuzzy_indent*
    621 				*g:clojure_fuzzy_indent_patterns*
    622 				*g:clojure_fuzzy_indent_blacklist*
    623 
    624 The 'lispwords' option is a list of comma-separated words that mark special
    625 forms whose subforms should be indented with two spaces.
    626 
    627 For example:
    628 >
    629 (defn bad []
    630       "Incorrect indentation")
    631 
    632 (defn good []
    633   "Correct indentation")
    634 <
    635 If you would like to specify 'lispwords' with a |pattern| instead, you can use
    636 the fuzzy indent feature:
    637 >
    638 " Default
    639 let g:clojure_fuzzy_indent = 1
    640 let g:clojure_fuzzy_indent_patterns = ['^with', '^def', '^let']
    641 let g:clojure_fuzzy_indent_blacklist =
    642 	\ ['-fn$', '\v^with-%(meta|out-str|loading-context)$']
    643 <
    644 |g:clojure_fuzzy_indent_patterns| and |g:clojure_fuzzy_indent_blacklist| are
    645 lists of patterns that will be matched against the unqualified symbol at the
    646 head of a list.  This means that a pattern like `"^foo"` will match all these
    647 candidates: `foobar`, `my.ns/foobar`, and `#'foobar`.
    648 
    649 Each candidate word is tested for special treatment in this order:
    650 
    651 1. Return true if word is literally in 'lispwords'
    652 2. Return false if word matches a pattern in
    653    |g:clojure_fuzzy_indent_blacklist|
    654 3. Return true if word matches a pattern in
    655    |g:clojure_fuzzy_indent_patterns|
    656 4. Return false and indent normally otherwise
    657 
    658 
    659 				*g:clojure_special_indent_words*
    660 
    661 Some forms in Clojure are indented such that every subform is indented by only
    662 two spaces, regardless of 'lispwords'.  If you have a custom construct that
    663 should be indented in this idiosyncratic fashion, you can add your symbols to
    664 the default list below.
    665 >
    666 " Default
    667 let g:clojure_special_indent_words =
    668    \ 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn'
    669 <
    670 
    671 				*g:clojure_align_multiline_strings*
    672 
    673 Align subsequent lines in multi-line strings to the column after the opening
    674 quote, instead of the same column.
    675 
    676 For example:
    677 >
    678 (def default
    679   "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
    680   eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
    681   enim ad minim veniam, quis nostrud exercitation ullamco laboris
    682   nisi ut aliquip ex ea commodo consequat.")
    683 
    684 (def aligned
    685   "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
    686    eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
    687    enim ad minim veniam, quis nostrud exercitation ullamco laboris
    688    nisi ut aliquip ex ea commodo consequat.")
    689 <
    690 
    691 					*g:clojure_align_subforms*
    692 
    693 By default, parenthesized compound forms that look like function calls and
    694 whose head subform is on its own line have subsequent subforms indented by
    695 two spaces relative to the opening paren:
    696 >
    697 (foo
    698   bar
    699   baz)
    700 <
    701 Setting this option to `1` changes this behaviour so that all subforms are
    702 aligned to the same column, emulating the default behaviour of
    703 clojure-mode.el:
    704 >
    705 (foo
    706  bar
    707  baz)
    708 <
    709 
    710 FORTRAN							*ft-fortran-indent*
    711 
    712 Block if, select case, select type, select rank,  where, forall, type,
    713 interface, associate, block, enum, critical, and change team constructs are
    714 indented.  The indenting of subroutines, functions, modules, and program
    715 blocks is optional.  Comments, labeled statements, and continuation lines are
    716 indented in free source form, whereas they are not indented in fixed source
    717 form because of the left margin requirements.  Hence manual indent corrections
    718 will be necessary for labeled statements and continuation lines when fixed
    719 source form is being used.  For further discussion of the method used for the
    720 detection of source format see |ft-fortran-syntax|.
    721 
    722 Do loops ~
    723 All do loops are left unindented by default.  Do loops can be unstructured in
    724 Fortran with (possibly multiple) loops ending on a labeled executable
    725 statement of almost arbitrary type.  Correct indentation requires
    726 compiler-quality parsing.  Old code with do loops ending on labeled statements
    727 of arbitrary type can be indented with elaborate programs such as Tidy.
    728 Structured do/continue loops are also left unindented because continue
    729 statements are used for purposes other than ending a do loop.  Programs such
    730 as Tidy can convert structured do/continue loops to the do/enddo form.  Do
    731 loops of the do/enddo variety can be indented.  If you use only structured
    732 loops of the do/enddo form, you should declare this by setting the
    733 fortran_do_enddo variable in your vimrc as follows >
    734 
    735   let fortran_do_enddo=1
    736 
    737 in which case do loops will be indented.  If all your loops are of do/enddo
    738 type only in, say, .f90 files, then you should set a buffer flag with an
    739 autocommand such as >
    740 
    741  au! BufRead,BufNewFile *.f90 let b:fortran_do_enddo=1
    742 
    743 to get do loops indented in .f90 files and left alone in Fortran files with
    744 other extensions such as .for.
    745 
    746 Program units ~
    747 Indenting of program units (subroutines, functions, modules, and program
    748 blocks) can be increased by setting the variable fortran_indent_more and can
    749 be decreased by setting the variable fortran_indent_less.  These variables
    750 can be set for all fortran files in your vimrc as follows >
    751 
    752  let fortran_indent_less=1
    753 
    754 A finer level of control can be achieved by setting the corresponding
    755 buffer-local variable as follows >
    756 
    757  let b:fortran_indent_less=1
    758 
    759 
    760 HTML				*ft-html-indent* *html-indent* *html-indenting*
    761 
    762 This is about variables you can set in your vimrc to customize HTML indenting.
    763 
    764 You can set the indent for the first line after <script> and <style>
    765 "blocktags" (default "zero"): >
    766 
    767      :let g:html_indent_script1 = "inc"
    768      :let g:html_indent_style1 = "inc"
    769 <
    770      VALUE	MEANING ~
    771      "zero"	zero indent
    772      "auto"	auto indent (same indent as the blocktag)
    773      "inc"	auto indent + one indent step
    774 
    775 You can set the indent for attributes after an open <tag line: >
    776 
    777      :let g:html_indent_attribute = 1
    778 <
    779      VALUE	MEANING ~
    780      1		auto indent, one indent step more than <tag
    781      2		auto indent, two indent steps (default)
    782      > 2	auto indent, more indent steps
    783 
    784 Many tags increase the indent for what follows per default (see "Add Indent
    785 Tags" in the script).  You can add further tags with: >
    786 
    787      :let g:html_indent_inctags = "html,body,head,tbody"
    788 
    789 You can also remove such tags with: >
    790 
    791      :let g:html_indent_autotags = "th,td,tr,tfoot,thead"
    792 
    793 Default value is empty for both variables.  Note: the initial "inctags" are
    794 only defined once per Vim session.
    795 
    796 User variables are only read when the script is sourced.  To enable your
    797 changes during a session, without reloading the HTML file, you can manually
    798 do: >
    799 
    800      :call HtmlIndent_CheckUserSettings()
    801 
    802 Detail:
    803  Calculation of indent inside "blocktags" with "alien" content:
    804      BLOCKTAG   INDENT EXPR	    WHEN APPLICABLE ~
    805      <script> : {customizable}	    if first line of block
    806        : cindent(v:lnum)    if attributes empty or contain "java"
    807        : -1		    else (vbscript, tcl, ...)
    808      <style>  : {customizable}	    if first line of block
    809        : GetCSSIndent()	    else
    810      <!-- --> : -1
    811 
    812 IDRIS2							*ft-idris2-indent*
    813 
    814 Idris 2 indentation can be configured with several variables that control the
    815 indentation level for different language constructs:
    816 
    817 The "g:idris2_indent_if" variable controls the indentation of `then` and `else`
    818 blocks after `if` statements.  Defaults to 3.
    819 
    820 The "g:idris2_indent_case" variable controls the indentation of patterns in
    821 `case` expressions.  Defaults to 5.
    822 
    823 The "g:idris2_indent_let" variable controls the indentation after `let`
    824 bindings.  Defaults to 4.
    825 
    826 The "g:idris2_indent_rewrite" variable controls the indentation after `rewrite`
    827 expressions.  Defaults to 8.
    828 
    829 The "g:idris2_indent_where" variable controls the indentation of `where`
    830 blocks.  Defaults to 6.
    831 
    832 The "g:idris2_indent_do" variable controls the indentation in `do` blocks.
    833 Defaults to 3.
    834 
    835 Example configuration: >
    836 
    837 let g:idris2_indent_if = 2
    838 let g:idris2_indent_case = 4
    839 let g:idris2_indent_let = 4
    840 let g:idris2_indent_rewrite = 8
    841 let g:idris2_indent_where = 6
    842 let g:idris2_indent_do = 3
    843 <
    844 
    845 MATLAB			*ft-matlab-indent* *matlab-indent* *matlab-indenting*
    846 
    847 The setting Function indenting format in MATLAB Editor/Debugger Language
    848 Preferences corresponds to: >
    849    :let g:MATLAB_function_indent = {0, 1 or 2 (default)}
    850 
    851 Where 0 is for Classic, 1 for Indent nested functions and 2 for Indent all
    852 functions.
    853 
    854 
    855 PHP				*ft-php-indent* *php-indent* *php-indenting*
    856 
    857 NOTE:	PHP files will be indented correctly only if PHP |syntax| is active.
    858 
    859 If you are editing a file in Unix 'fileformat' and '\r' characters are present
    860 before new lines, indentation won't proceed correctly ; you have to remove
    861 those useless characters first with a command like: >
    862 
    863    :%s /\r$//g
    864 
    865 Or, you can simply |:let| the variable PHP_removeCRwhenUnix to 1 and the
    866 script will silently remove them when Vim loads a PHP file (at each |BufRead|).
    867 
    868 OPTIONS: ~
    869 
    870 PHP indenting can be altered in several ways by modifying the values of some
    871 global variables:
    872 
    873 				*php-comment* *PHP_autoformatcomment*
    874 To not enable auto-formatting of comments by default (if you want to use your
    875 own 'formatoptions'): >
    876    :let g:PHP_autoformatcomment = 0
    877 
    878 Else, 't' will be removed from the 'formatoptions' string and "qrowcb" will be
    879 added, see |fo-table| for more information.
    880 
    881 
    882 						*PHP_outdentSLComments*
    883 To add extra indentation to single-line comments: >
    884    :let g:PHP_outdentSLComments = N
    885 
    886 With N being the number of 'shiftwidth' to add.
    887 
    888 Only single-line comments will be affected such as: >
    889    # Comment
    890    // Comment
    891    /* Comment */
    892 <
    893 
    894 						*PHP_default_indenting*
    895 To add extra indentation to every PHP lines with N being the number of
    896 'shiftwidth' to add: >
    897    :let g:PHP_default_indenting = N
    898 
    899 For example, with N = 1, this will give:
    900 >
    901    <?php
    902 if (!isset($History_lst_sel))
    903     if (!isset($History_lst_sel))
    904 	if (!isset($History_lst_sel)) {
    905 	    $History_lst_sel=0;
    906 	} else
    907 	    $foo="bar";
    908 
    909 $command_hist = TRUE;
    910    ?>
    911 (Notice the extra indentation between the PHP container markers and the code)
    912 
    913 						*PHP_outdentphpescape*
    914 To indent PHP escape tags as the surrounding non-PHP code (only affects the
    915 PHP escape tags): >
    916    :let g:PHP_outdentphpescape = 0
    917 <
    918 
    919 						*PHP_removeCRwhenUnix*
    920 To automatically remove '\r' characters when the 'fileformat' is set to Unix: >
    921    :let g:PHP_removeCRwhenUnix = 1
    922 <
    923 
    924 						*PHP_BracesAtCodeLevel*
    925 To indent braces at the same level than the code they contain: >
    926    :let g:PHP_BracesAtCodeLevel = 1
    927 
    928 This will give the following result: >
    929    if ($foo)
    930 {
    931 foo();
    932 }
    933 Instead of: >
    934    if ($foo)
    935    {
    936 foo();
    937    }
    938 
    939 NOTE:	Indenting will be a bit slower if this option is used because some
    940 optimizations won't be available.
    941 
    942 				*PHP_vintage_case_default_indent*
    943 To indent 'case:' and 'default:' statements in switch() blocks: >
    944    :let g:PHP_vintage_case_default_indent = 1
    945 
    946 In PHP braces are not required inside 'case/default' blocks therefore 'case:'
    947 and 'default:' are indented at the same level than the 'switch()' to avoid
    948 meaningless indentation.  You can use the above option to return to the
    949 traditional way.
    950 
    951 						*PHP_noArrowMatching*
    952 By default the indent script will indent multi-line chained calls by matching
    953 the position of the '->': >
    954 
    955    $user_name_very_long->name()
    956                        ->age()
    957                        ->info();
    958 <
    959 You can revert to the classic way of indenting by setting this option to 1: >
    960    :let g:PHP_noArrowMatching = 1
    961 <
    962 You will obtain the following result: >
    963 
    964    $user_name_very_long->name()
    965        ->age()
    966        ->info();
    967 <
    968 
    969 				*PHP_IndentFunctionCallParameters*
    970 Extra indentation levels to add to parameters in multi-line function calls. >
    971    let g:PHP_IndentFunctionCallParameters = 1
    972 
    973 Function call arguments will indent 1 extra level.  For two-space indentation: >
    974 
    975    function call_the_thing(
    976      $with_this,
    977      $and_that
    978    ) {
    979      $this->do_the_thing(
    980          $with_this,
    981          $and_that
    982      );
    983    }
    984 <
    985 
    986 			*PHP_IndentFunctionDeclarationParameters*
    987 Extra indentation levels to add to arguments in multi-line function
    988 definitions. >
    989    let g:PHP_IndentFunctionDeclarationParameters = 1
    990 <
    991 Function arguments in declarations will indent 1 extra level.  For two-space
    992 indentation: >
    993 
    994    function call_the_thing(
    995        $with_this,
    996        $and_that
    997    ) {
    998      $this->do_the_thing(
    999        $with_this,
   1000        $and_that
   1001      );
   1002    }
   1003 <
   1004 
   1005 PYTHON							*ft-python-indent*
   1006 
   1007 The amount of indent can be set with the `g:python_indent` |Dictionary|, which
   1008 needs to be created before adding the items: >
   1009 let g:python_indent = {}
   1010 The examples given are the defaults.  Note that the dictionary values are set
   1011 to an expression, so that you can change the value of 'shiftwidth' later
   1012 without having to update these values.
   1013 
   1014 Indent after an open paren: >
   1015 let g:python_indent.open_paren = 'shiftwidth() * 2'
   1016 Indent after a nested paren: >
   1017 let g:python_indent.nested_paren = 'shiftwidth()'
   1018 Indent for a continuation line: >
   1019 let g:python_indent.continue = 'shiftwidth() * 2'
   1020 
   1021 By default, the closing paren on a multiline construct lines up under the
   1022 first non-whitespace character of the previous line.
   1023 If you prefer that it's lined up under the first character of the line that
   1024 starts the multiline construct, reset this key: >
   1025 let g:python_indent.closed_paren_align_last_line = v:false
   1026 
   1027 The method uses |searchpair()| to look back for unclosed parentheses.  This
   1028 can sometimes be slow, thus it timeouts after 150 msec.  If you notice the
   1029 indenting isn't correct, you can set a larger timeout in msec: >
   1030 let g:python_indent.searchpair_timeout = 500
   1031 
   1032 If looking back for unclosed parenthesis is still too slow, especially during
   1033 a copy-paste operation, or if you don't need indenting inside multi-line
   1034 parentheses, you can completely disable this feature: >
   1035 let g:python_indent.disable_parentheses_indenting = 1
   1036 
   1037 For backward compatibility, these variables are also supported: >
   1038 g:pyindent_open_paren
   1039 g:pyindent_nested_paren
   1040 g:pyindent_continue
   1041 g:pyindent_searchpair_timeout
   1042 g:pyindent_disable_parentheses_indenting
   1043 
   1044 
   1045 R								*ft-r-indent*
   1046 
   1047 Function arguments are aligned if they span for multiple lines.  If you prefer
   1048 do not have the arguments of functions aligned, put in your |vimrc|:
   1049 >
   1050   let r_indent_align_args = 0
   1051 <
   1052 All lines beginning with a comment character, #, get the same indentation
   1053 level of the normal R code.  Users of Emacs/ESS may be used to have lines
   1054 beginning with a single # indented in the 40th column, ## indented as R code,
   1055 and ### not indented.  If you prefer that lines beginning with comment
   1056 characters are aligned as they are by Emacs/ESS, put in your |vimrc|:
   1057 >
   1058   let r_indent_ess_comments = 1
   1059 <
   1060 If you prefer that lines beginning with a single # are aligned at a column
   1061 different from the 40th one, you should set a new value to the variable
   1062 r_indent_comment_column, as in the example below:
   1063 >
   1064   let r_indent_comment_column = 30
   1065 <
   1066 Any code after a line that ends with "<-" is indented.  Emacs/ESS does not
   1067 indent the code if it is a top-level function.  If you prefer a behavior like
   1068 Emacs/ESS one in this regard, put in your |vimrc|:
   1069 >
   1070   let r_indent_ess_compatible = 1
   1071 <
   1072 Below is an example of indentation with and without this option enabled:
   1073 >
   1074   ### r_indent_ess_compatible = 1           ### r_indent_ess_compatible = 0
   1075   foo <-                                    foo <-
   1076       function(x)                               function(x)
   1077   {                                             {
   1078       paste(x)                                      paste(x)
   1079   }                                             }
   1080 <
   1081 The code will be indented after lines that match the pattern
   1082 `'\(&\||\|+\|-\|\*\|/\|=\|\~\|%\|->\)\s*$'`.  If you want indentation after
   1083 lines that match a different pattern, you should set the appropriate value of
   1084 `r_indent_op_pattern` in your |vimrc|.
   1085 
   1086 
   1087 SHELL							*ft-sh-indent*
   1088 
   1089 The amount of indent applied under various circumstances in a shell file can
   1090 be configured by setting the following keys in the |Dictionary|
   1091 b:sh_indent_defaults to a specific amount or to a |Funcref| that references a
   1092 function that will return the amount desired:
   1093 
   1094 b:sh_indent_options["default"]	Default amount of indent.
   1095 
   1096 b:sh_indent_options["continuation-line"]
   1097 			Amount of indent to add to a continued line.
   1098 
   1099 b:sh_indent_options["case-labels"]
   1100 			Amount of indent to add for case labels.
   1101 			(not actually implemented)
   1102 
   1103 b:sh_indent_options["case-statements"]
   1104 			Amount of indent to add for case statements.
   1105 
   1106 b:sh_indent_options["case-breaks"]
   1107 			Amount of indent to add (or more likely
   1108 			remove) for case breaks.
   1109 
   1110 VERILOG							*ft-verilog-indent*
   1111 
   1112 General block statements such as if, for, case, always, initial, function,
   1113 specify and begin, etc., are indented.  The module block statements (first
   1114 level blocks) are not indented by default.  you can turn on the indent with
   1115 setting a variable in the vimrc as follows: >
   1116 
   1117  let b:verilog_indent_modules = 1
   1118 
   1119 then the module blocks will be indented.  To stop this, remove the variable: >
   1120 
   1121  :unlet b:verilog_indent_modules
   1122 
   1123 To set the variable only for Verilog file.  The following statements can be
   1124 used: >
   1125 
   1126  au BufReadPost * if exists("b:current_syntax")
   1127  au BufReadPost *   if b:current_syntax == "verilog"
   1128  au BufReadPost *     let b:verilog_indent_modules = 1
   1129  au BufReadPost *   endif
   1130  au BufReadPost * endif
   1131 
   1132 Furthermore, setting the variable b:verilog_indent_width to change the
   1133 indenting width (default is 'shiftwidth'): >
   1134 
   1135  let b:verilog_indent_width = 4
   1136  let b:verilog_indent_width = shiftwidth() * 2
   1137 
   1138 In addition, you can turn the verbose mode for debug issue: >
   1139 
   1140  let b:verilog_indent_verbose = 1
   1141 
   1142 Make sure to do ":set cmdheight=2" first to allow the display of the message.
   1143 
   1144 
   1145 VHDL							*ft-vhdl-indent*
   1146 
   1147 Alignment of generic/port mapping statements are performed by default.  This
   1148 causes the following alignment example: >
   1149 
   1150  ENTITY sync IS
   1151  PORT (
   1152         clk        : IN  STD_LOGIC;
   1153         reset_n    : IN  STD_LOGIC;
   1154         data_input : IN  STD_LOGIC;
   1155         data_out   : OUT STD_LOGIC
   1156       );
   1157  END ENTITY sync;
   1158 
   1159 To turn this off, add >
   1160 
   1161  let g:vhdl_indent_genportmap = 0
   1162 
   1163 to the vimrc file, which causes the previous alignment example to change: >
   1164 
   1165  ENTITY sync IS
   1166  PORT (
   1167    clk        : IN  STD_LOGIC;
   1168    reset_n    : IN  STD_LOGIC;
   1169    data_input : IN  STD_LOGIC;
   1170    data_out   : OUT STD_LOGIC
   1171  );
   1172  END ENTITY sync;
   1173 
   1174 
   1175 Alignment of right-hand side assignment "<=" statements are performed by
   1176 default.  This causes the following alignment example: >
   1177 
   1178  sig_out <= (bus_a(1) AND
   1179             (sig_b OR sig_c)) OR
   1180             (bus_a(0) AND sig_d);
   1181 
   1182 To turn this off, add >
   1183 
   1184  let g:vhdl_indent_rhsassign = 0
   1185 
   1186 to the vimrc file, which causes the previous alignment example to change: >
   1187 
   1188  sig_out <= (bus_a(1) AND
   1189    (sig_b OR sig_c)) OR
   1190    (bus_a(0) AND sig_d);
   1191 
   1192 
   1193 Full-line comments (lines that begin with "--") are indented to be aligned
   1194 with the very previous line's comment, PROVIDED that a whitespace follows
   1195 after "--".
   1196 
   1197 For example: >
   1198 
   1199  sig_a <= sig_b; -- start of a comment
   1200                  -- continuation of the comment
   1201                  -- more of the same comment
   1202 
   1203 While in Insert mode, after typing "-- " (note the space " "), hitting CTRL-F
   1204 will align the current "-- " with the previous line's "--".
   1205 
   1206 If the very previous line does not contain "--", THEN the full-line comment
   1207 will be aligned with the start of the next non-blank line that is NOT a
   1208 full-line comment.
   1209 
   1210 Indenting the following code: >
   1211 
   1212  sig_c <= sig_d; -- comment 0
   1213         -- comment 1
   1214               -- comment 2
   1215    --debug_code:
   1216    --PROCESS(debug_in)
   1217         --BEGIN
   1218            --  FOR i IN 15 DOWNTO 0 LOOP
   1219             --    debug_out(8*i+7 DOWNTO 8*i) <= debug_in(15-i);
   1220            --  END LOOP;
   1221     --END PROCESS debug_code;
   1222 
   1223      -- comment 3
   1224  sig_e <= sig_f; -- comment 4
   1225           -- comment 5
   1226 
   1227 results in: >
   1228 
   1229  sig_c <= sig_d; -- comment 0
   1230                  -- comment 1
   1231                  -- comment 2
   1232  --debug_code:
   1233  --PROCESS(debug_in)
   1234  --BEGIN
   1235  --  FOR i IN 15 DOWNTO 0 LOOP
   1236  --    debug_out(8*i+7 DOWNTO 8*i) <= debug_in(15-i);
   1237  --  END LOOP;
   1238  --END PROCESS debug_code;
   1239 
   1240  -- comment 3
   1241  sig_e <= sig_f; -- comment 4
   1242                  -- comment 5
   1243 
   1244 Notice that "--debug_code:" does not align with "-- comment 2"
   1245 because there is no whitespace that follows after "--" in "--debug_code:".
   1246 
   1247 Given the dynamic nature of indenting comments, indenting should be done
   1248 TWICE.  On the first pass, code will be indented.  On the second pass,
   1249 full-line comments will be indented according to the correctly indented code.
   1250 
   1251 
   1252 VIM							*ft-vim-indent*
   1253 						*g:vim_indent_cont*
   1254 For indenting Vim scripts there is one variable that specifies the amount of
   1255 indent for a continuation line, a line that starts with a backslash: >
   1256 
   1257 :let g:vim_indent_cont = shiftwidth() * 3
   1258 
   1259 Three times shiftwidth is the default value.
   1260 
   1261 YAML							*ft-yaml-indent*
   1262 
   1263 By default, the yaml indent script does not try to detect multiline scalars.
   1264 If you want to enable this, set the following variable: >
   1265 
   1266  let g:yaml_indent_multiline_scalar = 1
   1267 <
   1268 vim:tw=78:ts=8:noet:ft=help:norl: