2001-10-30 04:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
authorShengHuo ZHU <zsh@cs.rochester.edu>
Tue, 30 Oct 2001 09:25:49 +0000 (09:25 +0000)
committerShengHuo ZHU <zsh@cs.rochester.edu>
Tue, 30 Oct 2001 09:25:49 +0000 (09:25 +0000)
* gnus-art.el (article-decode-group-name): Use nnmail-fetch-field
instead.

* message.el (message-forward-subject-author-subject): Don't use
message-news-p, which widens the buffer.
(message-forward-make-body): New function.
(message-forward): Use it.
(message-insinuate-rmail): New.
(message-forward-rmail-make-body): New.

lisp/ChangeLog
lisp/gnus-art.el
lisp/lpath.el
lisp/message.el

index bd37ab1..85f19bb 100644 (file)
@@ -1,3 +1,15 @@
+2001-10-30 04:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-art.el (article-decode-group-name): Use nnmail-fetch-field
+       instead.
+
+       * message.el (message-forward-subject-author-subject): Don't use
+       message-news-p, which widens the buffer.
+       (message-forward-make-body): New function.
+       (message-forward): Use it.
+       (message-insinuate-rmail): New.
+       (message-forward-rmail-make-body): New.
+
 2001-10-30 02:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * mm-extern.el (mm-extern): Provide it.
index 160a553..f0a02ff 100644 (file)
@@ -1756,19 +1756,19 @@ If PROMPT (the prefix), prompt for a coding system to use."
     (when (and (or gnus-group-name-charset-method-alist
                   gnus-group-name-charset-group-alist)
               (gnus-buffer-live-p gnus-original-article-buffer))
-      (when (mail-fetch-field "Newsgroups")
+      (when (nnmail-fetch-field "Newsgroups")
        (nnheader-replace-header "Newsgroups"
                                 (gnus-decode-newsgroups
                                  (with-current-buffer
                                      gnus-original-article-buffer
-                                   (mail-fetch-field "Newsgroups"))
+                                   (nnmail-fetch-field "Newsgroups"))
                                  gnus-newsgroup-name method)))
-      (when (mail-fetch-field "Followup-To")
+      (when (nnmail-fetch-field "Followup-To")
        (nnheader-replace-header "Followup-To"
                                 (gnus-decode-newsgroups
                                  (with-current-buffer
                                      gnus-original-article-buffer
-                                   (mail-fetch-field "Followup-To"))
+                                   (nnmail-fetch-field "Followup-To"))
                                  gnus-newsgroup-name method))))))
 
 (defun article-de-quoted-unreadable (&optional force read-charset)
index b9acb4a..e4cd637 100644 (file)
@@ -28,6 +28,7 @@
               propertize make-mode-line-mouse2-map
               make-mode-line-mouse-map
               rmail-select-summary rmail-summary-exists rmail-update-summary
+              rmail-toggle-header
               sc-cite-regexp set-font-family set-font-size temp-directory
               string-as-multibyte
               tool-bar-add-item tool-bar-add-item-from-menu
@@ -50,6 +51,8 @@
              url-current-callback-func url-be-asynchronous
              url-current-callback-data url-working-buffer
              url-current-mime-headers w3-meta-charset-content-type-regexp
+             rmail-enable-mime-composing 
+             rmail-insert-mime-forwarded-message-function 
              w3-meta-content-type-charset-regexp))
 
 (if (featurep 'xemacs)
index c2b394d..18d54f6 100644 (file)
@@ -4535,8 +4535,8 @@ Source is the sender, and if the original message was news, Source is
 the list of newsgroups is was posted to."
   (concat "["
          (let ((prefix
-                (or (message-fetch-field
-                     (if (message-news-p) "newsgroups" "from"))
+                (or (message-fetch-field "newsgroups")
+                    (message-fetch-field "from")
                     "(nowhere)")))
            (if message-forward-decoded-p
                prefix
@@ -4579,6 +4579,7 @@ the message."
 (eval-when-compile
   (defvar gnus-article-decoded-p))
 
+
 ;;;###autoload
 (defun message-forward (&optional news digest)
   "Forward the current message via mail.
@@ -4590,35 +4591,38 @@ Optional DIGEST will use digest to forward."
          (if (local-variable-p 'gnus-article-decoded-p (current-buffer))
              gnus-article-decoded-p ;; In an article buffer.
            message-forward-decoded-p))
-        (subject (message-make-forward-subject))
-        art-beg)
+        (subject (message-make-forward-subject)))
     (if news
        (message-news nil subject)
       (message-mail nil subject))
-    ;; Put point where we want it before inserting the forwarded
-    ;; message.
-    (if message-forward-before-signature
-       (message-goto-body)
-      (goto-char (point-max)))
-    (if message-forward-as-mime
-       (if digest
-           (insert "\n<#multipart type=digest>\n")
-         (if message-forward-show-mml
-             (insert "\n\n<#mml type=message/rfc822 disposition=inline>\n")
-           (insert "\n\n<#part type=message/rfc822 disposition=inline raw=t>\n")))
-      (insert "\n-------------------- Start of forwarded message --------------------\n"))
-    (let ((b (point)) e)
+    (message-forward-make-body cur digest)))
+
+;;;###autoload
+(defun message-forward-make-body (forward-buffer &optional digest)
+  ;; Put point where we want it before inserting the forwarded
+  ;; message.
+  (if message-forward-before-signature
+      (message-goto-body)
+    (goto-char (point-max)))
+  (if message-forward-as-mime
       (if digest
-         (if message-forward-as-mime
-             (insert-buffer-substring cur)
-           (mml-insert-buffer cur))
-       (if (and message-forward-show-mml
-                (not message-forward-decoded-p))
-           (insert
-            (with-temp-buffer
-              (mm-disable-multibyte-mule4) ;; Must copy buffer in unibyte mode
+         (insert "\n<#multipart type=digest>\n")
+       (if message-forward-show-mml
+           (insert "\n\n<#mml type=message/rfc822 disposition=inline>\n")
+         (insert "\n\n<#part type=message/rfc822 disposition=inline raw=t>\n")))
+    (insert "\n-------------------- Start of forwarded message --------------------\n"))
+  (let ((b (point)) e)
+    (if digest
+       (if message-forward-as-mime
+           (insert-buffer-substring forward-buffer)
+         (mml-insert-buffer forward-buffer))
+      (if (and message-forward-show-mml
+              (not message-forward-decoded-p))
+         (insert
+          (with-temp-buffer
+            (mm-disable-multibyte-mule4) ;; Must copy buffer in unibyte mode
               (insert
-               (with-current-buffer cur
+               (with-current-buffer forward-buffer
                  (mm-string-as-unibyte (buffer-string))))
               (mm-enable-multibyte-mule4)
               (mime-to-mml)
@@ -4626,37 +4630,51 @@ Optional DIGEST will use digest to forward."
               (when (looking-at "From ")
                 (replace-match "X-From-Line: "))
               (buffer-string)))
-         (save-restriction
-           (narrow-to-region (point) (point))
-           (mml-insert-buffer cur)
-           (goto-char (point-min))
-           (when (looking-at "From ")
-             (replace-match "X-From-Line: "))
-           (goto-char (point-max)))))
-      (setq e (point))
-      (if message-forward-as-mime
-         (if digest
-             (insert "<#/multipart>\n")
-           (if message-forward-show-mml
-               (insert "<#/mml>\n")
-             (insert "<#/part>\n")))
-       (insert "\n-------------------- End of forwarded message --------------------\n"))
-      (if (and digest message-forward-as-mime)
-         (save-restriction
-           (narrow-to-region b e)
-           (goto-char b)
-           (narrow-to-region (point)
-                             (or (search-forward "\n\n" nil t) (point)))
-           (delete-region (point-min) (point-max)))
-       (when (and (not current-prefix-arg)
-                  message-forward-ignored-headers)
-         (save-restriction
-           (narrow-to-region b e)
-           (goto-char b)
-           (narrow-to-region (point)
-                             (or (search-forward "\n\n" nil t) (point)))
-           (message-remove-header message-forward-ignored-headers t)))))
-    (message-position-point)))
+       (save-restriction
+         (narrow-to-region (point) (point))
+         (mml-insert-buffer forward-buffer)
+         (goto-char (point-min))
+         (when (looking-at "From ")
+           (replace-match "X-From-Line: "))
+         (goto-char (point-max)))))
+    (setq e (point))
+    (if message-forward-as-mime
+       (if digest
+           (insert "<#/multipart>\n")
+         (if message-forward-show-mml
+             (insert "<#/mml>\n")
+           (insert "<#/part>\n")))
+      (insert "\n-------------------- End of forwarded message --------------------\n"))
+    (if (and digest message-forward-as-mime)
+       (save-restriction
+         (narrow-to-region b e)
+         (goto-char b)
+         (narrow-to-region (point)
+                           (or (search-forward "\n\n" nil t) (point)))
+         (delete-region (point-min) (point-max)))
+      (when (and (not current-prefix-arg)
+                message-forward-ignored-headers)
+       (save-restriction
+         (narrow-to-region b e)
+         (goto-char b)
+         (narrow-to-region (point)
+                           (or (search-forward "\n\n" nil t) (point)))
+         (message-remove-header message-forward-ignored-headers t)))))
+  (message-position-point))
+
+;;;###autoload
+(defun message-forward-rmail-make-body (forward-buffer)
+  (with-current-buffer forward-buffer
+    (rmail-toggle-header 0))
+  (message-forward-make-body forward-buffer))
+
+;;;###autoload
+(defun message-insinuate-rmail ()
+  "Let RMAIL uses message to forward."
+  (interactive)
+  (setq rmail-enable-mime-composing t)
+  (setq rmail-insert-mime-forwarded-message-function 
+       'message-forward-rmail-make-body))
 
 ;;;###autoload
 (defun message-resend (address)