2013年6月19日水曜日

[Emacs][Racket] Geiserを使う

Realm of Racket を読みながら Racketを使い始めた。Racketは、標準でIDEを提供しており、面倒な環境構築しなくても、すぐにプログラムを実行できるようなっている。そのIDEを少し使ってみたが、キーバインドをEmacsに変更できないようなので、非常に使い難かった。調べてみると、Emacsで Geiser を使えば、Racketが使えることが分かった。

GeiserはSchemeインタープリタであるRacketまたはGuile用のメジャーモードを実現するもので、Slimeのようなインタラクティブ環境を利用可能になる。

インストール


実行環境

OS: Ubuntu12.04
Emacs: 24.3 (自分でmake,installしたもの)
Racket: 5.1.3(Ubuntu12.04標準)

Geiserのサイトの説明を見ると Racketのバージョンは5.3以上を推奨しているが、5.1.3でも一応動いた。
そのうちRacketを最新版にしよう。

Geiserのインストール

GeiserはELPAでインストールすると簡単だ。Marmaladeリポジトリからインス
トールできる。次のようにして、パッケージインストーラーがMarmaladeリポ
ジトリを参照できるようにする。

(require 'package)
;; Marmaladeを有効にする
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/") t)


package-installコマンドでインストールする。

M-x package-install RET geiser RET

geiserは ~/.emacs.d/elpa/geiser-0.3/ にインストールされる。
init.elに次の設定を追加する。

;;; Geiser
(add-to-list 'load-path "~/.emacs.d/elpa/geiser-0.3/")
(require 'geiser)


Geiserの起動

次のコマンドで起動する。

M-x run-geiser

「Start Geiser for scheme implementation: 」と聞いてくるので、
racketを入力する。
しばらく待つとREPLが起動する。

M-x run-geiser は毎回、どのschemeを使うか聞いてくるので、init.elに

(setq geiser-active-implementations '(racket))

を書いておけば、常にracketになる。



Mini bufferに関数の説明が出たり、TABでコード補完が効くので、Slime同様に、かなり便利だ。

http://www.nongnu.org/geiser/geiser_3.html#The-REPL によると、

  • swank-server/slime-connectのように、外部のschemeへ接続
  • 名前空間の切り替え (Racketはnamesapceを持っているようだ)
  • コンパイル時のエラーハンドリング (エラー箇所は色が変わるようだ)
  • ドキュメントの表示
  • イメージの表示 (Racketはイメージオブジェクトをサポートしているようだ)

と、様々な機能がある。
しばらくの間、この環境でRacketのコードを書いて遊ぼう。

参考URL