[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [mime-w3m] local-map
>>>>> In [emacs-w3m : No.01626]
>>>>> TSUCHIYA Masatoshi <tsuchiya@pine.kuee.kyoto-u.ac.jp> wrote:
土屋さん> mime-w3m.el を利用して記事を閲覧している時に、その記事中のテ
土屋さん> キストを M-w などで kill-ring に取り込んで、別バッファに貼り
土屋さん> 付けると、local-mapも込みで貼り付けられてしまうので、そのテ
土屋さん> キストの上で SPC などを押すと妙な現象が発生します。
土屋さん> とりあえず、手元では以下のような advice を定義して回避してい
土屋さん> ますが、これは何処で解決するべき問題でしょうか?
土屋さん> (1) local-map を利用している mime-w3m.el の実装が悪いのだか
土屋さん> ら、mime-w3m.el 内部で閉じた解決を行うべきである。具体的
土屋さん> には kill-ring-save() 相当のコマンドを再定義する。
土屋さん> (2) local-map もコピーしてしまう、Emacs の kill-new() の動作
土屋さん> が良くない。したがって、Emacs21 についてはバグ報告し、そ
土屋さん> れ以外の Emacsen については w3m-xmas.el / w3m-om.el など
土屋さん> に advice を仕込む。
copy-region-as-kill は buffer-substring を使っている。
buffer-substring はすべての text props をコピーする仕様である。
kill した local-map を別の場所で再利用する可能性が無くは無い。
と考えると、Emacs の仕様を変えてもらうのは無理っぽい気がします。
もっとも、こういう問題があることを知ってもらうためにリポートする
のは、けして無駄ではないと思いますが。
text prop ではなくて overlay を使うと、FSFmacs ではコピーされな
くなりますが、XEmacs では違います。それに今まで emacs-w3m が
overlay を使っていないのは、コーディングの混乱を避けられる点で個
人的には嬉しいので、なるべくなら今後もそうしていただきたいです。
というわけで、非常に消極的ですが、
土屋さん> (defadvice kill-new
土屋さん> (after kill-new-without-local-map activate compile)
土屋さん> (put-text-property 0 (length (car kill-ring))
土屋さん> (if (featurep 'xemacs) 'keymap 'local-map)
土屋さん> nil
土屋さん> (car kill-ring)))
必要な人はこういうものを使っていただく、ということではだめでしょ
うか? ^^;;
--
Katsumi Yamaoka <yamaoka@jpl.org>