make-temp-file definition is not effective
Shuhei KOBAYASHI
shuhei @ aqua.ocn.ne.jp
2003年 6月 29日 (日) 23:39:40 JST
teranisi @ gohome.org (Yuuichi Teranishi) writes:
> > ;; APEL 10.5.1 か APEL 10.6 を出すことになる?
> 直せたら、10.6 を出すのですかね。
過去に 3.x.y や 7.1.1 という例はあったみたいですが, 10.6 でしょうね.
> > poe.elc の load 時にはなるべく make-temp-file を実行したくない
> > (定義が存在して実行できたとしても危険性はない)ので回避策がない
> > か考えてみます.
私は最近あまり意識していませんでしたが, APEL には当初から
* version number を調べるのではなく対象の機能を実際に検査する.
という方針があります. そしてここしばらく問題になっていて XEmacs package
の APEL の問題にも関係するのが
* compile 時の判定は乱用されて必要以上に *.elc が特殊化される.
であり, 今回の make-temp-file や literal-test-file の問題と関係するのが
* load 時に副作用のある判定を行なうのは好ましくない.
です. さてどれを落とすべきか?
まず, version による判定は Emacs 21.4 や今後の XEmacs で make-temp-file
の定義がどうなるか不明なので避けた方がよさそうですね.
次に, compile 時の判定だけにして load 時の判定をなくすことができないか
を考えてみますが, これは broken.el のように compile 時の判定結果をあと
から利用可能にすればよさそうです.
;; ただ broken.el は私もよくわからんので個人的には使いたくないです(^^;
最後に, (load 時に)副作用なしで判定できないかということを考えてみます.
とりあえず,
(aref (symbol-function 'make-temp-file) 0)
=> (prefix &optional dir-flag)
というのをすぐに思い付きましたがちょっと邪悪ですよね;-)
ちなみに, aref の docstring には byte-code object にも使用可能とありま
すが, 現在の XEmacs では不可能になっていて代わりに compiled-function-*
が提供されています. 今回は XEmacs は最初から判定の対象外ですけどね.
;; 以前 compiled-function-* を aref で実現するライブラリを書いた気が
;; するのですが自分では発掘できず(;_;) 誰か持っていませんか?
邪悪と書きましたが, 最後のがよさそうな気がしてきました. どうでしょうか?
--
Shuhei KOBAYASHI
More information about the APEL-ja
mailing list