[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: [mime-w3m] local-map



>>>>> In [emacs-w3m : No.01633]
>>>>>	TSUCHIYA Masatoshi <tsuchiya@pine.kuee.kyoto-u.ac.jp> wrote:

土屋さん> <余談>
土屋さん>   kill-ring-save() 自体に advice すると、内部で呼び出されて
土屋さん>   いるinteractive-p() が nil を返すようになり、マーカーの位
土屋さん>   置にしばらくカーソルを移動するという機能が使えなくなってし
土屋さん>   まうので、kill-new() に対して advice を定義することにしま
土屋さん>   した。

"<余談>" をお借りします。:-)
だいぶ前に Emacs 21 のその辺りは直してもらった記憶があったんです
が、確かめてみたら違う内容ですね。

(let ((ad-default-compilation-action 'never))
  (defadvice kill-ring-save (after testing activate)
    "testing"
    (ignore)))
 => kill-ring-save

(symbol-function 'kill-ring-save)
 => (lambda (beg end)
      "$ad-doc: kill-ring-save$"
      (interactive "r")
      (let (ad-return-value)
	(setq ad-return-value (ad-Orig-kill-ring-save beg end))
	(ignore)
	ad-return-value))

ではなくて、

    (lambda (beg end)
      "$ad-doc: kill-ring-save$"
      (interactive "r")
      (let (ad-return-value)
	(setq ad-return-value
	      (if (interactive-p)
		  (call-interactively 'ad-Orig-kill-ring-save)
		(ad-Orig-kill-ring-save beg end)))
	(ignore)
	ad-return-value))

になるのが正しい、と。
でも XEmacs でも同じだし、最近の XEmacs の開発は妙に腰が重いので
Emacs 21 だけが改善されてしまうと悲しいから、ぼくは黙っているこ
とにします。やる気のある方はどうぞ。:-)

土屋さん> </余談>
-- 
Katsumi Yamaoka <yamaoka@namazu.org>