我检查了 Spark View Engine,他们似乎制作了一个通用的 ATL 东西(称为 SparkLanguagePackageLib),实际上似乎不包含任何 Spark 特定的东西。它似乎只是一个需要以下内容的通用 C# 智能感知库:
- 原始代码
- 从原始代码生成的 C# 源代码
- 两者之间的位置映射(例如,第 2 行 pos 5 上的代码在输出中映射到第 4 行 pos 10 等)
- 其他一些东西,比如绘画(?)
之后,您可以致电:
events.OnGenerated(
primaryText, // original source code
entry.SourceCode, // generated sourcecode
cMappings, // mappings between the two
ref mappings[0], // ?
cPaints, // ?
ref paints[0]); // ?
我试图在该 C++ 库中找到特定于 Spark 的东西,但我找不到任何东西:所有与 spark 相关的东西都被拆分为一个单独的 C# 代码文件。我认为这很好,因为:
- 您不需要编辑 C++ 文件
- 如果安装了 spark 视图引擎的智能感知支持,它也可以被其他视图引擎使用
- 您只需要创建一个类,该类在原始 naml 文件和生成的 C# 对应文件之间进行映射。
顺便提一句。你还在研究这个 NHaml Intellisense 库吗?如果没有,我会尝试修补他们的实现,希望它可以轻松转换为 NHaml。