init.el 自動コンパイル
auto-async-byte-compile の設定をしたから、もう init.el がコンパイルされずに設定が反映されない、という事態は起きないだろう、と思っていたが、init.el を書き換えても設定が反映されないようだ、という状況に遭遇。いろいろ調べた結果、elc ファイルが el ファイルより古い、という状態となっていたので、elc ファイルを削除したら設定が反映された。
なんかよくわからないが、auto-async-byte-compile が動いていない可能性がある、と思ったが、その通りだったと言える。
どうにかそういうことないようにしたい、と思って調べたら、EmacsWiki にも話題があった。
このサイトの真ん中あたりの実装を init.el へ追加。
(when (and user-init-file (equal (file-name-extension user-init-file) "elc")) (let* ((source (file-name-sans-extension user-init-file)) (alt (concat source ".el"))) (setq source (cond ((file-exists-p alt) alt) ((file-exists-p source) source) (t nil))) (when source (when (file-newer-than-file-p source user-init-file) (byte-compile-file source) (load-file source) (eval-buffer nil nil) (delete-other-windows)))))
これでしばらく様子をみるか。