- Common LispサポートのためのEmacs拡張
- Swankというバックエンドがあり、Swank RPCプロトコルで通信する
- Swankのプロトコルを実装すればSLIME以外でも使える
- SLIME (Emacs)
- slimv.vim (Vim)
- atom-slime (Atom)
- サーバマシンでSwankサーバを起動する
(require 'swank)
(swank:create-server :port 4005)- リモートマシンからSwankサーバに接続する
SSHトンネリングする場合
ssh -L 4005:localhost:4005 user:example.host.com
- Emacsから接続(ホストとポートを聞かれる)
M-x slime-connect
- REPLで評価結果にカーソルを合わせて
M-x slime-inspect-presentation-at-point
- データ構造も潜れる(リスト、配列、構造体、クラスオブジェクト、ハッシュ表など)
- 要素にポイントして Enter
- 戻る: l
- 進む: n
- 抜ける: q
- 多値の例
(dex:get "http://www.google.com")- オブジェクトを評価してインスペクタを起動
- インスペクタ内で一番上の行をポイントして . (ドット)
- 例
関数オブジェクトの例
#'dex:getCLOSオブジェクトの例
(local-time:now)- インスペクタ内でオブジェクトをポイントした状態で M-RET
- REPLから * でアクセスできる
- 例
(plump:parse (dex:get "http://www.google.com/"))- オブジェクトにカーソルを当てて i
- デバッガ内で : でその環境で式を評価できる
- 値の差し替えはできない?
みたいな感じでできてますね(手元のLispWorksでは)
ちなみにレキシカル変数の書き換えは処理系によって方法がちがったりするとは思いました