Synch up with main trunk, and prepare the release 2.12.0.
[elisp/wanderlust.git] / wl / wl-mime.el
index cde2156..1606ee0 100644 (file)
@@ -39,8 +39,6 @@
   (defalias-maybe 'pgg-display-output-buffer 'ignore)
   (defalias-maybe 'pgg-verify-region 'ignore))
 
-(defvar mime-edit-temp-message-buffer)
-
 ;;; Draft
 
 (defalias 'wl-draft-editor-mode 'mime-edit-mode)
@@ -71,27 +69,30 @@ has Non-nil value\)"
            (cond
             ((wl-region-exists-p)
              (wl-mime-preview-follow-current-region))
-            ((get-text-property (point-min) 'mime-view-entity)
-             (mime-preview-follow-current-entity))
+            ((not (wl-message-mime-analysis-p
+                   (wl-message-buffer-display-type)))
+             (wl-mime-preview-follow-no-mime
+              (wl-message-buffer-display-type)))
             (t
-             (wl-mime-preview-follow-no-mime)))))
+             (mime-preview-follow-current-entity)))))
       (error "No message."))))
 
 ;; modified mime-preview-follow-current-entity from mime-view.el
-(defun wl-mime-preview-follow-no-mime ()
+(defun wl-mime-preview-follow-no-mime (display-type)
   "Write follow message to current message, without mime.
 It calls following-method selected from variable
 `mime-preview-following-method-alist'."
   (interactive)
   (let* ((mode (mime-preview-original-major-mode 'recursive))
         (new-name (format "%s-no-mime" (buffer-name)))
-        new-buf beg end
+        new-buf min beg end
         (entity (get-text-property (point-min) 'elmo-as-is-entity))
         (the-buf (current-buffer))
         fields)
     (save-excursion
       (goto-char (point-min))
-      (setq beg (re-search-forward "^$" nil t)
+      (setq min (point-min)
+           beg (re-search-forward "^$" nil t)
            end (point-max)))
     (save-excursion
       (set-buffer (setq new-buf (get-buffer-create new-name)))
@@ -99,7 +100,9 @@ It calls following-method selected from variable
       (insert-buffer-substring the-buf beg end)
       (goto-char (point-min))
       ;; Insert all headers.
-      (mime-insert-header entity)
+      (let ((elmo-mime-display-header-analysis
+            (wl-message-mime-analysis-p display-type 'header)))
+       (elmo-mime-insert-sorted-header entity))
       (let ((f (cdr (assq mode mime-preview-following-method-alist))))
        (if (functionp f)
            (funcall f new-buf)
@@ -218,7 +221,8 @@ It calls following-method selected from variable
 
 (defun wl-mime-quit-preview ()
   "Quitting method for mime-view."
-  (let* ((temp mime-edit-temp-message-buffer)
+  (let* ((temp (and (boundp 'mime-edit-temp-message-buffer) ;; for SEMI <= 1.14.6
+                   mime-edit-temp-message-buffer))
         (window (selected-window))
         buf)
     (mime-preview-kill-buffer)
@@ -277,7 +281,7 @@ It calls following-method selected from variable
       (when wl-highlight-body-too
        (wl-highlight-body))
       (run-hooks 'wl-draft-preview-message-hook))
-    (make-local-variable 'kill-buffer-hook)
+    (make-local-hook 'kill-buffer-hook)
     (add-hook 'kill-buffer-hook
              (lambda ()
                (when (get-buffer-window
@@ -287,7 +291,8 @@ It calls following-method selected from variable
                  (delete-window))
                (when (get-buffer wl-draft-preview-attributes-buffer-name)
                  (kill-buffer (get-buffer
-                               wl-draft-preview-attributes-buffer-name)))))
+                               wl-draft-preview-attributes-buffer-name))))
+             nil t)
     (if (not wl-draft-preview-attributes)
        (message (concat "Recipients: "
                         (cdr (assq 'recipients attribute-list))))