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