Karsten Hopp ea8b65
To: vim_dev@googlegroups.com
Karsten Hopp ea8b65
Subject: Patch 7.3.492
Karsten Hopp ea8b65
Fcc: outbox
Karsten Hopp ea8b65
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp ea8b65
Mime-Version: 1.0
Karsten Hopp ea8b65
Content-Type: text/plain; charset=UTF-8
Karsten Hopp ea8b65
Content-Transfer-Encoding: 8bit
Karsten Hopp ea8b65
------------
Karsten Hopp ea8b65
Karsten Hopp ea8b65
Patch 7.3.492
Karsten Hopp ea8b65
Problem:    Can't indent conditions separately from function arguments.
Karsten Hopp ea8b65
Solution:   Add the 'k' flag in 'cino. (Lech Lorens)
Karsten Hopp ea8b65
Files:	    runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in,
Karsten Hopp ea8b65
	    src/testdir/test3.ok
Karsten Hopp ea8b65
Karsten Hopp ea8b65
Karsten Hopp ea8b65
*** ../vim-7.3.491/runtime/doc/indent.txt	2011-06-26 03:16:58.000000000 +0200
Karsten Hopp ea8b65
--- runtime/doc/indent.txt	2012-04-05 17:12:14.000000000 +0200
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 459,464 ****
Karsten Hopp ea8b65
--- 460,481 ----
Karsten Hopp ea8b65
  		  a_short_line(argument,    a_short_line(argument,
Karsten Hopp ea8b65
  			       argument);		 argument);
Karsten Hopp ea8b65
  <
Karsten Hopp ea8b65
+ 							*cino-k*
Karsten Hopp ea8b65
+ 	kN    When in unclosed parentheses which follow "if", "for" or
Karsten Hopp ea8b65
+ 	      "while" and N is non-zero, overrides the behaviour defined by
Karsten Hopp ea8b65
+ 	      "(N": causes the indent to be N characters relative to the outer
Karsten Hopp ea8b65
+ 	      context (i.e. the line where "if", "for" or "while" is).  Has
Karsten Hopp ea8b65
+ 	      no effect on deeper levels of nesting.  Affects flags like "wN"
Karsten Hopp ea8b65
+ 	      only for the "if", "for" and "while" conditions.  If 0, defaults
Karsten Hopp ea8b65
+ 	      to behaviour defined by the "(N" flag.  (default: 0).
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 		cino=(0			   cino=(0,ks >
Karsten Hopp ea8b65
+ 		  if (condition1	    if (condition1
Karsten Hopp ea8b65
+ 		      && condition2)		    && condition2)
Karsten Hopp ea8b65
+ 		      action();			action();
Karsten Hopp ea8b65
+ 		  function(argument1	    function(argument1
Karsten Hopp ea8b65
+ 			   && argument2);	     && argument2);
Karsten Hopp ea8b65
+ <
Karsten Hopp ea8b65
  							*cino-m*
Karsten Hopp ea8b65
  	mN    When N is non-zero, line up a line starting with a closing
Karsten Hopp ea8b65
  	      parentheses with the first character of the line with the
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 527,540 ****
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  								*cino-#*
Karsten Hopp ea8b65
  	#N    When N is non-zero recognize shell/Perl comments, starting with
Karsten Hopp ea8b65
! 	      '#'.  Default N is zero: don't recognizes '#' comments.  Note
Karsten Hopp ea8b65
  	      that lines starting with # will still be seen as preprocessor
Karsten Hopp ea8b65
  	      lines.
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  The defaults, spelled out in full, are:
Karsten Hopp ea8b65
  	cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s,
Karsten Hopp ea8b65
! 			c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  Vim puts a line in column 1 if:
Karsten Hopp ea8b65
  - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
Karsten Hopp ea8b65
--- 546,559 ----
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  								*cino-#*
Karsten Hopp ea8b65
  	#N    When N is non-zero recognize shell/Perl comments, starting with
Karsten Hopp ea8b65
! 	      '#'.  Default N is zero: don't recognize '#' comments.  Note
Karsten Hopp ea8b65
  	      that lines starting with # will still be seen as preprocessor
Karsten Hopp ea8b65
  	      lines.
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  The defaults, spelled out in full, are:
Karsten Hopp ea8b65
  	cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s,
Karsten Hopp ea8b65
! 			c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  Vim puts a line in column 1 if:
Karsten Hopp ea8b65
  - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
Karsten Hopp ea8b65
*** ../vim-7.3.491/src/misc1.c	2012-02-29 13:49:03.000000000 +0100
Karsten Hopp ea8b65
--- src/misc1.c	2012-04-05 17:12:14.000000000 +0200
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 5771,5776 ****
Karsten Hopp ea8b65
--- 5771,5822 ----
Karsten Hopp ea8b65
  }
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  /*
Karsten Hopp ea8b65
+  * Check whether in "p" there is an "if", "for" or "while" before offset.
Karsten Hopp ea8b65
+  * Return 0 if there is none.
Karsten Hopp ea8b65
+  * Otherwise return !0 and update "*poffset" to point to the place where the
Karsten Hopp ea8b65
+  * string was found.
Karsten Hopp ea8b65
+  */
Karsten Hopp ea8b65
+     static int
Karsten Hopp ea8b65
+ cin_is_if_for_while_before_offset(line, offset, poffset)
Karsten Hopp ea8b65
+     char_u *line;
Karsten Hopp ea8b65
+     size_t offset;
Karsten Hopp ea8b65
+     int    *poffset;
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+     if (offset-- < 2)
Karsten Hopp ea8b65
+ 	return 0;
Karsten Hopp ea8b65
+     while (offset > 2 && vim_iswhite(line[offset]))
Karsten Hopp ea8b65
+ 	--offset;
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+     offset -= 1;
Karsten Hopp ea8b65
+     if (!STRNCMP(line + offset, "if", 2))
Karsten Hopp ea8b65
+ 	goto probablyFound;
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+     if (offset >= 1)
Karsten Hopp ea8b65
+     {
Karsten Hopp ea8b65
+ 	offset -= 1;
Karsten Hopp ea8b65
+ 	if (!STRNCMP(line + offset, "for", 3))
Karsten Hopp ea8b65
+ 	    goto probablyFound;
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (offset >= 2)
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	    offset -= 2;
Karsten Hopp ea8b65
+ 	    if (!STRNCMP(line + offset, "while", 5))
Karsten Hopp ea8b65
+ 		goto probablyFound;
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+     }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+     return 0;
Karsten Hopp ea8b65
+ probablyFound:
Karsten Hopp ea8b65
+     if (!offset || !vim_isIDc(line[offset - 1]))
Karsten Hopp ea8b65
+     {
Karsten Hopp ea8b65
+ 	*poffset = offset;
Karsten Hopp ea8b65
+ 	return 1;
Karsten Hopp ea8b65
+     }
Karsten Hopp ea8b65
+     return 0;
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ /*
Karsten Hopp ea8b65
   * Return TRUE if we are at the end of a do-while.
Karsten Hopp ea8b65
   *    do
Karsten Hopp ea8b65
   *       nothing;
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 6124,6130 ****
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  /*
Karsten Hopp ea8b65
   * Find the matching '(', failing if it is in a comment.
Karsten Hopp ea8b65
!  * Return NULL of no match found.
Karsten Hopp ea8b65
   */
Karsten Hopp ea8b65
      static pos_T *
Karsten Hopp ea8b65
  find_match_paren(ind_maxparen, ind_maxcomment)	    /* XXX */
Karsten Hopp ea8b65
--- 6170,6176 ----
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  /*
Karsten Hopp ea8b65
   * Find the matching '(', failing if it is in a comment.
Karsten Hopp ea8b65
!  * Return NULL if no match found.
Karsten Hopp ea8b65
   */
Karsten Hopp ea8b65
      static pos_T *
Karsten Hopp ea8b65
  find_match_paren(ind_maxparen, ind_maxcomment)	    /* XXX */
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 6393,6398 ****
Karsten Hopp ea8b65
--- 6439,6450 ----
Karsten Hopp ea8b65
       */
Karsten Hopp ea8b65
      int ind_cpp_namespace = 0;
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
+     /*
Karsten Hopp ea8b65
+      * handle continuation lines containing conditions of if(), for() and
Karsten Hopp ea8b65
+      * while()
Karsten Hopp ea8b65
+      */
Karsten Hopp ea8b65
+     int ind_if_for_while = 0;
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
      pos_T	cur_curpos;
Karsten Hopp ea8b65
      int		amount;
Karsten Hopp ea8b65
      int		scope_amount;
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 6437,6442 ****
Karsten Hopp ea8b65
--- 6489,6495 ----
Karsten Hopp ea8b65
      int		cont_amount = 0;    /* amount for continuation line */
Karsten Hopp ea8b65
      int		original_line_islabel;
Karsten Hopp ea8b65
      int		added_to_amount = 0;
Karsten Hopp ea8b65
+     int		is_if_for_while = 0;
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
      for (options = curbuf->b_p_cino; *options; )
Karsten Hopp ea8b65
      {
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 6509,6514 ****
Karsten Hopp ea8b65
--- 6562,6568 ----
Karsten Hopp ea8b65
  	    case 'l': ind_keep_case_label = n; break;
Karsten Hopp ea8b65
  	    case '#': ind_hash_comment = n; break;
Karsten Hopp ea8b65
  	    case 'N': ind_cpp_namespace = n; break;
Karsten Hopp ea8b65
+ 	    case 'k': ind_if_for_while = n; break;
Karsten Hopp ea8b65
  	}
Karsten Hopp ea8b65
  	if (*options == ',')
Karsten Hopp ea8b65
  	    ++options;
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 6812,6817 ****
Karsten Hopp ea8b65
--- 6866,6900 ----
Karsten Hopp ea8b65
  	if (amount == -1)
Karsten Hopp ea8b65
  	{
Karsten Hopp ea8b65
  	    int	    ignore_paren_col = 0;
Karsten Hopp ea8b65
+ 	    int	    is_if_for_while = 0;
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	    if (ind_if_for_while)
Karsten Hopp ea8b65
+ 	    {
Karsten Hopp ea8b65
+ 		/* Look for the outermost opening parenthesis on this line
Karsten Hopp ea8b65
+ 		 * and check whether it belongs to an "if", "for" or "while". */
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 		pos_T	    cursor_save = curwin->w_cursor;
Karsten Hopp ea8b65
+ 		pos_T	    outermost;
Karsten Hopp ea8b65
+ 		char_u	    *line;
Karsten Hopp ea8b65
+ 		int	    look_col;
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 		trypos = &our_paren_pos;
Karsten Hopp ea8b65
+ 		do {
Karsten Hopp ea8b65
+ 		    outermost = *trypos;
Karsten Hopp ea8b65
+ 		    curwin->w_cursor.lnum = outermost.lnum;
Karsten Hopp ea8b65
+ 		    curwin->w_cursor.col = outermost.col;
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 		    trypos = find_match_paren(ind_maxparen, ind_maxcomment);
Karsten Hopp ea8b65
+ 		} while (trypos && trypos->lnum == outermost.lnum);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 		curwin->w_cursor = cursor_save;
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 		line = ml_get(outermost.lnum);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 		is_if_for_while =
Karsten Hopp ea8b65
+ 		    cin_is_if_for_while_before_offset(line, outermost.col,
Karsten Hopp ea8b65
+ 						      &outermost.col);
Karsten Hopp ea8b65
+ 	    }
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  	    amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment);
Karsten Hopp ea8b65
  	    look = skipwhite(look);
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 6836,6842 ****
Karsten Hopp ea8b65
  		curwin->w_cursor.lnum = save_lnum;
Karsten Hopp ea8b65
  		look = ml_get(our_paren_pos.lnum) + look_col;
Karsten Hopp ea8b65
  	    }
Karsten Hopp ea8b65
! 	    if (theline[0] == ')' || ind_unclosed == 0
Karsten Hopp ea8b65
  		    || (!ind_unclosed_noignore && *look == '('
Karsten Hopp ea8b65
  						    && ignore_paren_col == 0))
Karsten Hopp ea8b65
  	    {
Karsten Hopp ea8b65
--- 6919,6925 ----
Karsten Hopp ea8b65
  		curwin->w_cursor.lnum = save_lnum;
Karsten Hopp ea8b65
  		look = ml_get(our_paren_pos.lnum) + look_col;
Karsten Hopp ea8b65
  	    }
Karsten Hopp ea8b65
! 	    if (theline[0] == ')' || (ind_unclosed == 0 && is_if_for_while == 0)
Karsten Hopp ea8b65
  		    || (!ind_unclosed_noignore && *look == '('
Karsten Hopp ea8b65
  						    && ignore_paren_col == 0))
Karsten Hopp ea8b65
  	    {
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 6907,6913 ****
Karsten Hopp ea8b65
  	    {
Karsten Hopp ea8b65
  		/* Line up with the start of the matching paren line. */
Karsten Hopp ea8b65
  	    }
Karsten Hopp ea8b65
! 	    else if (ind_unclosed == 0 || (!ind_unclosed_noignore
Karsten Hopp ea8b65
  				    && *look == '(' && ignore_paren_col == 0))
Karsten Hopp ea8b65
  	    {
Karsten Hopp ea8b65
  		if (cur_amount != MAXCOL)
Karsten Hopp ea8b65
--- 6990,6997 ----
Karsten Hopp ea8b65
  	    {
Karsten Hopp ea8b65
  		/* Line up with the start of the matching paren line. */
Karsten Hopp ea8b65
  	    }
Karsten Hopp ea8b65
! 	    else if ((ind_unclosed == 0 && is_if_for_while == 0)
Karsten Hopp ea8b65
! 		     || (!ind_unclosed_noignore
Karsten Hopp ea8b65
  				    && *look == '(' && ignore_paren_col == 0))
Karsten Hopp ea8b65
  	    {
Karsten Hopp ea8b65
  		if (cur_amount != MAXCOL)
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 6943,6949 ****
Karsten Hopp ea8b65
  		    if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL)
Karsten Hopp ea8b65
  			amount += ind_unclosed2;
Karsten Hopp ea8b65
  		    else
Karsten Hopp ea8b65
! 			amount += ind_unclosed;
Karsten Hopp ea8b65
  		}
Karsten Hopp ea8b65
  		/*
Karsten Hopp ea8b65
  		 * For a line starting with ')' use the minimum of the two
Karsten Hopp ea8b65
--- 7027,7038 ----
Karsten Hopp ea8b65
  		    if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL)
Karsten Hopp ea8b65
  			amount += ind_unclosed2;
Karsten Hopp ea8b65
  		    else
Karsten Hopp ea8b65
! 		    {
Karsten Hopp ea8b65
! 			if (is_if_for_while)
Karsten Hopp ea8b65
! 			    amount += ind_if_for_while;
Karsten Hopp ea8b65
! 			else
Karsten Hopp ea8b65
! 			    amount += ind_unclosed;
Karsten Hopp ea8b65
! 		    }
Karsten Hopp ea8b65
  		}
Karsten Hopp ea8b65
  		/*
Karsten Hopp ea8b65
  		 * For a line starting with ')' use the minimum of the two
Karsten Hopp ea8b65
*** ../vim-7.3.491/src/testdir/test3.in	2011-12-14 20:21:29.000000000 +0100
Karsten Hopp ea8b65
--- src/testdir/test3.in	2012-04-05 17:12:14.000000000 +0200
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 1574,1579 ****
Karsten Hopp ea8b65
--- 1574,1793 ----
Karsten Hopp ea8b65
  }
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  STARTTEST
Karsten Hopp ea8b65
+ :set cino=k2s,(0
Karsten Hopp ea8b65
+ 2kdd3j=][
Karsten Hopp ea8b65
+ ENDTEST
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 	&& condition2)
Karsten Hopp ea8b65
+ 	action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 	&& argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 	c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 	(c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (   c1
Karsten Hopp ea8b65
+ 	&& (      c2
Karsten Hopp ea8b65
+ 	|| c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ 	func( c1
Karsten Hopp ea8b65
+ 	&& (     c2
Karsten Hopp ea8b65
+ 	|| c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ STARTTEST
Karsten Hopp ea8b65
+ :set cino=k2s,(s
Karsten Hopp ea8b65
+ 2kdd3j=][
Karsten Hopp ea8b65
+ ENDTEST
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 	&& condition2)
Karsten Hopp ea8b65
+ 	action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 	&& argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 	c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 	(c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (   c1
Karsten Hopp ea8b65
+ 	&& (      c2
Karsten Hopp ea8b65
+ 	|| c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ 	func(   c1
Karsten Hopp ea8b65
+ 	&& (      c2
Karsten Hopp ea8b65
+ 	|| c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ STARTTEST
Karsten Hopp ea8b65
+ :set cino=k2s,(s,U1
Karsten Hopp ea8b65
+ 2kdd3j=][
Karsten Hopp ea8b65
+ ENDTEST
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 	&& condition2)
Karsten Hopp ea8b65
+ 	action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 	&& argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 	c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 	(c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ 	if (c123456789
Karsten Hopp ea8b65
+ 	&& (c22345
Karsten Hopp ea8b65
+ 	|| c3))
Karsten Hopp ea8b65
+ 	printf("foo\n");
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	c = c1 &&
Karsten Hopp ea8b65
+ 	(
Karsten Hopp ea8b65
+ 	c2 ||
Karsten Hopp ea8b65
+ 	c3
Karsten Hopp ea8b65
+ 	) && c4;
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ STARTTEST
Karsten Hopp ea8b65
+ :set cino=k2s,(0,W4
Karsten Hopp ea8b65
+ 2kdd3j=][
Karsten Hopp ea8b65
+ ENDTEST
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 	&& condition2)
Karsten Hopp ea8b65
+ 	action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 	&& argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 	c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 	(c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ 	if (c123456789
Karsten Hopp ea8b65
+ 	&& (c22345
Karsten Hopp ea8b65
+ 	|| c3))
Karsten Hopp ea8b65
+ 	printf("foo\n");
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (   c1
Karsten Hopp ea8b65
+ 	&& (   c2
Karsten Hopp ea8b65
+ 	|| c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	a_long_line(
Karsten Hopp ea8b65
+ 	argument,
Karsten Hopp ea8b65
+ 	argument);
Karsten Hopp ea8b65
+ 	a_short_line(argument,
Karsten Hopp ea8b65
+ 	argument);
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ STARTTEST
Karsten Hopp ea8b65
+ :set cino=k2s,u2
Karsten Hopp ea8b65
+ 2kdd3j=][
Karsten Hopp ea8b65
+ ENDTEST
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 	&& condition2)
Karsten Hopp ea8b65
+ 	action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 	&& argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 	c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 	(c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ 	if (c123456789
Karsten Hopp ea8b65
+ 	&& (c22345
Karsten Hopp ea8b65
+ 	|| c3))
Karsten Hopp ea8b65
+ 	printf("foo\n");
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ STARTTEST
Karsten Hopp ea8b65
+ :set cino=k2s,(0,w1
Karsten Hopp ea8b65
+ 2kdd3j=][
Karsten Hopp ea8b65
+ ENDTEST
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 	&& condition2)
Karsten Hopp ea8b65
+ 	action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 	&& argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 	c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 	(c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ 	if (c123456789
Karsten Hopp ea8b65
+ 	&& (c22345
Karsten Hopp ea8b65
+ 	|| c3))
Karsten Hopp ea8b65
+ 	printf("foo\n");
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (   c1
Karsten Hopp ea8b65
+ 	&& (      c2
Karsten Hopp ea8b65
+ 	|| c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ 	func(   c1
Karsten Hopp ea8b65
+ 	&& (      c2
Karsten Hopp ea8b65
+ 	|| c3))
Karsten Hopp ea8b65
+ 	foo;
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ STARTTEST
Karsten Hopp ea8b65
+ :set cino=k2,(s
Karsten Hopp ea8b65
+ 2kdd3j=][
Karsten Hopp ea8b65
+ ENDTEST
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 	  && condition2)
Karsten Hopp ea8b65
+ 		action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 		&& argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 		  c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 	  (c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ STARTTEST
Karsten Hopp ea8b65
  :set cino=N-s
Karsten Hopp ea8b65
  /^NAMESPACESTART
Karsten Hopp ea8b65
  =/^NAMESPACEEND
Karsten Hopp ea8b65
*** ../vim-7.3.491/src/testdir/test3.ok	2011-12-14 20:21:29.000000000 +0100
Karsten Hopp ea8b65
--- src/testdir/test3.ok	2012-04-05 17:12:14.000000000 +0200
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 1411,1416 ****
Karsten Hopp ea8b65
--- 1411,1602 ----
Karsten Hopp ea8b65
  }
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
  
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 			&& condition2)
Karsten Hopp ea8b65
+ 		action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 			 && argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 				c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 			(c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (   c1
Karsten Hopp ea8b65
+ 			&& (      c2
Karsten Hopp ea8b65
+ 					  || c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ 	func( c1
Karsten Hopp ea8b65
+ 		  && (     c2
Karsten Hopp ea8b65
+ 				   || c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 			&& condition2)
Karsten Hopp ea8b65
+ 		action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 		&& argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 				c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 			(c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (   c1
Karsten Hopp ea8b65
+ 			&& (      c2
Karsten Hopp ea8b65
+ 				|| c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ 	func(   c1
Karsten Hopp ea8b65
+ 		&& (      c2
Karsten Hopp ea8b65
+ 			|| c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 			&& condition2)
Karsten Hopp ea8b65
+ 		action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 		&& argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 				c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 			(c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ 	if (c123456789
Karsten Hopp ea8b65
+ 			&& (c22345
Karsten Hopp ea8b65
+ 				|| c3))
Karsten Hopp ea8b65
+ 		printf("foo\n");
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	c = c1 &&
Karsten Hopp ea8b65
+ 		(
Karsten Hopp ea8b65
+ 			c2 ||
Karsten Hopp ea8b65
+ 			c3
Karsten Hopp ea8b65
+ 		) && c4;
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 			&& condition2)
Karsten Hopp ea8b65
+ 		action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 			 && argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 				c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 			(c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ 	if (c123456789
Karsten Hopp ea8b65
+ 			&& (c22345
Karsten Hopp ea8b65
+ 				|| c3))
Karsten Hopp ea8b65
+ 		printf("foo\n");
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (   c1
Karsten Hopp ea8b65
+ 			&& (   c2
Karsten Hopp ea8b65
+ 				   || c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	a_long_line(
Karsten Hopp ea8b65
+ 		argument,
Karsten Hopp ea8b65
+ 		argument);
Karsten Hopp ea8b65
+ 	a_short_line(argument,
Karsten Hopp ea8b65
+ 				 argument);
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 			&& condition2)
Karsten Hopp ea8b65
+ 		action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 			&& argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 			  c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 			(c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ 	if (c123456789
Karsten Hopp ea8b65
+ 			&& (c22345
Karsten Hopp ea8b65
+ 			  || c3))
Karsten Hopp ea8b65
+ 		printf("foo\n");
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 			&& condition2)
Karsten Hopp ea8b65
+ 		action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 			 && argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 				c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 			(c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ 	if (c123456789
Karsten Hopp ea8b65
+ 			&& (c22345
Karsten Hopp ea8b65
+ 				|| c3))
Karsten Hopp ea8b65
+ 		printf("foo\n");
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (   c1
Karsten Hopp ea8b65
+ 			&& (      c2
Karsten Hopp ea8b65
+ 				|| c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ 	func(   c1
Karsten Hopp ea8b65
+ 		 && (      c2
Karsten Hopp ea8b65
+ 			 || c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ void func(void)
Karsten Hopp ea8b65
+ {
Karsten Hopp ea8b65
+ 	if (condition1
Karsten Hopp ea8b65
+ 	  && condition2)
Karsten Hopp ea8b65
+ 		action();
Karsten Hopp ea8b65
+ 	function(argument1
Karsten Hopp ea8b65
+ 		&& argument2);
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 	if (c1 && (c2 ||
Karsten Hopp ea8b65
+ 		  c3))
Karsten Hopp ea8b65
+ 		foo;
Karsten Hopp ea8b65
+ 	if (c1 &&
Karsten Hopp ea8b65
+ 	  (c2 || c3))
Karsten Hopp ea8b65
+ 	{
Karsten Hopp ea8b65
+ 	}
Karsten Hopp ea8b65
+ }
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
+ 
Karsten Hopp ea8b65
  NAMESPACESTART
Karsten Hopp ea8b65
  /* valid namespaces with normal indent */
Karsten Hopp ea8b65
  namespace
Karsten Hopp ea8b65
*** ../vim-7.3.491/src/version.c	2012-04-05 16:56:38.000000000 +0200
Karsten Hopp ea8b65
--- src/version.c	2012-04-05 17:14:18.000000000 +0200
Karsten Hopp ea8b65
***************
Karsten Hopp ea8b65
*** 716,717 ****
Karsten Hopp ea8b65
--- 716,719 ----
Karsten Hopp ea8b65
  {   /* Add new patch number below this line */
Karsten Hopp ea8b65
+ /**/
Karsten Hopp ea8b65
+     492,
Karsten Hopp ea8b65
  /**/
Karsten Hopp ea8b65
Karsten Hopp ea8b65
-- 
Karsten Hopp ea8b65
You were lucky to have a LAKE! There were a hundred and sixty of
Karsten Hopp ea8b65
us living in a small shoebox in the middle of the road.
Karsten Hopp ea8b65
Karsten Hopp ea8b65
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp ea8b65
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp ea8b65
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp ea8b65
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///