Shammer's Philosophy

My private adversaria

SKKの不安定さ解消に向けて

SKKを無事にインストールできた、と思っていたが、どうも不安定なところがあった。たとえば、Emacsを起動して初めてSKKを有効にしようとすると、

skk-setup-j-mode-map-options: Symbol's chain of function indirections contains a loop: char-valid-p.

というエラーがミニバッファに出たり、init.elに(setq skk-preload t)と書くとエラーになったり・・・preloadはコメントアウトすればいいし、SKKも何度かCtrl-\を打っていれば有効になるので気にしていなかったが、やっぱりエラー出るのが気になったので調べてみた。そしたらこんな情報がありました。

 ddskk 14.2 をインストールする際の注意点 - My Emaps

なるほど。どうやら、バイトコンパイルしなおさないといけないようだ。でもどのファイルなんだ?調べるのも一つ一つのファイルをバイトコンパイルしていくのもめんどくさい・・・一括でできないのかなぁ、なんて思っていたらこんな情報が。

 auto-async-byte-compile.elリリース - バイトコンパイル問題の終焉 - http://rubikitch.com/に移転しました

これはすごい便利そう。でも、自分の環境ではこのサイトにある

M-x install-elisp-from-emacswiki auto-async-byte-compile.el

が機能しなかった。なんてこったい・・・期待はずれだ。おそらく、このサイトのどこかにその情報はあるのだろうけれども、今解決したいのはこの問題じゃない。
そして、次に見つけたのがこのサイト。

 MacでEmacs3 homebrewからCocoaEmacs、ddskkのインストール - daharuの日記

まとめてバイトコンパイルする方法として、

/Applications/Emacs.app/Contents/MacOS/Emacs -nw -batch -f batch-byte-compile *.el

というコマンドが紹介されていた。SKKのあるディレクトリへ移動し、このコマンドを試したがエラーになってしまった。この方法でも解消できず・・・

しかし、よく見ると、最初のブログのコメントで「skk-macs.el」とどのファイルか特定されていました。じゃあこれをバイトコンパイルすればいいか、と、Emacsのミニバッファで

M-x byte-compile-file

入力後に、skk-macs.elを指定。が・・・フリーズしてしまった。よく考えたら、コンパイル後に作成されるskk-macs.elcはEmacs自身が起動時にロードしているはずで、自分がロードしたファイルを更新しようとしていることになる。これがうまくいかないのは道理。なので、Emacsを終了させて、skk-macs.elcを削除。念のため、本当にこのファイルが原因だったのかを特定するためにこの段階でEmacsを起動すると、エラーは解消された。しかも、(setq skk-preload t)も有効になった様子。このファイルが原因だったのは間違いなさそう。ここまで確認してもう一度バイトコンパイルしたら、無事コンパイルは完了してskk-macs.elcも作り直されました。この状態でEmacsを再起動してもSKKは快調!これでOSのIMEとオサラバできるな。今度からEmacsをビルドするときは日本語化パッチもなしでいけるだろうか?そうだと手間が省けてうれしい。合わせて、先人の知恵に感謝。