defvar-maybe
Katsumi Yamaoka
yamaoka @ jpl.org
2001年 9月 12日 (水) 17:20:32 JST
semi-gnus-ja で話題になったことなのですが、T-gnus では存在しない
かもしれない変数や関数を、compile するときに lpath.el というもの
を使って bind します。
例えば Mule 2.3 には language-info-alist という変数が無いので、
gnus-ems.el というファイルで
(defvar-maybe language-info-alist nil
"Alist of language environment definitions.")
ということを行なっているのですが、この変数は compile する前に
lpath.el で bind されてしまうので、gnus-ems.elc にはこの変数定義
が生成されません。以下のような内容のファイルで再現実験ができます。
;; test.el
(require 'pym)
(eval-when-compile
(set 'foo 'bar))
(defvar-maybe foo 'bar)
(message "%s" foo)
% mule -batch -q -no-site-file -f batch-byte-compile ./test.el
% mule -batch -q -no-site-file -l ./test.elc
=> Symbol's value as variable is void: foo
(defvar-maybe foo 'bar)
に相当するコードを生成してしまうと、もし foo が存在したときに
doc-string を書き換えてしまうのでマズい、というような議論があっ
たような気がするので、実は解決策は無いのかもしれません。
とりあえず報告だけ。
--
Katsumi Yamaoka <yamaoka @ jpl.org>
;; 今日はメールがほとんど届かないので、お返事をいただいても反応
;; できないかもしれません。悪しからず。
More information about the APEL-ja
mailing list