Hmm. Emacs' indentation is one of the things I've had to fight hardest. It's extremely opinionated, and it's almost always wrong for each new language I teach it about, and it took a lot of convincing to indent C and Java the way I want.
The way it defaulted to using smart fill (i.e. use indent div 8 tabs followed by indent mod 8 spaces), so that indentation had this mix of indent and spaces, gah.
It's bad enough that I wrote my own plain non-smart auto-indent (just replicate indent of previous line) to get by in modes I couldn't convince to be sane.
The fact that there is no real unification for your preferred indentation step is really telling. I have a big block configuring c-basic-offset, js-indent-level, css-indent-offset, etc. - a big random bag of different variables that affect different subsets of language modes, depending on their lineage.