Emacs

init.elにいつの間にかcustom-set-*が追加される件

More than 1 year has passed since last update.

長年、init.elにいつの間にかcustom-set-variablescustom-set-facesが追加される現象に悩まされていました。

init.elにいつの間にか追加され、削除してもまた復活する

M-x customizeをしていないにもかかわらず、
こんなかんじのコードがinit.elに追加されます。

(custom-set-variables
  '(foo "bar"))

原因

私は、init-loaderを使ってinit.elを分割しているのですが、init.el 以外 のファイルにcustom-set-variablescustom-set-facesの記述を書いていたのでした。

  • init.elが読まれる
  • init-loaderから他のファイルが読まれる
  • そのファイルにcustom-set-*が記載されている
  • これにより、customizeした状態になる
  • Emacsがcustomizeした内容をinit.elに書き戻す

というような動作になっていたと思われます。

対応

よく理解せずにネットからコピってきたコード片にcustom-set-variablescustom-set-facesがあったので、setqに置き換えたり、不要なものは削除したりしました。

これで、init.elが意図せず書き換えられる事象は解消しました。

おわりに

ずっと、Emacsがどこかに、M-x customizeしたときの情報を隠し持っていて、それをinit.elに反映しているのだと思いこんでいたので、なかなか解決に至りませんでした。

同じ事象に悩む人がひとりでも助かると幸いです。

;; init.elを分割していない人は気にしないでいいと思います。