(if (not (boundp 'mh-e-version))
(require 'tm-mh-e3)
)
-(autoload 'mime/viewer-mode "tm-view" "View MIME message." t)
+(require 'tm-view)
;;; @ version
;;;
(defconst tm-mh-e/RCS-ID
- "$Id: tm-mh-e.el,v 6.3 1995/04/23 20:59:27 morioka Exp $")
+ "$Id: tm-mh-e.el,v 6.10 1995/06/12 01:53:19 morioka Exp $")
(defconst tm-mh-e/version (get-version-string tm-mh-e/RCS-ID))
-;;; @ MIME header decoding mode
+;;; @ variable
;;;
-(defun tm-mh-e/toggle-header-decoding-mode (arg)
- "Toggle MIME header processing.
+(defvar tm-mh-e/decode-all t
+ "*If t, decode all of the message. Otherwise decode header only.")
+
+
+;;; @ functions
+;;;
+
+(defun tm-mh-e/display-msg (msg-num folder &optional show-buffer mode)
+ (or mode
+ (setq mode tm-mh-e/decode-all)
+ )
+ ;; Display message NUMBER of FOLDER.
+ ;; Sets the current buffer to the show buffer.
+ (set-buffer folder)
+ (or show-buffer
+ (setq show-buffer mh-show-buffer))
+ ;; Bind variables in folder buffer in case they are local
+ (let ((msg-filename (mh-msg-filename msg-num)))
+ (if (not (file-exists-p msg-filename))
+ (error "Message %d does not exist" msg-num))
+ (set-buffer show-buffer)
+ (cond ((not (equal msg-filename buffer-file-name))
+ ;; Buffer does not yet contain message.
+ (clear-visited-file-modtime)
+ (unlock-buffer)
+ (setq buffer-file-name nil) ; no locking during setup
+ (let (buffer-read-only)
+ (erase-buffer)
+ (if mode
+ (progn
+ (let ((file-coding-system-for-read
+ (if (boundp 'MULE) *noconv*))
+ kanji-fileio-code)
+ (insert-file-contents msg-filename)
+ )
+ (set-buffer-modified-p nil)
+ (mh-show-mode)
+ (mime/viewer-mode)
+ (goto-char (point-min))
+ )
+ (let ((clean-message-header mh-clean-message-header)
+ (invisible-headers mh-invisible-headers)
+ (visible-headers mh-visible-headers)
+ )
+ (insert-file-contents msg-filename)
+ (goto-char (point-min))
+ (cond (clean-message-header
+ (mh-clean-msg-header (point-min)
+ invisible-headers
+ visible-headers)
+ (goto-char (point-min)))
+ (t
+ (mh-start-of-uncleaned-message)))
+ (mime/decode-message-header)
+ (set-buffer-modified-p nil)
+ (mh-show-mode)
+ )))
+ (or (eq buffer-undo-list t) ;don't save undo info for prev msgs
+ (setq buffer-undo-list nil))
+ (setq buffer-file-name msg-filename)
+ (set-mark nil)
+ (setq mode-line-buffer-identification
+ (list (format mh-show-buffer-mode-line-buffer-id
+ folder msg-num)))
+ (set-buffer folder)
+ (setq mh-showing-with-headers nil)))))
+
+(fset 'mh-display-msg (symbol-function 'tm-mh-e/display-msg))
+
+(defun tm-mh-e/view-message (&optional msg)
+ "MIME decode and play this message."
+ (interactive)
+ (mh-invalidate-show-buffer)
+ (let ((tm-mh-e/decode-all t))
+ (mh-show-msg msg)
+ )
+ (pop-to-buffer (save-window-excursion
+ (switch-to-buffer mh-show-buffer)
+ mime::article/preview-buffer))
+ )
+
+(defun tm-mh-e/toggle-decoding-mode (arg)
+ "Toggle MIME processing mode.
With arg, turn MIME processing on if arg is positive."
(interactive "P")
- (setq mime/header-decoding-mode
+ (setq tm-mh-e/decode-all
(if (null arg)
- (not mime/header-decoding-mode)
+ (not tm-mh-e/decode-all)
arg))
- (mh-invalidate-show-buffer)
- (mh-show-msg (mh-get-msg-num t))
- )
+ (mh-show (mh-get-msg-num t))
+ (if tm-mh-e/decode-all
+ (let ((the-buf (current-buffer)))
+ (pop-to-buffer (save-excursion
+ (switch-to-buffer mh-show-buffer)
+ mime::article/preview-buffer))
+ (pop-to-buffer the-buf)
+ )))
+
+(defun tm-mh-e/cite ()
+ (interactive)
+ (if tm-mh-e/decode-all
+ (save-excursion
+ (save-restriction
+ (insert-buffer
+ (save-window-excursion
+ (switch-to-buffer (concat "show-" mh-sent-from-folder))
+ mime::article/preview-buffer))
+ (if (looking-at "^\\[.+\\]\n")
+ (replace-match ""))
+ (run-hooks 'mail-citation-hook)
+ ))
+ (mh-yank-cur-msg)
+ ))
-;;; @ MIME body players
+;;; @ for tm-view
;;;
-(defun tm-mh-e/view-message (arg)
- "MIME decode and play this message."
- (interactive "P")
- (mh-invalidate-show-buffer)
- (mh-show-msg (mh-get-msg-num t))
- (pop-to-buffer mh-show-buffer t)
- ;; patch for mh-narrow.el
- ;; by YAMAOKA Katsumi <yamaoka@ga.sony.co.jp>
- (if (featurep 'mh-narrow)
- (widen)
- )
- ;; end of patch
- (mime/viewer-mode)
+
+(defun tm-mh-e/content-header-filter ()
+ (goto-char (point-min))
+ (while (and (re-search-forward
+ (concat "^" mime-viewer/ignored-field-regexp ":")
+ nil t)
+ (progn
+ (delete-region
+ (match-beginning 0)
+ (save-excursion
+ (and
+ (re-search-forward "^\\([^ \t]\\|$\\)" nil t)
+ (match-beginning 0)
+ )))
+ t)))
+ (mime/code-convert-region-to-emacs (point-min)(point-max)
+ mime/default-coding-system)
+ (mime/decode-message-header)
)
+(defun tm-mh-e/quitting-method ()
+ (let ((win (get-buffer-window
+ mime/output-buffer-name))
+ (buf mime::preview/article-buffer)
+ )
+ (if win
+ (delete-window win)
+ )
+ (pop-to-buffer
+ (let ((name (buffer-name buf)))
+ (substring name 5)
+ ))
+ (if (not tm-mh-e/decode-all)
+ (mh-show (mh-get-msg-num t))
+ )))
+
;;; @ for tm-comp
;;;
;;; @ set up
;;;
-(defun tm-mh-e/decode-message-header ()
- (make-local-variable 'minor-mode-alist)
- (mime/add-header-decoding-mode-to-mode-line)
- (let ((buffer-read-only nil))
- (mime/decode-message-header-if-you-need)
- (set-buffer-modified-p nil)
- ))
-(add-hook 'mh-show-mode-hook
- (function tm-mh-e/decode-message-header))
+;;(add-hook 'mh-show-mode-hook (function mime/viewer-mode))
-(define-key mh-folder-mode-map "\et" 'tm-mh-e/toggle-header-decoding-mode)
-(define-key mh-folder-mode-map "v" 'tm-mh-e/view-message)
+(define-key mh-folder-mode-map "v" (function tm-mh-e/view-message))
+(define-key mh-folder-mode-map "\et" (function tm-mh-e/toggle-decoding-mode))
(define-key mh-folder-mode-map "\r"
(function (lambda ()
(interactive)
(interactive)
(scroll-other-window -1)
)))
+(define-key mh-folder-mode-map " "
+ (function (lambda ()
+ (interactive)
+ (scroll-other-window)
+ )))
+(define-key mh-folder-mode-map "\177"
+ (function (lambda ()
+ (interactive)
+ (scroll-other-window (- (save-window-excursion
+ (other-window 1)
+ (window-height))))
+ )))
+
+(add-hook 'mh-letter-mode-hook
+ (function
+ (lambda ()
+ (define-key mh-letter-mode-map "\C-c\C-y" (function tm-mh-e/cite))
+ )))
+
+(set-alist 'mime-viewer/quitting-method-alist
+ 'mh-show-mode
+ (function tm-mh-e/quitting-method))
+
+(set-alist 'mime-viewer/content-header-filter-alist
+ 'mh-show-mode
+ (function tm-mh-e/content-header-filter))
+(run-hooks 'tm-mh-e-load-hook)
(provide 'tm-mh-e)