Furthermore if your coding style imposes some kind of width restriction you also have to commit to a certain tab width anyway.
Beyond that if you really value configurability it's a bit odd to limit yourself to "I want to configure tab width". How about bracket positions, spacing between operators, variable names etc... ? All these seems are arguably more important for readability and code understanding than indentation. Ideally programming languages would be stored as abstract syntax trees that you can display however you like but we're still using dumb all ASCII text files.
In theory tabs are mildly superior to spaces, pragmatically it's spaces all day every day as far as I'm concerned.
It shouldn't be left to the devs.
All languages should have something like Go's gofmt -- or even better, mandatory whitespacing/tabs rules. If you don't respect them (which the auto format tool could help you automatically do), the program shouldn't compile.
It exists `clang-format`
But they're not widely accepted by most languages devs (like gofmt is by Go programmers), nor is their use enforced by the compiler (even in Go).
I have no issue whatsoever with using tabs in an editor, as long as it saves them as spaces on disk.
The only valid argument is that mixing spaces and tabs for indentation messes things up, but that argument works both ways so doesn't support either side in this never ending argument.
That means that if you want to avoid a mixed codebase it is far easier to get to and stay at spaces only than tabs-for-indent, spaces-for-alignment.
You wouldn't need to customize anything, it would look good at all tab widths and people who prefer 2 space sized indents would be able to use that in their editors.
Actually, it could be even better, we could use tabs for aligning to tables too if editors supported elastic tabstops [0]. Unfortunately, the only ones that do don't support other essential features like saving when they lose focus.
Please note that i disagree with how the example aligns function params. The space/tab there looks bad and params should be aligned with spaces using a formatting tool (which every sane language should have).
Or, y'know, scratch that, why don't we commit the AST (enhanced to include comments and other hints like blank lines) to git and let everyone use their formatting.
</rant>
Of course you can also configure all the alphanumeric characters by changing your terminal font. I'm only half joking - it's not supposed to be important what the letters look like, only what they mean. ASCII art is not guaranteed to look good, whether or not it uses tabs.
Cool example on BEL.