On 09/11/2014 02:10 PM, Yury Gribov wrote:
On 09/11/2014 01:18 PM, Richard Biener wrote:
On Thu, Sep 11, 2014 at 11:06 AM, Richard Biener
<richard.guent...@gmail.com>  wrote:
>On Wed, Sep 10, 2014 at 10:09 AM, Yury Gribov<y.gri...@samsung.com>
wrote:
>>Hi all,
>>
>>This is a second version of patch which adds a Vim config
(.local.vimrc)
>>to root folder to allow automatic setup of GNU formatting for
C/C++/Java/Lex
>>GCC files.
>>
>>I've updated the code with comments from Richard and Bernhard
(which fixed
>>formatting
>>of lonely closing bracket).
>>
>>The patch caused a lively debate with Segher who wanted
.local.vimrc to not
>>be enabled
>>by default. We basically have two options:
>>1) put .local.vimrc to root (just like .dir-locals.el config for
Emacs)
>>2) put both .local.vimrc and .dir-locals.el to contrib and add
Makefile
>>targets
>>to create symlinks in root folder per user's request
>>I personally prefer 2) because this would IMHO improve the quality of
>>patches
>>(e.g. no more silly tab-whitespace formatting bugs).
>>
>>Thoughts? Ok to commit?
>
>It doesn't handle indenting switch/case correctly.  I get
>
>  switch (x)
>    {
>    case X:
>           {
>              int foo;
>...
>
>that is, the { after the case label is wrongly indented.  The same
happens
>for
>   {
>        {
>        }
>   }
>
>we seem to get two soft-tabs here.

    setlocal cinoptions=>s,n-s,{s,:s,=s,g0,hs,p5,t0,+s,(0,u0,w1,m0

does better but still oddly handles

Also fails for

   if (1)
     {
     x = 2;
     }

Ok, it tooks some time. Basically we want brace symbol to behave differently in two contexts:

1) not add any additional offset when not following control flow operator:
void
f ()
{
  int x;
  {
  }
}

2) but add shifttab otherwise:
void
f()
{
  if (1)
    {
    }
}

My understanding is that {N looks too rigid and always adds the same amount to current indent. Thus we see parasitic whites in the first case.

I wonder what would be the best way to handle this. We could just live with that (free {}'s are rare anyway) or I could try to hack a custom indentexpr (this will of course increase the complexity of patch).

-Y

Reply via email to