Weird place to vent. But I find it so interesting that Emacs in all it's wisdom does not have (to me) acceptable undo behavior. Sometimes when I want to undo a bit, it undoes so much that I have to do a few seconds of copy-pasting.
You should try undo tree ( http://www.dr-qubit.org/undo-tree.html ), it's a must have extension which brings proper undo-redo and a tree visualisation of history with diffs and many other options.
"The only downside to this more advanced yet simpler undo system is that it was inspired by Vim."