From 886367d85eb6cb28a899b1f7213c88bdc4ff6c94 Mon Sep 17 00:00:00 2001 From: Katsumi Yamaoka Date: Thu, 4 Dec 2008 01:58:01 +0000 Subject: [PATCH] * mm-view.el (mm-inline-text-html-render-with-w3m): Put special keymap on links. * gnus-art.el (gnus-article-wash-html-with-w3m): Ditto. --- lisp/gnus/ChangeLog | 7 +++++++ lisp/gnus/gnus-art.el | 33 ++++++++++++++++++++++++++++----- lisp/gnus/mm-view.el | 36 +++++++++++++++++++++++++++++++----- 3 files changed, 66 insertions(+), 10 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 7e8ca0c44f8..37a6355ce31 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,10 @@ +2008-12-04 Naohiro Aota + + * mm-view.el (mm-inline-text-html-render-with-w3m): Put special keymap + on links. + + * gnus-art.el (gnus-article-wash-html-with-w3m): Ditto. + 2008-12-03 Katsumi Yamaoka * message.el (message-idna-to-ascii-rhs-1): Protect against local diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 025d5b5e0d8..7d96a347b0b 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -2731,11 +2731,34 @@ charset defined in `gnus-summary-show-article-charset-alist' is used." (when (and mm-inline-text-html-with-w3m-keymap (boundp 'w3m-minor-mode-map) w3m-minor-mode-map) - (add-text-properties - (point-min) (point-max) - (list 'keymap w3m-minor-mode-map - ;; Put the mark meaning this part was rendered by emacs-w3m. - 'mm-inline-text-html-with-w3m t)))) + (if (and (boundp 'w3m-link-map) + w3m-link-map) + (let ((begin (point-min)) + (map (copy-keymap w3m-link-map)) + end) + (set-keymap-parent map w3m-minor-mode-map) + (while (setq end (next-single-property-change begin + 'w3m-href-anchor)) + (add-text-properties + begin end + (list 'keymap (if (get-text-property begin 'w3m-href-anchor) + map + w3m-minor-mode-map) + ;; Put the mark meaning this part was rendered by emacs-w3m. + 'mm-inline-text-html-with-w3m t)) + (setq begin end)) + (add-text-properties + begin (point-max) + (list 'keymap (if (get-text-property begin 'w3m-href-anchor) + map + w3m-minor-mode-map) + ;; Put the mark meaning this part was rendered by emacs-w3m. + 'mm-inline-text-html-with-w3m t))) + (add-text-properties + (point-min) (point-max) + (list 'keymap w3m-minor-mode-map + ;; Put the mark meaning this part was rendered by emacs-w3m. + 'mm-inline-text-html-with-w3m t))))) (defvar charset) ;; Bound by `article-wash-html'. diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el index 473948e19c5..fd01a0132f6 100644 --- a/lisp/gnus/mm-view.el +++ b/lisp/gnus/mm-view.el @@ -261,11 +261,37 @@ (when (and mm-inline-text-html-with-w3m-keymap (boundp 'w3m-minor-mode-map) w3m-minor-mode-map) - (add-text-properties - (point-min) (point-max) - (list 'keymap w3m-minor-mode-map - ;; Put the mark meaning this part was rendered by emacs-w3m. - 'mm-inline-text-html-with-w3m t))) + (if (and (boundp 'w3m-link-map) + w3m-link-map) + (let ((begin (point-min)) + (map (copy-keymap w3m-link-map)) + end) + (set-keymap-parent map w3m-minor-mode-map) + (while (setq end (next-single-property-change + begin 'w3m-href-anchor)) + (add-text-properties + begin end + (list 'keymap (if (get-text-property begin 'w3m-href-anchor) + map + w3m-minor-mode-map) + ;; Put the mark meaning this part was rendered + ;; by emacs-w3m. + 'mm-inline-text-html-with-w3m t)) + (setq begin end)) + (add-text-properties + begin (point-max) + (list 'keymap (if (get-text-property begin 'w3m-href-anchor) + map + w3m-minor-mode-map) + ;; Put the mark meaning this part was rendered + ;; by emacs-w3m. + 'mm-inline-text-html-with-w3m t))) + (add-text-properties + (point-min) (point-max) + (list 'keymap w3m-minor-mode-map + ;; Put the mark meaning this part was rendered + ;; by emacs-w3m. + 'mm-inline-text-html-with-w3m t)))) (mm-handle-set-undisplayer handle `(lambda () -- 2.39.2