For each family, we currently need to specify the style from scintilla.iface that the family will use.
Example:
start_style CSL_DEFAULT
end_style CSL_REGEX
This isn’t surprising, as the code in scintilla.iface
reads like so:
# Template: client-side language # Start at 30
val SCE_UDL_CSL_DEFAULT=30
val SCE_UDL_CSL_COMMENT=31
val SCE_UDL_CSL_COMMENTBLOCK=32
val SCE_UDL_CSL_NUMBER=33
val SCE_UDL_CSL_STRING=34
val SCE_UDL_CSL_WORD=35
val SCE_UDL_CSL_IDENTIFIER=36
val SCE_UDL_CSL_OPERATOR=37
val SCE_UDL_CSL_REGEX=38
However I found Scintilla.iface in the Komodo source code on Github, here:
And I searched the whole document, the keywords like SSL_DEFAULT, CSL_DEFAULT, etc., do not show up anywhere in that file. Then I tried to use a keyword like so:
state IN_CSL_DEFAULT
'#' : paint(upto, CSL_DEFAULT), => SCE_C_PREPROCESSOR
Because the help doc makes it sound like we can use the style keywords from the Scintilla.iface file, but it just errors out saying “Style SCE_UDL_SCE_C_PREPROCESSOR is unknown.”
Well, it seems, that from what I have been able to gather from the documentation, that it is not possible to add this kind of support through UDL, it seems UDL is extremely limited in that it can only style the basics, such as keywords, comments, operators, identifiers, and brackets. If you want to add support for functions, classes, preprocessors, etc., there must be another way to do it (with Python maybe?), but the documentation is non-existent. Aside from editing the built in languages and recompiling I’m not so sure this can be done.
You have to re-write most of the CodeIntel logic if you want to add support for functions, classes, etc. So it means you MUST know what you do, your Python skills should be similar with… I don’t even know how much you must know about Python, CodeIntel, UDL and Scintilla.
So @toddw can say more about that (btw I was interested in adding new Element Types for Komodo but it’s very hard to me and I sure it’s hard to Todd too).
Also you can find Scintilla.iface by forking the repo to your local machine and navigate to <the source>/src/scintilla/include/
OK, thanks for the info, that was what I was afraid of, I really wanted to add better support for C and C++, but it seems a little more difficult than I have time for at the moment.