tm 7.21.
authormorioka <morioka>
Mon, 9 Mar 1998 11:22:24 +0000 (11:22 +0000)
committermorioka <morioka>
Mon, 9 Mar 1998 11:22:24 +0000 (11:22 +0000)
15 files changed:
Changes-7.21.en [new file with mode: 0644]
Changes-7.21.ja [new file with mode: 0644]
Makefile
gnus/Makefile
gnus/tm-gnus.el
gnus/tm-gnus4.el
gnus/tm-sgnus.el
mh-e/Makefile
mh-e/tm-mh-e.el
mime-setup.el
mk-tm
tm-edit.el
tm-rmail.el
tm-view.el
tm-vm.el

diff --git a/Changes-7.21.en b/Changes-7.21.en
new file mode 100644 (file)
index 0000000..5a55202
--- /dev/null
@@ -0,0 +1,119 @@
+* mel
+
+  Attached version 3.1.
+
+mel/mel.el
+----------------------------
+revision 3.1
+date: 1995/10/30 06:03:37;  author: morioka;  state: Exp;  lines: +18 -14
+(1) setting for function `uuencode-decode-region' of mel-u.el.
+(2) Variable `mime-decoding-method-alist' was created to chose decoder 
+    in function `mime/decode-region'.
+----------------------------
+
+mel/mel-u.el
+----------------------------
+revision 2.0
+date: 1995/10/30 06:01:29;  author: morioka;  state: Exp;  lines: +51 -1
+Function `uuencode-decode-region' was created.
+----------------------------
+
+
+* tm
+
+tm/mime-setup.el
+----------------------------
+revision 7.9
+date: 1995/10/28 06:02:53;  author: morioka;  state: Exp;  lines: +38 -39
+(1) all of VM settings were deleted.
+(2) `mime-setup-load-hook' was created.
+(3) Setting to decode encoded-words was inserted to variable
+    `mime/editor-mode-hook'. Other similar settings were deleted.
+----------------------------
+revision 7.8
+date: 1995/10/27 08:36:13;  author: morioka;  state: Exp;  lines: +2 -16
+For `mh-letter-mode-hook', do add-hook as append mode.
+----------------------------
+
+tm/tm-edit.el
+----------------------------
+revision 7.14
+date: 1995/10/29 06:15:49;  author: morioka;  state: Exp;  lines: +6 -120
+Unnecessary comments were deleted.
+----------------------------
+revision 7.13
+date: 1995/10/28 05:48:36;  author: morioka;  state: Exp;  lines: +501 -463
+(1) prefix was renamed from ``tm-edit/'' to ``mime-editor/''.
+(2) `mime-mode' was renamed to `mime/editor-mode'.
+(3) Does not set sending key.
+    It sets function `mime-editor/maybe-translate' to before sending
+    hooks of each MUAs'.
+(4) Some problems were fixed.
+----------------------------
+revision 7.12
+date: 1995/10/27 11:18:22;  author: morioka;  state: Exp;  lines: +13 -43
+Forgot part to rename `mime-menu' to `tm-edit/menu' was renamed.
+----------------------------
+
+tm/tm-view.el
+----------------------------
+revision 7.21
+date: 1995/10/30 05:57:27;  author: morioka;  state: Exp;  lines: +31 -17
+Variable `mime-viewer/over-to-previous-method-alist' and variable
+`mime-viewer/over-to-next-method-alist' were created.
+----------------------------
+
+tm/tm-rmail.el
+----------------------------
+revision 7.8
+date: 1995/10/30 05:52:36;  author: morioka;  state: Exp;  lines: +80 -23
+automatic MIME preview support.
+----------------------------
+
+tm/tm-vm.el
+----------------------------
+revision 7.3
+date: 1995/10/28 06:00:09;  author: morioka;  state: Exp;  lines: +13 -1
+Code for mime-setup.
+----------------------------
+
+
+* tm/mh-e
+
+  Attached version 7.10.
+
+tm/mh-e/tm-mh-e.el
+----------------------------
+revision 7.10
+date: 1995/10/30 03:19:18;  author: morioka;  state: Exp;  lines: +2 -2
+Setting for tm-edit was modified because variable
+`tm-edit/message-inserter-alist' was renamed to
+`mime-editor/message-inserter-alist'.
+----------------------------
+
+
+* tm/gnus
+
+  Attached version 7.12.
+
+tm/gnus/tm-gnus4.el
+----------------------------
+revision 7.1
+date: 1995/10/28 05:44:44;  author: morioka;  state: Exp;  lines: +1 -98
+Setting for tm-comp was deleted.
+----------------------------
+
+tm/gnus/tm-sgnus.el
+----------------------------
+revision 7.12
+date: 1995/10/29 14:13:08;  author: morioka;  state: Exp;  lines: +16 -29
+(1) encoded-words decoding mode (tm-gnus/decode-all = nil) was
+    abolished. So variable `tm-gnus/decode-all' was deleted.
+(2) Redefine function `gnus-article-hide-headers-if-wanted'.
+(3) Variable `tm-gnus/automatic-mime-preview' was created. It is set
+    to variable `gnus-show-mime'.
+----------------------------
+revision 7.11
+date: 1995/10/27 10:19:38;  author: morioka;  state: Exp;  lines: +3 -1
+measure for BBDB again.
+----------------------------
diff --git a/Changes-7.21.ja b/Changes-7.21.ja
new file mode 100644 (file)
index 0000000..175ef66
--- /dev/null
@@ -0,0 +1,125 @@
+* mel
+
+  Version 3.1 \e$B$rE:IU$7$?!#\e(B
+
+mel/mel.el
+----------------------------
+revision 3.1
+date: 1995/10/30 06:03:37;  author: morioka;  state: Exp;  lines: +18 -14
+(1) mel-u.el \e$B$N\e(B uuencode-decode-region \e$B$N@_Dj$r9T$C$?!#\e(B
+(2) \e$BJQ?t\e(B mime-decoding-method-alist \e$B$r@_$1$F!"4X?t\e(B mime/decode-region
+    \e$B$G$N\e(B decoder \e$B$NA*Br$K$3$l$rMQ$$$k$h$&$K$7$?!#\e(B
+----------------------------
+
+mel/mel-u.el
+----------------------------
+revision 2.0
+date: 1995/10/30 06:01:29;  author: morioka;  state: Exp;  lines: +51 -1
+\e$B4X?t\e(B uuencode-decode-region \e$B$rDI2C$7$?!#\e(B
+----------------------------
+
+
+* tm
+
+tm/mime-setup.el
+----------------------------
+revision 7.9
+date: 1995/10/28 06:02:53;  author: morioka;  state: Exp;  lines: +38 -39
+(1) VM \e$BMQ$N@_Dj$rA4$F:o=|$7$?!#\e(B
+(2) mime-setup-load-hook \e$B$r@_$1$?!#\e(B
+(3) \e$BJQ?t\e(B mime/editor-mode-hook \e$B$K\e(B encoded-word \e$B$N\e(B decode \e$BMQ$N\e(B code \e$B$r\e(B
+    \e$BF~$l!"$=$l0J30$NItJ,$K$"$C$?\e(B mime/decode-message-header \e$B$r8F$V@_Dj\e(B
+    \e$B$r:o=|$7$?!#\e(B
+----------------------------
+revision 7.8
+date: 1995/10/27 08:36:13;  author: morioka;  state: Exp;  lines: +2 -16
+mh-letter-mode-hook \e$B$KBP$7$F\e(B append mode \e$B$G\e(B add-hook \e$B$9$k$h$&$K$7$?!#\e(B
+----------------------------
+
+tm/tm-edit.el
+----------------------------
+revision 7.14
+date: 1995/10/29 06:15:49;  author: morioka;  state: Exp;  lines: +6 -120
+\e$BITMW$J\e(B comment \e$B$r:o=|$7$?!#\e(B
+----------------------------
+revision 7.13
+date: 1995/10/28 05:48:36;  author: morioka;  state: Exp;  lines: +501 -463
+(1) prefix \e$B$r\e(B ``tm-edit/'' \e$B$+$i\e(B ``mime-editor/'' \e$B$KJQ$($?!#\e(B
+(2) mime-mode \e$B$r\e(B mime/editor-mode \e$B$KJQ$($?!#\e(B
+(3) \e$BH/?.MQ$N\e(B key \e$B$r@_Dj$9$k$N$r$d$a!"3F\e(B MUA \e$B$NH/?.D>A0$K8F$P$l$k\e(B hook
+    \e$B$K4X?t\e(B mime-editor/maybe-translate \e$B$r@_Dj$9$k$h$&$K$7$?!#\e(B
+(4) \e$B$$$m$$$m$JIT6q9g$r=$@5$7$?!#\e(B
+----------------------------
+revision 7.12
+date: 1995/10/27 11:18:22;  author: morioka;  state: Exp;  lines: +13 -43
+\e$BDj?t\e(B mime-menu \e$B$r\e(B tm-edit/menu \e$B$K\e(B rename \e$B$9$k$N$rK:$l$F$$$?ItJ,$r=$@5\e(B
+\e$B$7$?!#\e(B
+----------------------------
+
+tm/tm-view.el
+----------------------------
+revision 7.21
+date: 1995/10/30 05:57:27;  author: morioka;  state: Exp;  lines: +31 -17
+message \e$B$N@hF,\e(B content \e$B$+$iA0$K9T$3$&$H$9$k;~$K8F$P$l$k\e(B
+`mime-viewer/over-to-previous-method-alist' \e$B$H\e(B message \e$B$NKvHx$N\e(B
+content \e$B$+$i<!$N\e(B content \e$B$K9T$3$&$H$9$k;~$K8F$P$l$k\e(B
+`mime-viewer/over-to-next-method-alist' \e$B$r@_$1$?!#\e(B
+----------------------------
+
+tm/tm-rmail.el
+----------------------------
+revision 7.8
+date: 1995/10/30 05:52:36;  author: morioka;  state: Exp;  lines: +80 -23
+automatic MIME preview support \e$B$r9T$C$?!#\e(B
+----------------------------
+
+tm/tm-vm.el
+----------------------------
+revision 7.3
+date: 1995/10/28 06:00:09;  author: morioka;  state: Exp;  lines: +13 -1
+mime-setup \e$BBP:vMQ$N\e(B code \e$B$rF~$l$?!#\e(B
+----------------------------
+
+
+* tm/mh-e
+
+  Version 7.10 \e$B$rE:IU$7$?!#\e(B
+
+tm/mh-e/tm-mh-e.el
+----------------------------
+revision 7.10
+date: 1995/10/30 03:19:18;  author: morioka;  state: Exp;  lines: +2 -2
+\e$BJQ?t\e(B tm-edit/message-inserter-alist \e$B$,\e(B
+`mime-editor/message-inserter-alist' \e$B$K2~L>$5$l$?$N$KH<$$!"\e(Btm-edit \e$B$N\e(B
+\e$B@_Dj$r=$@5$7$?!#\e(B
+----------------------------
+
+
+* tm/gnus
+
+  Version 7.12 \e$B$rE:IU$7$?!#\e(B
+
+tm/gnus/tm-gnus4.el
+----------------------------
+revision 7.1
+date: 1995/10/28 05:44:44;  author: morioka;  state: Exp;  lines: +1 -98
+tm-comp \e$BMQ$N@_Dj$r:o=|$7$?!#\e(B
+----------------------------
+
+tm/gnus/tm-sgnus.el
+----------------------------
+revision 7.12
+date: 1995/10/29 14:13:08;  author: morioka;  state: Exp;  lines: +16 -29
+(1) encoded-word \e$B$N\e(B decode \e$B$@$1$r9T$&\e(B mode\e$B!J\e(Btm-gnus/decode-all \e$B$,\e(B nil
+    \e$B$G$"$k>uBV!K$rGQ;_$7$?!#$3$l$KH<$$!"JQ?t\e(B tm-gnus/decode-all \e$B$rGQ;_\e(B
+    \e$B$7$?!#\e(B
+(2) \e$B4X?t\e(B gnus-article-hide-headers-if-wanted \e$B$r:FDj5A$9$k$h$&$K$7$?!#\e(B
+(3) \e$BJQ?t\e(B tm-gnus/automatic-mime-preview \e$B$r@_$1$?!#$3$l$OJQ?t\e(B
+    gnus-show-mime \e$B$KBeF~$5$l$k!#!J\e(Bdefault \e$B$N>uBV$G\e(B automatic MIME
+    preview mode \e$B$K$7!"$J$*$+$D!"\e(Buser \e$B$,=i4|>uBV$r@_Dj$G$-$k$h$&$K$9$k\e(B
+    \e$B$?$a!K\e(B
+----------------------------
+revision 7.11
+date: 1995/10/27 10:19:38;  author: morioka;  state: Exp;  lines: +3 -1
+BBDB \e$BBP:vMQ$N@_Dj$r$^$?$^$?=$@5!#\e(B
+----------------------------
index 8f6db0a..91dc3cc 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -34,7 +34,7 @@ TL_FILES = tl/README.eng tl/Makefile tl/mk-tl tl/*.el tl/doc/*.texi
 
 FILES  = $(TM_FILES) $(TM_MUA_FILES) $(MEL_FILES) $(TL_FILES)
 
 
 FILES  = $(TM_FILES) $(TM_MUA_FILES) $(MEL_FILES) $(TL_FILES)
 
-TARFILE = tm7.20.tar
+TARFILE = tm7.21.tar
 
 
 nemacs:
 
 
 nemacs:
index cf062b7..94915f4 100644 (file)
@@ -17,7 +17,7 @@ TMDIR19 = $(HOME)/lib/emacs19/lisp
 
 FILES  = tm/gnus/*.el tm/doc/tm-gnus*.texi
 
 
 FILES  = tm/gnus/*.el tm/doc/tm-gnus*.texi
 
-TARFILE = tm-gnus7.09.tar
+TARFILE = tm-gnus7.12.tar
 
 
 gnus3:
 
 
 gnus3:
index 460dc80..657d1cd 100644 (file)
@@ -6,7 +6,7 @@
 ;;;
 ;;; Author: Morioka Tomohiko <morioka@jaist.ac.jp>
 ;;; Version:
 ;;;
 ;;; Author: Morioka Tomohiko <morioka@jaist.ac.jp>
 ;;; Version:
-;;;    $Id: tm-gnus.el,v 6.5 1995/09/28 02:20:46 morioka Exp $
+;;;    $Id: tm-gnus.el,v 7.0 1995/10/29 09:13:16 morioka Exp $
 ;;; Keywords: news, MIME, multimedia, encoded-word, multilingual
 ;;;
 ;;; This file is part of tm (Tools for MIME).
 ;;; Keywords: news, MIME, multimedia, encoded-word, multilingual
 ;;;
 ;;; This file is part of tm (Tools for MIME).
@@ -46,4 +46,4 @@
 
 (provide 'tm-gnus)
 
 
 (provide 'tm-gnus)
 
-(run-hooks 'tm-gnus/startup-hook)
+(run-hooks 'tm-gnus-load-hook)
index d7d41f1..123b728 100644 (file)
@@ -11,7 +11,7 @@
 ;;;
 
 (defconst tm-gnus/RCS-ID
 ;;;
 
 (defconst tm-gnus/RCS-ID
-  "$Id: tm-gnus4.el,v 7.0 1995/10/22 12:12:56 morioka Exp $")
+  "$Id: tm-gnus4.el,v 7.1 1995/10/28 05:44:44 morioka Exp $")
 
 (defconst tm-gnus/version
   (concat (get-version-string tm-gnus/RCS-ID) " for GNUS 4"))
 
 (defconst tm-gnus/version
   (concat (get-version-string tm-gnus/RCS-ID) " for GNUS 4"))
          (function tm-gnus/decode-encoded-word-if-you-need) t)
 
 
          (function tm-gnus/decode-encoded-word-if-you-need) t)
 
 
-;;; @ for tm-comp
-;;;
-
-(defun tm-gnus4/message-before-send ()
-  (let ((case-fold-search nil))
-    (or (boundp 'mime/news-reply-mode-server-running)
-       (make-variable-buffer-local 'mime/news-reply-mode-server-running))
-    (setq mime/news-reply-mode-server-running (gnus-server-opened))
-    (save-excursion
-      (gnus-start-news-server)
-      (widen)
-      (goto-char (point-min))
-      (run-hooks 'news-inews-hook)
-      (save-restriction
-       (narrow-to-region
-        (point-min)
-        (progn
-          (goto-char (point-min))
-          (search-forward (concat "\n" mail-header-separator "\n"))
-          (point)))
-       
-       (goto-char (point-min))
-       (if (search-forward-regexp "^Newsgroups: +" nil t)
-           (save-restriction
-             (narrow-to-region
-              (point)
-              (if (re-search-forward "^[^ \t]" nil 'end)
-                  (match-beginning 0)
-                (point-max)))
-             (goto-char (point-min))
-             (replace-regexp "\n[ \t]+" " ")
-             (goto-char (point-min))
-             (replace-regexp "[ \t\n]*,[ \t\n]*\\|[ \t]+" ",")
-             ))
-       ))))
-
-(defun tm-gnus4/message-sender ()
-  (interactive)
-  (widen)
-  (goto-char (point-min))
-  (save-restriction
-    (narrow-to-region
-     (point-min)
-     (progn
-       (goto-char (point-min))
-       (search-forward (concat "\n" mail-header-separator "\n"))
-       (point)))
-    ;; Mail the message too if To: or Cc: exists.
-    (if (or (mail-fetch-field "to" nil t)
-           (mail-fetch-field "cc" nil t))
-       (if gnus-mail-send-method
-           (progn
-             (message
-              (format "Sending (%d/%d) via mail..." (+ i 1) total))
-             (widen)
-             (funcall gnus-mail-send-method)
-             (message
-              (format "Sending (%d/%d) via mail... done" (+ i 1) total))
-             (ding)
-             (message
-              "No mailer defined.  To: and/or Cc: fields ignored.")
-             (sit-for 1)))))
-  (message
-   (format "Posting %d/%d to USENET..." (+ i 1) total))
-  (if (gnus-inews-article)
-      (message 
-       (format "Posting %d/%d to USENET... done" (+ i 1) total))
-    ;; We cannot signal an error.
-    (ding)
-    (message
-     (format "Article %d/%d rejected: %s"
-            (+ i 1) total (gnus-status-message)))
-    (sit-for 3))
-  )
-
-(defun tm-gnus4/message-after-send ()
-  (or mime/news-reply-mode-server-running
-      (gnus-close-server))
-  (and (fboundp 'bury-buffer) (bury-buffer))
-  )
-
-(call-after-loaded
- 'tm-comp
- (function
-  (lambda ()
-    (set-alist 'mime/message-before-send-hook-alist
-              'news-reply-mode
-              (function tm-gnus4/message-before-send))
-    (set-alist 'mime/message-sender-alist
-              'news-reply-mode
-              (function tm-gnus4/message-sender))
-    (set-alist 'mime/message-after-send-hook-alist
-              'news-reply-mode
-              (function tm-gnus4/message-after-send))
-    )))
-
-
 ;;; @ end
 ;;;
 
 ;;; @ end
 ;;;
 
index 038929f..3ce2136 100644 (file)
@@ -26,7 +26,7 @@
 ;;;
 
 (defconst tm-gnus/RCS-ID
 ;;;
 
 (defconst tm-gnus/RCS-ID
-  "$Id: tm-sgnus.el,v 7.9 1995/10/23 10:18:13 morioka Exp $")
+  "$Id: tm-sgnus.el,v 7.12 1995/10/29 14:13:08 morioka Exp $")
 
 (defconst tm-gnus/version
   (concat (get-version-string tm-gnus/RCS-ID) " for September"))
 
 (defconst tm-gnus/version
   (concat (get-version-string tm-gnus/RCS-ID) " for September"))
 ;;; @ variables
 ;;;
 
 ;;; @ variables
 ;;;
 
-(defvar tm-gnus/decode-all t
-  "If it is non-nil and
-tm-gnus/automatic-MIME-preview-support is non-nil,
-article is automatic MIME decoded.")
+(defvar tm-gnus/automatic-mime-preview t
+  "*If non-nil, show MIME processed article.
+This variable is set to `gnus-show-mime'.")
+
+(setq gnus-show-mime tm-gnus/automatic-mime-preview)
 
 
 ;;; @ command functions
 
 
 ;;; @ command functions
@@ -68,7 +69,7 @@ article is automatic MIME decoded.")
 
 (defun tm-gnus/summary-toggle-header (&optional arg)
   (interactive "P")
 
 (defun tm-gnus/summary-toggle-header (&optional arg)
   (interactive "P")
-  (if (and tm-gnus/decode-all gnus-show-mime)
+  (if gnus-show-mime
       (let ((mime-viewer/ignored-field-list
             (if (save-excursion
                   (set-buffer gnus-article-buffer)
       (let ((mime-viewer/ignored-field-list
             (if (save-excursion
                   (set-buffer gnus-article-buffer)
@@ -168,53 +169,32 @@ article is automatic MIME decoded.")
   (run-hooks 'tm-gnus/article-prepare-hook)
   )
 
   (run-hooks 'tm-gnus/article-prepare-hook)
   )
 
-(defun tm-gnus/decode-message-header ()
-  (mime/decode-message-header)
-  (run-hooks 'tm-gnus/article-prepare-hook)
-  )
-
-(defun tm-gnus/set-mime-method (mode)
-  (setq gnus-show-mime-method
-       (if mode
-           (function tm-gnus/preview-article)
-         (function tm-gnus/decode-message-header)
-         )))
+(setq gnus-show-mime-method (function tm-gnus/preview-article))
 
 
-(tm-gnus/set-mime-method tm-gnus/decode-all)
-
-(setq gnus-show-mime t)
+(or (fboundp 'tm::gnus-article-hide-headers-if-wanted)
+    (fset 'tm::gnus-article-hide-headers-if-wanted
+         (symbol-function 'gnus-article-hide-headers-if-wanted))
+    )
 
 
-(defun tm-gnus/article-hide-headers-if-wanted ()
-  (if (not (and gnus-show-mime tm-gnus/decode-all))
-      (gnus-article-hide-headers-if-wanted)
+(defun gnus-article-hide-headers-if-wanted ()
+  (if (not gnus-show-mime)
+      (tm::gnus-article-hide-headers-if-wanted)
     ))
 
     ))
 
-(remove-hook 'gnus-article-display-hook
-            'gnus-article-hide-headers-if-wanted)
-(add-hook 'gnus-article-display-hook
-         'tm-gnus/article-hide-headers-if-wanted)
 
 
-
-;;; @ for tm-comp
+;;; @ for BBDB
 ;;;
 
 ;;;
 
-(call-after-loaded
- 'tm-comp
- (lambda ()
-   (set-alist 'mime/message-sender-alist
-             'news-reply-mode
-             (function gnus-inews-news))
-   ))
+(defun tm-gnus/bbdb-setup ()
+  (if (memq 'bbdb/gnus-update-record gnus-article-prepare-hook)
+      (progn
+       (remove-hook 'gnus-article-prepare-hook 'bbdb/gnus-update-record)
+       (add-hook 'tm-gnus/article-prepare-hook 'bbdb/gnus-update-record)
+       )))
 
 
+(add-hook 'gnus-startup-hook 'tm-gnus/bbdb-setup t)
 
 
-;;; @ for BBDB
-;;;
-
-(if (memq 'bbdb/gnus-update-record gnus-article-prepare-hook)
-    (progn
-      (remove-hook 'gnus-article-prepare-hook 'bbdb/gnus-update-record)
-      (add-hook 'tm-gnus/article-prepare-hook 'bbdb/gnus-update-record)
-      ))
+(tm-gnus/bbdb-setup)
 
 
 ;;; @ end
 
 
 ;;; @ end
index 7f31ccc..489a3c5 100644 (file)
@@ -23,7 +23,7 @@ TMDIR19       = $(HOME)/lib/emacs19/lisp
 
 
 FILES  = tm/mh-e/*.el tm/mh-e/Makefile tm/mh-e/mk-tmh tm/mh-e/*.ol
 
 
 FILES  = tm/mh-e/*.el tm/mh-e/Makefile tm/mh-e/mk-tmh tm/mh-e/*.ol
-TARFILE = tm-mh-e7.09.tar
+TARFILE = tm-mh-e7.10.tar
 
 
 elc:
 
 
 elc:
index c059ea3..4aa2977 100644 (file)
@@ -26,7 +26,7 @@
 ;;;
 
 (defconst tm-mh-e/RCS-ID
 ;;;
 
 (defconst tm-mh-e/RCS-ID
-  "$Id: tm-mh-e.el,v 7.9 1995/10/26 09:26:23 morioka Exp $")
+  "$Id: tm-mh-e.el,v 7.10 1995/10/30 03:19:18 morioka Exp $")
 
 (defconst tm-mh-e/version (get-version-string tm-mh-e/RCS-ID))
 
 
 (defconst tm-mh-e/version (get-version-string tm-mh-e/RCS-ID))
 
@@ -325,7 +325,7 @@ With arg, turn MIME processing on if arg is positive."
  (function
   (lambda ()
     (set-alist
  (function
   (lambda ()
     (set-alist
-     'tm-edit/message-inserter-alist
+     'mime-editor/message-inserter-alist
      'mh-letter-mode (function tm-mh-e/insert-message))
     )))
 
      'mh-letter-mode (function tm-mh-e/insert-message))
     )))
 
index f97680c..8936601 100644 (file)
@@ -6,7 +6,7 @@
 ;;;
 ;;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;;; Version:
 ;;;
 ;;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;;; Version:
-;;;    $Id: mime-setup.el,v 7.7 1995/10/26 11:12:49 morioka Exp $
+;;;    $Id: mime-setup.el,v 7.9 1995/10/28 06:02:53 morioka Exp $
 ;;; Keywords: mail, news, MIME, multimedia, multilingual, encoded-word
 ;;;
 ;;; This file is part of tm (Tools for MIME).
 ;;; Keywords: mail, news, MIME, multimedia, multilingual, encoded-word
 ;;;
 ;;; This file is part of tm (Tools for MIME).
 
 (require 'tm-setup)
 
 
 (require 'tm-setup)
 
+(autoload 'mime/editor-mode "tm-edit"
+  "Minor mode for editing MIME message." t)
+
+(add-hook 'mime/editor-mode-hook
+         (function
+          (lambda ()
+            (save-excursion
+              (save-restriction
+                (goto-char (point-min))
+                (narrow-to-region
+                 (point-min)
+                 (if (re-search-forward
+                      (concat "^" (regexp-quote mail-header-separator) "$")
+                      nil t)
+                     (match-beginning 0)
+                   (point-max)
+                   ))
+                (mime/decode-message-header)
+                (set-buffer-modified-p nil)
+                )))))
+
 
 ;;; @ variables
 ;;;
 
 ;;; @ variables
 ;;;
 (defvar mime-setup-signature-key-alist '((mail-mode . "\C-c\C-w")))
 
 
 (defvar mime-setup-signature-key-alist '((mail-mode . "\C-c\C-w")))
 
 
-;;; @ for Edit MIME mode
-;;;
-
-(autoload 'mime-mode "tm-edit" "Edit MIME message." t)
-
-
 ;;; @ for signature
 ;;;
 
 (if mime-setup-use-signature
     (progn
       (autoload 'insert-signature "signature" "Insert signature" t)
 ;;; @ for signature
 ;;;
 
 (if mime-setup-use-signature
     (progn
       (autoload 'insert-signature "signature" "Insert signature" t)
-      (add-hook 'mime-mode-hook
+      (add-hook 'mime/editor-mode-hook
                (function
                 (lambda ()
                   (let ((key (or (cdr
                (function
                 (lambda ()
                   (let ((key (or (cdr
   )
 
 
   )
 
 
+;;; @ for RMAIL
+;;;
+
+(add-hook 'mail-mode-hook  'mime/editor-mode)
+(add-hook 'mail-setup-hook 'mime/decode-message-header)
+(add-hook 'mail-send-hook  'mime-editor/maybe-translate)
+
+
 ;;; @ for mh-e
 ;;;
 
 (add-hook 'mh-letter-mode-hook
          (function
           (lambda ()
 ;;; @ for mh-e
 ;;;
 
 (add-hook 'mh-letter-mode-hook
          (function
           (lambda ()
-            (mime/decode-message-header)
-            (mime-mode)
+            (mime/editor-mode)
             (make-local-variable 'mail-header-separator)
             (setq mail-header-separator "--------")
             (save-excursion
             (make-local-variable 'mail-header-separator)
             (setq mail-header-separator "--------")
             (save-excursion
                     (set-buffer-modified-p (buffer-modified-p))
                     ))
               )
                     (set-buffer-modified-p (buffer-modified-p))
                     ))
               )
-            )))
+            )) t)
 
 
+(add-hook 'mh-before-send-letter-hook 'mime-editor/maybe-translate)
 
 
-;;; @ for GNUS
-;;;
 
 
-(add-hook 'news-reply-mode-hook
-         (function
-          (lambda ()
-            (mime/decode-message-header)
-            (set-buffer-modified-p nil)
-            (mime-mode)
-            )))
-
-;;; for Gnus 5.* and September Gnus
-;;;
-(add-hook 'news-inews-hook
-         (function
-          (lambda ()
-            (if mime-mode-flag
-                (mime-mode-exit)
-              ))))
-(add-hook 'mail-send-hook
-         (function
-          (lambda ()
-            (if mime-mode-flag
-                (mime-mode-exit)
-              ))))
-
-
-;;; @ for Mail mode (includes VM mode)
+;;; @ for GNUS
 ;;;
 
 ;;;
 
-(add-hook 'mail-mode-hook (function mime-mode))
-(add-hook 'mail-setup-hook (function mime/decode-message-header))
-
-;;; @@ In VM, the following definitions may be requried:
-;;; 
-
-;;; (if (boundp 'vm-visible-headers)
-;;;     (progn
-;;;       (setq vm-preview-lines nil)
-;;;       (setq vm-invisible-header-regexp nil)
-;;;       (setq vm-visible-headers
-;;;             (append vm-visible-headers
-;;;                     '("Mime-Version:"
-;;;                       "Content-Type:"
-;;;                       "Content-Transfer-Encoding:")))
-;;;       ))
+(add-hook 'news-reply-mode-hook 'mime/editor-mode)
+(add-hook 'news-inews-hook      'mime-editor/maybe-translate)
 
 
 ;;; @ end
 ;;;
 
 (provide 'mime-setup)
 
 
 ;;; @ end
 ;;;
 
 (provide 'mime-setup)
+
+(run-hooks 'mime-setup-load-hook)
diff --git a/mk-tm b/mk-tm
index 162b252..117e3b2 100644 (file)
--- a/mk-tm
+++ b/mk-tm
@@ -15,6 +15,7 @@
 (require 'tl-misc)
 (require 'gnus)
 (require 'tm-rich)
 (require 'tl-misc)
 (require 'gnus)
 (require 'tm-rich)
+(require 'mel-u)
 
 (setq tm-modules
       (append
 
 (setq tm-modules
       (append
index 0329458..8533700 100644 (file)
 
 ;; This MIME composer can work with Mail mode, mh-e letter Mode, and
 ;; News mode.  First of all, you need the following autoload
 
 ;; This MIME composer can work with Mail mode, mh-e letter Mode, and
 ;; News mode.  First of all, you need the following autoload
-;; definition to load mime-mode automatically:
+;; definition to load mime/editor-mode automatically:
 ;;
 ;;
-;; (autoload 'mime-mode "mime" "Minor mode for editing MIME message." t)
+;; (autoload 'mime/editor-mode "tm-edit"
+;;     "Minor mode for editing MIME message." t)
 ;;
 ;; In case of Mail mode (includes VM mode), you need the following
 ;; hook definition:
 ;;
 ;;
 ;; In case of Mail mode (includes VM mode), you need the following
 ;; hook definition:
 ;;
-;; (setq mail-mode-hook
-;;       (list
-;;        (function
-;;         (lambda ()
-;;           (mime-mode)))))
+;; (add-hook 'mail-mode-hook 'mime/editor-mode)
+;; (add-hook 'mail-send-hook 'mime-editor/maybe-translate)
 ;;
 ;; In case of MH-E, you need the following hook definition:
 ;;
 ;;
 ;; In case of MH-E, you need the following hook definition:
 ;;
-;; (setq mh-letter-mode-hook
-;;       (list
-;;        (function
-;;         (lambda ()
-;;           (mime-mode)
-;;           (make-local-variable 'mail-header-separator)
-;;           (setq mail-header-separator "--------")))))
+;; (add-hook 'mh-letter-mode-hook
+;;           (function
+;;            (lambda ()
+;;              (mime/editor-mode)
+;;              (make-local-variable 'mail-header-separator)
+;;              (setq mail-header-separator "--------")
+;;              ))))
+;; (add-hook 'mh-before-send-letter-hook 'mime-editor/maybe-translate)
 ;;
 ;; In case of News mode, you need the following hook definition:
 ;;
 ;;
 ;; In case of News mode, you need the following hook definition:
 ;;
-;; (setq news-reply-mode-hook
-;;       (list
-;;        (function
-;;         (lambda ()
-;;           (mime-mode)))))
-;;
-;; Followings are for message forwarding as content-type
-;; "message/rfc822".
-;;
-;; (setq rmail-mode-hook
-;;       (list
-;;        (function
-;;         (lambda ()
-;;           ;; Forward mail using MIME.
-;;           (require 'mime)
-;;           (substitute-key-definition 'rmail-forward
-;;                                      'mime-forward-from-rmail-using-mail
-;;                                      (current-local-map))
-;;           ))))
-;;
-;; (setq gnus-mail-forward-method 'mime-forward-from-gnus-using-mail)
-;; (setq gnus-summary-mode-hook
-;;       (list
-;;        (function
-;;         (lambda ()
-;;           ;; Forward article using MIME.
-;;           (require 'mime)
-;;           ))))
+;; (add-hook 'news-reply-mode-hook 'mime/editor-mode)
+;; (add-hook 'news-inews-hook 'mime-editor/maybe-translate)
 ;;
 ;; In case of Emacs 19, it is possible to emphasize the message tags
 ;; using font-lock mode as follows:
 ;;
 ;;
 ;; In case of Emacs 19, it is possible to emphasize the message tags
 ;; using font-lock mode as follows:
 ;;
-;; (setq mime-mode-hook
-;;       (list
-;;        (function
-;;         (lambda ()
-;;           (font-lock-mode 1)
-;;           (setq font-lock-keywords (list tm-edit/tag-regexp))))))
+;; (add-hook 'mime/editor-mode-hook
+;;           (function
+;;            (lambda ()
+;;              (font-lock-mode 1)
+;;              (setq font-lock-keywords (list mime-editor/tag-regexp))
+;;              ))))
 
 ;; The message tag looks like:
 ;;
 
 ;; The message tag looks like:
 ;;
 ;; LCD Archive Entry:
 ;; mime|Masanobu UMEDA|umerin@mse.kyutech.ac.jp|
 ;; Simple MIME Composer|
 ;; LCD Archive Entry:
 ;; mime|Masanobu UMEDA|umerin@mse.kyutech.ac.jp|
 ;; Simple MIME Composer|
-;; $Date: 1995/10/26 11:12:05 $|$Revision: 7.11 $|~/misc/mime.el.Z|
+;; $Date: 1995/10/29 06:15:49 $|$Revision: 7.14 $|~/misc/mime.el.Z|
 
 ;;; Code:
 
 
 ;;; Code:
 
 ;;; @ version
 ;;;
 
 ;;; @ version
 ;;;
 
-(defconst tm-edit/RCS-ID
-  "$Id: tm-edit.el,v 7.11 1995/10/26 11:12:05 morioka Exp $")
+(defconst mime-editor/RCS-ID
+  "$Id: tm-edit.el,v 7.14 1995/10/29 06:15:49 morioka Exp $")
 
 
-(defconst tm-edit/version (get-version-string tm-edit/RCS-ID))
+(defconst mime-editor/version (get-version-string mime-editor/RCS-ID))
 
 
 ;;; @ variables
 
 
 ;;; @ variables
@@ -208,16 +181,16 @@ The method is a form of (CHARSET . ENCODING).")
   (function mime-voice-recorder-for-sun)
   "*Function to record a voice message and return a buffer that contains it.")
 
   (function mime-voice-recorder-for-sun)
   "*Function to record a voice message and return a buffer that contains it.")
 
-(defvar mime-mode-hook nil
+(defvar mime/editor-mode-hook nil
   "*Hook called when enter MIME mode.")
 
   "*Hook called when enter MIME mode.")
 
-(defvar mime-translate-hook nil
+(defvar mime-editor/translate-hook nil
   "*Hook called before translating into a MIME compliant message.
 To insert a signature file specified by mime-signature-file
 (`.signature.rtf' by default) automatically, call the function
   "*Hook called before translating into a MIME compliant message.
 To insert a signature file specified by mime-signature-file
 (`.signature.rtf' by default) automatically, call the function
-`tm-edit/insert-signature' from this hook.")
+`mime-editor/insert-signature' from this hook.")
 
 
-(defvar mime-exit-hook nil
+(defvar mime-editor/exit-hook nil
   "*Hook called when exit MIME mode.")
 
 (defvar mime-content-types
   "*Hook called when exit MIME mode.")
 
 (defvar mime-content-types
@@ -318,24 +291,25 @@ To insert a signature file specified by mime-signature-file
   "*Alist of file name, types, parameters, and default encoding.
 If encoding is nil, it is determined from its contents.")
 
   "*Alist of file name, types, parameters, and default encoding.
 If encoding is nil, it is determined from its contents.")
 
-(defvar tm-edit/split-message t)
+(defvar mime-editor/split-message t)
 
 
-(defvar tm-edit/message-default-max-length 1000)
+(defvar mime-editor/message-default-max-length 1000)
 
 
-(defvar tm-edit/message-max-length-alist
+(defvar mime-editor/message-max-length-alist
   '((news-reply-mode . 500)))
 
   '((news-reply-mode . 500)))
 
-(defconst tm-edit/message-nuke-headers
+(defconst mime-editor/message-nuke-headers
   "\\(^Content-\\|^Subject:\\|^Mime-Version:\\)")
 
   "\\(^Content-\\|^Subject:\\|^Mime-Version:\\)")
 
-(defvar tm-edit/message-blind-headers "\\(^[BDFbdf]cc:\\|^cc:[ \t]*$\\)")
+(defvar mime-editor/blind-fields-regexp "\\(^[BDFbdf]cc:\\|^cc:[ \t]*$\\)")
 
 
-(defvar tm-edit/message-default-sender-alist
+(defvar mime-editor/message-default-sender-alist
   '((mail-mode . mail-send-and-exit)
     (mh-letter-mode . mh-send-letter)
   '((mail-mode . mail-send-and-exit)
     (mh-letter-mode . mh-send-letter)
-    (news-reply-mode . gnus-inews-news)))
+    (news-reply-mode . gnus-inews-news)
+    ))
 
 
-(defvar tm-edit/message-sender-alist
+(defvar mime-editor/message-sender-alist
   '((mail-mode
      . (lambda ()
         (interactive)
   '((mail-mode
      . (lambda ()
         (interactive)
@@ -345,15 +319,13 @@ If encoding is nil, it is determined from its contents.")
      . (lambda (&optional arg)
         (interactive "P")
         (write-region (point-min) (point-max)
      . (lambda (&optional arg)
         (interactive "P")
         (write-region (point-min) (point-max)
-                      tm-edit/draft-file-name)
-        (message 
-         (format "Sending %d/%d..." (+ i 1) total))
+                      mime-editor/draft-file-name nil 'no-message)
         (cond (arg
                (pop-to-buffer "MH mail delivery")
                (erase-buffer)
                (mh-exec-cmd-output mh-send-prog t "-watch" "-nopush"
                                    "-nodraftfolder"
         (cond (arg
                (pop-to-buffer "MH mail delivery")
                (erase-buffer)
                (mh-exec-cmd-output mh-send-prog t "-watch" "-nopush"
                                    "-nodraftfolder"
-                                   mh-send-args tm-edit/draft-file-name)
+                                   mh-send-args mime-editor/draft-file-name)
                (goto-char (point-max)) ; show the interesting part
                (recenter -1)
                (sit-for 1))
                (goto-char (point-max)) ; show the interesting part
                (recenter -1)
                (sit-for 1))
@@ -362,13 +334,11 @@ If encoding is nil, it is determined from its contents.")
                       (mh-list-to-string
                        (list "-nopush" "-nodraftfolder"
                              "-noverbose" "-nowatch"
                       (mh-list-to-string
                        (list "-nopush" "-nodraftfolder"
                              "-noverbose" "-nowatch"
-                             mh-send-args tm-edit/draft-file-name)))))
-        (message
-         (format "Sending %d/%d... done" (+ i 1) total))
+                             mh-send-args mime-editor/draft-file-name)))))
         ))
     ))
 
         ))
     ))
 
-(defvar tm-edit/window-config-alist
+(defvar mime-editor/window-config-alist
   '((mail-mode       . nil)
     (mh-letter-mode  . mh-previous-window-config)
     (news-reply-mode . (cond ((boundp 'gnus-winconf-post-news)
   '((mail-mode       . nil)
     (mh-letter-mode  . mh-previous-window-config)
     (news-reply-mode . (cond ((boundp 'gnus-winconf-post-news)
@@ -384,12 +354,12 @@ If encoding is nil, it is determined from its contents.")
                             ))
     ))
 
                             ))
     ))
 
-(defvar tm-edit/news-reply-mode-server-running nil)
+(defvar mime-editor/news-reply-mode-server-running nil)
 
 
-(defvar tm-edit/message-before-send-hook-alist
+(defvar mime-editor/message-before-send-hook-alist
   '((mh-letter-mode . mh-before-send-letter-hook)))
 
   '((mh-letter-mode . mh-before-send-letter-hook)))
 
-(defvar tm-edit/message-after-send-hook-alist
+(defvar mime-editor/message-after-send-hook-alist
   '((mh-letter-mode
      . (lambda ()
         (if mh-annotate-char
   '((mh-letter-mode
      . (lambda ()
         (if mh-annotate-char
@@ -403,32 +373,32 @@ If encoding is nil, it is determined from its contents.")
                                      (mh-get-field "Cc:"))))))
     ))
 
                                      (mh-get-field "Cc:"))))))
     ))
 
-(defvar tm-edit/message-inserter-alist nil)
+(defvar mime-editor/message-inserter-alist nil)
 
 (defvar mime-tspecials-regexp "[][()<>@,;:\\\"/?.= \t]"
   "*Specify MIME tspecials.
 Tspecials means any character that matches with it in header must be quoted.")
 
 
 (defvar mime-tspecials-regexp "[][()<>@,;:\\\"/?.= \t]"
   "*Specify MIME tspecials.
 Tspecials means any character that matches with it in header must be quoted.")
 
-(defconst tm-edit/single-part-tag-regexp
+(defconst mime-editor/single-part-tag-regexp
   "^--[[][[]\\([^]]*\\)]\\([[]\\([^]]*\\)]\\|\\)]"
   "*Regexp of MIME tag in the form of [[CONTENT-TYPE][ENCODING]].")
 
   "^--[[][[]\\([^]]*\\)]\\([[]\\([^]]*\\)]\\|\\)]"
   "*Regexp of MIME tag in the form of [[CONTENT-TYPE][ENCODING]].")
 
-(defconst tm-edit/multipart-beginning-regexp "^--<<\\([^<>]+\\)>>-{\n")
+(defconst mime-editor/multipart-beginning-regexp "^--<<\\([^<>]+\\)>>-{\n")
 
 
-(defconst tm-edit/multipart-end-regexp "^--}-<<\\([^<>]+\\)>>\n")
+(defconst mime-editor/multipart-end-regexp "^--}-<<\\([^<>]+\\)>>\n")
 
 
-(defconst tm-edit/beginning-tag-regexp
-  (regexp-or tm-edit/single-part-tag-regexp
-            tm-edit/multipart-beginning-regexp))
+(defconst mime-editor/beginning-tag-regexp
+  (regexp-or mime-editor/single-part-tag-regexp
+            mime-editor/multipart-beginning-regexp))
 
 
-(defconst tm-edit/end-tag-regexp
-  (regexp-or tm-edit/single-part-tag-regexp
-            tm-edit/multipart-end-regexp))
+(defconst mime-editor/end-tag-regexp
+  (regexp-or mime-editor/single-part-tag-regexp
+            mime-editor/multipart-end-regexp))
 
 
-(defconst tm-edit/tag-regexp
-  (regexp-or tm-edit/single-part-tag-regexp
-            tm-edit/multipart-beginning-regexp
-            tm-edit/multipart-end-regexp))
+(defconst mime-editor/tag-regexp
+  (regexp-or mime-editor/single-part-tag-regexp
+            mime-editor/multipart-beginning-regexp
+            mime-editor/multipart-end-regexp))
 
 (defvar mime-tag-format "--[[%s]]"
   "*Control-string making a MIME tag.")
 
 (defvar mime-tag-format "--[[%s]]"
   "*Control-string making a MIME tag.")
@@ -439,102 +409,103 @@ Tspecials means any character that matches with it in header must be quoted.")
 (defvar mime-multipart-boundary "Multipart"
   "*Boundary of a multipart message.")
 
 (defvar mime-multipart-boundary "Multipart"
   "*Boundary of a multipart message.")
 
+
+;;; @@ buffer local variables
+;;;
+
+(defvar mime/editor-mode-old-local-map nil)
+(defvar mime/editor-mode-old-selective-display nil)
+(defvar mime/editing-buffer nil)
+
 \f
 \f
-(defconst tm-edit/mime-version-value
-  (format "1.0 (generated by tm-edit %s)" tm-edit/version)
+;;; @ constants
+;;;
+
+(defconst mime-editor/mime-version-value
+  (format "1.0 (generated by tm-edit %s)" mime-editor/version)
   "MIME version number.")
 
   "MIME version number.")
 
-(defvar mime-mode-flag nil)
-(make-variable-buffer-local 'mime-mode-flag)
+(defvar mime/editor-mode-flag nil)
+(make-variable-buffer-local 'mime/editor-mode-flag)
 
 
-(or (assq 'mime-mode-flag minor-mode-alist)
-    (setq minor-mode-alist
-         (cons (list 'mime-mode-flag " MIME") minor-mode-alist)))
+(set-alist 'minor-mode-alist 'mime/editor-mode-flag '(" MIME-Edit"))
 
 
-(defun mime-define-keymap (keymap)
-  "Add MIME commands to KEYMAP."
+(defun mime-editor/define-keymap (keymap)
+  "Add mime-editor commands to KEYMAP."
   (if (not (keymapp keymap))
       nil
   (if (not (keymapp keymap))
       nil
-    (define-key keymap "\C-t" 'tm-edit/insert-text)
-    (define-key keymap "\C-i" 'tm-edit/insert-file)
-    (define-key keymap "\C-e" 'tm-edit/insert-external)
-    (define-key keymap "\C-v" 'tm-edit/insert-voice)
-    (define-key keymap "\C-y" 'tm-edit/insert-message)
-    (define-key keymap "\C-w" 'tm-edit/insert-signature)
-    (define-key keymap "\C-s" 'tm-edit/insert-signature)
-    (define-key keymap "\C-m" 'tm-edit/insert-tag)
-    (define-key keymap "a"    'tm-edit/enclose-alternative-region)
-    (define-key keymap "p"    'tm-edit/enclose-parallel-region)
-    (define-key keymap "m"    'tm-edit/enclose-mixed-region)
-    (define-key keymap "d"    'tm-edit/enclose-digest-region)
-    (define-key keymap "\C-p" 'tm-edit/preview-message)
-    (define-key keymap "\C-z" 'mime-mode-exit)
-    (define-key keymap "?"    'help-mime-mode)
+    (define-key keymap "\C-t" 'mime-editor/insert-text)
+    (define-key keymap "\C-i" 'mime-editor/insert-file)
+    (define-key keymap "\C-e" 'mime-editor/insert-external)
+    (define-key keymap "\C-v" 'mime-editor/insert-voice)
+    (define-key keymap "\C-y" 'mime-editor/insert-message)
+    (define-key keymap "\C-w" 'mime-editor/insert-signature)
+    (define-key keymap "\C-s" 'mime-editor/insert-signature)
+    (define-key keymap "\C-m" 'mime-editor/insert-tag)
+    (define-key keymap "a"    'mime-editor/enclose-alternative-region)
+    (define-key keymap "p"    'mime-editor/enclose-parallel-region)
+    (define-key keymap "m"    'mime-editor/enclose-mixed-region)
+    (define-key keymap "d"    'mime-editor/enclose-digest-region)
+    (define-key keymap "\C-p" 'mime-editor/preview-message)
+    (define-key keymap "\C-z" 'mime-editor/exit)
+    (define-key keymap "?"    'mime-editor/help)
     ))
 
     ))
 
-(defconst tm-edit/menu
-  '("MIME"
-    ["Describe MIME Mode"     help-mime-mode           mime-mode-flag]
-    ["Insert File"            tm-edit/insert-file      mime-mode-flag]
-    ["Insert External"        tm-edit/insert-external  mime-mode-flag]
-    ["Insert Voice"           tm-edit/insert-voice     mime-mode-flag]
-    ["Insert Mail"            tm-edit/insert-message   mime-mode-flag]
-    ["Insert Signature"       tm-edit/insert-signature mime-mode-flag]
-    ["Insert Text"            tm-edit/insert-text      mime-mode-flag]
-    ["Insert Tag"             tm-edit/insert-tag       mime-mode-flag]
-    ["Enclose as alternative"
-     tm-edit/enclose-alternative-region                        mime-mode-flag]
-    ["Enclose as parallel"
-     tm-edit/enclose-parallel-region                   mime-mode-flag]
-    ["Enclose as serial"
-     tm-edit/enclose-mixed-region                      mime-mode-flag]
-    ["Enclose as digest"
-     tm-edit/enclose-digest-region                     mime-mode-flag]
-    ["Preview Message"        tm-edit/preview-message  mime-mode-flag]
+(defconst mime-editor/menu-title "MIME-Edit")
+
+(defconst mime-editor/menu-list
+  '((mime-help "Describe MIME Mode"    mime-editor/help)
+    (file      "Insert File"           mime-editor/insert-file)
+    (external  "Insert External"       mime-editor/insert-external)
+    (voice     "Insert Voice"          mime-editor/insert-voice)
+    (mail      "Insert Mail"           mime-editor/insert-message)
+    (signature "Insert Signature"      mime-editor/insert-signature)
+    (text      "Insert Text"           mime-editor/insert-text)
+    (tag       "Insert Tag"            mime-editor/insert-tag)
+    (alternative "Enclose as alternative"
+                mime-editor/enclose-alternative-region)
+    (parallel  "Enclose as parallel"   mime-editor/enclose-parallel-region)
+    (mixed     "Enclose as serial"     mime-editor/enclose-mixed-region)
+    (digest    "Enclose as digest"     mime-editor/enclose-digest-region)
+    (preview   "Preview Message"       mime-editor/preview-message)
     )
     )
-  "MIME menubar entry.")
+  "MIME-edit menubar entry.")
 
 
-(defun tm-edit/define-menu-for-emacs19 ()
+(defun mime-editor/define-menu-for-emacs19 ()
   "Define menu for Emacs 19."
   "Define menu for Emacs 19."
-  (define-key (current-local-map) [menu-bar mime]
-    (cons "MIME" (make-sparse-keymap "MIME")))
+  (define-key (current-local-map) [menu-bar mime-edit]
+    (cons mime-editor/menu-title
+         (make-sparse-keymap mime-editor/menu-title)))
   (mapcar (function
           (lambda (item)
             (define-key (current-local-map)
   (mapcar (function
           (lambda (item)
             (define-key (current-local-map)
-              (vector 'menu-bar 'mime (aref item 1))
-              (cons (aref item 0)(aref item 1))
+              (vector 'menu-bar 'mime-edit (car item))
+              (cons (nth 1 item)(nth 2 item))
               )
             ))
               )
             ))
-         (reverse (cdr tm-edit/menu))
+         (reverse mime-editor/menu-list)
          ))
 
 ;;; modified by Pekka Marjola <pema@niksula.hut.fi>
 ;;;    1995/9/5 (c.f. [tm-eng:69])
          ))
 
 ;;; modified by Pekka Marjola <pema@niksula.hut.fi>
 ;;;    1995/9/5 (c.f. [tm-eng:69])
-(defun tm-edit/define-menu-for-xemacs ()
+(defun mime-editor/define-menu-for-xemacs ()
   "Define menu for Emacs 19."
   (cond ((featurep 'menubar)
         (make-local-variable 'current-menubar)
         (set-buffer-menubar current-menubar)
   "Define menu for Emacs 19."
   (cond ((featurep 'menubar)
         (make-local-variable 'current-menubar)
         (set-buffer-menubar current-menubar)
-        (add-submenu nil mime-menu)
+        (add-submenu nil
+                     (cons mime-editor/menu-title
+                           (mapcar (function
+                                    (lambda (item)
+                                      (vector (nth 1 item)(nth 2 item)
+                                              mime/editor-mode-flag)
+                                      ))
+                                   mime-editor/menu-list)))
         )))
         )))
-
-(defvar mime-xemacs-old-bindings nil
-  "A list of commands to restore old bindings.")
-
-(defun mime-xemacs-save-old-bindings (keymap funct)
-  "Save key bindings to a list for setting it back."
-  (let* ((key-bindings (where-is-internal funct keymap))
-        (key-binding nil))
-    (while key-bindings
-      (setq key-binding (pop key-bindings))
-      (setq mime-xemacs-old-bindings
-           (append mime-xemacs-old-bindings
-                   (list (list 'define-key keymap key-binding
-                               (list 'function funct))))))))
 ;;; end
 
 ;;;###autoload
 ;;; end
 
 ;;;###autoload
-(defun mime-mode ()
+(defun mime/editor-mode ()
   "MIME minor mode for editing the tagged MIME message.
 
 In this mode, basically, the message is composed in the tagged MIME
   "MIME minor mode for editing the tagged MIME message.
 
 In this mode, basically, the message is composed in the tagged MIME
@@ -566,21 +537,21 @@ languages that has no registered charset are represented as either
 ISO-2022-JP-2 or ISO-2022-INT-1 in Mule.
 
 Following commands are available in addition to major mode commands:
 ISO-2022-JP-2 or ISO-2022-INT-1 in Mule.
 
 Following commands are available in addition to major mode commands:
-\\[tm-edit/insert-text]                insert a text message.
-\\[tm-edit/insert-file]                insert a (binary) file.
-\\[tm-edit/insert-external]    insert a reference to external body.
-\\[tm-edit/insert-voice]       insert a voice message.
-\\[tm-edit/insert-message]     insert a mail or news message.
-\\[tm-edit/insert-signature]   insert a signature file at end.
-\\[tm-edit/insert-tag]         insert a new MIME tag.
-\\[tm-edit/enclose-alternative-region] Enclose as multipart/alternative.
-\\[tm-edit/enclose-parallel-region]    Enclose as multipart/parallel.
-\\[tm-edit/enclose-mixed-region]       Enclose as multipart/mixed.
-\\[tm-edit/enclose-digest-region]      Enclose as multipart/digest.
-\\[tm-edit/preview-message]    preview editing MIME message.
-\\[mime-mode-exit]     exit and translate into a MIME compliant message.
-\\[tm-edit/exit-and-run]       exit, translate and run the original command.
-\\[help-mime-mode]             show this help.
+\\[mime-editor/insert-text]    insert a text message.
+\\[mime-editor/insert-file]    insert a (binary) file.
+\\[mime-editor/insert-external]        insert a reference to external body.
+\\[mime-editor/insert-voice]   insert a voice message.
+\\[mime-editor/insert-message] insert a mail or news message.
+\\[mime-editor/insert-signature]       insert a signature file at end.
+\\[mime-editor/insert-tag]     insert a new MIME tag.
+\\[mime-editor/enclose-alternative-region]     enclose as multipart/alternative.
+\\[mime-editor/enclose-parallel-region]        enclose as multipart/parallel.
+\\[mime-editor/enclose-mixed-region]   enclose as multipart/mixed.
+\\[mime-editor/enclose-digest-region]  enclose as multipart/digest.
+\\[mime-editor/preview-message]        preview editing MIME message.
+\\[mime-editor/exit]   exit and translate into a MIME compliant message.
+\\[mime-editor/maybe-translate]        exit, translate and run the original command.
+\\[mime-editor/help]   show this help.
 
 Additional commands are available in some major modes:
 C-c C-c                exit, translate and run the original command.
 
 Additional commands are available in some major modes:
 C-c C-c                exit, translate and run the original command.
@@ -637,176 +608,123 @@ User customizable variables (not documented all of them):
     that contains it.  The function mime-voice-recorder-for-sun is for
     Sun SparcStations.
 
     that contains it.  The function mime-voice-recorder-for-sun is for
     Sun SparcStations.
 
- mime-mode-hook
-    Turning on MIME mode calls the value of mime-mode-hook, if it is
-    non-nil.
+ mime/editor-mode-hook
+    Turning on MIME mode calls the value of mime/editor-mode-hook, if
+    it is non-nil.
 
 
- mime-translate-hook
-    The value of mime-translate-hook is called just before translating
+ mime-editor/translate-hook
+    The value of mime-editor/translate-hook is called just before translating
     the tagged MIME format into a MIME compliant message if it is
     the tagged MIME format into a MIME compliant message if it is
-    non-nil.  If the hook call the function tm-edit/insert-signature,
+    non-nil.  If the hook call the function mime-editor/insert-signature,
     the signature file will be inserted automatically.
 
     the signature file will be inserted automatically.
 
- mime-exit-hook
-    Turning off MIME mode calls the value of mime-exit-hook, if it is
+ mime-editor/exit-hook
+    Turning off MIME mode calls the value of mime-editor/exit-hook, if it is
     non-nil."
   (interactive)
     non-nil."
   (interactive)
-  (if mime-mode-flag
+  (if mime/editor-mode-flag
       (error "You are already editing a MIME message.")
       (error "You are already editing a MIME message.")
-    (setq mime-mode-flag t)
+    (setq mime/editor-mode-flag t)
     ;; Remember old key bindings.
     ;; Remember old key bindings.
-    (make-local-variable 'mime-mode-old-local-map)
-    (setq mime-mode-old-local-map (current-local-map))
+    (make-local-variable 'mime/editor-mode-old-local-map)
+    (setq mime/editor-mode-old-local-map (current-local-map))
     ;; Add MIME commands to current local map.
     ;; Add MIME commands to current local map.
-    ;; modified by Pekka Marjola <pema@niksula.hut.fi>
-    ;;         1995/9/5 (c.f. [tm-eng:69])
-    (or (string-match "XEmacs\\|Lucid" emacs-version) ; can't use w/ XEmacs
-       (use-local-map (copy-keymap (current-local-map))))
-    ;; end
-    
+    (use-local-map (copy-keymap (current-local-map)))
     (if (not (lookup-key (current-local-map) mime-prefix))
        (define-key (current-local-map) mime-prefix (make-sparse-keymap)))
     (if (not (lookup-key (current-local-map) mime-prefix))
        (define-key (current-local-map) mime-prefix (make-sparse-keymap)))
-    (mime-define-keymap (lookup-key (current-local-map) mime-prefix))
-    ;; Replace key definitions to avoid sending a message without
-    ;; conversion into a MIME compliant message.
-    ;; modified by Pekka Marjola <pema@niksula.hut.fi>
-    ;;         1995/9/5 (c.f. [tm-eng:69])
-    ;; copy-keymap behaves strangely in XEmacs
-    (cond ((string-match "XEmacs\\|Lucid" emacs-version)
-          (make-variable-buffer-local 'mime-xemacs-old-bindings)
-          (setq mime-xemacs-old-bindings nil)
-          (let ((keymap nil)
-                (keymaps (accessible-keymaps (current-local-map))))
-            (while keymaps
-              (setq keymap (cdr (car keymaps)))
-              (setq keymaps (cdr keymaps))
-              (if (not (keymapp keymap))
-                  nil
-                ;; Mail mode:
-                (mime-xemacs-save-old-bindings keymap 'mail-send)
-                (mime-xemacs-save-old-bindings keymap 'mail-send-and-exit)
-                ;; mh-e letter mode:
-                (mime-xemacs-save-old-bindings keymap 'mh-send-letter)
-                ;; Mail mode called from VM:
-                (mime-xemacs-save-old-bindings keymap 'vm-mail-send)
-                (mime-xemacs-save-old-bindings keymap 'vm-mail-send-and-exit)
-                ;; News mode:
-                (mime-xemacs-save-old-bindings keymap 'news-inews)
-                ))
-            )))
-    ;; end
+    (mime-editor/define-keymap (lookup-key (current-local-map) mime-prefix))
     
     
-    (let ((keymap nil)
-         (keymaps (accessible-keymaps (current-local-map))))
-      (while keymaps
-       (setq keymap (cdr (car keymaps)))
-       (setq keymaps (cdr keymaps))
-       (if (not (keymapp keymap))
-           nil
-          ;; Mail mode:
-          (substitute-key-definition
-           'mail-send 'tm-edit/exit-and-run keymap)
-          (substitute-key-definition
-           'mail-send-and-exit 'tm-edit/exit-and-run keymap)
-          ;; mh-e letter mode:
-          (substitute-key-definition
-           'mh-send-letter 'tm-edit/exit-and-run keymap)
-         ;; Mail mode called from VM:
-         (substitute-key-definition
-          'vm-mail-send 'tm-edit/exit-and-run keymap)
-         (substitute-key-definition
-          'vm-mail-send-and-exit 'tm-edit/exit-and-run keymap)
-          ;; News mode:
-          (substitute-key-definition
-           'news-inews 'tm-edit/exit-and-run keymap)
-          )))
     ;; Define menu.  Menus for other emacs implementations are
     ;; welcome.
     ;; modified by Pekka Marjola <pema@niksula.hut.fi>
     ;;         1995/9/5 (c.f. [tm-eng:69])
     (cond ((string-match "XEmacs\\|Lucid" emacs-version)
     ;; Define menu.  Menus for other emacs implementations are
     ;; welcome.
     ;; modified by Pekka Marjola <pema@niksula.hut.fi>
     ;;         1995/9/5 (c.f. [tm-eng:69])
     (cond ((string-match "XEmacs\\|Lucid" emacs-version)
-          (tm-edit/define-menu-for-xemacs))
+          (mime-editor/define-menu-for-xemacs))
          ((string-match "^19\\." emacs-version)
          ((string-match "^19\\." emacs-version)
-          (tm-edit/define-menu-for-emacs19)
+          (mime-editor/define-menu-for-emacs19)
           ))
     ;; end
     
     ;; Remember old selective-display.
           ))
     ;; end
     
     ;; Remember old selective-display.
-    (make-local-variable 'mime-mode-old-selective-display)
-    (setq mime-mode-old-selective-display selective-display)
+    (make-local-variable 'mime/editor-mode-old-selective-display)
+    (setq mime/editor-mode-old-selective-display selective-display)
     (setq selective-display t)
     ;; I don't care about saving these.
     (setq paragraph-start
     (setq selective-display t)
     ;; I don't care about saving these.
     (setq paragraph-start
-         (concat tm-edit/single-part-tag-regexp "\\|" paragraph-start))
+         (concat mime-editor/single-part-tag-regexp "\\|" paragraph-start))
     (setq paragraph-separate
     (setq paragraph-separate
-         (concat tm-edit/single-part-tag-regexp "\\|" paragraph-separate))
-    (run-hooks 'mime-mode-hook)
+         (concat mime-editor/single-part-tag-regexp "\\|" paragraph-separate))
+    (run-hooks 'mime/editor-mode-hook)
     (message
      (substitute-command-keys
     (message
      (substitute-command-keys
-      "Type \\[mime-mode-exit] to exit MIME mode, and type \\[help-mime-mode] to get help."))
+      "Type \\[mime-editor/exit] to exit MIME mode, and type \\[mime-editor/help] to get help."))
     ))
 
 ;;;###autoload
     ))
 
 ;;;###autoload
-(fset 'edit-mime 'mime-mode)           ; for convenience
+(defalias 'edit-mime 'mime/editor-mode)                ; for convenience
+(defalias 'mime-mode 'mime/editor-mode)                ; for convenience
 
 
-(defun mime-mode-exit (&optional nomime)
+(defun mime-editor/exit (&optional nomime no-error)
   "Translate the tagged MIME message into a MIME compliant message.
 With no argument encode a message in the buffer into MIME, otherwise
 just return to previous mode."
   (interactive "P")
   "Translate the tagged MIME message into a MIME compliant message.
 With no argument encode a message in the buffer into MIME, otherwise
 just return to previous mode."
   (interactive "P")
-  (if (not mime-mode-flag)
-      (error "You aren't editing a MIME message.")
+  (if (not mime/editor-mode-flag)
+      (if (null no-error)
+         (error "You aren't editing a MIME message.")
+       )
     (if (not nomime)
        (progn
     (if (not nomime)
        (progn
-         (run-hooks 'mime-translate-hook)
-         (tm-edit/translate-buffer)))
+         (run-hooks 'mime-editor/translate-hook)
+         (mime-editor/translate-buffer)))
     ;; Restore previous state.
     ;; Restore previous state.
-    (setq mime-mode-flag nil)
-    (use-local-map mime-mode-old-local-map)
+    (setq mime/editor-mode-flag nil)
+    (use-local-map mime/editor-mode-old-local-map)
     
     ;; modified by Pekka Marjola <pema@niksula.hut.fi>
     ;; 1995/9/5 (c.f. [tm-eng:69])
     (if (string-match "XEmacs\\|Lucid" emacs-version)
        (progn
     
     ;; modified by Pekka Marjola <pema@niksula.hut.fi>
     ;; 1995/9/5 (c.f. [tm-eng:69])
     (if (string-match "XEmacs\\|Lucid" emacs-version)
        (progn
-         (delete-menu-item '("MIME"))        ; should rather be const 
-         (while mime-xemacs-old-bindings
-           (eval (pop mime-xemacs-old-bindings)))
+         (delete-menu-item (list mime-editor/menu-title))
+                                       ; should rather be const
+          ;; (while mime-editor/xemacs-old-bindings
+          ;;   (eval (pop mime-editor/xemacs-old-bindings)))
          (local-unset-key mime-prefix)))
     ;; end
     
          (local-unset-key mime-prefix)))
     ;; end
     
-    (setq selective-display mime-mode-old-selective-display)
+    (setq selective-display mime/editor-mode-old-selective-display)
     (set-buffer-modified-p (buffer-modified-p))
     (set-buffer-modified-p (buffer-modified-p))
-    (run-hooks 'mime-exit-hook)
-    (message "Exit MIME mode.")
+    (run-hooks 'mime-editor/exit-hook)
+    (message "Exit MIME editor mode.")
     ))
 
     ))
 
-(defun tm-edit/exit-and-run ()
+(defun mime-editor/maybe-translate ()
   (interactive)
   (interactive)
-  (mime-mode-exit)
-  (call-interactively 'tm-edit/split-and-send)
+  (mime-editor/exit nil t)
+  (call-interactively 'mime-editor/split-and-send)
   )
 
   )
 
-(defun help-mime-mode ()
+(defun mime-editor/help ()
   "Show help message about MIME mode."
   (interactive)
   (with-output-to-temp-buffer "*Help*"
   "Show help message about MIME mode."
   (interactive)
   (with-output-to-temp-buffer "*Help*"
-    (princ "Edit MIME Mode:\n")
-    (princ (documentation 'mime-mode))
+    (princ "MIME editor mode:\n")
+    (princ (documentation 'mime/editor-mode))
     (print-help-return-message)))
 
     (print-help-return-message)))
 
-(defun tm-edit/insert-text ()
+(defun mime-editor/insert-text ()
   "Insert a text message.
 Charset is automatically obtained from the mime-body-charset-chooser."
   (interactive)
   "Insert a text message.
 Charset is automatically obtained from the mime-body-charset-chooser."
   (interactive)
-  (if (and (tm-edit/insert-tag "text" nil nil)
-          (looking-at tm-edit/single-part-tag-regexp))
+  (if (and (mime-editor/insert-tag "text" nil nil)
+          (looking-at mime-editor/single-part-tag-regexp))
       (progn
        ;; Make a space between the following message.
        (insert "\n")
        (forward-char -1)
        )))
 
       (progn
        ;; Make a space between the following message.
        (insert "\n")
        (forward-char -1)
        )))
 
-(defun tm-edit/insert-file (file)
+(defun mime-editor/insert-file (file)
   "Insert a message from a file."
   (interactive "fInsert file as MIME message: ")
   (let*  ((guess (mime-find-file-type file))
   "Insert a message from a file."
   (interactive "fInsert file as MIME message: ")
   (let*  ((guess (mime-find-file-type file))
@@ -822,7 +740,9 @@ Charset is automatically obtained from the mime-body-charset-chooser."
              (concat "What transfer encoding"
                      (if default
                          (concat " (default "
              (concat "What transfer encoding"
                      (if default
                          (concat " (default "
-                                 (if (string-equal default "") "\"\"" default)
+                                 (if (string-equal default "")
+                                     "\"\""
+                                   default)
                                  ")"
                                  ))
                      ": ")
                                  ")"
                                  ))
                      ": ")
@@ -854,14 +774,14 @@ Charset is automatically obtained from the mime-body-charset-chooser."
            (setq rest (cdr rest))
            )
          ))
            (setq rest (cdr rest))
            )
          ))
-    (tm-edit/insert-tag pritype subtype parameters)
-    (tm-edit/insert-binary-file file encoding)
+    (mime-editor/insert-tag pritype subtype parameters)
+    (mime-editor/insert-binary-file file encoding)
     ))
 
     ))
 
-(defun tm-edit/insert-external ()
+(defun mime-editor/insert-external ()
   "Insert a reference to external body."
   (interactive)
   "Insert a reference to external body."
   (interactive)
-  (tm-edit/insert-tag "message" "external-body" nil ";\n\t")
+  (mime-editor/insert-tag "message" "external-body" nil ";\n\t")
   ;;(forward-char -1)
   ;;(insert "Content-Description: " (read-string "Content-Description: ") "\n")
   ;;(forward-line 1)
   ;;(forward-char -1)
   ;;(insert "Content-Description: " (read-string "Content-Description: ") "\n")
   ;;(forward-line 1)
@@ -873,24 +793,24 @@ Charset is automatically obtained from the mime-body-charset-chooser."
         (insert "Content-Type: "
                 pritype "/" subtype (or parameters "") "\n")))
   (if (and (not (eobp))
         (insert "Content-Type: "
                 pritype "/" subtype (or parameters "") "\n")))
   (if (and (not (eobp))
-          (not (looking-at tm-edit/single-part-tag-regexp)))
+          (not (looking-at mime-editor/single-part-tag-regexp)))
       (insert (mime-make-text-tag) "\n")))
 
       (insert (mime-make-text-tag) "\n")))
 
-(defun tm-edit/insert-voice ()
+(defun mime-editor/insert-voice ()
   "Insert a voice message."
   (interactive)
   "Insert a voice message."
   (interactive)
-  (tm-edit/insert-tag "audio" "basic" nil)
+  (mime-editor/insert-tag "audio" "basic" nil)
   (let ((buffer (funcall mime-voice-recorder)))
     (unwind-protect
   (let ((buffer (funcall mime-voice-recorder)))
     (unwind-protect
-       (tm-edit/insert-binary-buffer buffer "base64")
+       (mime-editor/insert-binary-buffer buffer "base64")
       (kill-buffer buffer)
       )))
 
       (kill-buffer buffer)
       )))
 
-(defun tm-edit/insert-signature ()
+(defun mime-editor/insert-signature ()
   "Insert a signature file specified by mime-signature-file."
   (interactive)
   (save-restriction
   "Insert a signature file specified by mime-signature-file."
   (interactive)
   (save-restriction
-    (apply (function tm-edit/insert-tag)
+    (apply (function mime-editor/insert-tag)
           (prog1
               (mime-find-file-type (insert-signature))
             (narrow-to-region (point-min)(point))
           (prog1
               (mime-find-file-type (insert-signature))
             (narrow-to-region (point-min)(point))
@@ -899,7 +819,7 @@ Charset is automatically obtained from the mime-body-charset-chooser."
 \f
 ;; Insert a new tag around a point.
 
 \f
 ;; Insert a new tag around a point.
 
-(defun tm-edit/insert-tag (&optional pritype subtype parameters delimiter)
+(defun mime-editor/insert-tag (&optional pritype subtype parameters delimiter)
   "Insert new MIME tag and return a list of PRITYPE, SUBTYPE, and PARAMETERS.
 If nothing is inserted, return nil."
   (interactive)
   "Insert new MIME tag and return a list of PRITYPE, SUBTYPE, and PARAMETERS.
 If nothing is inserted, return nil."
   (interactive)
@@ -920,21 +840,22 @@ If nothing is inserted, return nil."
     ;; Find an current MIME tag.
     (setq oldtag
          (save-excursion
     ;; Find an current MIME tag.
     (setq oldtag
          (save-excursion
-           (if (tm-edit/goto-tag)
+           (if (mime-editor/goto-tag)
                (buffer-substring (match-beginning 0) (match-end 0))
              ;; Assume content type is 'text/plan'.
              (mime-make-tag "text" "plain")
              )))
     ;; We are only interested in TEXT.
     (if (and oldtag
                (buffer-substring (match-beginning 0) (match-end 0))
              ;; Assume content type is 'text/plan'.
              (mime-make-tag "text" "plain")
              )))
     ;; We are only interested in TEXT.
     (if (and oldtag
-            (not (mime-test-content-type (tm-edit/get-contype oldtag) "text")))
+            (not (mime-test-content-type
+                  (mime-editor/get-contype oldtag) "text")))
        (setq oldtag nil))
     (beginning-of-line)
     (cond ((and oldtag                 ;Text
                (not (eobp))
                (save-excursion
                  (forward-line -1)
        (setq oldtag nil))
     (beginning-of-line)
     (cond ((and oldtag                 ;Text
                (not (eobp))
                (save-excursion
                  (forward-line -1)
-                 (looking-at tm-edit/beginning-tag-regexp)
+                 (looking-at mime-editor/beginning-tag-regexp)
                  )
                (or mime-ignore-same-text-tag
                    (not (string-equal oldtag newtag))))
                  )
                (or mime-ignore-same-text-tag
                    (not (string-equal oldtag newtag))))
@@ -943,18 +864,18 @@ If nothing is inserted, return nil."
           (forward-line -1))
          ((and oldtag                  ;Text
                (not (eobp))
           (forward-line -1))
          ((and oldtag                  ;Text
                (not (eobp))
-               (not (looking-at tm-edit/tag-regexp))
+               (not (looking-at mime-editor/tag-regexp))
                (or mime-ignore-same-text-tag
                    (not (string-equal oldtag newtag))))
           ;; Copy current tag to break a text into two.
           (save-excursion
             (insert oldtag "\n")))
          ((and (null oldtag)           ;Not text
                (or mime-ignore-same-text-tag
                    (not (string-equal oldtag newtag))))
           ;; Copy current tag to break a text into two.
           (save-excursion
             (insert oldtag "\n")))
          ((and (null oldtag)           ;Not text
-               (not (looking-at tm-edit/tag-regexp)))
+               (not (looking-at mime-editor/tag-regexp)))
           ;; Adjust insertion point.  In the middle of text, it is
           ;; okay to break the text into two.  However, it should not
           ;; be broken into two, if otherwise.
           ;; Adjust insertion point.  In the middle of text, it is
           ;; okay to break the text into two.  However, it should not
           ;; be broken into two, if otherwise.
-          (goto-char (tm-edit/content-end))
+          (goto-char (mime-editor/content-end))
           (if (eolp)
               (forward-line 1))
           (if (not (bolp))
           (if (eolp)
               (forward-line 1))
           (if (not (bolp))
@@ -979,7 +900,7 @@ If nothing is inserted, return nil."
 ;; Insert the binary content after MIME tag.
 ;;     modified by MORITA Masahiro <hiro@isl.ntt.JP>
 ;;     for x-uue
 ;; Insert the binary content after MIME tag.
 ;;     modified by MORITA Masahiro <hiro@isl.ntt.JP>
 ;;     for x-uue
-(defun tm-edit/insert-binary-file (file &optional encoding)
+(defun mime-editor/insert-binary-file (file &optional encoding)
   "Insert binary FILE at point.
 Optional argument ENCODING specifies an encoding method such as base64."
   (let ((tmpbuf (get-buffer-create " *MIME insert*")))
   "Insert binary FILE at point.
 Optional argument ENCODING specifies an encoding method such as base64."
   (let ((tmpbuf (get-buffer-create " *MIME insert*")))
@@ -1004,15 +925,15 @@ Optional argument ENCODING specifies an encoding method such as base64."
                     (cons (car uuencode-external-encoder)
                           (list (file-name-nondirectory file))
                           )))
                     (cons (car uuencode-external-encoder)
                           (list (file-name-nondirectory file))
                           )))
-               (tm-edit/insert-binary-buffer tmpbuf encoding)
+               (mime-editor/insert-binary-buffer tmpbuf encoding)
                ))
                ))
-         (tm-edit/insert-binary-buffer tmpbuf encoding))
+         (mime-editor/insert-binary-buffer tmpbuf encoding))
       (kill-buffer tmpbuf))))
 
 ;; Insert the binary content after MIME tag.
 ;;     modified by MORITA Masahiro <hiro@isl.ntt.JP>
 ;;     for x-uue
       (kill-buffer tmpbuf))))
 
 ;; Insert the binary content after MIME tag.
 ;;     modified by MORITA Masahiro <hiro@isl.ntt.JP>
 ;;     for x-uue
-(defun tm-edit/insert-binary-buffer (buffer &optional encoding)
+(defun mime-editor/insert-binary-buffer (buffer &optional encoding)
   "Insert binary BUFFER at point.
 Optional argument ENCODING specifies an encoding method such as base64."
   (let* ((tagend (1- (point)))         ;End of the tag
   "Insert binary BUFFER at point.
 Optional argument ENCODING specifies an encoding method such as base64."
   (let* ((tagend (1- (point)))         ;End of the tag
@@ -1040,18 +961,19 @@ Optional argument ENCODING specifies an encoding method such as base64."
     (if (stringp encoding)
        (save-excursion
          (goto-char tagend)            ;Make sure which line the tag is on.
     (if (stringp encoding)
        (save-excursion
          (goto-char tagend)            ;Make sure which line the tag is on.
-         (tm-edit/define-encoding encoding)))
+         (mime-editor/define-encoding encoding)))
     ))
     ))
+
 \f
 ;; Commands work on a current message flagment.
 
 \f
 ;; Commands work on a current message flagment.
 
-(defun tm-edit/goto-tag ()
+(defun mime-editor/goto-tag ()
   "Search for the beginning of the tagged MIME message."
   (let ((current (point)) multipart)
   "Search for the beginning of the tagged MIME message."
   (let ((current (point)) multipart)
-    (if (looking-at tm-edit/tag-regexp)
+    (if (looking-at mime-editor/tag-regexp)
        t
       ;; At first, go to the end.
        t
       ;; At first, go to the end.
-      (cond ((re-search-forward tm-edit/beginning-tag-regexp nil t)
+      (cond ((re-search-forward mime-editor/beginning-tag-regexp nil t)
             (goto-char (match-beginning 0)) ;For multiline tag
             (forward-line -1)
             (end-of-line)
             (goto-char (match-beginning 0)) ;For multiline tag
             (forward-line -1)
             (end-of-line)
@@ -1060,9 +982,9 @@ Optional argument ENCODING specifies an encoding method such as base64."
             (goto-char (point-max))
             ))
       ;; Then search for the beginning. 
             (goto-char (point-max))
             ))
       ;; Then search for the beginning. 
-      (re-search-backward tm-edit/end-tag-regexp nil t)
+      (re-search-backward mime-editor/end-tag-regexp nil t)
       (beginning-of-line)
       (beginning-of-line)
-      (or (looking-at tm-edit/beginning-tag-regexp)
+      (or (looking-at mime-editor/beginning-tag-regexp)
          ;; Restore previous point.
          (progn
            (goto-char current)
          ;; Restore previous point.
          (progn
            (goto-char current)
@@ -1070,12 +992,12 @@ Optional argument ENCODING specifies an encoding method such as base64."
            ))
       )))
 
            ))
       )))
 
-(defun tm-edit/content-beginning ()
+(defun mime-editor/content-beginning ()
   "Return the point of the beginning of content."
   (save-excursion
     (let ((beg (save-excursion
                 (beginning-of-line) (point))))
   "Return the point of the beginning of content."
   (save-excursion
     (let ((beg (save-excursion
                 (beginning-of-line) (point))))
-      (if (tm-edit/goto-tag)
+      (if (mime-editor/goto-tag)
          (let ((top (point)))
            (goto-char (match-end 0))
            (if (and (= beg top)
          (let ((top (point)))
            (goto-char (match-end 0))
            (if (and (= beg top)
@@ -1092,12 +1014,12 @@ Optional argument ENCODING specifies an encoding method such as base64."
        (point))
       )))
 
        (point))
       )))
 
-(defun tm-edit/content-end ()
+(defun mime-editor/content-end ()
   "Return the point of the end of content."
   (save-excursion
     (let ((beg (save-excursion
                 (beginning-of-line) (point))))
   "Return the point of the end of content."
   (save-excursion
     (let ((beg (save-excursion
                 (beginning-of-line) (point))))
-      (if (tm-edit/goto-tag)
+      (if (mime-editor/goto-tag)
          (let ((top (point)))
            (goto-char (match-end 0))
            (if (and (= beg top)        ;Must be on the same line.
          (let ((top (point)))
            (goto-char (match-end 0))
            (if (and (= beg top)        ;Must be on the same line.
@@ -1106,52 +1028,52 @@ Optional argument ENCODING specifies an encoding method such as base64."
                  (end-of-line)
                  (point))
              ;; Move to the end of this text.
                  (end-of-line)
                  (point))
              ;; Move to the end of this text.
-             (if (re-search-forward tm-edit/tag-regexp nil 'move)
+             (if (re-search-forward mime-editor/tag-regexp nil 'move)
                  ;; Don't forget a multiline tag.
                  (goto-char (match-beginning 0)))
              (point)
              ))
        ;; Assume the message begins with text/plain.
                  ;; Don't forget a multiline tag.
                  (goto-char (match-beginning 0)))
              (point)
              ))
        ;; Assume the message begins with text/plain.
-       (goto-char (tm-edit/content-beginning))
-       (if (re-search-forward tm-edit/tag-regexp nil 'move)
+       (goto-char (mime-editor/content-beginning))
+       (if (re-search-forward mime-editor/tag-regexp nil 'move)
            ;; Don't forget a multiline tag.
            (goto-char (match-beginning 0)))
        (point))
       )))
 
            ;; Don't forget a multiline tag.
            (goto-char (match-beginning 0)))
        (point))
       )))
 
-(defun tm-edit/define-charset (charset)
+(defun mime-editor/define-charset (charset)
   "Set charset of current tag to CHARSET."
   (save-excursion
   "Set charset of current tag to CHARSET."
   (save-excursion
-    (if (tm-edit/goto-tag)
+    (if (mime-editor/goto-tag)
        (let ((tag (buffer-substring (match-beginning 0) (match-end 0))))
          (delete-region (match-beginning 0) (match-end 0))
          (insert
           (mime-create-tag (mime-set-parameter
        (let ((tag (buffer-substring (match-beginning 0) (match-end 0))))
          (delete-region (match-beginning 0) (match-end 0))
          (insert
           (mime-create-tag (mime-set-parameter
-                            (tm-edit/get-contype tag) "charset" charset)
-                           (tm-edit/get-encoding tag))))
+                            (mime-editor/get-contype tag) "charset" charset)
+                           (mime-editor/get-encoding tag))))
       )))
 
       )))
 
-(defun tm-edit/define-encoding (encoding)
+(defun mime-editor/define-encoding (encoding)
   "Set encoding of current tag to ENCODING."
   (save-excursion
   "Set encoding of current tag to ENCODING."
   (save-excursion
-    (if (tm-edit/goto-tag)
+    (if (mime-editor/goto-tag)
        (let ((tag (buffer-substring (match-beginning 0) (match-end 0))))
          (delete-region (match-beginning 0) (match-end 0))
        (let ((tag (buffer-substring (match-beginning 0) (match-end 0))))
          (delete-region (match-beginning 0) (match-end 0))
-         (insert (mime-create-tag (tm-edit/get-contype tag) encoding)))
+         (insert (mime-create-tag (mime-editor/get-contype tag) encoding)))
       )))
 
       )))
 
-(defun tm-edit/choose-charset ()
+(defun mime-editor/choose-charset ()
   "Choose charset of a text following current point."
   (save-excursion
     (let* ((beg (point))
   "Choose charset of a text following current point."
   (save-excursion
     (let* ((beg (point))
-          (end (tm-edit/content-end)))
+          (end (mime-editor/content-end)))
       (car (funcall mime-body-charset-chooser beg end)))))
 
       (car (funcall mime-body-charset-chooser beg end)))))
 
-(defun tm-edit/choose-encoding ()
+(defun mime-editor/choose-encoding ()
   "Choose encoding of a text following current point."
   (save-excursion
     (let* ((beg (point))
   "Choose encoding of a text following current point."
   (save-excursion
     (let* ((beg (point))
-          (end (tm-edit/content-end)))
+          (end (mime-editor/content-end)))
       (cdr (funcall mime-body-charset-chooser beg end)))))
 
 (defun mime-make-text-tag (&optional subtype)
       (cdr (funcall mime-body-charset-chooser beg end)))))
 
 (defun mime-make-text-tag (&optional subtype)
@@ -1178,20 +1100,20 @@ Otherwise, it is obtained from mime-content-types."
   (format (if encoding mime-tag-format-with-encoding mime-tag-format)
          contype encoding))
 
   (format (if encoding mime-tag-format-with-encoding mime-tag-format)
          contype encoding))
 
-(defun tm-edit/get-contype (tag)
+(defun mime-editor/get-contype (tag)
   "Return Content-Type (including parameters) of TAG."
   (and (stringp tag)
   "Return Content-Type (including parameters) of TAG."
   (and (stringp tag)
-       (or (string-match tm-edit/single-part-tag-regexp tag)
-          (string-match tm-edit/multipart-beginning-regexp tag)
-          (string-match tm-edit/multipart-end-regexp tag)
+       (or (string-match mime-editor/single-part-tag-regexp tag)
+          (string-match mime-editor/multipart-beginning-regexp tag)
+          (string-match mime-editor/multipart-end-regexp tag)
           )
        (substring tag (match-beginning 1) (match-end 1))
        ))
 
           )
        (substring tag (match-beginning 1) (match-end 1))
        ))
 
-(defun tm-edit/get-encoding (tag)
+(defun mime-editor/get-encoding (tag)
   "Return encoding of TAG."
   (and (stringp tag)
   "Return encoding of TAG."
   (and (stringp tag)
-       (string-match tm-edit/single-part-tag-regexp tag)
+       (string-match mime-editor/single-part-tag-regexp tag)
        (match-beginning 3)
        (not (= (match-beginning 3) (match-end 3)))
        (substring tag (match-beginning 3) (match-end 3))))
        (match-beginning 3)
        (not (= (match-beginning 3) (match-end 3)))
        (substring tag (match-beginning 3) (match-end 3))))
@@ -1383,14 +1305,14 @@ while if FLAG is `\\^M' (control-M) the text is hidden."
 \f
 ;; Translate the tagged MIME messages into a MIME compliant message.
 
 \f
 ;; Translate the tagged MIME messages into a MIME compliant message.
 
-(defun tm-edit/translate-buffer ()
+(defun mime-editor/translate-buffer ()
   "Encode the tagged MIME message in current buffer in MIME compliant message."
   (interactive)
   (mime/encode-message-header)
   "Encode the tagged MIME message in current buffer in MIME compliant message."
   (interactive)
   (mime/encode-message-header)
-  (tm-edit/translate-body)
+  (mime-editor/translate-body)
   )
 
   )
 
-(defun tm-edit/translate-body ()
+(defun mime-editor/translate-body ()
   "Encode the tagged MIME body in current buffer in MIME compliant message."
   (interactive)
   (save-excursion
   "Encode the tagged MIME body in current buffer in MIME compliant message."
   (interactive)
   (save-excursion
@@ -1399,7 +1321,7 @@ while if FLAG is `\\^M' (control-M) the text is hidden."
          (i 1)
          (time (current-time-string))
          ret)
          (i 1)
          (time (current-time-string))
          ret)
-      (while (tm-edit/process-multipart-1
+      (while (mime-editor/process-multipart-1
              (format "%s %s-%d" mime-multipart-boundary time i))
        (setq i (1+ i))
        )
              (format "%s %s-%d" mime-multipart-boundary time i))
        (setq i (1+ i))
        )
@@ -1420,7 +1342,7 @@ while if FLAG is `\\^M' (control-M) the text is hidden."
                       (re-search-backward "[^ \t\n]\n" beg t)
                       (forward-char 1))
                  (point))))
                       (re-search-backward "[^ \t\n]\n" beg t)
                       (forward-char 1))
                  (point))))
-         (setq ret (tm-edit/translate-region
+         (setq ret (mime-editor/translate-region
                     beg end
                     (format "%s %s-%d" mime-multipart-boundary time i)))
          ))
                     beg end
                     (format "%s %s-%d" mime-multipart-boundary time i)))
          ))
@@ -1429,7 +1351,7 @@ while if FLAG is `\\^M' (control-M) the text is hidden."
            )
        ;; Make primary MIME headers.
        (or (mail-position-on-field "Mime-Version")
            )
        ;; Make primary MIME headers.
        (or (mail-position-on-field "Mime-Version")
-           (insert tm-edit/mime-version-value))
+           (insert mime-editor/mime-version-value))
        ;; Remove old Content-Type and other fields.
        (save-restriction
          (goto-char (point-min))
        ;; Remove old Content-Type and other fields.
        (save-restriction
          (goto-char (point-min))
@@ -1447,30 +1369,30 @@ while if FLAG is `\\^M' (control-M) the text is hidden."
              (insert encoding)))
        ))))
 
              (insert encoding)))
        ))))
 
-(defun tm-edit/normalize-body ()
+(defun mime-editor/normalize-body ()
   "Normalize the body part by inserting appropriate message tags."
   ;; Insert the first MIME tags if necessary.
   (goto-char (point-min))
   "Normalize the body part by inserting appropriate message tags."
   ;; Insert the first MIME tags if necessary.
   (goto-char (point-min))
-  (if (not (looking-at tm-edit/single-part-tag-regexp))
+  (if (not (looking-at mime-editor/single-part-tag-regexp))
       (insert (mime-make-text-tag) "\n"))
   ;; Check each tag, and add new tag or correct it if necessary.
   (goto-char (point-min))
       (insert (mime-make-text-tag) "\n"))
   ;; Check each tag, and add new tag or correct it if necessary.
   (goto-char (point-min))
-  (while (re-search-forward tm-edit/single-part-tag-regexp nil t)
+  (while (re-search-forward mime-editor/single-part-tag-regexp nil t)
     (let* ((tag (buffer-substring (match-beginning 0) (match-end 0)))
     (let* ((tag (buffer-substring (match-beginning 0) (match-end 0)))
-          (contype (tm-edit/get-contype tag))
+          (contype (mime-editor/get-contype tag))
           (charset (mime-get-parameter contype "charset"))
           (charset (mime-get-parameter contype "charset"))
-          (encoding (tm-edit/get-encoding tag)))
+          (encoding (mime-editor/get-encoding tag)))
       ;; Remove extra whitespaces after the tag.
       (if (looking-at "[ \t]+$")
          (delete-region (match-beginning 0) (match-end 0)))
       (cond ((= (following-char) ?\^M)
             ;; It must be image, audio or video.
             (let ((beg (point))
       ;; Remove extra whitespaces after the tag.
       (if (looking-at "[ \t]+$")
          (delete-region (match-beginning 0) (match-end 0)))
       (cond ((= (following-char) ?\^M)
             ;; It must be image, audio or video.
             (let ((beg (point))
-                  (end (tm-edit/content-end)))
+                  (end (mime-editor/content-end)))
               ;; Insert explicit MIME tags after hidden messages.
               (forward-line 1)
               (if (and (not (eobp))
               ;; Insert explicit MIME tags after hidden messages.
               (forward-line 1)
               (if (and (not (eobp))
-                       (not (looking-at tm-edit/single-part-tag-regexp)))
+                       (not (looking-at mime-editor/single-part-tag-regexp)))
                   (progn
                     (insert (mime-make-text-tag) "\n")
                     (forward-line -1)  ;Process it again as text.
                   (progn
                     (insert (mime-make-text-tag) "\n")
                     (forward-line -1)  ;Process it again as text.
@@ -1483,14 +1405,14 @@ while if FLAG is `\\^M' (control-M) the text is hidden."
             (forward-line 1))
            ((mime-test-content-type contype "text")
             ;; Define charset for text if necessary.
             (forward-line 1))
            ((mime-test-content-type contype "text")
             ;; Define charset for text if necessary.
-            (setq charset (or charset (tm-edit/choose-charset)))
-            (tm-edit/define-charset charset)
+            (setq charset (or charset (mime-editor/choose-charset)))
+            (mime-editor/define-charset charset)
             ;; Point is now on current tag.
             ;; Define encoding and encode text if necessary.
             (if (null encoding)        ;Encoding is not specified.
             ;; Point is now on current tag.
             ;; Define encoding and encode text if necessary.
             (if (null encoding)        ;Encoding is not specified.
-                (let* ((encoding (tm-edit/choose-encoding))
-                       (beg (tm-edit/content-beginning))
-                       (end (tm-edit/content-end))
+                (let* ((encoding (mime-editor/choose-encoding))
+                       (beg (mime-editor/content-beginning))
+                       (end (mime-editor/content-end))
                        (body (buffer-substring beg end))
                        (encoded (funcall mime-string-encoder
                                          (cons charset encoding) body)))
                        (body (buffer-substring beg end))
                        (encoded (funcall mime-string-encoder
                                          (cons charset encoding) body)))
@@ -1500,15 +1422,15 @@ while if FLAG is `\\^M' (control-M) the text is hidden."
                         (delete-region beg end)
                         (insert encoded)
                         (goto-char beg)))
                         (delete-region beg end)
                         (insert encoded)
                         (goto-char beg)))
-                  (tm-edit/define-encoding encoding)))
+                  (mime-editor/define-encoding encoding)))
             (forward-line 1))
            ((null encoding)            ;Encoding is not specified.
             ;; Application, image, audio, video, and any other
             ;; unknown content-type without encoding should be
             ;; encoded.
             (let* ((encoding "base64") ;Encode in BASE64 by default.
             (forward-line 1))
            ((null encoding)            ;Encoding is not specified.
             ;; Application, image, audio, video, and any other
             ;; unknown content-type without encoding should be
             ;; encoded.
             (let* ((encoding "base64") ;Encode in BASE64 by default.
-                   (beg (tm-edit/content-beginning))
-                   (end (tm-edit/content-end))
+                   (beg (mime-editor/content-beginning))
+                   (end (mime-editor/content-end))
                    (body (buffer-substring beg end))
                    (encoded (funcall mime-string-encoder
                                      (cons nil encoding) body)))
                    (body (buffer-substring beg end))
                    (encoded (funcall mime-string-encoder
                                      (cons nil encoding) body)))
@@ -1518,7 +1440,7 @@ while if FLAG is `\\^M' (control-M) the text is hidden."
                     (delete-region beg end)
                     (insert encoded)
                     (goto-char beg)))
                     (delete-region beg end)
                     (insert encoded)
                     (goto-char beg)))
-              (tm-edit/define-encoding encoding))
+              (mime-editor/define-encoding encoding))
             (forward-line 1))
            )
       )))
             (forward-line 1))
            )
       )))
@@ -1745,87 +1667,25 @@ a recording host instead of local host."
              )))))
 
 \f
              )))))
 
 \f
-;;;
-;;; Other useful commands.
+;;; @ Other useful commands.
 ;;;
 
 ;; Message forwarding commands as content-type "message/rfc822".
 
 ;;;
 
 ;; Message forwarding commands as content-type "message/rfc822".
 
-(defun tm-edit/insert-message (&optional message)
+(defun mime-editor/insert-message (&optional message)
   (interactive)
   (interactive)
-  (let ((inserter (assoc-value major-mode tm-edit/message-inserter-alist)))
+  (let ((inserter (assoc-value major-mode mime-editor/message-inserter-alist)))
     (if (and inserter (fboundp inserter))
        (progn
     (if (and inserter (fboundp inserter))
        (progn
-         (tm-edit/insert-tag "message" "rfc822")
+         (mime-editor/insert-tag "message" "rfc822")
          (funcall inserter message)
          )
       (message "Sorry, I don't have message inserter for your MUA.")
       )))
 
          (funcall inserter message)
          )
       (message "Sorry, I don't have message inserter for your MUA.")
       )))
 
-;;;###autoload
-;;; (defun mime-forward-from-rmail-using-mail ()
-;;;   "Forward current message in message/rfc822 content-type message from rmail.
-;;; The message will be appended if being composed."
-;;;   (interactive)
-;;;   ;;>> this gets set even if we abort. Can't do anything about it, though.
-;;;   (rmail-set-attribute "forwarded" t)
-;;;   (let ((initialized nil)
-;;;         (beginning nil)
-;;;         (forwarding-buffer (current-buffer))
-;;;         (subject (concat "["
-;;;                          (mail-strip-quoted-names (mail-fetch-field "From"))
-;;;                          ": " (or (mail-fetch-field "Subject") "") "]")))
-;;;     ;; If only one window, use it for the mail buffer.
-;;;     ;; Otherwise, use another window for the mail buffer
-;;;     ;; so that the Rmail buffer remains visible
-;;;     ;; and sending the mail will get back to it.
-;;;     (setq initialized
-;;;           (if (one-window-p t)
-;;;               (mail nil nil subject)
-;;;             (mail-other-window nil nil subject)))
-;;;     (save-excursion
-;;;       (goto-char (point-max))
-;;;       (forward-line 1)
-;;;       (setq beginning (point))
-;;;       (tm-edit/insert-tag "message" "rfc822")
-;;;       (insert-buffer forwarding-buffer))
-;;;     (if (not initialized)
-;;;         (goto-char beginning))
-;;;     ))
-
-;;;###autoload
-;;; (defun mime-forward-from-gnus-using-mail ()
-;;;   "Forward current article in message/rfc822 content-type message from GNUS.
-;;; The message will be appended if being composed."
-;;;   (let ((initialized nil)
-;;;         (beginning nil)
-;;;         (forwarding-buffer (current-buffer))
-;;;         (subject
-;;;          (concat "[" gnus-newsgroup-name "] "
-;;;                  ;;(mail-strip-quoted-names (gnus-fetch-field "From")) ": "
-;;;                  (or (gnus-fetch-field "Subject") ""))))
-;;;     ;; If only one window, use it for the mail buffer.
-;;;     ;; Otherwise, use another window for the mail buffer
-;;;     ;; so that the Rmail buffer remains visible
-;;;     ;; and sending the mail will get back to it.
-;;;     (setq initialized
-;;;           (if (one-window-p t)
-;;;               (mail nil nil subject)
-;;;             (mail-other-window nil nil subject)))
-;;;     (save-excursion
-;;;       (goto-char (point-max))
-;;;       (setq beginning (point))
-;;;       (tm-edit/insert-tag "message" "rfc822")
-;;;       (insert-buffer forwarding-buffer)
-;;;       ;; You have a chance to arrange the message.
-;;;       (run-hooks 'gnus-mail-forward-hook)
-;;;       )
-;;;     (if (not initialized)
-;;;         (goto-char beginning))
-;;;     ))
-
 ;;; mime.el ends here
 ;;; mime.el ends here
-(defun tm-edit/translate-region (beg end &optional boundary multipart)
+
+(defun mime-editor/translate-region (beg end &optional boundary multipart)
   (if (null boundary)
       (setq boundary
            (concat mime-multipart-boundary " " (current-time-string)))
   (if (null boundary)
       (setq boundary
            (concat mime-multipart-boundary " " (current-time-string)))
@@ -1839,31 +1699,31 @@ a recording host instead of local host."
            (nparts 0))                 ;Number of body parts
        ;; Normalize the body part by inserting appropriate message
        ;; tags for every message contents.
            (nparts 0))                 ;Number of body parts
        ;; Normalize the body part by inserting appropriate message
        ;; tags for every message contents.
-       (tm-edit/normalize-body)
+       (mime-editor/normalize-body)
        ;; Counting the number of Content-Type.
        (goto-char (point-min))
        ;; Counting the number of Content-Type.
        (goto-char (point-min))
-       (while (re-search-forward tm-edit/single-part-tag-regexp nil t)
+       (while (re-search-forward mime-editor/single-part-tag-regexp nil t)
          (setq nparts (1+ nparts)))
        ;; Begin translation.
        (cond ((and (<= nparts 1)(not multipart))
               ;; It's a singular message.
               (goto-char (point-min))
          (setq nparts (1+ nparts)))
        ;; Begin translation.
        (cond ((and (<= nparts 1)(not multipart))
               ;; It's a singular message.
               (goto-char (point-min))
-              (while (re-search-forward tm-edit/single-part-tag-regexp nil t)
+              (while (re-search-forward mime-editor/single-part-tag-regexp nil t)
                 (setq tag
                       (buffer-substring (match-beginning 0) (match-end 0)))
                 (delete-region (match-beginning 0) (1+ (match-end 0)))
                 (setq tag
                       (buffer-substring (match-beginning 0) (match-end 0)))
                 (delete-region (match-beginning 0) (1+ (match-end 0)))
-                (setq contype (tm-edit/get-contype tag))
-                (setq encoding (tm-edit/get-encoding tag))
+                (setq contype (mime-editor/get-contype tag))
+                (setq encoding (mime-editor/get-encoding tag))
                 ))
              (t
               ;; It's a multipart message.
               (goto-char (point-min))
                 ))
              (t
               ;; It's a multipart message.
               (goto-char (point-min))
-              (while (re-search-forward tm-edit/single-part-tag-regexp nil t)
+              (while (re-search-forward mime-editor/single-part-tag-regexp nil t)
                 (setq tag
                       (buffer-substring (match-beginning 0) (match-end 0)))
                 (delete-region (match-beginning 0) (match-end 0))
                 (setq tag
                       (buffer-substring (match-beginning 0) (match-end 0)))
                 (delete-region (match-beginning 0) (match-end 0))
-                (setq contype (tm-edit/get-contype tag))
-                (setq encoding (tm-edit/get-encoding tag))
+                (setq contype (mime-editor/get-contype tag))
+                (setq encoding (mime-editor/get-encoding tag))
                 (insert "--" boundary "\n")
                 (insert "Content-Type: " contype "\n")
                 (if encoding
                 (insert "--" boundary "\n")
                 (insert "Content-Type: " contype "\n")
                 (if encoding
@@ -1887,9 +1747,9 @@ a recording host instead of local host."
        ))))
 
 
        ))))
 
 
-(defun tm-edit/find-inmost ()
+(defun mime-editor/find-inmost ()
   (goto-char (point-min))
   (goto-char (point-min))
-  (if (re-search-forward tm-edit/multipart-beginning-regexp nil t)
+  (if (re-search-forward mime-editor/multipart-beginning-regexp nil t)
       (let ((bb (match-beginning 0))
            (be (match-end 0))
            (type (buffer-substring (match-beginning 1)(match-end 1)))
       (let ((bb (match-beginning 0))
            (be (match-end 0))
            (type (buffer-substring (match-beginning 1)(match-end 1)))
@@ -1906,18 +1766,18 @@ a recording host instead of local host."
          )
        (narrow-to-region be eb)
        (goto-char be)
          )
        (narrow-to-region be eb)
        (goto-char be)
-       (if (re-search-forward tm-edit/multipart-beginning-regexp nil t)
+       (if (re-search-forward mime-editor/multipart-beginning-regexp nil t)
            (let (ret)
              (narrow-to-region (match-beginning 0)(point-max))
            (let (ret)
              (narrow-to-region (match-beginning 0)(point-max))
-             (tm-edit/find-inmost)
+             (mime-editor/find-inmost)
              )
          (widen)
          ;;(delete-region eb ee)
          (list type bb be eb)
          ))))
 
              )
          (widen)
          ;;(delete-region eb ee)
          (list type bb be eb)
          ))))
 
-(defun tm-edit/process-multipart-1 (boundary)
-  (let ((ret (tm-edit/find-inmost)))
+(defun mime-editor/process-multipart-1 (boundary)
+  (let ((ret (mime-editor/find-inmost)))
     (if ret
        (let ((type (car ret))
              (bb (nth 1 ret))(be (nth 2 ret))
     (if ret
        (let ((type (car ret))
              (bb (nth 1 ret))(be (nth 2 ret))
@@ -1929,15 +1789,15 @@ a recording host instead of local host."
          (setq eb (point-max))
          (widen)
          (goto-char eb)
          (setq eb (point-max))
          (widen)
          (goto-char eb)
-         (if (looking-at tm-edit/multipart-end-regexp)
+         (if (looking-at mime-editor/multipart-end-regexp)
              (let ((beg (match-beginning 0))
                    (end (match-end 0))
                    )
                (delete-region beg end)
              (let ((beg (match-beginning 0))
                    (end (match-end 0))
                    )
                (delete-region beg end)
-               (if (not (looking-at tm-edit/single-part-tag-regexp))
+               (if (not (looking-at mime-editor/single-part-tag-regexp))
                    (insert (concat (mime-make-text-tag) "\n"))
                  )))
                    (insert (concat (mime-make-text-tag) "\n"))
                  )))
-         (setq boundary (nth 2 (tm-edit/translate-region bb eb boundary t)))
+         (setq boundary (nth 2 (mime-editor/translate-region bb eb boundary t)))
          (goto-char bb)
          (insert
           (format "--[[multipart/%s; boundary=\"%s\"][7bit]]\n"
          (goto-char bb)
          (insert
           (format "--[[multipart/%s; boundary=\"%s\"][7bit]]\n"
@@ -1949,7 +1809,7 @@ a recording host instead of local host."
 ;;; @ multipart enclosure
 ;;;
 
 ;;; @ multipart enclosure
 ;;;
 
-(defun tm-edit/enclose-region (type beg end)
+(defun mime-editor/enclose-region (type beg end)
   (save-excursion
     (goto-char beg)
     (let ((f (bolp)))
   (save-excursion
     (goto-char beg)
     (let ((f (bolp)))
@@ -1976,7 +1836,7 @@ a recording host instead of local host."
                  (forward-char)
                  )
              )
                  (forward-char)
                  )
              )
-           (if (not (looking-at tm-edit/single-part-tag-regexp))
+           (if (not (looking-at mime-editor/single-part-tag-regexp))
                (insert (mime-make-text-tag) "\n")
              )
            )
                (insert (mime-make-text-tag) "\n")
              )
            )
@@ -1985,138 +1845,172 @@ a recording host instead of local host."
          ))
       )))
 
          ))
       )))
 
-(defun tm-edit/enclose-mixed-region (beg end)
+(defun mime-editor/enclose-mixed-region (beg end)
   (interactive "*r")
   (interactive "*r")
-  (tm-edit/enclose-region "mixed" beg end)
+  (mime-editor/enclose-region "mixed" beg end)
   )
 
   )
 
-(defun tm-edit/enclose-parallel-region (beg end)
+(defun mime-editor/enclose-parallel-region (beg end)
   (interactive "*r")
   (interactive "*r")
-  (tm-edit/enclose-region "parallel" beg end)
+  (mime-editor/enclose-region "parallel" beg end)
   )
 
   )
 
-(defun tm-edit/enclose-digest-region (beg end)
+(defun mime-editor/enclose-digest-region (beg end)
   (interactive "*r")
   (interactive "*r")
-  (tm-edit/enclose-region "digest" beg end)
+  (mime-editor/enclose-region "digest" beg end)
   )
 
   )
 
-(defun tm-edit/enclose-alternative-region (beg end)
+(defun mime-editor/enclose-alternative-region (beg end)
   (interactive "*r")
   (interactive "*r")
-  (tm-edit/enclose-region "alternative" beg end)
+  (mime-editor/enclose-region "alternative" beg end)
   )
 
 
 ;;; @ split
 ;;;
 
   )
 
 
 ;;; @ split
 ;;;
 
-(defun tm-edit/split-and-send (&optional cmd)
+(defun mime-editor/insert-partial-header (fields subject id number total separator)
+  (insert fields)
+  (insert (format "Subject: %s (%d/%d)\n" subject number total))
+  (insert (format "Mime-Version: 1.0 (split by tm-edit %s)\n"
+                 mime-editor/version))
+  (insert (format "\
+Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n"
+                 id number total separator))
+  )
+
+(defun mime-editor/split-and-send (&optional cmd)
   (interactive)
   (interactive)
-  (let ((tm-edit/message-max-length
-        (or (cdr (assq major-mode tm-edit/message-max-length-alist))
-            tm-edit/message-default-max-length))
+  (let ((mime-editor/message-max-length
+        (or (cdr (assq major-mode mime-editor/message-max-length-alist))
+            mime-editor/message-default-max-length))
        (lines (count-lines (point-min) (point-max)))
        )
        (lines (count-lines (point-min) (point-max)))
        )
-    (if (or (<= lines tm-edit/message-max-length)
-           (not tm-edit/split-message))
-       (call-interactively
-        (or cmd
-            (cdr (assq major-mode tm-edit/message-default-sender-alist))
-            ))
-      (let* ((tm-edit/draft-file-name 
-             (or (buffer-file-name)
-                 (make-temp-name (expand-file-name "tm-draft" mime/tmp-dir))))
-            (separator mail-header-separator)
-            (config
-             (eval (cdr (assq major-mode tm-edit/window-config-alist))))
-            (id (concat "\""
-                        (replace-space-with-underline (current-time-string))
-                        "@" (system-name) "\"")))
-       
-       (let ((hook (cdr (assq major-mode
-                              tm-edit/message-before-send-hook-alist))))
-         (run-hooks hook))
-       (let* ((header (rfc822/get-header-string-except
-                       tm-edit/message-nuke-headers separator))
-              (orig-header (rfc822/get-header-string-except
-                            tm-edit/message-blind-headers separator))
-              (subject (mail-fetch-field "subject"))
-              (total (+ (/ lines tm-edit/message-max-length)
-                        (if (> (mod lines tm-edit/message-max-length) 0)
-                            1)))
-              (i 0)
-              (l tm-edit/message-max-length)
-              (the-buf (current-buffer))
-              (buf (get-buffer "*tmp-send*"))
-              (command
-               (or cmd
-                (cdr (assq major-mode tm-edit/message-sender-alist))
-                (cdr (assq major-mode tm-edit/message-default-sender-alist))))
-              data)
-         (goto-char (point-min))
-         (if (re-search-forward (concat "^" (regexp-quote separator) "$")
-                                nil t)
-             (replace-match "")
-           )
-         (if buf
-             (progn
+    (if (and (> lines mime-editor/message-max-length) mime-editor/split-message)
+       (let* ((mime-editor/draft-file-name 
+               (or (buffer-file-name)
+                   (make-temp-name
+                    (expand-file-name "tm-draft" mime/tmp-dir))))
+              (separator mail-header-separator)
+              (config
+               (eval (cdr (assq major-mode mime-editor/window-config-alist))))
+              (id (concat "\""
+                          (replace-space-with-underline (current-time-string))
+                          "@" (system-name) "\"")))
+         (run-hooks 'mime-editor/before-split-hook)
+         (let* ((header (rfc822/get-header-string-except
+                         mime-editor/message-nuke-headers separator))
+                (subject (mail-fetch-field "subject"))
+                (total (+ (/ lines mime-editor/message-max-length)
+                          (if (> (mod lines mime-editor/message-max-length) 0)
+                              1)))
+                (the-buf (current-buffer))
+                (buf (get-buffer "*tmp-send*"))
+                (command
+                 (or cmd
+                     (cdr (assq major-mode
+                                mime-editor/message-sender-alist))
+                     (cdr (assq major-mode
+                                mime-editor/message-default-sender-alist))))
+                data)
+           (goto-char (point-min))
+           (if (re-search-forward (concat "^" (regexp-quote separator) "$")
+                                  nil t)
+               (replace-match "")
+             )
+           (if buf
+               (progn
+                 (switch-to-buffer buf)
+                 (erase-buffer)
+                 (switch-to-buffer the-buf)
+                 )
+             (setq buf (get-buffer-create "*tmp-send*"))
+             )
+           (switch-to-buffer buf)
+           (make-variable-buffer-local 'mail-header-separator)
+           (setq mail-header-separator separator)
+           (switch-to-buffer the-buf)
+           (goto-char (point-min))
+           (re-search-forward "^$" nil t)
+           (let ((mime-editor/partial-number 1))
+             (setq data (buffer-substring
+                         (point-min)
+                         (progn
+                           (goto-line mime-editor/message-max-length)
+                           (point))
+                         ))
+             (delete-region (point-min)(point))
+             (switch-to-buffer buf)
+             (mime-editor/insert-partial-header header subject
+                                            id mime-editor/partial-number total
+                                            separator)
+             (insert data)
+             (save-excursion
+               (save-restriction
+                 (goto-char (point-min))
+                 (search-forward (concat "\n" mail-header-separator "\n"))
+                 (narrow-to-region
+                  (match-end 0)
+                  (if (re-search-forward "^$" nil t)
+                      (match-beginning 0)
+                    (point-max)
+                    ))
+                 (goto-char (point-min))
+                 (while (re-search-forward mime-editor/blind-fields-regexp nil t)
+                   (delete-region (match-beginning 0)
+                                  (let ((e (rfc822/field-end)))
+                                    (if (< e (point-max))
+                                        (1+ e)
+                                      e)))
+                   )
+                 ))
+             (save-excursion
+               (message (format "Sending %d/%d..."
+                                mime-editor/partial-number total))
+               (call-interactively command)
+               (message (format "Sending %d/%d... done"
+                                mime-editor/partial-number total))
+               )
+             (erase-buffer)
+             (switch-to-buffer the-buf)
+             (setq mime-editor/partial-number 2)
+             (while (< mime-editor/partial-number total)
+               (setq data (buffer-substring
+                           (point-min)
+                           (progn
+                             (goto-line mime-editor/message-max-length)
+                             (point))
+                           ))
+               (delete-region (point-min)(point))
                (switch-to-buffer buf)
                (switch-to-buffer buf)
+               (mime-editor/insert-partial-header header subject
+                                              id mime-editor/partial-number total
+                                              separator)
+               (insert data)
+               (save-excursion
+                 (message (format "Sending %d/%d..."
+                                  mime-editor/partial-number total))
+                 (call-interactively command)
+                 (message (format "Sending %d/%d... done"
+                                  mime-editor/partial-number total))
+                 )
                (erase-buffer)
                (switch-to-buffer the-buf)
                (erase-buffer)
                (switch-to-buffer the-buf)
+               (setq mime-editor/partial-number (1+ mime-editor/partial-number))
                )
                )
-           (setq buf (get-buffer-create "*tmp-send*"))
-           )
-         (switch-to-buffer buf)
-         (make-variable-buffer-local 'mail-header-separator)
-         (setq mail-header-separator separator)
-         (switch-to-buffer the-buf)
-         (goto-char (point-min))
-         (re-search-forward "^$" nil t)
-         (while (< i total)
-           (setq buf (get-buffer "*tmp-send*"))
-           (setq data (buffer-substring
-                       (point)
-                       (progn
-                         (goto-line l)
-                         (point))
-                       ))
-           (switch-to-buffer buf)
-           (insert header)
-           (insert
-            (format "Subject: %s (%d/%d)\n" subject (+ i 1) total))
-           (insert
-            (format "Mime-Version: 1.0 (split by tm-edit %s)\n"
-                    tm-edit/version))
-           (insert
-            (format
-             "Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n"
-             id (+ i 1) total separator))
-           (if (eq i 0)
-               (insert orig-header))
-           (insert data)
-           (save-excursion
-             (call-interactively command))
-           (erase-buffer)
-           (switch-to-buffer the-buf)
-           (setq l (+ l tm-edit/message-max-length))
-           (setq i (+ i 1))
-           )
-         )
-       (let ((hook
-              (cdr (assq major-mode tm-edit/message-after-send-hook-alist))))
-         (run-hooks 'hook))
-       (set-buffer-modified-p nil)
-       (cond ((y-or-n-p "Kill draft buffer? ")
-              (kill-buffer (current-buffer))
-              (if config
-                  (set-window-configuration config))))
-       (message "")
-       ))))
+             (goto-char (point-min))
+             (mime-editor/insert-partial-header header subject
+                                            id mime-editor/partial-number total
+                                            separator)
+             (message (format "Sending %d/%d..."
+                              mime-editor/partial-number total))
+             ))))))
 
 
 ;;; @ preview message
 ;;;
 
 
 
 ;;; @ preview message
 ;;;
 
-(defun tm-edit/preview-message ()
+(defun mime-editor/preview-message ()
   "preview editing MIME message. [tm-edit.el]"
   (interactive)
   (let* ((str (buffer-string))
   "preview editing MIME message. [tm-edit.el]"
   (interactive)
   (let* ((str (buffer-string))
@@ -2141,8 +2035,8 @@ a recording host instead of local host."
     (make-local-variable 'mime/editing-buffer)
     (setq mime/editing-buffer the-buf)
     
     (make-local-variable 'mime/editing-buffer)
     (setq mime/editing-buffer the-buf)
     
-    (run-hooks 'mime-translate-hook)
-    (tm-edit/translate-buffer)
+    (run-hooks 'mime-editor/translate-hook)
+    (mime-editor/translate-buffer)
     (goto-char (point-min))
     (if (re-search-forward
         (concat "^" (regexp-quote separator) "$"))
     (goto-char (point-min))
     (if (re-search-forward
         (concat "^" (regexp-quote separator) "$"))
@@ -2151,7 +2045,7 @@ a recording host instead of local host."
     (mime/viewer-mode)
     ))
 
     (mime/viewer-mode)
     ))
 
-(defun tm-edit/quitting-method ()
+(defun mime-editor/quitting-method ()
   (let ((temp mime::preview/article-buffer)
        buf)
     (mime-viewer/kill-buffer)
   (let ((temp mime::preview/article-buffer)
        buf)
     (mime-viewer/kill-buffer)
@@ -2163,7 +2057,7 @@ a recording host instead of local host."
 
 (set-alist 'mime-viewer/quitting-method-alist
           'mime/temporary-message-mode
 
 (set-alist 'mime-viewer/quitting-method-alist
           'mime/temporary-message-mode
-          (function tm-edit/quitting-method)
+          (function mime-editor/quitting-method)
           )
 
 
           )
 
 
@@ -2172,16 +2066,16 @@ a recording host instead of local host."
 ;; by "OKABE Yasuo <okabe@kudpc.kyoto-u.ac.jp>
 ;;      Mon, 10 Apr 1995 20:03:07 +0900
 
 ;; by "OKABE Yasuo <okabe@kudpc.kyoto-u.ac.jp>
 ;;      Mon, 10 Apr 1995 20:03:07 +0900
 
-(defvar tm-edit/draft-header-separator-alist
+(defvar mime-editor/draft-header-separator-alist
   '((news-reply-mode . mail-header-separator)
     (mh-letter-mode . mail-header-separator)
     ))
 
 (defvar mime::article/draft-header-separator nil)
 
   '((news-reply-mode . mail-header-separator)
     (mh-letter-mode . mail-header-separator)
     ))
 
 (defvar mime::article/draft-header-separator nil)
 
-(defun tm-edit/draft-preview ()
+(defun mime-editor/draft-preview ()
   (interactive)
   (interactive)
-  (let ((sep (assoc-value major-mode tm-edit/draft-header-separator-alist)))
+  (let ((sep (assoc-value major-mode mime-editor/draft-header-separator-alist)))
     (or (stringp sep) (setq sep (eval sep)))
     (make-variable-buffer-local 'mime::article/draft-header-separator)
     (goto-char (point-min))
     (or (stringp sep) (setq sep (eval sep)))
     (make-variable-buffer-local 'mime::article/draft-header-separator)
     (goto-char (point-min))
index 54c9b16..9fef7ea 100644 (file)
@@ -4,7 +4,7 @@
 ;;;
 ;;; Author:   MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;;; Version:
 ;;;
 ;;; Author:   MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;;; Version:
-;;;    $Id: tm-rmail.el,v 7.4 1995/10/24 00:19:52 morioka Exp $
+;;;    $Id: tm-rmail.el,v 7.8 1995/10/30 05:52:36 morioka Exp $
 ;;; Keywords: mail, MIME, multimedia, multilingual, encoded-word
 ;;;
 ;;; This file is part of tm (Tools for MIME).
 ;;; Keywords: mail, MIME, multimedia, multilingual, encoded-word
 ;;;
 ;;; This file is part of tm (Tools for MIME).
 (autoload 'mime/Content-Type "tm-view" "parse Content-Type field.")
 (autoload 'mime/decode-message-header "tm-ew-d" "Decode MIME encoded-word." t)
 
 (autoload 'mime/Content-Type "tm-view" "parse Content-Type field.")
 (autoload 'mime/decode-message-header "tm-ew-d" "Decode MIME encoded-word." t)
 
+
+;;; @ variables
+;;;
+
+(defvar tm-rmail/decode-all nil)
+
+
+;;; @ message filter
+;;;
+
 (setq rmail-message-filter
       (function
        (lambda ()
 (setq rmail-message-filter
       (function
        (lambda ()
           (set-buffer-modified-p mf)
           ))))
 
           (set-buffer-modified-p mf)
           ))))
 
+
+;;; @ MIME preview
+;;;
+
 (defun tm-rmail/show-all-header-p ()
   (save-restriction
     (narrow-to-region (point-min)
 (defun tm-rmail/show-all-header-p ()
   (save-restriction
     (narrow-to-region (point-min)
     (re-search-forward rmail-ignored-headers nil t)
     ))
 
     (re-search-forward rmail-ignored-headers nil t)
     ))
 
-(defun tm-rmail/view-message ()
+(defun tm-rmail/preview-message ()
   (interactive)
   (interactive)
+  (setq tm-rmail/decode-all t)
   (let ((ret (rmail-widen-to-current-msgbeg
              (function
               (lambda ()
                 (cons (mime/Content-Type)
                       (mail-fetch-field "Content-Transfer-Encoding"))
                 )))))
   (let ((ret (rmail-widen-to-current-msgbeg
              (function
               (lambda ()
                 (cons (mime/Content-Type)
                       (mail-fetch-field "Content-Transfer-Encoding"))
                 )))))
-    (mime/viewer-mode nil (car ret)(cdr ret))
+    (mime/viewer-mode nil (car ret)(cdr ret) nil
+                     (format "*Preview-%s [%d/%d]*"
+                             (buffer-name)
+                             rmail-current-message rmail-total-messages))
+    ))
+
+(defun tm-rmail/preview-message-if-you-need ()
+  (if tm-rmail/decode-all
+      (tm-rmail/preview-message)
     ))
 
     ))
 
+(add-hook 'rmail-show-message-hook 'tm-rmail/preview-message-if-you-need)
+
+(define-key rmail-mode-map "v" (function tm-rmail/preview-message))
+
+(defun tm-rmail/setup ()
+  (local-set-key "v" (function
+                     (lambda ()
+                       (interactive)
+                       (pop-to-buffer rmail-buffer)
+                       (tm-rmail/preview-message)
+                       )))
+  )
+
+(add-hook 'rmail-summary-mode-hook 'tm-rmail/setup)
+
+
+;;; @ over-to-* and quitting methods
+;;;
+
 (defun tm-rmail/quitting-method-to-summary ()
   (mime-viewer/kill-buffer)
   (rmail-summary)
 (defun tm-rmail/quitting-method-to-summary ()
   (mime-viewer/kill-buffer)
   (rmail-summary)
   )
 
 (defun tm-rmail/quitting-method-to-article ()
   )
 
 (defun tm-rmail/quitting-method-to-article ()
+  (setq tm-rmail/decode-all nil)
   (mime-viewer/kill-buffer)
   )
 
 (defalias 'tm-rmail/quitting-method 'tm-rmail/quitting-method-to-article)
 
   (mime-viewer/kill-buffer)
   )
 
 (defalias 'tm-rmail/quitting-method 'tm-rmail/quitting-method-to-article)
 
-(define-key rmail-mode-map "v" (function tm-rmail/view-message))
-
-(add-hook 'rmail-summary-mode-hook
-         (function
-          (lambda ()
-            (local-set-key "v"
-                           (function
-                            (lambda ()
-                              (interactive)
-                              (pop-to-buffer rmail-buffer)
-                              (tm-rmail/view-message)
-                              )))
-            )))
-
-(call-after-loaded 'tm-view
-                  (function
-                   (lambda ()
-                     (set-alist 'mime-viewer/quitting-method-alist
-                                'rmail-mode
-                                (function tm-rmail/quitting-method))
-                     )))
+
+(defun tm-rmail/over-to-previous-method ()
+  (let (tm-rmail/decode-all)
+    (mime-viewer/quit)
+    )
+  (if (not (eq (rmail-next-undeleted-message -1) t))
+      (tm-rmail/preview-message)
+    )
+  )
+
+(defun tm-rmail/over-to-next-method ()
+  (let (tm-rmail/decode-all)
+    (mime-viewer/quit)
+    )
+  (if (not (eq (rmail-next-undeleted-message 1) t))
+      (tm-rmail/preview-message)
+    )
+  )
+
+(call-after-loaded
+ 'tm-view
+ (function
+  (lambda ()
+    (set-alist 'mime-viewer/quitting-method-alist
+              'rmail-mode
+              (function tm-rmail/quitting-method))
+    
+    (set-alist 'mime-viewer/over-to-previous-method-alist
+              'rmail-mode
+              (function tm-rmail/over-to-previous-method))
+    
+    (set-alist 'mime-viewer/over-to-next-method-alist
+              'rmail-mode
+              (function tm-rmail/over-to-next-method))
+    )))
 
 
 ;;; @ for tm-partial
 
 
 ;;; @ for tm-partial
     )))
 
 
     )))
 
 
+;;; @ for tm-edit
+;;;
+
+(call-after-loaded
+ 'tm-edit
+ (function
+  (lambda ()
+    
+(defun tm-rmail/forward ()
+  "\
+Forward current message in message/rfc822 content-type message
+from rmail. The message will be appended if being composed."
+  (interactive)
+  ;;>> this gets set even if we abort. Can't do anything about it, though.
+  (rmail-set-attribute "forwarded" t)
+  (let ((initialized nil)
+       (beginning nil)
+       (forwarding-buffer (current-buffer))
+       (subject (concat "["
+                        (mail-strip-quoted-names
+                         (mail-fetch-field "From"))
+                        ": " (or (mail-fetch-field "Subject") "") "]")))
+    ;; If only one window, use it for the mail buffer.
+    ;; Otherwise, use another window for the mail buffer
+    ;; so that the Rmail buffer remains visible
+    ;; and sending the mail will get back to it.
+    (setq initialized
+         (if (one-window-p t)
+             (mail nil nil subject)
+           (mail-other-window nil nil subject)))
+    (save-excursion
+      (goto-char (point-max))
+      (forward-line 1)
+      (setq beginning (point))
+      (tm-edit/insert-tag "message" "rfc822")
+      (insert-buffer forwarding-buffer))
+    (if (not initialized)
+       (goto-char beginning))
+    ))
+
+(substitute-key-definition 'rmail-forward
+                          'tm-rmail/forward
+                          rmail-mode-map)
+
+(defun tm-rmail/forward-from-gnus ()
+  "\
+Forward current article in message/rfc822 content-type message from
+GNUS. The message will be appended if being composed."
+  (let ((initialized nil)
+       (beginning nil)
+       (forwarding-buffer (current-buffer))
+       (subject
+        (concat "[" gnus-newsgroup-name "] "
+                ;;(mail-strip-quoted-names (gnus-fetch-field "From")) ": "
+                (or (gnus-fetch-field "Subject") ""))))
+    ;; If only one window, use it for the mail buffer.
+    ;; Otherwise, use another window for the mail buffer
+    ;; so that the Rmail buffer remains visible
+    ;; and sending the mail will get back to it.
+    (setq initialized
+         (if (one-window-p t)
+             (mail nil nil subject)
+           (mail-other-window nil nil subject)))
+    (save-excursion
+      (goto-char (point-max))
+      (setq beginning (point))
+      (mime-editor/insert-tag "message" "rfc822")
+      (insert-buffer forwarding-buffer)
+      ;; You have a chance to arrange the message.
+      (run-hooks 'gnus-mail-forward-hook)
+      )
+    (if (not initialized)
+       (goto-char beginning))
+    ))
+
+;; (setq gnus-mail-forward-method 'mime-forward-from-gnus-using-mail)
+
+)))
+
+
 ;;; @ end
 ;;;
 
 ;;; @ end
 ;;;
 
index 88dd0c6..7c88bd7 100644 (file)
@@ -25,7 +25,7 @@
 ;;;
 
 (defconst mime-viewer/RCS-ID
 ;;;
 
 (defconst mime-viewer/RCS-ID
-  "$Id: tm-view.el,v 7.20 1995/10/24 00:21:02 morioka Exp $")
+  "$Id: tm-view.el,v 7.21 1995/10/30 05:57:27 morioka Exp $")
 
 (defconst mime-viewer/version (get-version-string mime-viewer/RCS-ID))
 (defconst mime/viewer-version mime-viewer/version)
 
 (defconst mime-viewer/version (get-version-string mime-viewer/RCS-ID))
 (defconst mime/viewer-version mime-viewer/version)
 ;;; @@ quitting method
 ;;;
 
 ;;; @@ quitting method
 ;;;
 
+(defun mime-viewer/quitting-method-for-mime/show-message-mode ()
+  (set-window-configuration mime/show-mode-old-window-configuration)
+  (let ((mother mime/mother-buffer))
+    (kill-buffer
+     (mime::preview-content-info/buffer (car mime::preview/content-list)))
+    (mime-viewer/kill-buffer)
+    (pop-to-buffer mother)
+    (goto-char (point-min))
+    (mime-viewer/up-content)
+    ))
+
 (defvar mime-viewer/quitting-method-alist
   '((mime/show-message-mode
 (defvar mime-viewer/quitting-method-alist
   '((mime/show-message-mode
-     . (lambda ()
-        (set-window-configuration
-         mime/show-mode-old-window-configuration)
-        (let ((mother mime/mother-buffer))
-          (kill-buffer
-           (mime::preview-content-info/buffer
-            (car mime::preview/content-list)))
-          (mime-viewer/kill-buffer)
-          (pop-to-buffer mother)
-          (goto-char (point-min))
-          (mime-viewer/up-content)
-          )))
-    ))
+     . mime-viewer/quitting-method-for-mime/show-message-mode)))
+
+(defvar mime-viewer/over-to-previous-method-alist nil)
+(defvar mime-viewer/over-to-next-method-alist nil)
 
 
 ;;; @@ X-Face
 
 
 ;;; @@ X-Face
@@ -823,7 +825,13 @@ listed in key order:
            (throw 'tag (goto-char beg))
          )
        (setq i (- i 1))
            (throw 'tag (goto-char beg))
          )
        (setq i (- i 1))
-       ))
+       )
+      (let ((f (assq mime::preview/original-major-mode
+                    mime-viewer/over-to-previous-method-alist)))
+       (if f
+           (funcall (cdr f))
+         ))
+      )
     ))
 
 (defun mime-viewer/next-content ()
     ))
 
 (defun mime-viewer/next-content ()
@@ -838,7 +846,13 @@ listed in key order:
            (throw 'tag (goto-char beg))
          )
        (setq pcl (cdr pcl))
            (throw 'tag (goto-char beg))
          )
        (setq pcl (cdr pcl))
-       ))
+       )
+      (let ((f (assq mime::preview/original-major-mode
+                    mime-viewer/over-to-next-method-alist)))
+       (if f
+           (funcall (cdr f))
+         ))
+      )
     ))
 
 (defun mime-viewer/scroll-up-content (&optional h)
     ))
 
 (defun mime-viewer/scroll-up-content (&optional h)
@@ -912,7 +926,7 @@ listed in key order:
       )
   (let ((r (progn
             (switch-to-buffer buf)
       )
   (let ((r (progn
             (switch-to-buffer buf)
-            (assoc major-mode mime-viewer/quitting-method-alist)
+            (assq major-mode mime-viewer/quitting-method-alist)
             )))
     (if r
        (progn
             )))
     (if r
        (progn
index 0c2479a..f539621 100644 (file)
--- a/tm-vm.el
+++ b/tm-vm.el
@@ -22,7 +22,7 @@
 (require 'vm)
 
 (defconst tm-vm/RCS-ID
 (require 'vm)
 
 (defconst tm-vm/RCS-ID
-  "$Id: tm-vm.el,v 7.2 1995/10/22 13:17:12 morioka Exp $")
+  "$Id: tm-vm.el,v 7.3 1995/10/28 06:00:09 morioka Exp $")
 (defconst tm-vm/version (get-version-string tm-vm/RCS-ID))
 
 (define-key vm-mode-map "Z" 'tm-vm/view-message)
 (defconst tm-vm/version (get-version-string tm-vm/RCS-ID))
 
 (define-key vm-mode-map "Z" 'tm-vm/view-message)
@@ -160,6 +160,18 @@ all marked messages are affected, other messages are ignored."
     )))
 
 
     )))
 
 
+;;; @ for tm-edit
+;;;
+
+(call-after-loaded
+ 'mime-setup
+ (function
+  (lambda ()
+    (remove-hook 'mail-mode-hook 'mime/editor-mode)
+    (add-hook 'vm-mail-mode-hook 'mime/editor-mode)
+    )))
+
+
 ;;; @ end
 ;;;
 
 ;;; @ end
 ;;;