(based on experiences w/ v4.3pre6)
The undo system should (optionally?) track all caret
movement in conjunction with edits. When undo is
called, caret movement is also undone, in order, with
edits. Caret should be positioned so that, after an
edit-undo, the user can immediately start typing again,
without repositioning the caret. For caret movement,
each undo call undoes one caret movement, i.e.
equivalent to the caret movement keystrokes, left,
right, up, down, pgup, pgdn, etc. An(other) option for
the undo system to compress consecutive caret movements
(e.g. 50 consecutive "right"s undone in one UNDO).