Each plugin as one list, and one markup.
So it is possible that a markup can act an several actions.
But usually the list has just one action.
And then you can have many instances of the plugin.
The plugin just holds the list. The list on the plugin is searched when a button is pressed. So the actions do NOT need to be on any of synedits own lists. (I need to make some changes to allow differentiate selected text).
-------------
For the end user:
all you do is
p := TPlugin.Create(SynEDit);
p.MouseActions.clear;
p.MouseActions.Add(....);
p.MarkupInfo.FrameColor....
// or less elegant (p.Markup is the TMarkup module)
p.Markup.MarkupInfo.FrameColor....
// and same for the event / callbacks
- the plugin creates and adds a markup
- the plugin owns the action list, but it will set a copy of it to the markup