Hi So8res!
On Di, 02 Okt 2012, So8res wrote:
> Recently a patch went in such that if shiftwidth is zero then the value of tabstop is used:
>
>
https://groups.google.com/forum/?fromgroups=#!searchin/vim_dev/shiftwidth=0/vim_dev/5Pq0B7dXGGA
>
> I like that feature a lot.
>
> It would be very nice to have a similar feature for softtabstop. Unfortunately, setting softtabstop=0 disables the softtabstop feature, so 0 might not work here. I propose either:
>
> * Change softtabstop so that 0 sets it equal to tabstop and a negative number turns it of
> * Make it so 0 turns it off and a negative number makes it equal to tabstop
>
> Justification: To quote from the tabstop help,
>
> There are four main ways to use tabs in Vim:
> 1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
> (or 3 or whatever you prefer) and use 'noexpandtab'. Then Vim
> will use a mix of tabs and spaces, but typing <Tab> and <BS> will
> behave like a tab appears every 4 (or 3) characters.
> 2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
> 'expandtab'. This way you will always insert spaces. The
> formatting will never be messed up when 'tabstop' is changed.
> 3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
> |modeline| to set these values when editing the file again. Only
> works when using Vim to edit the file.
> 4. Always set 'tabstop' and 'shiftwidth' to the same value, and
> 'noexpandtab'. This should then work (for initial indents only)
> for any tabstop setting that people use. It might be nice to have
> tabs after the first non-blank inserted as spaces if you do this
> though. Otherwise aligned comments will be wrong when 'tabstop' is
> changed.
>
>
> I'm a big proponent of #4. #1 mixes tabs and spaces at the top level which I find abhorrent. #2 removes the reader's ability to adjust the tabstop to their comfort level and have the code comply. #3 requires modelines don't work well for people using other editors and can have security concerns.
>
> If you use #4 then it's helpful to change <tab> (as suggested) to insert spaces after the first non-blank. At this point you pretty much always want tabstop, shiftwidth, and softtabstop to *always* be equal to each other. It gets annoying to have to "set ts=N sw=N sts=N" or whatever when you want to change the width of tabs to N.
>
> The above mentioned patch allows you to "set sw=0" once and then you need only "set ts=N sts=N" when you're changing your indent level, but that's still repetitive. I would love a patch that allows me to "set sw=0 sts=0" or something in my vimrc and then only ever touch tabstop thereafter.
Could you try the attached patch? (use sts=-1 to set it to the 'ts' value)
Mit freundlichen Gr��en
Christian