2011-10-21 140 views
2

我正在为Scala编写一个IDE,需要一些帮助。我希望实现编码协助,以便在用户按下句点(“。”)或空格(“”)时显示选项列表。例如如果项目是列表,只要用户输入“项目”即可。或“项目”,我想展示他可以使用的所有scala.lib的方法(常规IDE的东西)。我知道scala.tools.nsc.interactive包提供了这种功能,但我无法弄清楚如何去做。此外,交互式软件包似乎会使用REPL,并且为此目的会很慢。这是一个公平的假设,如果是的话,有没有其他的选择?需要Scala帮助 - 代码完成

另外,有没有一种方法,我可以得到一个文字/方法的调用引用树(其中所有是在代码库中引用的方法)?

感谢和问候 艾西瓦娅

+1

交互式包不使用REPL。 REPL的东西大多是'scala.tools.nsc.interpreter'。我喜欢使用表示编译器的概念是,在升级scala版本时,它总是支持最新的语言语法,因为它是作为编译器的一部分提供的。它旨在快速交互式使用。我认为它可以成为在各种编辑器和IDE中具有优秀Scala支持的基石。 – huynhjl

+0

谢谢大家。我在https://github.com/asinghal/SlateIDE/blob/master/src/net/slate/editor/completion/ScalaCodeCompletor.scala中实现了代码完成(以防万一需要它)。 – aishwarya

回答

2

好吧,你最好的选择正在经历相同的一组我的答案提供给this question链接,即使问题是不同的。

2

是的,在scala.tools.nsc.interactive下的表示编译器是可重用功能的地方。

演示编译器由Eclipse和ENSIME使用。可能是ENSIME本身,除了提供emacs支持外,还提供服务器作为编辑器的后端将是一条好路径。

演示编辑器不慢。它从根本上设计为Eclipse提供良好的性能,并在很大程度上实现了此目标。

对于某些演示编译器功能,请参阅scala.tools.nsc.interactive.CompilerControl

对于另一个使用ENSIME的项目,请查看Daniel Spiewak's plugin的jEdit。

+0

感谢提示家伙!让我试试这些,我会更新组。 – aishwarya