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