你们有人成功地将词法分析器添加到 scintilla 中吗?

我一直在遵循以下简短说明 http://www.scintilla.org/SciTELEXer.html - 甚至发现了秘密的额外说明 http://www.scintilla.org/ScintillaDoc.html#BuildingScintilla (更改词法分析器集)

一切都会编译,我可以将词法分析器添加到 SciTE 中,但我的 ColouriseMapfileDoc 方法不会被调用(printf 不会生成输出)。如果我将相同的代码添加到例如ColouriseLuaDoc 词法分析器,一切都很好(printf 产生输出)。

具体来说我有

  1. scintilla/include/Scintilla.iface, , 添加 val SCLEX_MAPFILE=99
  2. 以及任何词汇类 ID
  3. 在 scintilla/include 目录中运行 HFacer.py 并确认 SciLexer.h 文件已更改。
  4. 已创建 LexMapfile.cxx 与一个 ColouriseMapfileDoc 功能
  5. 在文件末尾将词法分析器 ID 和名称与函数相关联:

    LexerModule lmMapfile(SCLEX_MAPFILE, ColouriseMapfileDoc, "mapfile");

  6. 跑步 LexGen.py 生成所有 makefile(按照秘密说明)

  7. 通过克隆创建新的 SciTE 属性文件 scite/src/others.properties
  8. 设置一些样式
  9. scite/src/SciTEGlobal.properties 添加 $(filter.conf) 的定义 open.filter.
  10. 将此语言添加到 SciTE 的语言菜单中,
  11. 建造了 Scintilla 和 SciTE。
  12. 嘟囔着,咒骂着。

除了第 12 步之外,我做错了什么?

有帮助吗?

解决方案

如果将来有人读到这个问题 - 你还必须添加一行import yourformatSciTEGlobal.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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top