ln.exe と xyzzy は仲が悪い?

http://homepage1.nifty.com/emk/symlink.html の ln.exe で symlink を作っておいて、symlink の方を xyzzy で編集するとふつうのファイルとして保存されちゃうみたいだ。

.xyzzy がメタボってきたので分割しようと思って、~/etc/xyzzy というフォルダに分割したファイルを置くことにしたのだが、せっかくなので svn で管理しようとしたら .xyzzy だけが ~/ 直下にあってめんどいので

としてみた。
これで xyzzy 起動時とか C-x C-f ~/.xyzzy で開いたときはちゃんと ~/etc/xyzzy/.xyzzy を読み込んでくれるのだけど、~/.xyzzy を編集して保存すると ~/etc/xyzzy/.xyzzy への symlink ではなくふつうのファイルになってしまう。~/etc/xyzzy/.xyzzy とはまったく関係ない別ファイルになってしまうので svn で管理できねー、というか管理する意味がなくなってしまう。
ln -s (symlink) ではなく ln (hardlink) にしても、ln するときに相対パス/絶対パスにしても解決せず。notepad.exe では ~/.xyzzy を編集&保存したら ~/etc/xyzzy/.xyzzy も変更されてたのに。
~/.xyzzy を ~/etc/xyzzy/.xyzzy へのショートカットにしてみたけど、これだと起動時に ~/.xyzzy (=> ~/etc/xyzzy/.xyzzy) を読み込んでくれなかった。


うんうん唸ってたら突然思い出したのが backup-by-copying。
reference には載ってなかったんだが、記憶が確かなら

  • xyzzy はファイルを開くとそのファイルを #filename#(自動セーブ)とか filename~3(バックアップ)とかに rename する。んで、保存するときには filename へ書き込む

というのが元々の動作で、これだと保存したファイルは新規ファイルになって samba で共有しているファイルを編集すると permission がデフォルトのものになって例えば実行権限付けといても消えてしまう、とかいう場合に (setf backup-by-copying :remote) としておくと、

  • #filename#(自動セーブ)や filename~3(バックアップ)を copy で作るので、保存時に書き込むファイルは元のファイルがそのまま残ってて上書きになる。なんで permission が破壊されたりしない

というような機能だったはず(xyzzy のソース読んだとかではないので正確ではないかも)。

ひょっとして symlink がふつうのファイルになっちゃうのもこれのせいじゃなかろうかと、(setf backup-by-copying t) でローカルのドライブでも copy でやるようにしてみたらビンゴ。ちゃんと symlink を編集&保存するとリンク先のファイルが変更されるようになった。めでたしめでたし。


余談

これを書こうとして「xyzzy backup-by-copying」でググったら http://yslab.atnifty.com/~yukimi_sake/diary/d?date=20060528 を発見した。「xyzzy symlink」とかでググっても見つけられなかったのに・・・。