Next step is to publish MarkupInfo for each color. So you can decide the colors (frame, text, background), underline, style.
If you whant to have colors by keyord we need multiple arrays of MarkuInfo and we have to store the desired color array in the FoldAction
and we also have to have levels per color array.
Actually no it does not go into FoldConfig....
Markup should not know about the language, yes, but... that refers to hard coded.
There be nothing wrong with having a config like
foo.ApplyToBlockType: integer;
and in IDE/User code setting
foo.ApplyToBlockType:= ord(cfbtIfThen);
This may be a list of integers, since there probably be groups.
Or you have the group mapping separate. (map each block-type to a group)
---------------------------
Then either have multiple lists of markup info, or subclass Markupinfo and add a property (either ApplyToBlockType or ApplyToBlockGROUP (if you have group mapping)
You can then internally filter the markup list into a list for each group.
------------------------------
The other challenge is to find a good representation in IDE options. So users can easily set it up.
I once had the problem with mouse-options. I ended up with 2 pages. One for easy config. And an advanced one....