Sublime has currently no concept of shiftwidth, a plugin is needed.The implementation may be tricky, as a simple replace of \t with 8 spaces gives an undesired result having a situation like this (ts=8 sw=4)

Hmm you could programmatically change "translateTabsToSpaces" to false and then back to true...

Actually a better way to do this would be to set "translateTabsToSpaces" to False, set the tab size to 8, and overload the tab key to insert 4 spaces instead of a tab.You would still need the onPreSave to replace the 8-spaces to a tab char.