去年我为Visual Studio编写了语言服务,为NHaml文件添加了语法高亮显示:http://github.com/snappycode/hamleditor。
为了澄清,NHaml是一种html模板语言,可以混合使用像aspx文件那样的代码元素。此插件添加了对IDE的支持,用于编辑NHaml文件,但基本上只添加语法高亮。
我想知道是否有人知道如何在服务中添加内联c#intellisense,就像你现在在aspx文件中那样。我希望如果没有完全针对插件执行整个c#语法,那将是可能的。
有没有人写过混合语言的语言服务?
更新: 看起来火花视图引擎的人已经在这里取得了一些进展,我正在调查他们的实现
答案 0 :(得分:2)
我检查了Spark View引擎,他们似乎已经制作了一个通用的ATL东西(称为SparkLanguagePackageLib),实际上似乎并没有包含任何Spark特有的东西。它似乎只是一个通用的C#intellisense库,需要以下内容:
然后你可以打电话:
events.OnGenerated(
primaryText, // original source code
entry.SourceCode, // generated sourcecode
cMappings, // mappings between the two
ref mappings[0], // ?
cPaints, // ?
ref paints[0]); // ?
我试图在那个C ++库中找到特定于Spark的东西,但我找不到任何东西:everythig spark-related被拆分为一个单独的C#代码文件。我认为这很好,因为:
顺便说一下。你还在使用这个NHaml Intellisense图书馆吗?如果不是,我会尝试修补它们的实现,希望它可以很容易地转换为NHaml。
答案 1 :(得分:1)
答案 2 :(得分:1)
我终于设法修改代码以支持NHaml。这根本不是那么难。不幸的是,最初的NHaml库不支持所需的一切,所以我不得不为NHaml创建一个新的解析器。它不支持所有构造,但它支持大多数构造(足以使NHaml编程更容易)
答案 3 :(得分:0)
您可以通过创建或修改usertype.dat文件轻松add keywords。有关附加到特定文件扩展名的某些说明,请查看here。这可能至少部分地解决了这个问题,而无需重做完整的c#语法。
(事实上,在这种情况下,我不确定你的'语法高亮'是什么意思。例如,我确信你可以在编辑器中免费获得大括号匹配突出显示。)