@darius It's worse than that. There is no goddamned reason at all that the bytes-on-disk representation of a file needs to or should ever have anything to do with code-as-it-hits-you-in-the-eyes. The tool should show you what you want however you want it and commit it to disk however the project wants and that process should be completely invisible. The answer to "tabs vs spaces" is "these tools are garbage".
@mhoye totally fair! In some sense the issue is that we encode programs as text strings to begin with, rather than as already-parsed tokens