[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [mime-w3m] local-map
>> On Wed, 03 Oct 2001 16:19:08 +0900
>> 「山」== yamaoka@jpl.org (Katsumi Yamaoka) said as follows:
山> copy-region-as-kill は buffer-substring を使っている。
山> buffer-substring はすべての text props をコピーする仕様である。
山> kill した local-map を別の場所で再利用する可能性が無くは無い。
山> と考えると、Emacs の仕様を変えてもらうのは無理っぽい気がします。
やっぱりそうですよねえ…。
;; kill-ring を Emacs-Lisp プログラム内部で使うことってあるの? とは思
;; いますが。でも、そういうプログラムの存在を考えると advice で対処す
;; るのも副作用がありそうで怖い。
そうすると、
土> (1) local-map を利用している mime-w3m.el の実装が悪いのだか
土> ら、mime-w3m.el 内部で閉じた解決を行うべきである。具体的
土> には kill-ring-save() 相当のコマンドを再定義する。
という解決策で行くべきなのでしょう。でもって、kill-ring-save() が結構
色々とやっているので、非常に邪悪な方法で上書きする手段を思いつきました。
でも、こうしてしまうと、mime-w3m-kill-ring-save() が byte-compile され
なくて少し悲しいのですが、何とかする方法はないでしょうか?
Index: mime-w3m.el
===================================================================
RCS file: /home/tsuchiya/cvsroot/emacs-w3m/mime-w3m.el,v
retrieving revision 1.24
diff -u -u -r1.24 mime-w3m.el
--- mime-w3m.el 14 Sep 2001 07:52:51 -0000 1.24
+++ mime-w3m.el 3 Oct 2001 08:21:45 -0000
@@ -120,6 +120,8 @@
(substitute-key-definition 'w3m-view-source nil map)
(substitute-key-definition 'w3m-view-header nil map)
(substitute-key-definition 'w3m-history nil map)
+ (substitute-key-definition 'kill-ring-save 'mime-w3m-kill-ring-save
+ map global-map)
(setq mime-w3m-mode-map map)))
(defun mime-w3m-view-this-url ()
@@ -136,6 +138,18 @@
(url (w3m url))
(img (w3m-view-image))
(t (message "No URL at point")))))
+
+(eval
+ `(defun mime-w3m-kill-ring-save ()
+ ,(documentation 'kill-ring-save)
+ (interactive)
+ (prog1 (call-interactively 'kill-ring-save)
+ (put-text-property 0 (length (car kill-ring))
+ ,(if (featurep 'xemacs)
+ (quote 'keymap)
+ (quote 'local-map))
+ nil
+ (car kill-ring)))))
(provide 'mime-w3m)
;;; mime-w3m.el ends here
--
土屋 雅稔 ( TSUCHIYA Masatoshi )