Re: [PATCH v2 1/2] Add project-wide .vimrc configuration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Dec 9, 2020 at 11:27 AM Jeff King <peff@xxxxxxxx> wrote:
>
> On Wed, Dec 09, 2020 at 12:55:36AM -0600, Felipe Contreras wrote:
>
> > +augroup git
> > +     au BufRead,BufNewFile */Documentation/*.txt set filetype=asciidoc
> > +
> > +     au FileType c setl noexpandtab tabstop=8 shiftwidth=0 cino=(s,:0,l1,t0
>
> I had to read up on a few of these settings, and I'm still slightly
> puzzled:
>
>   - I generally leave shiftwidth=8, but reading the documentation says
>     that 0 is equivalent to "1 tabstop". So that should be equivalent.

Yes. It is.

If you read the help of tabstop [1] it says there are four main ways
of using tab, and we are using the fourth one: "always set 'tabstop'
and 'shiftwidth' to the same value, and 'noexpandtab'."

Other projects use a different tabstop, and expandtab (mode 2),
however, I have *never* found a use case where it made sense to have a
different shiftwidth than tabstop. And it gets tedious to *always* do
ts=X sw=X, when you can just do sw=0 in your ~/.vimrc, and ts=X per
project.

>   - I've been using "(0" for years for my git work (which indents to
>     align new lines with the unclosed parenthesis). I'm not quite sure
>     what "(s" means. The documentation says "1s" would be "one
>     shiftwidth". Is just "s" the same?

Yes. If you read CodingGuidelines it says there are two schools of
thought when it comes to splitting long logical lines. The first
example is "(s", the second one is "(0".

The reason why I prefer "(s" is that this is more commonly used in the
Linux kernel. However, it's not quite the same in vim (when there's
more than one parenthesis). I've planned to contact vim developers
about that, but I haven't yet. Just for that reason it might make
sense to use "(0" for the project.

>   - I also have ":0", which doesn't indent case labels. Matches our
>     style.
>
>   - I didn't have "l" set myself. I never noticed because it only
>     matters if you open a case with an extra brace, which is relatively
>     rare. For non-vim folks, it is preferring:
>
>         switch (foo) {
>         case 0: {
>                 break;
>         }
>
>     to:
>
>         switch (foo) {
>         case 0: {
>                         break;
>                 }
>
>     which seems consistent with our style. So I think that is worth
>     doing.
>
>   - t0 is specifying not to indent function return types when they
>     appear on a separate line. But our style is not to put those return
>     types on a separate line, anyway. Do we need this?

Right. I recall at some point it was annoying me that types were auto
indented magically at wrong times. Testing "ts" that doesn't seem to
happen anymore, but it also doesn't seem to be working at all.

Do you see some difference from "t0" and "ts" with:

  void
  main(void) { }

Cheers.

[1] https://vimhelp.org/options.txt.html#%27tabstop%27

-- 
Felipe Contreras



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux