If you use the new feature that allows sw to be 0 (causing it to fall back to tabstop) then indentation in all of these filetypes breaks.
According to a simple grep, the following filetypes are affected:
ada
awk
bst
cdl
cmake
cobol
css
cucumber
dtd
dylan
eiffel
erlang
eruby
eterm
falcon
fortran
framescript
gitconfig
gitolite
haml
hamster
html
idlang
ishd
java
ld
liquid
logtalk
make
matlab
mma
mp
ocaml
perl
perl6
php
postscr
pov
prolog
python
r
readline
rpl
ruby
sass
sdl
sml
sqlanywhere
tcl
tcsh
tex
tf
tilde
treetop
vb
verilog
vhdl
vim
xf86conf
xinetd
xml
zimbu
I haven't updated my usr/local/share/vim/vim73 files since adding in this patch, are there updated vimfiles that I should be using? If not, is there a plan to update these indent files?
If not, is there a way to make the change less breaking? It seems like there should be a "indent_level()" function of some sort for indenters to use now that &sw can no longer be trusted.
Are people happy with re-using indent() here or should we add a shiftwidth() function?
Maintainers are going to be the bottleneck here. What's usual policy for backwards incompatible changes? This is an interesting case in that it's an opt-in backwards-incompatible change, so it won't break anything unexpectedly. But how do we announce to people that they need to update, and can we update a chunk of the runtime files ourselves?
The easy solution is to use (&sw?&sw:&ts) in place of shiftwidth() and just recommend that people use shiftwidth() going forward. But if that's too ugly then yeah I can go through and add s:Shiftwidth() to things.
Here are the fixed ones: