* mm-view.el (mm-inline-text-html-render-with-w3m): Put special keymap on links.
authorKatsumi Yamaoka <yamaoka@jpl.org>
Thu, 4 Dec 2008 01:58:21 +0000 (01:58 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Thu, 4 Dec 2008 01:58:21 +0000 (01:58 +0000)
* gnus-art.el (gnus-article-wash-html-with-w3m): Ditto.
* lpath.el: Bind w3m-link-map for Emacs 21, 22, and XEmacs.

lisp/ChangeLog
lisp/gnus-art.el
lisp/lpath.el
lisp/mm-view.el

index 5430fbd..d5f0d34 100644 (file)
@@ -1,3 +1,12 @@
+2008-12-04  Naohiro Aota  <nao.aota@gmail.com>
+
+       * 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.
+
+       * lpath.el: Bind w3m-link-map for Emacs 21, 22, and XEmacs.
+
 2008-12-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * nnimap.el (nnimap-retrieve-headers-progress): Don't use nnimap-demule
index 025d5b5..7d96a34 100644 (file)
@@ -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'.
 
index f3bc848..af6b1cf 100644 (file)
@@ -22,7 +22,9 @@
        Info-index-next Info-menu bbdb-complete-name display-time-event-handler
        epg-check-configuration find-coding-system frame-device w3-do-setup
        w3-prepare-buffer w3-region w32-focus-frame w3m-detect-meta-charset
-       w3m-region)))
+       w3m-region))
+    (maybe-bind
+     '(w3m-link-map)))
 
   (when (= emacs-major-version 21)
     (defun split-line (&optional arg))
@@ -71,7 +73,7 @@
      mouse-selection-click-count-buffer ps-print-color-p
      rmail-insert-mime-forwarded-message-function
      show-trailing-whitespace tool-bar-mode transient-mark-mode
-     url-version w3-meta-charset-content-type-regexp
+     url-version w3-meta-charset-content-type-regexp w3m-link-map
      w3-meta-content-type-charset-regexp))
 
   (when (or (and (= emacs-major-version 21) (= emacs-minor-version 4))
index 473948e..fd01a01 100644 (file)
        (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 ()