X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=emh.el;h=22a2d7e661d97346fa09116dfca65a44804c6ff7;hb=6e3264ab51e45bf0da5db5644ff699e95f70c4e8;hp=742a026c0013382b292719694dc3d7a5eb5d49fe;hpb=825f9540c9d64bd2d5e9a33d59cc8c459925aa0e;p=elisp%2Femh.git diff --git a/emh.el b/emh.el index 742a026..22a2d7e 100644 --- a/emh.el +++ b/emh.el @@ -1,6 +1,6 @@ ;;; emh.el --- MIME extender for mh-e -;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc. +;; Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko ;; OKABE Yasuo @@ -8,7 +8,6 @@ ;; Created: 1993/11/21 ;; Renamed: 1993/11/27 from mh-e-mime.el ;; Renamed: 1997/02/21 from tm-mh-e.el -;; Version: $Revision: 1.1 $ ;; Keywords: MH, MIME, multimedia, encoded-word, multilingual, mail ;; This file is part of emh. @@ -31,16 +30,14 @@ ;;; Code: (require 'mh-e) +(require 'alist) (require 'mime-view) ;;; @ version ;;; -(defconst emh-RCS-ID - "$Id: emh.el,v 1.1 1998-02-17 13:51:25 morioka Exp $") - -(defconst emh-version (get-version-string emh-RCS-ID)) +(defconst emh-version "1.13.0") ;;; @ variable @@ -65,6 +62,11 @@ ;;; @ functions ;;; +(defsubst emh-raw-buffer (folder-buffer) + (concat "article-" (if (bufferp folder-buffer) + (buffer-name folder-buffer) + folder-buffer))) + (defun mh-display-msg (msg-num folder &optional show-buffer mode) "Display message number MSG-NUM of FOLDER. This function uses `mime-view-mode' if MODE is not nil. If MODE is @@ -90,9 +92,8 @@ nil, `emh-automatic-mime-preview' is used as default value." (setq buffer-read-only nil) (erase-buffer) (if mode - (let* ((aname (concat "article-" folder)) - (abuf (get-buffer aname)) - ) + (let* ((aname (emh-raw-buffer folder)) + (abuf (get-buffer aname))) (if abuf (progn (set-buffer abuf) @@ -101,22 +102,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 ;; to support mhl. @@ -179,13 +178,10 @@ With arg, turn MIME processing on if arg is positive." (if (null arg) (not emh-automatic-mime-preview) arg)) - (save-excursion - (set-buffer mh-show-buffer) - (if (null emh-automatic-mime-preview) - (if (and mime-raw-buffer - (get-buffer mime-raw-buffer)) - (kill-buffer mime-raw-buffer) - ))) + (let ((raw-buffer (emh-raw-buffer (current-buffer)))) + (if (get-buffer raw-buffer) + (kill-buffer raw-buffer) + )) (mh-invalidate-show-buffer) (mh-show (mh-get-msg-num t)) ) @@ -199,7 +195,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) )) @@ -230,33 +227,21 @@ digest are inserted into the folder after that message." ;;; @ for mime-view ;;; -(fset 'emh-text-decode-buffer - (symbol-function 'mime-text-decode-buffer)) - -(set-alist 'mime-text-decoder-alist - 'mh-show-mode - (function emh-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-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))) @@ -271,12 +256,9 @@ It is registered to variable `mime-view-content-header-filter-alist'." (mh-show (mh-get-msg-num t)) )) -(set-alist 'mime-view-quitting-method-alist - 'mh-show-mode - (function emh-quitting-method)) -(set-alist 'mime-view-show-summary-method - 'mh-show-mode - (function emh-quitting-method)) +(set-alist 'mime-preview-quitting-method-alist + 'mh-show-mode #'emh-quitting-method) + (defun emh-following-method (buf) (save-excursion @@ -292,40 +274,43 @@ 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 ;;; -(eval-after-load - "mime-view" - '(progn - (autoload 'mime-combine-message/partials-automatically - "mime-partial" - "Internal method to combine message/partial messages automatically.") - (set-atype 'mime-acting-condition - '((type . "message/partial") - (method . mime-combine-message/partials-automatically) - (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)) - )) - )) - (set-alist 'mime-view-partial-message-method-alist - 'mh-show-mode - (function - (lambda () - (let ((emh-automatic-mime-preview t)) - (emh-show) - )))) - )) +(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.") + +(mime-add-condition + 'action + '((type . message)(subtype . partial) + (major-mode . mh-show-mode) + (method . mime-combine-message/partial-pieces-automatically) + (summary-buffer-exp . (emh-get-folder-buffer)) + (request-partial-message-method . emh-request-partial-message) + )) ;;; @ set up @@ -344,8 +329,8 @@ It is registered to variable `mime-view-content-header-filter-alist'." (if buf (let ((the-buf (current-buffer))) (switch-to-buffer buf) - (if (and mime-view-buffer - (setq buf (get-buffer mime-view-buffer)) + (if (and mime-preview-buffer + (setq buf (get-buffer mime-preview-buffer)) ) (progn (switch-to-buffer the-buf)