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