* smtp.el (TopLevel): Autoload `sasl-digest-md5-digest-response'.
[elisp/flim.git] / mmbuffer.el
index 8754e2b..f014aec 100644 (file)
   )
 
 
-(luna-define-method mime-entity-children ((entity mime-buffer-entity))
-  (let* ((content-type (mime-entity-content-type entity))
-        (primary-type (mime-content-type-primary-type content-type)))
-    (cond ((eq primary-type 'multipart)
-          (mime-parse-multipart entity)
-          )
-         ((and (eq primary-type 'message)
-               (memq (mime-content-type-subtype content-type)
-                     '(rfc822 news external-body)
-                     ))
-          (mime-parse-encapsulated entity)
-          ))
-    ))
-
-
 (defun mime-visible-field-p (field-name visible-fields invisible-fields)
   (or (catch 'found
        (while visible-fields
                       (mime-buffer-entity-body-end-internal entity))
      (mime-entity-encoding entity))))
 
-(luna-define-method mime-insert-text-content ((entity mime-buffer-entity))
-  (insert
-   (decode-mime-charset-string (mime-entity-content entity)
-                              (or (mime-content-type-parameter
-                                   (mime-entity-content-type entity)
-                                   "charset")
-                                  default-mime-charset)
-                              'CRLF)
-   ))
-
-;;; redefine to speed up
-
-(mm-define-method entity-point-min ((entity buffer))
-  (mime-buffer-entity-header-start-internal entity))
-
-(mm-define-method entity-point-max ((entity buffer))
-  (mime-buffer-entity-body-end-internal entity))
-
-(luna-define-method mime-entity-fetch-field ((entity mime-buffer-entity)
-                                            field-name)
-  (save-excursion
-    (set-buffer (mime-buffer-entity-buffer-internal entity))
-    (save-restriction
-      (narrow-to-region (mime-buffer-entity-header-start-internal entity)
-                       (mime-buffer-entity-header-end-internal entity))
-      (std11-fetch-field field-name)
-      )))
+(luna-define-method mime-entity-fetch-field :around
+  ((entity mime-buffer-entity) field-name)
+  (or (luna-call-next-method)
+      (save-excursion
+       (set-buffer (mime-buffer-entity-buffer-internal entity))
+       (save-restriction
+         (narrow-to-region (mime-buffer-entity-header-start-internal entity)
+                           (mime-buffer-entity-header-end-internal entity))
+         (let ((ret (std11-fetch-field field-name)))
+           (when ret
+             (or (symbolp field-name)
+                 (setq field-name
+                       (intern (capitalize (capitalize field-name)))))
+             (mime-entity-set-original-header-internal
+              entity
+              (put-alist field-name ret
+                         (mime-entity-original-header-internal entity)))
+             ret))))))
 
 (mm-define-method insert-entity-content ((entity buffer))
   (insert (with-current-buffer (mime-buffer-entity-buffer-internal entity)
     ))
 
 
-;;; @ buffer
+;;; @ header buffer
 ;;;
 
 (luna-define-method mime-entity-header-buffer ((entity mime-buffer-entity))
   (mime-buffer-entity-buffer-internal entity)
   )
 
+(luna-define-method mime-goto-header-start-point ((entity mime-buffer-entity))
+  (set-buffer (mime-buffer-entity-buffer-internal entity))
+  (goto-char (mime-buffer-entity-header-start-internal entity))
+  )
+
+(luna-define-method mime-entity-header-start-point ((entity
+                                                    mime-buffer-entity))
+  (mime-buffer-entity-header-start-internal entity)
+  )
+
+(luna-define-method mime-entity-header-end-point ((entity
+                                                  mime-buffer-entity))
+  (mime-buffer-entity-header-end-internal entity)
+  )
+
+
+;;; @ body buffer
+;;;
+
 (luna-define-method mime-entity-body-buffer ((entity mime-buffer-entity))
   (mime-buffer-entity-buffer-internal entity)
   )
 
-(luna-define-method mime-entity-buffer ((entity mime-buffer-entity))
-  (mime-buffer-entity-buffer-internal entity)
+(luna-define-method mime-goto-body-start-point ((entity mime-buffer-entity))
+  (set-buffer (mime-buffer-entity-buffer-internal entity))
+  (goto-char (mime-buffer-entity-body-start-internal entity))
+  )
+
+(luna-define-method mime-goto-body-end-point ((entity mime-buffer-entity))
+  (set-buffer (mime-buffer-entity-buffer-internal entity))
+  (goto-char (mime-buffer-entity-body-end-internal entity))
   )
 
 (luna-define-method mime-entity-body-start-point ((entity mime-buffer-entity))
   (mime-buffer-entity-body-end-internal entity)
   )
 
-(luna-define-method mime-entity-point-min ((entity mime-buffer-entity))
-  (mime-buffer-entity-header-start-internal entity)
-  )
 
-(luna-define-method mime-entity-point-max ((entity mime-buffer-entity))
-  (mime-buffer-entity-body-end-internal entity)
-  )
+;;; @ buffer (obsolete)
+;;;
 
-(luna-define-method mime-goto-header-start-point ((entity mime-buffer-entity))
-  (set-buffer (mime-buffer-entity-buffer-internal entity))
-  (goto-char (mime-buffer-entity-header-start-internal entity))
+(luna-define-method mime-entity-buffer ((entity mime-buffer-entity))
+  (mime-buffer-entity-buffer-internal entity)
   )
 
-(luna-define-method mime-goto-body-start-point ((entity mime-buffer-entity))
-  (set-buffer (mime-buffer-entity-buffer-internal entity))
-  (goto-char (mime-buffer-entity-body-start-internal entity))
+(luna-define-method mime-entity-point-min ((entity mime-buffer-entity))
+  (mime-buffer-entity-header-start-internal entity)
   )
 
-(luna-define-method mime-goto-body-end-point ((entity mime-buffer-entity))
-  (set-buffer (mime-buffer-entity-buffer-internal entity))
-  (goto-char (mime-buffer-entity-body-end-internal entity))
+(luna-define-method mime-entity-point-max ((entity mime-buffer-entity))
+  (mime-buffer-entity-body-end-internal entity)
   )