WindowsでのEmacsホームディレクトリ
ちょっとハマったのでメモがてら。WindowsでEmacsを使う場合、.emacs.dを読み込む位置はホームディレクトリになるのですが、ほかのOSと違い、Windowsの場合は
- $HOMEが設定されてる場合はその場所
- レジストリに切られている場合はその場所
- AppData/Roaming配下
上位から優先順位でこうなります。Windowsの場合はデフォルトで切られている環境変数はHOMEPATHでありHOMEではありません。なのでHOMEが無いと自動的にUsers/foo/AppData/Roaming配下がEmacsでのホームディレクトリになります。つまりここから.emacs.dを読みに行きます。
gitconfigの値
で、何にハマったかといえば、gitで
git config --global user.email "foo@bar.com"
git config --global user.name "Foo Bar"
と設定すればcommit時のauthor情報として認識してくれる訳ですが、git bashのHOMEは大体の場合はUsers/fooになってるわけです。つまり.gitconfigが置かれる場所はUsers/fooになるわけです。
…なんとなくわかりましたか?Emacsが参照するホームディレクトリとgit bashが参照するホームディレクトリが違うため、git configを設定してもmagitでauthor情報が参照できずに
unable to auto-detect email address
と怒られてしまうのです。でもgit config --listみてもちゃんと設定されている。あれ?あれあれ?となるわけですね。これで1時間費やしました。最終的には
- 環境変数で
HOMEを切って.emacs.dを移動させる - .gitconfigを
AppData/Roamingに移動する
のどちらかですけど、通常はHOMEを設定して.emacs.dを移動させたほうがいいでしょう。
Windowsの環境変数
まあちゃんとHOMEを設定しとけよ!という話なんですけど、ついつい忘れがちで意外とハマりそうです。ちなみにWindowsでの環境変数設定はRapid Environment Editorというソフトウェアが非常に便利でおすすめです。