update.
[elisp/semi.git] / mime-text.el
index c60b097..025172d 100644 (file)
 (require 'mime-view)
 
 
-;;; @ buffer local variables in raw-buffer
-;;;
-
-(defvar mime-raw-representation-type nil
-  "Representation-type of mime-raw-buffer.
-It must be nil, `binary' or `cooked'.
-If it is nil, `mime-raw-representation-type-alist' is used as default
-value.
-Notice that this variable is usually used as buffer local variable in
-raw-buffer.")
-
-(make-variable-buffer-local 'mime-raw-representation-type)
-
-
 ;;; @ code conversion
 ;;;
 
@@ -50,71 +36,27 @@ 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 ((presentation-type
-        (save-excursion
-          (set-buffer mime-raw-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 mime-raw-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
 ;;;
 
-(defun mime-preview-text/plain (entity situation)
+(defun mime-display-text/plain (entity situation)
   (save-restriction
     (narrow-to-region (point-max)(point-max))
     (mime-text-insert-decoded-body entity)
@@ -122,11 +64,11 @@ SITUATION.  It must be symbol."
     (if (not (eq (char-after (1- (point))) ?\n))
        (insert "\n")
       )
-    (mime-text-add-url-buttons)
-    (run-hooks 'mime-preview-text/plain-hook)
+    (mime-add-url-buttons)
+    (run-hooks 'mime-display-text/plain-hook)
     ))
 
-(defun mime-preview-text/richtext (entity situation)
+(defun mime-display-text/richtext (entity situation)
   (save-restriction
     (narrow-to-region (point-max)(point-max))
     (mime-text-insert-decoded-body entity)
@@ -135,7 +77,7 @@ SITUATION.  It must be symbol."
       (richtext-decode beg (point-max))
       )))
 
-(defun mime-preview-text/enriched (entity situation)
+(defun mime-display-text/enriched (entity situation)
   (save-restriction
     (narrow-to-region (point-max)(point-max))
     (mime-text-insert-decoded-body entity)