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というソフトウェアが非常に便利でおすすめです。