b503f242a61d705a26776806a5d04f436a28f3d6
[elisp/tm.git] / tm-mh-e.el
1 ;;;
2 ;;; A MIME extender for mh-e
3 ;;;
4 ;;; by Morioka Tomohiko, 1993/11/21
5 ;;;
6
7 (provide 'tm-mh-e)
8
9 ;;; @ version
10 ;;;
11 (defconst tm-mh-e/RCS-ID
12   "$Id: tm-mh-e.el,v 3.1 1994/08/31 05:32:24 morioka Exp $")
13
14 (defconst tm-mh-e/version
15   (and (string-match "[0-9][0-9.]*" tm-mh-e/RCS-ID)
16        (substring tm-mh-e/RCS-ID (match-beginning 0)(match-end 0))
17        ))
18
19
20 ;;; @ require modules
21 ;;;
22 (require 'tm-misc)
23 (require 'mh-e)
24 (if (not (boundp 'mh-e-version))
25     (require 'tm-mh-e3)
26   )
27 (autoload 'mime/view-mode "tm-view" "View MIME message." t)
28
29
30 ;;; @ MIME header decoding mode
31 ;;;
32 (defun tm-mh-e/toggle-header-decoding-mode (arg)
33   "Toggle MIME header processing.
34 With arg, turn MIME processing on if arg is positive."
35   (interactive "P")
36   (setq mime/header-decoding-mode
37         (if (null arg)
38             (not mime/header-decoding-mode)
39           arg))
40   (mh-invalidate-show-buffer)
41   (mh-show-msg (mh-get-msg-num t))
42   )
43
44
45 ;;; @ MIME body players
46 ;;;
47 (defun tm-mh-e/view-message (arg)
48   "MIME decode and play this message."
49   (interactive "P")
50   (mh-invalidate-show-buffer)
51   (mh-show-msg (mh-get-msg-num t))
52   (pop-to-buffer mh-show-buffer t)
53   (mime/view-mode)
54   )
55
56
57 ;;; @ set up
58 ;;;
59 (add-hook 'mh-show-mode-hook
60           (function
61            (lambda ()
62              (make-local-variable 'minor-mode-alist)
63              (mime/add-header-decoding-mode-to-mode-line)
64              (let ((buffer-read-only nil))
65                (if mime/header-decoding-mode
66                    (mime/decode-message-header)
67                  )
68                (set-buffer-modified-p nil)
69                ))))
70
71 (define-key mh-folder-mode-map "\et" 'tm-mh-e/toggle-header-decoding-mode)
72 (define-key mh-folder-mode-map "v" 'tm-mh-e/view-message)
73 (define-key mh-folder-mode-map "\r"
74   (function (lambda ()
75               (interactive)
76               (scroll-other-window 1)
77               )))
78 (define-key mh-folder-mode-map "\e\r"
79   (function (lambda ()
80               (interactive)
81               (scroll-other-window -1)
82               )))