向 scintilla/scite 添加新的词法分析器(...以及最终的 wxPython StyledTextCtrl)
-
18-09-2020 - |
题
你们有人成功地将词法分析器添加到 scintilla 中吗?
我一直在遵循以下简短说明 http://www.scintilla.org/SciTELEXer.html - 甚至发现了秘密的额外说明 http://www.scintilla.org/ScintillaDoc.html#BuildingScintilla (更改词法分析器集)
一切都会编译,我可以将词法分析器添加到 SciTE 中,但我的 ColouriseMapfileDoc 方法不会被调用(printf 不会生成输出)。如果我将相同的代码添加到例如ColouriseLuaDoc 词法分析器,一切都很好(printf 做 产生输出)。
具体来说我有
- 在
scintilla/include/Scintilla.iface
, , 添加val SCLEX_MAPFILE=99
- 以及任何词汇类 ID
- 在 scintilla/include 目录中运行
HFacer.py
并确认SciLexer.h
文件已更改。 - 已创建
LexMapfile.cxx
与一个ColouriseMapfileDoc
功能 在文件末尾将词法分析器 ID 和名称与函数相关联:
LexerModule lmMapfile(SCLEX_MAPFILE, ColouriseMapfileDoc, "mapfile");
跑步
LexGen.py
生成所有 makefile(按照秘密说明)- 通过克隆创建新的 SciTE 属性文件
scite/src/others.properties
- 设置一些样式
- 在
scite/src/SciTEGlobal.properties
添加$(filter.conf)
的定义open.filter
. - 将此语言添加到 SciTE 的语言菜单中,
- 建造了 Scintilla 和 SciTE。
- 嘟囔着,咒骂着。
除了第 12 步之外,我做错了什么?
解决方案
如果将来有人读到这个问题 - 你还必须添加一行import yourformat
在 SciTEGlobal.properties
. 。这是未记录的步骤 9b。
其他提示
如果有人将来阅读了这个问题 - 您还必须添加一行在sciteglobal.properties中导入您的format。这是未记录的步骤 9b。
不再需要此步骤。我编译了 3.2.2,这是通过 import * 完成的。不过,其余步骤仍然完整且相关。
我直接将一个词法分析器拧入 scintilla/lexer/LexOthers.cxx
如中所述 http://www.scintilla.org/SciTELEXer.html。对于 scite 3.2.3 缺少步骤 5b 是您需要添加 LINK_LEXER(lmYouLexerMod);
在 scintilla/src/Catalogue.cxx
.