XEmacs and APEL

Shuhei KOBAYASHI shuhei @ aqua.ocn.ne.jp
2002年 7月 23日 (火) 22:56:26 JST


何となく山岡さんの問題意識がわかってきたような...

Katsumi Yamaoka <yamaoka @ jpl.org> writes:
> 例えば run-time に存在しないことが多い w3 は、結構たくさんの emulating
> functions を持っていて、compile-time に単に warning を無くすだけの目的
> で load することがあります。そういう場合に
> 
> (defun-maybe md5 (args) ....)
> 
> のような微妙なものを書いてしまうと失敗するので、

ええと, これの状況がよく理解できないのですが.

  * Emacs-w3 は多くの emulating functions を持っている.

  * Emacs-w3 は, 自身の compile 時の warning を無くすために
    (eval-when-compile (defun md5 (args) ...)) のようなことをしている?

  * (defun-maybe md5 (args) ...) を含むファイルが (require 'w3) している?

いや, これでは問題は起きないはずだなぁ... あぁ, なるほど,

  * Emacs-w3 は md5 を含む(本当?)多くの emulating functions を持っている.

  * (defun-maybe md5 (args) ...) を含むファイルが warning を無くすだけの
    目的で (eval-when-compile (require 'w3)) している.

  => compile 時に Emacs-w3 によって定義された md5 を見つけた defun-maybe
     は, その環境には常に md5 が存在すると判断して何もしない.

ということでしょうか? これはこれで変なことをしているという気もしますが;-p


> しかし、たいていの環境には存在している、でもそうでない場合も確かにある
> から何とかしようという場合は、例えば XEmacs にある
> 
> (macroexpand '(defun-when-void FOO (BAR) BODY))
>  => (if (fboundp 'FOO)
> 	nil
>       (defun FOO (BAR)
> 	BODY))
> 
> のようなものを使えばよかったのですよね。
;; この定義では (symbol-file FOO) が出来なくなるような...

「たいていの環境」から「そうでない環境」に .elc を持って行くという話なら
そうです. うーん, そうか, XEmacs では多くのものが base system の外に出さ
れてしまって, edebug なども常に存在するとは限らなくなっているのだよなぁ.
;; (require 'pym) しても edebug-def-spec の存在は保証されないということ.

(XEmacs Packages に限らない) package system というのは *-maybe よりも後
から広まったので想定外なのだよなぁ. package system が入ってきたことで,
compile 時には存在したはずのものが .elc が load された環境では存在しない
ということが起こりやすくなっていて, *-maybe の使用には細心の注意が必要に
なっているのか.


> ;; XEmacs with/without Mule の件は、ちょっと話が違いますが。

ひとつ確認したいのですが, XEmacs Packages というのはどんな範囲の XEmacs
を対象としているのでしょうか? 安定版と開発版の最新の version だけですか?
;; ところで, XEmacs with Mule で Packages を作る特別な理由はあるのかな?

-- 
Shuhei KOBAYASHI
"Use `*-maybe' only when you exactly know what you are doing!"
↑こう思われていないことが問題なのね.




More information about the APEL-ja mailing list