2011-10-21 14 views
2

私はScala用のIDEを書く作業をしており、何か助けが必要です。私は、ユーザがピリオド( "。")またはスペース( "")を押したときにオプションのリストを表示できるように、コーディング支援を実装したいと思います。例えばプロジェクトがリストの場合、ユーザーが「プロジェクト」を入力するとすぐにまたは "プロジェクト"、私はscala.Listのすべてのメソッドを表示したい(通常のIDEのもの)を使用することができます。私はscala.tools.nsc.interactiveパッケージがこの機能を提供していることを知っていますが、私はそれを行う方法を理解することができません。また、対話型パッケージはREPLを使用し、この目的のためには遅くなるようです。それは正当な仮定ですか、そうなら代替手段がありますか?Scala Help needed - コード補完

また、リテラル/メソッド(すべてがコードベースで参照されるメソッド)のコール参照ツリーを取得する方法はありますか?

おかげで、敬具 アイシュワリヤー

+1

対話型パッケージはREPLを使用しません。 REPLのものはほとんどが 'scala.tools.nsc.interpreter'です。私がプレゼンテーションコンパイラを持っているというコンセプトが好きなのは、スカラのバージョンをアップグレードするとき、コンパイラの一部として出荷されるため、常に最新の言語構文をサポートするということです。インタラクティブな使用のために高速になるように設計されています。私は、さまざまなエディタや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