Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Intellij idea IntelliJ:自定义语言:组合其他语言中的片段_Intellij Idea_Intellij Plugin - Fatal编程技术网

Intellij idea IntelliJ:自定义语言:组合其他语言中的片段

Intellij idea IntelliJ:自定义语言:组合其他语言中的片段,intellij-idea,intellij-plugin,Intellij Idea,Intellij Plugin,我正在为IntelliJ创建一个自定义语言插件 我希望新语言的文件能够包含其他语言的文本片段 我想支持的特定语言是HTML、JS、CSS和SQL 我还希望支持其他自定义语言(即我将为其定义语法的语言) 我想要的主要功能是语法着色,但是如果我能得到像“go to declaration”和重构这样的东西,那就更好了 我的最后一个要求是,可以使用我自己的代码告诉IntelliJ片段包含哪种语言;包含不同语言的片段在lexer/parser级别将无法区分 简而言之,我想实现一些类似于PhpStorm在

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

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

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

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

我想要的主要功能是语法着色,但是如果我能得到像“go to declaration”和重构这样的东西,那就更好了

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

简而言之,我想实现一些类似于PhpStorm在检测(比如)字符串中的SQL时所做的事情:

我查看了IntelliJ的源代码,发现了ILazyParseableElementType接口,这似乎是相关的,但我不确定这是否是正确的方法(如果是的话,如何在我的代码中准确地使用它…)


非常感谢您提供任何提示……

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

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

简而言之,您需要实现一个
LanguageInjector
,并将其作为
添加到
plugin.xml