* nnmail.el (nnmail-cache-insert): make sure that the
[gnus] / lisp / message.el
index 033e301..b1194fd 100644 (file)
@@ -49,7 +49,8 @@
 (eval-and-compile
   (autoload 'sha1 "sha1-el")
   (autoload 'gnus-find-method-for-group "gnus")
-  (autoload 'nnvirtual-find-group-art "nnvirtual"))
+  (autoload 'nnvirtual-find-group-art "nnvirtual")
+  (autoload 'gnus-group-decoded-name "gnus-group"))
 
 (defgroup message '((user-mail-address custom-variable)
                    (user-full-name custom-variable))
@@ -4642,7 +4643,8 @@ give as trustworthy answer as possible."
         (user-domain
          (if (and user-mail
                   (string-match "@\\(.*\\)\\'" user-mail))
-             (match-string 1 user-mail))))
+             (match-string 1 user-mail)))
+        (case-fold-search t))
     (cond
      ((and message-user-fqdn
           (stringp message-user-fqdn)
@@ -5910,37 +5912,40 @@ Previous forwarders, replyers, etc. may add it."
 (defvar message-forward-decoded-p nil
   "Non-nil means the original message is decoded.")
 
-(defun message-forward-subject-author-subject (subject)
+(defun message-forward-subject-name-subject (subject)
   "Generate a SUBJECT for a forwarded message.
 The form is: [Source] Subject, where if the original message was mail,
-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 "newsgroups")
-                    (message-fetch-field "from")
-                    "(nowhere)")))
+Source is the name of the sender, and if the original message was
+news, Source is the list of newsgroups is was posted to."
+  (let* ((group (message-fetch-field "newsgroups"))
+        (from (message-fetch-field "from"))
+        (prefix
+         (if group
+             (gnus-group-decoded-name group)
+           (or (and from (cdr (mail-header-parse-address from)))
+               "(nowhere)"))))
+    (concat "["
            (if message-forward-decoded-p
                prefix
-             (mail-decode-encoded-word-string prefix)))
-         "] " subject))
+             (mail-decode-encoded-word-string prefix))
+           "] " subject)))
 
-(defun message-forward-subject-name-subject (subject)
+(defun message-forward-subject-author-subject (subject)
   "Generate a SUBJECT for a forwarded message.
 The form is: [Source] Subject, where if the original message was mail,
-Source is the name of 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 "newsgroups")
-                    (let ((from (message-fetch-field "from")))
-                      (and from
-                           (cdr (mail-header-parse-address from))))
-                    "(nowhere)")))
+Source is the sender, and if the original message was news, Source is
+the list of newsgroups is was posted to."
+  (let* ((group (message-fetch-field "newsgroups"))
+        (prefix
+         (if group
+             (gnus-group-decoded-name group)
+           (or (message-fetch-field "from")
+               "(nowhere)"))))
+    (concat "["
            (if message-forward-decoded-p
                prefix
-             (mail-decode-encoded-word-string prefix)))
-         "] " subject))
+             (mail-decode-encoded-word-string prefix))
+           "] " subject)))
 
 (defun message-forward-subject-fwd (subject)
   "Generate a SUBJECT for a forwarded message.
@@ -6002,16 +6007,29 @@ Optional DIGEST will use digest to forward."
   (insert
    "\n-------------------- Start of forwarded message --------------------\n")
   (let ((b (point)) e)
-    (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)))
+    (insert
+     (with-temp-buffer
+       (mm-disable-multibyte)
+       (insert
+       (with-current-buffer forward-buffer
+         (mm-with-unibyte-current-buffer (buffer-string))))
+       (mm-enable-multibyte)
+       (mime-to-mml)
+       (goto-char (point-min))
+       (when (looking-at "From ")
+        (replace-match "X-From-Line: "))
+       (buffer-string)))
     (setq e (point))
     (insert
-     "\n-------------------- End of forwarded message --------------------\n")))
+     "\n-------------------- End of forwarded message --------------------\n")
+    (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)))))
 
 (defun message-forward-make-body-mime (forward-buffer)
   (insert "\n\n<#part type=message/rfc822 disposition=inline raw=t>\n")