Merge emh-1_8_2.
[elisp/emh.git] / emh.el
diff --git a/emh.el b/emh.el
index cc8444d..a107a78 100644 (file)
--- a/emh.el
+++ b/emh.el
@@ -38,7 +38,7 @@
 ;;; @ version
 ;;;
 
-(defconst emh-version "1.4.0")
+(defconst emh-version "1.8.2")
 
 
 ;;; @ variable
@@ -89,8 +89,7 @@ nil, `emh-automatic-mime-preview' is used as default value."
           (erase-buffer)
           (if mode
               (let* ((aname (concat "article-" folder))
-                     (abuf (get-buffer aname))
-                     )
+                     (abuf (get-buffer aname)))
                 (if abuf
                     (progn
                       (set-buffer abuf)
@@ -99,22 +98,20 @@ nil, `emh-automatic-mime-preview' is used as default value."
                       )
                   (setq abuf (get-buffer-create aname))
                   (set-buffer abuf)
+                  (set-buffer-multibyte nil)
                   )
-                (let ((coding-system-for-read 'raw-text))
-                  (insert-file-contents msg-filename)
-                  )
+                (insert-file-contents-as-raw-text msg-filename)
                 (set-buffer-modified-p nil)
                 (setq buffer-read-only t)
                 (setq buffer-file-name msg-filename)
                 (mh-show-mode)
-                (mime-view-mode nil nil nil
-                                aname (concat "show-" folder))
+                (mime-display-message (mime-open-entity 'buffer aname)
+                                      (concat "show-" folder))
                 (goto-char (point-min))
                 )
             (let ((clean-message-header mh-clean-message-header)
                   (invisible-headers mh-invisible-headers)
-                  (visible-headers mh-visible-headers)
-                  )
+                  (visible-headers mh-visible-headers))
               ;; 1995/9/21
               ;;   modified by ARIURA <ariura@cc.tuat.ac.jp>
               ;;   to support mhl.
@@ -197,7 +194,8 @@ With arg, turn MIME processing on if arg is positive."
 (defun emh-header-display ()
   (interactive)
   (mh-invalidate-show-buffer)
-  (let ((mime-view-ignored-field-regexp "^:$")
+  (let (mime-view-ignored-field-list
+       mime-view-visible-field-list
        emh-decode-encoded-word)
     (mh-header-display)
     ))
@@ -228,32 +226,21 @@ digest are inserted into the folder after that message."
 ;;; @ for mime-view
 ;;;
 
-(set-alist 'mime-raw-buffer-coding-system-alist
-          'mh-show-mode 'no-conversion)
-
-(set-alist 'mime-text-decoder-alist
-          'mh-show-mode 'mime-text-decode-buffer)
-
-(defvar emh-content-header-filter-hook
-  (if window-system
-      '(emh-highlight-header)
-    )
+(defvar emh-display-header-hook (if window-system '(emh-highlight-header))
   "Hook for header filtering.")
 
 (autoload 'emh-highlight-header "emh-face")
 
-(defun emh-content-header-filter ()
-  "Header filter for mime-view.
-It is registered to variable `mime-view-content-header-filter-alist'."
-  (goto-char (point-min))
-  (mime-view-cut-header)
-  (eword-decode-header default-mime-charset)
-  (run-hooks 'emh-content-header-filter-hook)
+(defun emh-header-presentation-method (entity situation)
+  (mime-insert-decoded-header entity
+                             mime-view-ignored-field-list
+                             mime-view-visible-field-list)
+  (run-hooks 'emh-display-header-hook)
   )
 
-(set-alist 'mime-view-content-header-filter-alist
-          'mh-show-mode
-          (function emh-content-header-filter))
+(set-alist 'mime-header-presentation-method-alist
+          'mh-show-mode #'emh-header-presentation-method)
+
 
 (defun emh-quitting-method ()
   (let ((buf (current-buffer)))
@@ -270,9 +257,7 @@ It is registered to variable `mime-view-content-header-filter-alist'."
 
 (set-alist 'mime-preview-quitting-method-alist
           'mh-show-mode #'emh-quitting-method)
-(set-alist 'mime-view-show-summary-method
-          'mh-show-mode
-          (function emh-quitting-method))
+
 
 (defun emh-following-method (buf)
   (save-excursion
@@ -288,40 +273,44 @@ It is registered to variable `mime-view-content-header-filter-alist'."
       (goto-char last)
       )))
 
-(set-alist 'mime-view-following-method-alist
-          'mh-show-mode
-          (function emh-following-method))
+(set-alist 'mime-preview-following-method-alist
+          'mh-show-mode #'emh-following-method)
 
 
 ;;; @@ for mime-partial
 ;;;
 
-(autoload 'mime-method-to-combine-message/partial-pieces
+(defun emh-request-partial-message ()
+  (let ((msg-filename (mh-msg-filename (mh-get-msg-num t)))
+       (show-buffer mh-show-buffer))
+    (set-buffer (get-buffer-create " *Partial Article*"))
+    (erase-buffer)
+    (setq mime-preview-buffer show-buffer)
+    (insert-file-contents-as-raw-text msg-filename)
+    (mime-parse-buffer)
+    ))
+
+(defun emh-get-folder-buffer ()
+  (let ((buffer-name (buffer-name (current-buffer))))
+    (and (or (string-match "^article-\\(.+\\)$" buffer-name)
+            (string-match "^show-\\(.+\\)$" buffer-name))
+        (substring buffer-name
+                   (match-beginning 1) (match-end 1))
+        )))
+
+(autoload 'mime-combine-message/partial-pieces-automatically
   "mime-partial"
   "Internal method to combine message/partial messages automatically.")
 
-(ctree-set-calist-strictly
- 'mime-acting-condition
+(mime-add-condition
+ 'action
  '((type . message)(subtype . partial)
-   (method . mime-method-to-combine-message/partial-pieces)
    (major-mode . mh-show-mode)
-   (summary-buffer-exp
-    . (and (or (string-match "^article-\\(.+\\)$"
-                            article-buffer)
-              (string-match "^show-\\(.+\\)$" article-buffer))
-          (substring article-buffer
-                     (match-beginning 1) (match-end 1))
-          ))
+   (method . mime-combine-message/partial-pieces-automatically)
+   (summary-buffer-exp . (emh-get-folder-buffer))
+   (request-partial-message-method . emh-request-partial-message)
    ))
 
-(set-alist 'mime-view-partial-message-method-alist
-          'mh-show-mode
-          (function
-           (lambda ()
-             (let ((emh-automatic-mime-preview t))
-               (emh-show)
-               ))))
-
 
 ;;; @ set up
 ;;;