Synch with the semi-1_14 branch.
[elisp/semi.git] / mime-w3.el
index ff2aecc..2279b65 100644 (file)
@@ -24,7 +24,9 @@
 
 ;;; Code:
 
-(require 'w3)
+(condition-case nil
+    (require 'w3)
+  (error nil))
 (require 'mime)
 
 (defmacro mime-put-keymap-region (start end keymap)
@@ -39,8 +41,7 @@
       `(let ((color (color-name (face-background 'default))))
         (prog1
             (progn ,@body)
-          (font-set-face-background 'default color (current-buffer))
-          ))
+          (font-set-face-background 'default color (current-buffer))))
     (cons 'progn body)))
 
 (defvar mime-w3-message-structure nil)
        (condition-case err
           (w3-region p (point-max))
         (error (message (format "%s" err))))
-       (mime-put-keymap-region p (point-max) w3-mode-map)
-       ))))
+       (mime-put-keymap-region p (point-max) w3-mode-map)))))
 
 (defun url-cid (url &optional proxy-info)
   (let ((entity
         (mime-find-entity-from-content-id (mime-uri-parse-cid url)
-                                          mime-w3-message-structure)))
+                                          mime-w3-message-structure))
+       buffer)
     (when entity
-      (mime-insert-entity-content entity)
-      (setq url-current-mime-type (mime-entity-type/subtype entity))
-      )))
-
-(url-register-protocol "cid"
-                      'url-cid
-                      'url-identity-expander)
+      (setq buffer (generate-new-buffer (format " *cid %s" url)))
+      (save-excursion
+       (set-buffer buffer)
+       (mime-insert-entity-content entity)
+       (if (boundp 'url-current-mime-type)
+           (setq url-current-mime-type (mime-entity-type/subtype entity)))))
+    buffer))
+
+(if (fboundp 'url-register-protocol)
+    (url-register-protocol "cid"
+                          'url-cid
+                          'url-identity-expander)
+  (provide 'url-cid))
 
 
 ;;; @ end