Matt Wozniski wrote:

> In #vim, ShingRay pointed out a bug in cindent, which can be reproduced with:
> 
>     echo $'void f() {\nif (1)\n;\n}' \
>         | vim - -u NONE -N -c 'set ft=c' -c 'norm gg=G'
> 
> The above adds an extra 'shiftwidth' to every line.  It's caused by
> vim mistakenly deciding that "void f() {" is specifying the function
> return type for the function "if".  Since I can't think of a C-like
> language that would allow { or } anywhere in the return type of a
> function, here's a patch that fixes the problem by never considering a
> line containing braces to be return type declaration.
> 
> ~Matt
> 
> diff -r 903fcd726d90 src/misc1.c
> --- a/src/misc1.c     Thu Feb 11 18:54:43 2010 +0100
> +++ b/src/misc1.c     Thu Feb 25 01:21:16 2010 -0500
> @@ -7729,9 +7729,12 @@
>        * line needs to be indented as a function type spec.
>        * Don't do this if the current line looks like a comment
>        * or if the current line is terminated, ie. ends in ';'.
> +      * It also cannot contain a '{' or a '}'.
>        */
>       else if (cur_curpos.lnum < curbuf->b_ml.ml_line_count
>               && !cin_nocode(theline)
> +             && !vim_strchr(theline, '{')
> +             && !vim_strchr(theline, '}')
>               && !cin_ends_in(theline, (char_u *)":", NULL)
>               && !cin_ends_in(theline, (char_u *)",", NULL)
>               && cin_isfuncdecl(NULL, cur_curpos.lnum + 1)

Thanks for the fix!  Not obvious that this would be the cause of the
problem.

-- 
   GALAHAD turns back.  We see from his POV the lovely ZOOT standing by him
   smiling enchantingly and a number of equally delectable GIRLIES draped
   around in the seductively poulticed room.  They look at him smilingly and
   wave.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
You received this message from the "vim_use" 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

Reply via email to