[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:08770] Re: set-defalut-directory が効かない



 Nobuyoshi Nakadaさん、こんにちは渡辺 徹です。

	2003年4月9日(水)[19:09:55]の、
	[xyzzy:08768] Re: set-defalut-directory が効かない
	への返事です。

 中田さん、何度もお返事ありがとうございます。

> 猫まねきの側の問題じゃないでしょうか。1.20で試してみましたが、
> 「作業フォルダー」の設定が効いていないように見えます。

 これは、よくわかりません。少なくとも、同じように猫まねきのキー操作から
呼び出しているそのほかのアプリケーションでは作業フォルダに関しての問題は
出ていませんから。

> siteinit.lに書いても意味はありません。
 
> 「デスクトップにアイコン」というのがショートカットのことならば、
> 「プロパティ」から「作業フォルダ」を変更してみてください。「ファ
> イル名を指定して実行」にはカレントディレクトリを指定する方法自
> 体ありませんから、無理だと思います。

 ショートカットの「プロパティ」、作業フォルダを確認してみましたが、ちゃ
んとxyzzy.exeのフォルダになっています。それでもうまく行っていないです。

> 確実にディレクトリを指定できる方法としては、カレントディレクト
> リを移動してからxyzzyを起動するバッチファイルを作るというのもあ
> るかも知れません。

 こちらはうまく行きました。バッチファイルでカレントドライブと、カレント
ディレクトリを移動してから、xyzzy.exeを起動し、(default-directory)を評価
してみましたら、ちゃんとバッチファイルで移動したドライブのディレクトリに
なっています。と言うことは(set-default-directory)はxyzzyの内部状態を操作
しているわけでは無いと言うことですね。

> ダンプとバイトコンパイルを混同されてるように思えます。.lcファイ
> ルはバイトコンパイルによって作られるもので、ダンプには関係あり
> ません。バイトコンパイルしていようといまいと、ダンプを作る時点
> でsiteinit.l(またはsiteinit.lc)がロード、評価されます。

 ご指摘の通りでした、ごく基本的なことなので恥ずかしいのですが、確認させ
てください。
 バイトコンパイル -> .Lから.LCの作成
 ダンプ -> xyzzy.w98の作成
 この点がクリアになって、やっと[08756]で中田さんが書かれた次の説明が理
解出来ました。

> siteinit.lと.xyzzyでは評価される時点が違うので、完全に期待され
> る通りの動作だと思います。default-directoryは実行時に動的に決定
> される値なので、siteinit.lで設定されてダンプされた値は意味を持
> たず、起動した後に評価される.xyzzyで設定された値は有効になると
> いう。

 しかし、set-default-directoryはなぜxyzzyの内部を操作するものではないの
か、と言う疑問もあります。たとえば、
(set-default *default-directory* "C:/")
 の様な書き方なら、siteinit.lに書いても大丈夫なはずです。
 後、default-directoryの話から、少し脱線しますが、ダンプされるプログラ
ムファイルはどのみち評価されて、保存されるわけですから、バイトコンパイル
する必要が無いと言うことでしょうか。autoloadで後から読み込まれるファイル
はロードを速くするために、バイトコンパイルすることに意味がありますが。

      /|
     / |
    / W|
    ~~~|           渡辺  徹
  \-------/       t-watanabe11@xxxxxxxxxxxx
~~~ \____/ ~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Index Home