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

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



なかだです。

At Thu, 10 Apr 2003 16:39:58 +0900,
渡辺 徹 wrote:
>  これは、よくわかりません。少なくとも、同じように猫まねきのキー操作から
> 呼び出しているそのほかのアプリケーションでは作業フォルダに関しての問題は
> 出ていませんから。

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

となると、なんででしょうねぇ。

> > 確実にディレクトリを指定できる方法としては、カレントディレクト
> > リを移動してからxyzzyを起動するバッチファイルを作るというのもあ
> > るかも知れません。
> 
>  こちらはうまく行きました。バッチファイルでカレントドライブと、カレント
> ディレクトリを移動してから、xyzzy.exeを起動し、(default-directory)を評価
> してみましたら、ちゃんとバッチファイルで移動したドライブのディレクトリに
> なっています。

ちなみに、バッチファイルが起動したときのカレントディレクトリは
どこになってますか。

> と言うことは(set-default-directory)はxyzzyの内部状態を操作
> しているわけでは無いと言うことですね。

set-default-directoryは、直接にはバッファごとに管理されている
default-directoryの値を変えるだけです。これがファイラを開いたり
プロセスを起動したりファイルにアクセスしたりするときの基準にな
るわけです。

>  バイトコンパイル -> .Lから.LCの作成
>  ダンプ -> xyzzy.w98の作成

そうなります。

> > siteinit.lと.xyzzyでは評価される時点が違うので、完全に期待され
> > る通りの動作だと思います。default-directoryは実行時に動的に決定
> > される値なので、siteinit.lで設定されてダンプされた値は意味を持
> > たず、起動した後に評価される.xyzzyで設定された値は有効になると
> > いう。
> 
>  しかし、set-default-directoryはなぜxyzzyの内部を操作するものではないの
> か、と言う疑問もあります。たとえば、
> (set-default *default-directory* "C:/")
>  の様な書き方なら、siteinit.lに書いても大丈夫なはずです。

default-directoryが固定されるのは不便だと思いますが、というのは
置いておくとして、内部的にはそういう処理になっています。ただし、
起動時にカレントディレクトリで初期化されます。これが評価順序の
問題ということです。

>  後、default-directoryの話から、少し脱線しますが、ダンプされるプログラ
> ムファイルはどのみち評価されて、保存されるわけですから、バイトコンパイル
> する必要が無いと言うことでしょうか。autoloadで後から読み込まれるファイル
> はロードを速くするために、バイトコンパイルすることに意味がありますが。

それは実装に踏み込んだ話になりますが、正直なところ私はそこまで
きちんとxyzzyのソースを読んでいません。想像でいえばあまり差はな
いのではないかと思いますが、バイトコンパイルするときには最適化
していてもソースからダンプするときにはしていなければ、違いはあ
るかも知れません。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

Index Home