Shammer's Philosophy

My private adversaria

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のサイトは見に行った方がよさそうだなぁ。

 InstallingSlime – Clozure CL