2 ;;; A MIME extender for mh-e
4 ;;; by Morioka Tomohiko, 1993/11/21
5 ;;; modified by YAMAOKA Katsumi <yamaoka@ga.sony.co.jp>
14 (if (not (boundp 'mh-e-version))
17 (autoload 'mime/viewer-mode "tm-view" "View MIME message." t)
22 (defconst tm-mh-e/RCS-ID
23 "$Id: tm-mh-e.el,v 6.1 1995/04/18 16:49:45 morioka Exp $")
25 (defconst tm-mh-e/version (get-version-string tm-mh-e/RCS-ID))
28 ;;; @ MIME header decoding mode
30 (defun tm-mh-e/toggle-header-decoding-mode (arg)
31 "Toggle MIME header processing.
32 With arg, turn MIME processing on if arg is positive."
34 (setq mime/header-decoding-mode
36 (not mime/header-decoding-mode)
38 (mh-invalidate-show-buffer)
39 (mh-show-msg (mh-get-msg-num t))
43 ;;; @ MIME body players
45 (defun tm-mh-e/view-message (arg)
46 "MIME decode and play this message."
48 (mh-invalidate-show-buffer)
49 (mh-show-msg (mh-get-msg-num t))
50 (pop-to-buffer mh-show-buffer t)
51 ;; patch for mh-narrow.el
52 ;; by YAMAOKA Katsumi <yamaoka@ga.sony.co.jp>
53 (if (featurep 'mh-narrow)
63 (defun tm-mh-e::make-message (folder number)
64 (vector folder number)
67 (defun tm-mh-e::message/folder (message)
71 (defun tm-mh-e::message/number (message)
75 (defun tm-mh-e::message/file-name (message)
77 (tm-mh-e::message/number message)
78 (mh-expand-file-name (tm-mh-e::message/folder message))
81 (defun tm-mh-e::prompt-for-message (prompt folder &optional default)
83 (directory-files (mh-expand-file-name folder) nil "^[0-9]+$")
85 (completing-read prompt
96 (defun tm-mh-e::query-message ()
97 (let* ((folder (mh-prompt-for-folder "Visit" "+inbox" nil))
98 (number (tm-mh-e::prompt-for-message "Number?" folder))
100 (tm-mh-e::make-message folder number)
103 (defun tm-mh-e::insert-message (&optional message)
105 (setq message (tm-mh-e::query-message))
107 (insert-file (tm-mh-e::message/file-name message))
110 (if (featurep 'tm-comp)
111 (set-alist 'tm-comp/message-inserter-alist
112 'mh-letter-mode (function tm-mh-e::insert-message))
113 (add-hook 'tm-comp-load-hook
117 'tm-comp/message-inserter-alist
118 'mh-letter-mode (function tm-mh-e::insert-message))
126 (defun tm-mh-e/decode-message-header ()
127 (make-local-variable 'minor-mode-alist)
128 (mime/add-header-decoding-mode-to-mode-line)
129 (let ((buffer-read-only nil))
130 (mime/decode-message-header-if-you-need)
131 (set-buffer-modified-p nil)
133 (add-hook 'mh-show-mode-hook
134 (function tm-mh-e/decode-message-header))
136 (define-key mh-folder-mode-map "\et" 'tm-mh-e/toggle-header-decoding-mode)
137 (define-key mh-folder-mode-map "v" 'tm-mh-e/view-message)
138 (define-key mh-folder-mode-map "\r"
141 (scroll-other-window 1)
143 (define-key mh-folder-mode-map "\e\r"
146 (scroll-other-window -1)