2011-10-21 176 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