;;; ;;; A MIME extender for mh-e ;;; ;;; by Morioka Tomohiko, 1993/11/21 ;;; modified by YAMAOKA Katsumi ;;; ;;; @ require modules ;;; (require 'tl-str) (require 'tl-misc) (require 'tm-misc) (require 'mh-e) (if (not (boundp 'mh-e-version)) (require 'tm-mh-e3) ) (autoload 'mime/viewer-mode "tm-view" "View MIME message." t) ;;; @ version ;;; (defconst tm-mh-e/RCS-ID "$Id: tm-mh-e.el,v 6.3 1995/04/23 20:59:27 morioka Exp $") (defconst tm-mh-e/version (get-version-string tm-mh-e/RCS-ID)) ;;; @ MIME header decoding mode ;;; (defun tm-mh-e/toggle-header-decoding-mode (arg) "Toggle MIME header processing. With arg, turn MIME processing on if arg is positive." (interactive "P") (setq mime/header-decoding-mode (if (null arg) (not mime/header-decoding-mode) arg)) (mh-invalidate-show-buffer) (mh-show-msg (mh-get-msg-num t)) ) ;;; @ MIME body players ;;; (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 (if (featurep 'mh-narrow) (widen) ) ;; end of patch (mime/viewer-mode) ) ;;; @ for tm-comp ;;; (defun tm-mh-e::make-message (folder number) (vector folder number) ) (defun tm-mh-e::message/folder (message) (elt message 0) ) (defun tm-mh-e::message/number (message) (elt message 1) ) (defun tm-mh-e::message/file-name (message) (expand-file-name (tm-mh-e::message/number message) (mh-expand-file-name (tm-mh-e::message/folder message)) )) (defun tm-mh-e::prompt-for-message (prompt folder &optional default) (let ((files (directory-files (mh-expand-file-name folder) nil "^[0-9]+$") )) (completing-read prompt (let ((i 0)) (mapcar (function (lambda (file) (setq i (+ i 1)) (list file i) )) files) )) )) (defun tm-mh-e::query-message () (let* ((folder (mh-prompt-for-folder "Visit" "+inbox" nil)) (number (tm-mh-e::prompt-for-message "Number?" folder)) ) (tm-mh-e::make-message folder number) )) (defun tm-mh-e::insert-message (&optional message) (if (null message) (setq message (tm-mh-e::query-message)) ) (insert-file (tm-mh-e::message/file-name message)) ) (call-after-loaded 'tm-comp (function (lambda () (set-alist 'tm-comp/message-inserter-alist 'mh-letter-mode (function tm-mh-e::insert-message)) ))) ;;; @ 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)) (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 "\r" (function (lambda () (interactive) (scroll-other-window 1) ))) (define-key mh-folder-mode-map "\e\r" (function (lambda () (interactive) (scroll-other-window -1) ))) (provide 'tm-mh-e)