I've been looking at the changes required to support multiple carets in 13.1, and I've been thinking that it would be really useful to have a migration guide for them. The Javadoc is great (thanks!) but there are still quite a few things that are not clear to me - it would be good to get all the answers together in a document under http://confluence.jetbrains.com/display/IDEADEV/PluginDevelopment since most people with non-trivial plugins will have the same questions. I can see how to update all my EditorActionHandlers (and thus EditorWriteActionHandlers etc), that looks pretty straightforward.
- I have a TypedActionHandler which doesn't seem to have built-in support for this. I'm assuming I should define a CaretAction and use runForEachCaret from the editor's CaretModel?
- What about other entry points such as EnterHandlerDelegate and so on - should they use the same mechanism? This seems more complex because it passes caretOffsetRef and caretAdvance, it's not clear how those interact with this.
- I also use AutoPopupController.autoPopupParameterInfo - how should I handle that?
- In general, it's not clear to me how this functionality interacts with things that seem intrinsically tied to a single caret, like parameter info, code completion, doc lookup etc. Would it be possible to explain this? Do these just use the main caret?
I'm sure I'll have plenty more questions, but these are what I came up with. In general, this seems like a pretty massive change that'll break a fair few third-party plugins, it would be great to make the migration as easy as possible.