helm は Anything の時代から、Emacs のユーザインタフェースに革新を持たらしました。今や Emacs と helm は切っても切れない関係です。しかしそれにしても helm のアップデートの激しさは異常です。Melpa の最新版を追い掛けていると、ほぼ毎日アップデートされています。もう何が何だか、更新内容なんて追跡する気にもなれません。アップデートの激しさだけからすると、よっぽどデザインが悪いんだろうなという気がします。
これだけ頻繁にアップデートされるとやはり問題が起こるものです。最近(2016年8月のいつか)のアップデートで Emacs の起動エラーが出るようになってしまいました。原因を切り分けていくと、やはり helm でした。その時は時間もなかったこともあり、helm を少し前のバージョンに戻し、そのままにしておきました。
しかしいつまでもこのままにしておくわけにもいかなので、ちゃんと調べてみました。
さて、helm と helm-core をアップデートすると Emacs の起動時に以下のエラーが出ます。
Warning (initialization): An error occurred while loading `d:/home/.emacs.d/init.elc': Symbol's value as variable is void: helm-compile-source-functions To ensure normal operation, you should investigate and remove the cause of the error in your initialization file. Start Emacs with the `--debug-init' option to view a complete error backtrace.
helm-compile-source-functions
という変数が見つからないようです。helm のソースを新旧見比べてみると、バージョンアップでこの変数が削除されていました。無くなったものは仕方ありません。しかし誰かこの変数を参照している者が他にいる筈です。エラー箇所をデバッガで止めてみるとすぐに分かりました。helm-migemo です。helm-migemo.el の中に以下のコードがありました。
(add-to-list 'helm-compile-source-functions 'helm-compile-source--migemo t)
考えてみると helm-mogemo ってほんとんど使っていなかったので、とりあえず (reauire 'helm-migemo) をコメントアウトしておきました。自分的にはちっとも困りません。そのうち helm-migemo がアップデートされたら復活させましょう。
と思っていたのですが、よくよく調べてみたら helm-migemo は今や helm 本体に取り込まれていて、わざわざ helm-migemo を使う必要はなくなったようです。初めて知りました。helm をロードした後、(helm-migemo-mode 1) とするだけで使うことができます。なんだ、そういう事だったのね。
0 件のコメント :
コメントを投稿