長年、init.el
にいつの間にかcustom-set-variables
やcustom-set-faces
が追加される現象に悩まされていました。
init.elにいつの間にか追加され、削除してもまた復活する
M-x customizeをしていないにもかかわらず、
こんなかんじのコードがinit.elに追加されます。
(custom-set-variables
'(foo "bar"))
原因
私は、init-loaderを使ってinit.elを分割しているのですが、init.el 以外 のファイルにcustom-set-variables
やcustom-set-faces
の記述を書いていたのでした。
- init.elが読まれる
- init-loaderから他のファイルが読まれる
- そのファイルに
custom-set-*
が記載されている - これにより、customizeした状態になる
- Emacsがcustomizeした内容をinit.elに書き戻す
というような動作になっていたと思われます。
対応
よく理解せずにネットからコピってきたコード片にcustom-set-variables
やcustom-set-faces
があったので、setq
に置き換えたり、不要なものは削除したりしました。
これで、init.elが意図せず書き換えられる事象は解消しました。
おわりに
ずっと、Emacsがどこかに、M-x customize
したときの情報を隠し持っていて、それをinit.elに反映しているのだと思いこんでいたので、なかなか解決に至りませんでした。
同じ事象に悩む人がひとりでも助かると幸いです。
;; init.elを分割していない人は気にしないでいいと思います。