2010年12月30日木曜日

Meadow で Scala - 空白を含むパスはトラブルの元

Notepad++ で Scala を書く場合、起動は軽いけれどコードの補完をしてくれない。 Eclipse では 補完はしてくれるけれど起動が遅く、メモリの消費が大きい。補完も今一な気が。。 (+_+) やっぱ Meadow を使うのがいいのかな?

上記を参考に Meadow で Scala を利用できるようにした。

 

Scala のインストールされているディレクトリへのパスが空白を含まないように変更

しかし、当初 scala-mode を使えるように設定した後、 REPL を起動しようと M-x scala-run-scala を実行したら、

'c:\Program' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

とエラーが表示された。

これは、scala を c:\Program Files\scala にインストールしていたのがダメだったようだ。 c:\scala に再インストールしたら scala-run-scala で起動できるようになった。

 

elisp のあるディレクトリへのパスが空白を含まないように変更

次に ENSIME を利用するための設定をした後、M-x ensime を実行。しかし、

Failed to connect to Swank: server process exited.

とエラーが表示される。

The Swank Protocol について調べても判然とせず。

The Emacs ENSIME client communicates with the server using the Swank protocol.

と説明があるので、server を起動していそうなバッチファイルを、ENSIME をインストールしたディレクトリにおいて適当な引数を与えて実行。(cf. scala - How to make ensime work in windows? - Stack Overflow)

bin/server.bat 12345

結果はコマンドラインに、

server listening on XXXXX

と表示される。これに対して telnet で

telnet 127.0.0.1 XXXXX

と試みると接続がされる。Meadow において、M-x ensime-connect をしても同様に接続可。

ところで、複数の PC で Meadow の設定を共有するために設定ファイル・elisp は Dropox へ置いている。エラーの原因はまたもこのパスだった。

Dropbox へのパスは以下の通り、空白が含まれていた。

C:\Users\ユーザ名\Documents\My Dropbox

これを Dropbox の Preferences > Advanced の ‘Dropbox location’ にて、空白を含まない場所へ変更。

C:\Users\ユーザ名\Documents\Dropbox

これにより、M-x ensime で ENSIME を実行すると、正常に動作してくれるようになった。

 

関連記事