[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: some sb backends don't work
謎が解けたと思います.
>> On Fri, 06 Jun 2003 12:27:43 +0900
>> 「土」== tsuchiya@pine.kuee.kyoto-u.ac.jp (TSUCHIYA Masatoshi) said as follows:
土> ・何かマクロが悪さをしているか,
luna.el の内容を追い掛けてみると,internal accesor はマクロとして定義
されていることに気づきました.
(defmacro ,(intern (format "%s-%s-internal"
class-name slot))
(entity)
(list 'aref entity
,(luna-class-slot-index entity-class
(intern (symbol-name slot)))))
したがって,クラスのメンバ変数が変更になって,そのメンバの現れる順序が
変更になると,その internal accesor を呼び出している全ての *.elc は再
コンパイルが必要になるわけです.
nnshimbun.el では,
(luna-define-method shimbun-mua-search-id ((mua shimbun-gnus-mua) id)
(nnshimbun-search-id
(shimbun-current-group-internal (shimbun-mua-shimbun-internal mua))
id))
という使われ方をしている internal accesor が問題になりますし,おそらく
elmo-shimbun.el でも同様の問題が発生しているのではないかと思います.
対策としては,
・elmo-shimbun.el や nnshimbun.el などの外部プログラムでは,internal
accesor は使わない.
・必要な場合は,専用の読み出しメソッドを定義する.
ということになるかと思います.
--
土屋 雅稔 ( TSUCHIYA Masatoshi )