スポンサーリンク

2016年9月5日月曜日

helm のアップデートで Emacs の起動エラーが


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 件のコメント :

コメントを投稿