如何使IntelliJ IDEA识别由macros创build的代码?
背景
我有一个sbtpipe理的Scala项目,为scala项目使用通常的sbt项目布局 ,也就是说,一个包含macros的子项目是一个主要的项目,它是实际的应用程序,依赖于macros的子项目。 macros是实质上为常规类生成伴随对象的macros注释 。 生成的伴随对象声明,除其他成员之外,应用/不适用的方法。
我使用sbt-idea插件来生成相应的IntelliJ IDEA项目,并使用IDEA的sbt-plugin中的sbt控制台来编译和运行我的Scala应用程序。
除了生成的伴侣对象,更重要的是它们的成员(如apply / unapply),IDEA不能识别所有的东西,所有的东西都或多或less都是正常的。 因此,我在任何地方都会得到一条曲线,例如一个应用方法。
我的设置是IntelliJ IDEA CE 133.471,在Windows 7 x64上安装了插件SBT 1.5.1和Scala 0.28.363。
问题
如何让IntelliJ IDEA识别由Scalamacros生成的代码(类,对象,方法,…)(macros注释,准确地说)?
已知其他IDE(例如Eclipse)在这种环境中能够更好地工作吗?
有关
这个问题 (不太详细)本质上是一样的,但还没有得到答复(2014-02-26)。
根据JetBrains的开发者 ,我所要求的function是在他们的长期待办事项清单上,但不会很快实施(2014-03-05)。
使用最新的Scala插件构build,有一个API可以用来编写自己的插件来支持你的macros: http : //blog.jetbrains.com/scala/2015/10/14/intellij-api-to-build -scala的macros支持/
现在,每个人都可以使用这个API来使他们的macros对他们最喜欢的IDE更友好。 为此,您必须实现SyntheticMembersInjector ,并将其注册到plugin.xml文件中:
<extensions defaultExtensionNs="org.intellij.scala"> <syntheticMemberInjector implementation="org.jetbrains.example.injector.Injector"/> </extensions>
似乎有限的支持,如果有的话。
引用此链接: http : //blog.jetbrains.com/scala/2014/01/23/heading-to-the-perfect-scala-code-analysis/
Alexander Podkhalyuzin says:
2014年1月30日上午10点13分
我们开始支持Scalamacros,但这不是一个简单的任务,所以我不能保证它会很快完成。
最好的问候,亚历山大Podkhalyuzin。