前回はQuicklispによるライブラリ管理について説明しました。今回はSLIMEの
基本的な使い方について説明します。
SLIMEとは
SLIMEは(Common) Lispのための統合開発環境(IDE)です。他のIDEとは異なり、
対話的にプログラムを構築できるのが特徴です。一度ハマれば他の開発環境は
使えなくなるでしょう。詳しい情報は次のURLを参照してください。
http://common-lisp.net/project/slime/
インストールと設定
SLIME
SLIMEのCVSスナップショット(本家推奨)をインストールします。OSは
GNU/LinuxやMac OS XなどのUNIX系OSを想定しています。
1 2 3 4 |
$ wget http://common-lisp.net/project/slime/snapshots/slime-current.tgz $ tar xvzf slime-current.tgz $ mv slime-* ~/.emacs.d/slime |
展開したディレクトリはslime-2011-04-07
のような名前になりますが、ここ
ではslime
という名前で~/.emacs.d/
直下に移動します。
次にEmacsの設定を行います。次のコードを~/.emacs
に書いてください。
1 2 3 4 5 6 7 8 |
;; Clozure CLをデフォルトのCommon Lisp処理系に設定 (setq inferior-lisp-program "ccl") ;; ~/.emacs.d/slimeをload-pathに追加 (add-to-list 'load-path (expand-file-name "~/.emacs.d/slime")) ;; SLIMEのロード (require 'slime) (slime-setup '(slime-repl slime-fancy slime-banner)) |
これで基本的な設定は完了です。
popwin.el
使い始めれば気付くと思いますが、SLIMEは事あるごとにEmacsのウィンドウを
分割したり、他のウィンドウのバッファを切り替えたりします。これではせっ
かくの優れた開発環境も台無しです。そこで、拙作のpopwin.elをインストール
することをお勧めします。popwin.elはウィンドウの分割等を極力抑制し、プロ
グラマが快適に作業することを助けてくれる優れものです。
インストール方法や使い方は次のURLを参照してください。
http://d.hatena.ne.jp/m2ym/20110120/1295524932
インストールが完了したら次のコードを~/.emacs
に書いてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
;; Apropos (push '("*slime-apropos*") popwin:special-display-config) ;; Macroexpand (push '("*slime-macroexpansion*") popwin:special-display-config) ;; Help (push '("*slime-description*") popwin:special-display-config) ;; Compilation (push '("*slime-compilation*" :noselect t) popwin:special-display-config) ;; Cross-reference (push '("*slime-xref*") popwin:special-display-config) ;; Debugger (push '(sldb-mode :stick t) popwin:special-display-config) ;; REPL (push '(slime-repl-mode) popwin:special-display-config) ;; Connections (push '(slime-connection-list-mode) popwin:special-display-config) |
ac-slime
ac-slimeはauto-complete.elのSLIME拡張です。SLIME(SWANKサーバー)の情報を
利用するため、非常に高精度のコード補完が行えます。
ac-slimeは次のURLから入手できます。
https://github.com/purcell/ac-slime
なおauto-complete.elをあらかじめインストールしておく必要があります。イ
ンストールしていない方は次のURLを参照してください。
http://cx4a.org/software/auto-complete/index.ja.html
ac-slimeをインストールするには、先のURLからac-slime.elをダウンロードし、
load-pathの通ったディレクトリにコピーします。install-elispや
auto-installがある場合は次のコードを評価することでインストールできます。
1 2 3 4 5 |
;; install-elisp (install-elisp "https://github.com/purcell/ac-slime/raw/master/ac-slime.el") ;; auto-install (auto-install-from-url "https://github.com/purcell/ac-slime/raw/master/ac-slime.el") |
最後に~/.emacs
に次のコードを書いてインストール完了です。
1 2 3 4 |
(require 'ac-slime) (add-hook 'slime-mode-hook 'set-up-slime-ac) (add-hook 'slime-repl-mode-hook 'set-up-slime-ac) |
これで.lispファイルやREPLでauto-complete.elを使った自動コード補完が行え
るようになりました。
SLIMEの使い方
SLIMEの起動
インストールと設定が完了したらM-x slime
とやってみましょう。次のような
表示の*slime-repl ccl*
というREPLバッファが表示されれば成功です。
1 2 |
CL-USER> |
SLIMEを使って開発するに際して、まずやることはこのM-x slime
です。これ
を行わなければ、後で説明するエディタコマンドやインデント、コード補完、
その他諸々が全く機能しません。まずM-x slime
、これだけ覚えておいてくだ
さい。
なお表示されたREPLバッファはちょっとした確認などを行ったりする場合を除
いて基本的には使用しません。
SLIMEの操作
SLIMEを起動して次にすることはlispファイルを開くことです。試しに
foo.lisp
などの適当なファイルを開いてください。
lispファイルのメジャーモードはlisp-mode
です。このモードには様々なキー
が割り当てられていますが、今回はその中でも覚えておくべきキーバインドを
紹介します。
C-c C-c
C-c C-c
は現在ポイントしているトップレベルフォームをコンパイルします。
例えば次のような関数を編集しているとします。
1 2 3 |
(defun f (a) "Hello, World") |
ここでC-c C-c
すると関数f
がコンパイルされます。実際にやってみれば分
かると思いますが、上の関数をコンパイルすると、SLIMEは変数a
が未使用で
あると警告してくれます。もし警告があればそれを修正してC-c C-c
、という
のが基本的な開発サイクルになります。
C-c C-k
C-c C-k
は現在のファイルをコンパイルしてロードします。トップレベルフォー
ムを一つずつC-c C-c
するのが面倒なときに重宝します。また、C-c C-c
同
様、ソースコードに問題があれば警告してくれるので、ファイルの最終的な確
認にも利用できます。
C-c C-z
C-c C-z
は現在接続しているサーバーのREPLバッファを表示してくれます。何
か確認したいときや、前回紹介したQuicklispでライブラリをロードしたいとき
にC-c C-z
します。例えばCL-TEST-MOREというライブラリをロードし忘れてい
たとしたら、C-c C-z
でREPLバッファを表示して、次のように入力します。
1 2 |
CL-USER> (ql:quickload :cl-test-more) |
REPLは使いこなせば非常に強力なので是非活用してください。
困った時
より本格的な開発サイクルは次回で説明しますが、SLIMEにおけるEmacsの
C-g
的な存在としてM-x slime-restart-inferior-lisp
を紹介しておきます。
これは現在接続しているサーバーを再起動してクリーンな状態に戻すコマンド
です。SLIMEで開発していると、変にシンボルがインターンされたり、おかしな
値の変数ができたりします。また、正しく動作しているとしても、実は古い変
数などが残っていて偶然動作しているだけだったりもします。そういった状態
をリセットするのにM-x slime-restart-inferior-lisp
は非常に便利です。是
非覚えておいてください。
まとめ
今回は「SLIMEの使い方 基礎編」ということで、SLIMEのインストールと設定、
および非常に基本的な使い方を紹介しました。実際のところ、今回の内容だけ
でSLIMEで開発を行うにはかなり情報が不足しています。Common Lisperなら気
付いていると思いますが、パッケージの扱いなど、様々な重要な点を端折って
います。次回以降、より実際的なSLIMEの使い方を紹介していきたいと思います。
最近のコメント