somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Emacs】エラー発生

急にエラーが発生して、おかしくなりました・・・デバッグ方法を試したら書きます。

簡易エラー内容

普通にEmacsを起動したときに、下記内容が表示されました。

Warning (initialization): An error occurred while loading `c:/usr/home/_emacs':

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.

上の内容は、「ホームディレクトリの_emacsファイルのロード時にエラーが起きています」です。

ここで疑問が浮かびました。「_emacs」なんて作ったこと無い・・・。

下の内容は、以下のとおりです。

正常な動作にするには、初期化ファイル内のエラーの原因を調査して削除してください。
完全なエラーバックトレースを表示するには、--debug-initオプションをつけてEmacsを起動してください。

ということなので、オプションをつけて起動します。

_emacs

その前に、_emacsとは何なのか?

.emacsやinit.elと同様に設定ファイルです。Windowsの場合、.で始まるファイルの代わりに、_で始める補完ファイルとして扱うことがあるそうです。

そのため、今回なぜか作成されていた_emacsファイルが読み込まれていました。また、このファイルの設定がemacs.d/init.elより古く、新しく加えた設定がなかったためバグと勘違いしていました。

このファイルを削除したら、init.elが読み込まれました。

デバッグトレース

まず、デバッグ用のEmacs実行バッチを作成しておきます。下記内容のファイルを適当なファイル名でemacs実行ファイルと同じ場所に保存し、コマンドランチャーでいつでも使えるようにしました。

runemacs.exe --debug-init

作成したバッチを実行すると、WGETRCがないといわれます。けど、あるんですよね。

#auto-async-byte-compile.elの末尾にあるこの行をコメントアウトするとエラーが無くなる
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = c:\usr\home\.emacs.d\wget/etc/wgetrc

#auto-async-byte-compile.elc
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc syswgetrc c:usrhome\.emacs\.dwget/etc/wgetrc

auto-installも動きますし、package-install.elにも同じようにWGETRCの行があるのにエラーは出ません。

エラーを消してもというより、そもそもファイル保存時にバイトコンパイルされていないみたいですし・・・。よくわからないけど、とりあえずOK

参考