about the updating of last X for every active command-based selection change, I think it's acceptable because it is natural. the only reason to have a last X in the first place is when you are temporarily extending the selection by cursoring up and down using the arrow keys and you don't want your caret point location to keep changing randomly.