我正在为IntelliJ创建一个自定义语言插件。
我希望新语言的文件能够包含其他语言的文本片段。
我想支持的特定语言是HTML,JS,CSS和SQL。
我还想支持其他自定义语言(即我将为其定义语法的语言)。
我想要的主要功能是语法着色,但是如果我能得到像#34这样的东西,那就去宣言"然后重新开箱即用,那就更好了。
我的最后一个要求是可以使用我自己的代码告诉IntelliJ片段包含哪种语言;包含不同语言的片段在词法分析器/解析器级别无法区分。
简而言之,我想实现类似于PhpStorm在字符串中检测到SQL时所执行的操作:
我查看了IntelliJ的源代码并找到了相似的ILazyParseableElementType接口,但我不确定这是否可行(如果是这样的话 - 如何在我的代码中使用它...)
任何指针都会受到高度赞赏......
答案 0 :(得分:1)
您正在寻找的Intellij功能/术语是Language Injections。
Here是一个github PR,它为JFLex文件实现了非常相似的功能。
简而言之,您需要实现一个LanguageInjector
并将其作为plugin.xml
添加到您的<languageInjector implementation="YourImplClass">
中。