IntelliJ:自定义语言:将片段组合在其他语言中

时间:2016-03-11 21:29:27

标签: intellij-idea intellij-plugin

我正在为IntelliJ创建一个自定义语言插件。

我希望新语言的文件能够包含其他语言的文本片段。

我想支持的特定语言是HTML,JS,CSS和SQL。

我还想支持其他自定义语言(即我将为其定义语法的语言)。

我想要的主要功能是语法着色,但是如果我能得到像#34这样的东西,那就去宣言"然后重新开箱即用,那就更好了。

我的最后一个要求是可以使用我自己的代码告诉IntelliJ片段包含哪种语言;包含不同语言的片段在词法分析器/解析器级别无法区分。

简而言之,我想实现类似于PhpStorm在字符串中检测到SQL时所执行的操作:

enter image description here

我查看了IntelliJ的源代码并找到了相似的ILazyParseableElementType接口,但我不确定这是否可行(如果是这样的话 - 如何在我的代码中使用它...)

任何指针都会受到高度赞赏......

1 个答案:

答案 0 :(得分:1)

您正在寻找的Intellij功能/术语是Language Injections

Here是一个github PR,它为JFLex文件实现了非常相似的功能。

简而言之,您需要实现一个LanguageInjector并将其作为plugin.xml添加到您的<languageInjector implementation="YourImplClass">中。