Currently when a plugin makes changes only the final edit/navigation operations are recorded. This causes features that change the cursor position based of the current position to fail since NotePad++ only records the position the cursor went to. So when playing back the macro, the plugins logic is not executed, it just jumps to the cursor position that was record into the macro.
This patch allows plugins to block the recording of edit/navigation operations while the plugin command is executing, then add a "pluging macro operation" to the recorded macro that will call back into the plugin with arbitraty data to allow the plugin to "do the right thing"
The problem is part of the "plugin macro operation" is a pointer to a function to call with the operation data. While this works, these pointers cannot be reliabaly saved and would break the persistant macro feature.
I would have posted the patch to the forum to solicit feedback on the best way to aproach this issue but I see no way to attach files to forum posts, so I am posting it here so that I may cross reference it from a forum post.