2012-01-20 13 views
10

私はScalaの開発をEmacsでやっていますが、時々、REPLを使ってコードの断片をテストしたり、今書いたコードを読み込んでテストしたりしています。私はScala 2.9.1を使用しています。私は、REPLをターミナル・バッファにオープンすると、事態が大きく壊れていることに気付きました。特に、現在の行から文字を削除することはできず、現在の行でカーソルを後ろに移動することはできません。これは私が何かミスタイプを入力すると、非常にイライラしています。私はコマンドを新たに開始しなければなりません。 Emacsの下でScala REPLを使用して誰かがこの問題を抱えているのかどうか、誰かが潜在的な解決策を持っているのだろうかと思っていました。Scala REPL in Emacs

+0

Emacs内でREPLをどのように起動していますか? – leedm777

+0

私はansi-termで新しいバッファを開きます。次に、そのターミナルバッファーで、私は直接 "scala"を呼び出すか、sbt consoleを使ってREPLを開始します。いずれにしても、この問題が発生するようです。 – nomad

+1

シェルで新しいバッファを開き、シェルからスカラまたはsbtを開始する方がよいかもしれません。 – leedm777

答えて

8

私はrlwrap(readline wrapper)がemacsのansi-termとscalaでうまくいきます。 "rlwrap scala"を呼び出すだけで、通常のbash行編集と履歴が正しく動作します。ボーナスとして、履歴は複数のスカラ呼び出しにまたがるため、Scala REPLを終了した後に入力したものすべてを失うことはありません。

rlwrapが機能しない場合は、ansi-term(デフォルトではCx Cj)の行モードに切り替えるだけで、emacs形式の編集を行に使用できますが、シェルの歴史や完了。

Ensimeについてはすでに言及されていますので、セットアップに関わらない場合は素晴らしいオプションとして2番目に表示されます。

+0

チップのおかげで。これは私のためにかなりうまくいくようです。実際に、私はコマンド履歴を与えるので、私はEnsimeのアプローチよりもrlwrapのアプローチが好きです。今のところ、rlwrapアプローチを使ってEmacs経由でREPLを呼び出す唯一の残っている制限は、タブ補完を使用できないことです。 – nomad

+0

emacsを使ってREPLでタブ補完をどうやって手に入れましたか? – CodeKingPlusPlus

7

ENSIMEfollow instructionsをインストールすることができます。 REPLを呼び出す方法はわかりませんが、REPLはENSIMEの動作から呼び出されます(カーソルを後ろに移動してシンボルを削除することができます)。

+2

チップをありがとう。 EnsimeからREPLを呼び出すように見えますが、この問題は解決しますが、いくつか紹介します。特に、Ensimeを介して呼び出されるREPLはコマンド履歴を持たず、タブ補完ができないように見えます。 – nomad

+1

ENSIMEの+1、ENSIMEは涼しい –

関連する問題