SLIME環境再構築・・・
何がきっかけかわからないが、久しぶりにEmacsでSLIMEを起動したら動作がおかしくなっていた。具体的には、何も文法とかで間違いがなければ問題なく動作しているが、何かエラーが発生した後で復帰できなくなる。SLIMEで、何かエラーが発生すると、
Unbound variable: X [Condition of type UNBOUND-VARIABLE] Restarts: 0: [CONTINUE] Retry getting the value of X. 1: [USE-VALUE] Specify a value of X to use this time. 2: [STORE-VALUE] Specify a value of X to store and use. 3: [RETRY] Retry SLIME REPL evaluation request. 4: [*ABORT] Return to SLIME's top level. 5: [ABORT-BREAK] Reset this thread --more-- Backtrace: 0: (CCL::CHEAP-EVAL X) --more--
というようなメッセージが出る。ここで、4を押すとプロンプトに戻るのだが、これが機能しない。結局、LISPの文法ミスとかを冒してしまうと、Emacsを再起動しないと復帰できなくなる。これではさすがに使い物にならないので、ちょっと調査を開始。
まず、SLIME起動時に何かエラーが出ているのが気になった。
; Warning: These Swank interfaces are unimplemented: ; (ACTIVATE-STEPPING ADD-FD-HANDLER ADD-SIGIO-HANDLER ; COMMAND-LINE-ARGS DUP EXEC-IMAGE MAKE-FD-STREAM REMOVE-FD-HANDLERS ; REMOVE-SIGIO-HANDLERS SLDB-BREAK-AT-START SLDB-BREAK-ON-RETURN ; SLDB-STEP-INTO SLDB-STEP-NEXT SLDB-STEP-OUT SOCKET-FD) ; While executing: SWANK-BACKEND::WARN-UNIMPLEMENTED-INTERFACES, in process listener(1).
そもそも、これが原因かもわからないが、いろいろと探していてこのMLを見つけた。
http://www.clozure.com/pipermail/openmcl-devel/2010-March/011290.html
このMLから、いつの間にかClozureのサイトにSLIMEの設定方法が追記されていたことを知る。なので、SLIME環境を一から再構築した。実施したのは以下の3つ。
- SLIMEの最新版があるかを確認し、ダウンロード。ChangeLogによれば2011-09-13に最新版がリリースされている。本日が2011/09/24なので既存のものと入れ替えることにし、最新版を~/.emacs.d/lisp/slimeに展開。
- ~/.emacs.d/init.elの書き換え
- (set-language-environment 'Japanese)を(set-language-environment 'utf-8)に変更
- SLIMEのPATHを(add-to-list 'load-path "~/.emacs.d/lisp/slime")に変更
- (setq inferior-lisp-program "/opt/local/bin/ccl64")を(setq inferior-lisp-program "/opt/local/bin/ccl64 -K utf-8")に変更
- (setq slime-net-coding-system 'utf-8-unix)を追加
- (slime-setup)を(slime-setup '(slime-fancy))に変更
- ~/.swank.lispというファイルを以下の内容で作成
(swank:create-server :coding-system "utf-8-unix")
これでEmacsを再起動して、再度M-x slimeを実行。起動時のエラーは解消されていないようだが、とりあえず、文法をミスした際に復帰できなくなる問題は解消した。
ちょくちょくClozureのサイトは見に行った方がよさそうだなぁ。