Emacsの設定値を保持しておくための変数としてcustom-set-variablesが用意 されている。例えばpackage.elによりインストール済みのパッケージやテーマ のシンボル、ログの表示方法など様々な環境に強く依存するような値が設定さ れる。この値は通常.emacs.d/init.elに自動で挿入されるが、custom-file変 数を指定することで任意のファイルに出力するように変更でき る。.emacs.d/init.elなどの設定ファイルをGitで管理する場合、このファイ ルはリポジトリに登録するべきだろうか。おそらく登録しない人が多いだろう。 環境固有の値が含まれるのだから、他の環境に影響を与えないために各マシン 間で共有することはしない。では本当に環境固有の値なのかという点が気にな る。例えばpackage-selected-packagesはpackage.elによってインストールさ れたパッケージだが、=package-install-selected-packages= コマンドを用い ると、この値を参照しインストールする。要求は人それぞれに異なると思うが、 インストールするパッケージは出来ればマシン間で同一であって欲しいためこ の値は共有したい。一方で safe-local-variable-values には.dir-local.elで 設定したシンボルと値がそのまま記録される。この値の中には隠しておきたい ような値が含まれていることが多い。例えば秘密のプロジェクト名であったり、 公開していないAPIエンドポイントなどは隠しておきたい。設定ファイルは Githubの公開リポジトリとしてホスティングしているため、このような値が混 入されると困ってしまう。理想的な状態としては safe-local-variable-values のみ独立したファイルに自動的に保存されて 欲しい。 Contents/Resources/lisp/custom.el.gz を読んでみているが良い 方法は、まだ思いついていない。

仕方がないのでcustom-fileへの反映自体を行わないようにした。

(setq-default enable-local-variables :all)

しかしこれはとても乱暴な方法なので、もっと上手くやれたらとも思う。