Patch 7.3.164
Problem:    C-indenting: a preprocessor statement confuses detection of a
            function delcaration.
Solution:   Ignore preprocessor lines. (Lech Lorens)  Also recognize the style
            to put a comma before the argument name.
Files:      src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok


*** ../vim-7.3.163/src/misc1.c  2011-04-11 16:56:29.000000000 +0200
--- src/misc1.c 2011-04-28 12:49:55.000000000 +0200
***************
*** 5396,5403 ****
  cin_ispreproc(s)
      char_u *s;
  {
!     s = skipwhite(s);
!     if (*s == '#')
        return TRUE;
      return FALSE;
  }
--- 5396,5402 ----
  cin_ispreproc(s)
      char_u *s;
  {
!     if (*skipwhite(s) == '#')
        return TRUE;
      return FALSE;
  }
***************
*** 5513,5518 ****
--- 5512,5521 ----
      else
        s = *sp;
  
+     /* Ignore line starting with #. */
+     if (cin_ispreproc(s))
+       return FALSE;
+ 
      while (*s && *s != '(' && *s != ';' && *s != '\'' && *s != '"')
      {
        if (cin_iscomment(s))   /* ignore comments */
***************
*** 5538,5550 ****
                retval = TRUE;
            goto done;
        }
!       if (*s == ',' && cin_nocode(s + 1))
        {
!           /* ',' at the end: continue looking in the next line */
            if (lnum >= curbuf->b_ml.ml_line_count)
                break;
! 
!           s = ml_get(++lnum);
        }
        else if (cin_iscomment(s))      /* ignore comments */
            s = cin_skipcomment(s);
--- 5541,5569 ----
                retval = TRUE;
            goto done;
        }
!       if ((*s == ',' && cin_nocode(s + 1)) || s[1] == NUL || cin_nocode(s))
        {
!           int comma = (*s == ',');
! 
!           /* ',' at the end: continue looking in the next line.
!            * At the end: check for ',' in the next line, for this style:
!            * func(arg1
!            *       , arg2) */
!           for (;;)
!           {
!               if (lnum >= curbuf->b_ml.ml_line_count)
!                   break;
!               s = ml_get(++lnum);
!               if (!cin_ispreproc(s))
!                   break;
!           }
            if (lnum >= curbuf->b_ml.ml_line_count)
                break;
!           /* Require a comma at end of the line or a comma or ')' at the
!            * start of next line. */
!           s = skipwhite(s);
!           if (!comma && *s != ',' && *s != ')')
!               break;
        }
        else if (cin_iscomment(s))      /* ignore comments */
            s = cin_skipcomment(s);
*** ../vim-7.3.163/src/testdir/test3.in 2010-08-15 21:57:29.000000000 +0200
--- src/testdir/test3.in        2011-04-28 12:15:12.000000000 +0200
***************
*** 1315,1320 ****
--- 1315,1349 ----
  }
  
  STARTTEST
+ :set cino=(0,ts
+ 2kdd=][
+ ENDTEST
+ 
+ void func(int a
+ #if defined(FOO)
+                 , int b
+                 , int c
+ #endif
+                )
+ {
+ }
+ 
+ STARTTEST
+ :set cino=(0
+ 2kdd=][
+ ENDTEST
+ 
+ void
+ func(int a
+ #if defined(FOO)
+                 , int b
+                 , int c
+ #endif
+                )
+ {
+ }
+ 
+ STARTTEST
  :g/^STARTTEST/.,/^ENDTEST/d
  :1;/start of AUTO/,$wq! test.out
  ENDTEST
*** ../vim-7.3.163/src/testdir/test3.ok 2010-08-15 21:57:29.000000000 +0200
--- src/testdir/test3.ok        2011-04-28 12:54:04.000000000 +0200
***************
*** 1183,1185 ****
--- 1183,1206 ----
                foo;
  }
  
+ 
+ void func(int a
+ #if defined(FOO)
+                 , int b
+                 , int c
+ #endif
+                )
+ {
+ }
+ 
+ 
+       void
+ func(int a
+ #if defined(FOO)
+        , int b
+        , int c
+ #endif
+       )
+ {
+ }
+ 
*** ../vim-7.3.163/src/version.c        2011-04-28 12:56:57.000000000 +0200
--- src/version.c       2011-04-28 12:59:55.000000000 +0200
***************
*** 716,717 ****
--- 716,719 ----
  {   /* Add new patch number below this line */
+ /**/
+     164,
  /**/

-- 
Due knot trussed yore spell chequer two fined awl miss steaks.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui