Emacs@Solaris で仮名漢字変換
OpenSolaris のデフォルトの日本語入力方法である Anthy とやらを Emacs から 使ってみる。
いきなり怒られた。
Loading /usr/share/emacs/site-lisp/anthy/anthy.el (source)... eval-buffer: File `..../anthy/anthy-dic.elc' was not compiled in Emacs
はぁ!?なんじゃそら?
"pkg search -l" で該当ファイルの由来を調べると、SUNWlibanthy らしく、そもそも GNU Emacs とも Anthy そのものとも分離されているので、ひょっとしたらバージョン違いの Emacs (23.x 系?)で byte compile された *.elc がパッケージ化されてしまったのかも?
anthy-dic.el があるから anthy-dic.elc は無くても良いでしょ、ということで、とりあえず root になって件のファイルを削除することに。
対処の後は問題無く連携成功。
ちなみに、GNU Emacs をインストールした素の状態の場合は、多分 .emacs 等の初期化ファイルにおいて以下の設定が必要。
(set-language-environment "Japanese") (setq default-input-method "japanese-anthy")
鰻の付けダレのように Emacs 初期化設定ファイルを育てている場合、前者はおそらく既に設定している筈なので、後者のみ追加(or 現状から変更)すればOK。
折角 SUN がライセンス的な問題を解消してくれていることなので、ATOK を使ってみるってのはどうよ?などと色気を出してみる。
Solaris 向けの ATOK パッケージをインストールするには、通常の opensolaris.org の IPS リポジトリではなく extra リポジトリに繋ぐ必要があるため、リポジトリ用の鍵/証明書を入手した上で、pkg コマンドの諸々の設定を。
時間帯の問題なのか、たまたまメンテナンス中だったのか、extra リポジトリへの接続が失敗する場合があるけれど、暫く時間をおいてアクセスすることで解決。
Emacs からのアクセスには IIIMECF が必要なので、ダウンロード&インストール。IIIMECF 自体には不要らしいけど、OpenSolaris の Emacs パッケージ(SUNWgnu-emacs) が 22.x ベースであるため、総合的な UTF-8 の扱いに必要な Mule-UCS もダウンロード&インストール。
IIIMECF の設定はそれほど難しくないのだが、添付のドキュメントに書かれている以下のサンプル設定は、環境依存性があるため注意が必要。
(setq iiimcf-server-control-hostlist (list (concat "/tmp/.iiim-" (user-login-name) "/:1.0"))) (when (and (= 0 (shell-command (concat "netstat --unix -l | grep -q " (car iiimcf-server-control-hostlist)))) (require 'iiimcf-sc nil t)) (setq iiimcf-server-control-default-language "ja") (setq iiimcf-server-control-default-input-method "atokx3") (setq default-input-method 'iiim-server-control))
修正が必要なのは:
- UNIX ドメインソケットの一覧表示は "netstat -f unix"
- UNIX ドメインソケットの作成先は "/tmp/.iiim-${LOGNAME}/:0.0"(GNOME デスクトップの流儀に倣って)
- Solaris の ATOK パッケージの場合、エンジン名指定は "atokx2"
以上を修正したなら、いざ変換!
おぉ!「裏庭には二羽庭には二羽鶏が居る」も一発変換だ!っていうか、平仮名を正しく入力する方が余程面倒だけど…。
Anthy では変換できなかった「えいとっく」も「ATOK」に変換してくれるので、間違いなく ATOK が動いている模様(笑)。
ちなみに入力エンジン切り替え等のホットキー設定は、Emacs とウィンドウマネージャとの間で調停が上手くいかないことが多々あるため、Emacs 側とウィンドウマネージャでは、アクティベーション/エンジン切り替え共に、それぞれ全く別なキーバインドで運用するのが吉。
エンジン切り替えの際の IIIMECF のデフォルトバインドはちょっと面倒(C-c C-\ C-s)ではあるけれど、そもそもエンジン切り替えなんて滅多に使う必要が無いのできっと大丈夫。