Synch to No Gnus 200401081739.
[elisp/gnus.git-] / lisp / mm-view.el
index 4fba52b..d3eb051 100644 (file)
@@ -54,7 +54,7 @@
 (defvar mm-text-html-washer-alist
   '((w3  . gnus-article-wash-html-with-w3)
     (w3m . gnus-article-wash-html-with-w3m)
-    (w3m-standalone mm-inline-render-with-stdin nil
+    (w3m-standalone mm-inline-wash-with-stdin nil
                    "w3m" "-dump" "-T" "text/html")
     (links mm-inline-wash-with-file
           mm-links-remove-leading-blank
     (setq mm-w3m-setup t))
   (setq w3m-display-inline-images mm-inline-text-html-with-images))
 
+(defun mm-w3m-cid-retrieve-1 (url handle)
+  (dolist (elem handle)
+    (when (and (listp elem)
+              (equal url (mm-handle-id elem)))
+      (mm-insert-part elem)
+      (throw 'found-handle (mm-handle-media-type elem)))))
+
 (defun mm-w3m-cid-retrieve (url &rest args)
   "Insert a content pointed by URL if it has the cid: scheme."
   (when (string-match "\\`cid:" url)
     (setq url (concat "<" (substring url (match-end 0)) ">"))
     (catch 'found-handle
-      (dolist (handle (with-current-buffer w3m-current-buffer
-                       gnus-article-mime-handles))
-       (when (and (listp handle)
-                  (equal url (mm-handle-id handle)))
-         (mm-insert-part handle)
-         (throw 'found-handle (mm-handle-media-type handle)))))))
-
-(eval-and-compile
-  (unless (or (featurep 'xemacs)
-             (>= emacs-major-version 21))
-    (defvar mm-w3m-mode-map nil
-      "Keymap for text/html part rendered by `mm-w3m-preview-text/html'.
-This map is overwritten by `mm-w3m-local-map-property' based on the
-value of `w3m-minor-mode-map'.  Therefore, in order to add some
-commands to this map, add them to `w3m-minor-mode-map' instead of this
-map.")))
-
-(defun mm-w3m-local-map-property ()
-  (when (and (boundp 'w3m-minor-mode-map) w3m-minor-mode-map)
-    (if (or (featurep 'xemacs)
-           (>= emacs-major-version 21))
-       (list 'keymap w3m-minor-mode-map)
-      (list 'local-map
-           (or mm-w3m-mode-map
-               (progn
-                 (setq mm-w3m-mode-map (copy-keymap w3m-minor-mode-map))
-                 (set-keymap-parent mm-w3m-mode-map gnus-article-mode-map)
-                 mm-w3m-mode-map))))))
+      (let ((handles (with-current-buffer w3m-current-buffer
+                      gnus-article-mime-handles)))
+       (if (mm-multiple-handles handles)
+           (dolist (handle handles)
+             (mm-w3m-cid-retrieve-1 url handle))
+         (mm-w3m-cid-retrieve-1 url handles))))))
 
 (defun mm-inline-text-html-render-with-w3m (handle)
   "Render a text/html part using emacs-w3m."
@@ -251,11 +236,14 @@ map.")))
        (let ((w3m-safe-url-regexp mm-w3m-safe-url-regexp)
              w3m-force-redisplay)
          (w3m-region (point-min) (point-max)))
-       (when mm-inline-text-html-with-w3m-keymap
+       (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)
-          (nconc (mm-w3m-local-map-property)
-                 '(mm-inline-text-html-with-w3m t)))))
+          (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 ()
@@ -439,7 +427,8 @@ map.")))
              gnus-article-prepare-hook
              (gnus-newsgroup-charset
               (or charset gnus-newsgroup-charset)))
-         (run-hooks 'gnus-article-decode-hook)
+         (let ((gnus-original-article-buffer (mm-handle-buffer handle)))
+           (run-hooks 'gnus-article-decode-hook))
          (gnus-article-prepare-display)
          (setq handles gnus-article-mime-handles))
        (goto-char (point-min))
@@ -558,8 +547,6 @@ map.")))
   (sit-for 1)
   t)
 
-(autoload 'gnus-completing-read-maybe-default "gnus-util" nil nil 'macro)
-
 (defun mm-view-pkcs7-decrypt (handle)
   (insert-buffer-substring (mm-handle-buffer handle))
   (goto-char (point-min))
@@ -570,7 +557,7 @@ map.")))
    (if (= (length smime-keys) 1)
        (cadar smime-keys)
      (smime-get-key-by-email
-      (gnus-completing-read-maybe-default
+      (completing-read
        (concat "Decipher using which key? "
               (if smime-keys (concat "(default " (caar smime-keys) ") ")
                 ""))