~/.netinst/config.l

$xyzzy/site-init 以下とか $xyzzy/lisp 以下とかがぐちゃぐちゃになってきたんできれーにしようと xyzzy ダウンロードして設定し直そうとしてたのだけど、とりあえず NetInstaller 入れて XyzzyWiki の http://xyzzy.s53.xrea.com/wiki/index.php?tips%2F%A5%CD%A5%C3%A5%C8%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%E9%A4%CEsite%A4%F2%CC%B5%CD%FD%A4%E4%A4%EA%BA%C7%BF%B7%A4%CB をやろうとしたら上手くいかなかった。

やったこと

まず NetInstaller をインストール。ni フォルダをそのまま $xyzzy/site-lisp/ に置いて、siteinit.l で require とかする。んで ~/.netinst\config.l を作って件の lisp コードをコピペ。でダンプファイル消して再起動とか。

で、どうなった

NetInstaller 開いて *NetInstaller site* バッファで N 押すと「書き込み禁止バッファです」と怒られる。

なにが起きたか

describe-key-briefly で N を確認したら self-insert-command になってる。つまりたぶん ~/.netinst/config.l が読まれてない。
そもそもどこで ~/.netinst/config.l を読んでるのかわからんかったから $xyzzy/site-init/ni/setup.l の user::netinstaller から追ってみたら $xyzzy/site-init/ni/defs.l#47-48 で

(defvar *base-directory*
  (merge-pathnames ".netinst" (si:system-root)))

とゆーのを見つけた。(si:system-root)?
つまり ~/.netinst/config.l とゆーのは $xyzzy/.netinst/config.l とゆーことであって、%HOME%/.netinst/config.l*1 とか作っても無駄?後から ni::*base-directory* を書き換えてなかったりしたらそーだよね。

;;; *scratch* とかで
ni::*base-directory*
=> "M:/bin/xyzzy-0.2.2.235/.netinst"

そうみたい。

どうしよう

  1. 初期化ファイルで ni::*base-direcotry* を (user-homedir-pathname) 使って書き換える。
  2. 大人しく $xyzzy/.netinst/config.l を使う
  3. $xyzzy/site-lisp/ni/defs.l を書き換えてしまう
  4. NetInstaller の .netinst/config.l じゃなくて初期化ファイルでやる

変な影響が少ないのは 2. か 4. だろーか。2. でいーや。
さっき作った %HOME%\.netinst\config.l を $XYZZY/.netinst/ にコピーしてダンプファイル消して xyzzy 再起動したらちゃんと動いた。めでたしめでたし。

*1:xyzzy は %XYZZYHOME% が無かったら %HOME% を見てくれるっぽい、ので .xyzzy とかも %HOME% に置いとけばおk。