2012年3月21日水曜日

Slimeで日本語を使用する

slimeモードで日本語を使おうと、以下の式を評価すると、

(code-char #\あ)

エラーに遭遇。

Coding system iso-latin-1-unix not suitable for "000041(:emacs-rex (swank:interactive-eval \"(char-code #\あ)\") nil t 1)"

slimeがSwankサーバ(common lispを実行するサーバ)と通信するためのエンコーディング設定 が上手くいっていないため起きるエラー。

slimeがSwankサーバとの通信に使用するエンコーディングは、変数slime-net-coding-systemで 決定される。この変数に'utf-8-unixを設定すると無事日本語が利用できるようになる。以下のように .emacsなどでslime-net-coding-system変数を変更する。

(setq slime-net-coding-system 'utf-8-unix)

すでに、slimeモードでSwankサーバを起動している場合、上記設定の変更を有効にするには サーバ(inferior-lispプロセス)を終了して、再度起動しなおす必要がある。

参考URL:
'T: CREATE-SERVERしたSWANKに接続すると日本語の評価で切断してしまう
Common LISP users jp:SLIME