Edebug and luna.el
TSUCHIYA Masatoshi
tsuchiya @ pine.kuee.kyoto-u.ac.jp
2002年 9月 25日 (水) 02:27:35 JST
出直してきました.
>> On Tue, 24 Sep 2002 20:28:09 +0900
>> 「土」== tsuchiya @ pine.kuee.kyoto-u.ac.jp (TSUCHIYA Masatoshi) said as follows:
土> 原因は,luna-apply-generic() で,実際に適用するべき関数定義を探す
土> 時に参照される cache にありました.一旦,method が呼び出されると,
土> 関数定義が cache されるのですが,luna-define-method() の評価時に正
土> しく cache がクリアされていませんでした.
非常に泥臭い方法ですが,古い関数定義を参照している cache を全て clear
するようにしてみました.
flim-1_14 枝の場合.
-------------- next part --------------
--- luna.el 24 Sep 2002 07:04:28 -0000 1.2.6.6
+++ luna.el 24 Sep 2002 17:16:37 -0000
@@ -164,8 +164,13 @@
(sym (luna-class-find-or-make-member
(luna-find-class ',class) ',name))
(cache (get ',name 'luna-method-cache)))
- (if cache
- (unintern (symbol-name ',class) cache))
+ (and cache
+ (fboundp sym)
+ (mapatoms
+ (lambda (s)
+ (if (memq (symbol-function sym) (symbol-value s))
+ (unintern s cache)))
+ cache))
(fset sym func)
(put sym 'luna-method-qualifier ,method-qualifier))))
-------------- next part --------------
clime-1_14 枝の場合.
-------------- next part --------------
--- luna.el 23 Apr 2002 06:37:53 -0000 1.2.6.2.2.4
+++ luna.el 24 Sep 2002 17:15:55 -0000
@@ -181,7 +181,17 @@
(cdr args)))
(,@ definition))))
(sym (luna-class-find-or-make-member
- (luna-find-class '(, class)) '(, name))))
+ (luna-find-class '(, class)) '(, name)))
+ (cache (get '(, name) 'luna-method-cache)))
+ (and cache
+ (fboundp sym)
+ (let ((new (make-vector (length cache) 0)))
+ (mapatoms
+ (lambda (s)
+ (or (memq (symbol-function sym) (symbol-value s))
+ (set (intern (symbol-name s) new) (symbol-value s))))
+ cache)
+ (put '(, name) 'luna-method-cache new)))
(fset sym func)
(put sym 'luna-method-qualifier (, method-qualifier))))))
-------------- next part --------------
どうでしょうか? > 特に上野さん
--
土屋 雅稔 ( TSUCHIYA Masatoshi )
More information about the Emacs-mime-ja
mailing list