update.
[elisp/semi.git] / mime-text.el
index c18b296..025172d 100644 (file)
@@ -36,68 +36,23 @@ It decodes MIME-encoding then code-converts as MIME-charset.
 MIME-encoding is value of field 'encoding of SITUATION.  It must be
 'nil or string.  MIME-charset is value of field \"charset\" of
 SITUATION.  It must be symbol."
-  (let* ((buffer (mime-entity-buffer entity))
-        (presentation-type
-        (save-excursion
-          (set-buffer buffer)
-          (or mime-raw-representation-type
-              (cdr (or (assq major-mode mime-raw-representation-type-alist)
-                       (assq t mime-raw-representation-type-alist)))
-              ))))
-    (save-restriction
-      (insert-buffer-substring buffer
-                              (mime-entity-body-start entity)
-                              (mime-entity-body-end entity))
-      (let ((encoding (mime-entity-encoding entity)))
-       (mime-decode-region (point-min) (point-max) encoding)
-       (if (or (eq presentation-type 'binary)
-               (not (member encoding '(nil "7bit" "8bit" "binary"))))
-           (decode-mime-charset-region (point-min)(point-max)
-                                       (or (mime-content-type-parameter
-                                            (mime-entity-content-type entity)
-                                            "charset")
-                                           default-mime-charset))
-         ))))
+  (let ((str (mime-entity-content entity)))
+    (insert
+     (if (and (mime-entity-cooked-p entity)
+             (member (mime-entity-encoding entity)
+                     '(nil "7bit" "8bit" "binary")))
+        str
+       (decode-mime-charset-string str
+                                  (or (mime-content-type-parameter
+                                       (mime-entity-content-type entity)
+                                       "charset")
+                                      default-mime-charset)
+                                  'CRLF)
+       )))
   (run-hooks 'mime-text-decode-hook)
   )
 
 
-;;; @ for URL
-;;;
-
-(require 'browse-url)
-
-(defvar mime-text-url-regexp
-  "\\(http\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?[-a-zA-Z0-9_=?#$@~`%&*+|\\/.,]*[-a-zA-Z0-9_=#$@~`%&*+|\\/]"
-  "*Regexp to match URL in text/plain body.")
-
-(defun mime-text-browse-url (&optional url)
-  (if (fboundp browse-url-browser-function)
-      (if url 
-        (funcall browse-url-browser-function url)
-      (call-interactively browse-url-browser-function))
-    (if (fboundp mime-button-mother-dispatcher)
-       (call-interactively mime-button-mother-dispatcher)
-      )
-    ))
-
-(defsubst mime-text-add-url-buttons ()
-  "Add URL-buttons for text body."
-  (goto-char (point-min))
-  (while (re-search-forward mime-text-url-regexp nil t)
-    (let ((beg (match-beginning 0))
-         (end (match-end 0)))
-      (mime-add-button beg end #'mime-text-browse-url
-                      (list (buffer-substring beg end)))
-      )))
-
-(defun mime-text-add-url-buttons-maybe ()
-  "Add URL-buttons if 'browse-url-browser-function is not 'nil."
-  (if browse-url-browser-function
-      (mime-text-add-url-buttons)
-    ))
-
-
 ;;; @ content filters for mime-text
 ;;;
 
@@ -109,7 +64,7 @@ SITUATION.  It must be symbol."
     (if (not (eq (char-after (1- (point))) ?\n))
        (insert "\n")
       )
-    (mime-text-add-url-buttons)
+    (mime-add-url-buttons)
     (run-hooks 'mime-display-text/plain-hook)
     ))