Mike,
I've had a look at this and I now understand what the problem is. Let me explain all the details so that we can try to work out what the right solution could be.
Since vim's idea of what a 'u' must undo is very different from VS's own, I needed to group actions for ViEmu's undo to emulate vim faithfully. For example, "c$hello" involves a deletion and some typing, and 'u' must undo this, while VS would consider both separate actions when undone with Ctrl-Z.
The problem with grouping is that, if you intersperse non-ViEmu actions in between ViEmu operations, they won't be grouped (neither VS nor R# or any other add-in will insert the ViEmu undo-group markers, which show up as "---" in the undo queue). Thus, in the absence of markers, ViEmu will consider them all a group, and undo them at once.
The grouping mechanism that ViEmu uses is based on markers, rather than begin/end grouping somehow, as I determined this to be the least problematic mechanism over the years. Believe me, VS's undo mechanism is not prepared for solid external usage like ViEmu requires.
Obviously, the way to solve this would be to add group markers to external actions, but I would need to determine a way to do this. Would adding a marker when a key is pressed be a good solution? Of course, only if there has been some kind of action performed! I think I would have to add a user setting for this and have it off by default, as it can be problematic in some cases, and I doubt many people will really want it.
I'll be happy to hear your thoughts on the issue, and I'll try implementing a test version of this after I get feedback on this.
Regards,
-- Jon