Adding a new lexer to scintilla/scite (...and eventually wxPython StyledTextCtrl)
Has anyone of you successfully added a lexer to scintilla?
I have been following the short instructions at http://www.scintilla.org/SciTELexer.html - and even discovered the secret extra inst开发者_运维技巧ructions at http://www.scintilla.org/ScintillaDoc.html#BuildingScintilla (Changing Set of Lexers)
Everything compiles, and I can add the lexer to SciTE just fine, but my ColouriseMapfileDoc method just does not get called (a printf does not produce output). If I add the same code to e.g. the ColouriseLuaDoc lexer, everything is fine (a printf does produce output).
Specifically I have
- In
scintilla/include/Scintilla.iface
, addedval SCLEX_MAPFILE=99
- And any lexical class IDs
- In the scintilla/include directory run
HFacer.py
and confirmed that theSciLexer.h
file has changed. - Created
LexMapfile.cxx
with aColouriseMapfileDoc
function At the end of the file associated the lexer ID and name with the function:
LexerModule lmMapfile(SCLEX_MAPFILE, ColouriseMapfileDoc, "mapfile");
Run
LexGen.py
to generate all the makefiles (as per the secret instructions)- Created a new SciTE properties file by cloning
scite/src/others.properties
- Set up some styles
- In
scite/src/SciTEGlobal.properties
added$(filter.conf)
to the definition ofopen.filter
. - Added this language to the Language menu of SciTE,
- Built both Scintilla and SciTE.
- Grumbled and cursed.
What am I doing wrong, except maybe step 12?
In case someone reads this question in the future - you will also have to add a line
import yourformat
in SciTEGlobal.properties
. That's the undocumented step 9b.
In case someone reads this question in the future - you will also have to add a line import yourformat in SciTEGlobal.properties. That's the undocumented step 9b.
This step is no longer required. I compiled 3.2.2 and this was done with import *. The rest of the steps are still complete and relevant though.
I'm wring one lexer directly in scintilla/lexer/LexOthers.cxx
as described in http://www.scintilla.org/SciTELexer.html.
For scite 3.2.3 the lacking step 5b is that you need to add LINK_LEXER(lmYouLexerMod);
in scintilla/src/Catalogue.cxx
.
精彩评论