(message-reply): Take an optional switch-buffer parameter so that Gnus window confs...
[gnus] / lisp / gnus-msg.el
index 891718e..b199dcc 100644 (file)
@@ -1,7 +1,6 @@
 ;;; gnus-msg.el --- mail and post interface for Gnus
 
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;;   2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011  Free Software Foundation, Inc.
 
 ;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
 ;;     Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -55,7 +54,7 @@ method to use when posting."
                 (sexp :tag "Methods" ,gnus-select-method)))
 
 (defcustom gnus-outgoing-message-group nil
-  "*All outgoing messages will be put in this group.
+  "All outgoing messages will be put in this group.
 If you want to store all your outgoing mail and articles in the group
 \"nnml:archive\", you set this variable to that value.  This variable
 can also be a list of group names.
@@ -70,6 +69,8 @@ of names)."
                 (string :tag "Group")
                 (repeat :tag "List of groups" (string :tag "Group"))))
 
+(make-obsolete-variable 'gnus-outgoing-message-group 'gnus-message-archive-group "24.1")
+
 (defcustom gnus-mailing-list-groups nil
   "*If non-nil a regexp matching groups that are really mailing lists.
 This is useful when you're reading a mailing list that has been
@@ -241,10 +242,10 @@ See also the `mml-default-sign-method' variable."
   :group 'gnus-message
   :type 'boolean)
 
-(defcustom gnus-message-replyencrypt
-  nil
+(defcustom gnus-message-replyencrypt t
   "Automatically encrypt replies to encrypted messages.
 See also the `mml-default-encrypt-method' variable."
+  :version "24.1"
   :group 'gnus-message
   :type 'boolean)
 
@@ -397,7 +398,6 @@ Thank you for your help in stamping out bugs.
           (message-mode-hook (copy-sequence message-mode-hook)))
        (setq mml-buffer-list nil)
        (add-hook 'message-header-setup-hook 'gnus-inews-insert-gcc)
-       (add-hook 'message-header-setup-hook 'gnus-inews-insert-archive-gcc)
        ;; message-newsreader and message-mailer were formerly set in
        ;; gnus-inews-add-send-actions, but this is too late when
        ;; message-generate-headers-first is used. --ansel
@@ -420,7 +420,7 @@ Thank you for your help in stamping out bugs.
                     ;; There may be an old " *gnus article copy*" buffer.
                     (let (gnus-article-copy)
                       (gnus-configure-posting-styles ,group)))))
-       (gnus-pull ',(intern gnus-draft-meta-information-header)
+       (gnus-alist-pull ',(intern gnus-draft-meta-information-header)
                  message-required-headers)
        (when (and ,group
                  (not (string= ,group "")))
@@ -475,7 +475,7 @@ Thank you for your help in stamping out bugs.
 
 ;;;###autoload
 (defun gnus-msg-mail (&optional to subject other-headers continue
-                               switch-action yank-action send-actions)
+                     switch-action yank-action send-actions return-action)
   "Start editing a mail message to be sent.
 Like `message-mail', but with Gnus paraphernalia, particularly the
 Gcc: header for archiving purposes."
@@ -484,7 +484,7 @@ Gcc: header for archiving purposes."
        mail-buf)
     (gnus-setup-message 'message
       (message-mail to subject other-headers continue
-                   nil yank-action send-actions))
+                   nil yank-action send-actions return-action))
     (when switch-action
       (setq mail-buf (current-buffer))
       (switch-to-buffer buf)
@@ -826,7 +826,6 @@ header line with the old Message-ID."
               (gnus-summary-mark-as-read ,article gnus-canceled-mark)))))
        message-send-actions)
       ;; Add Gcc header.
-      (gnus-inews-insert-archive-gcc)
       (gnus-inews-insert-gcc))))
 
 \f
@@ -1082,14 +1081,14 @@ If VERY-WIDE, make a very wide reply."
              (gnus-summary-work-articles 1))))
   ;; Allow user to require confirmation before replying by mail to the
   ;; author of a news article (or mail message).
-  (when (or
-           (not (or (gnus-news-group-p gnus-newsgroup-name)
+  (when (or (not (or (gnus-news-group-p gnus-newsgroup-name)
                     gnus-confirm-treat-mail-like-news))
            (not (cond ((stringp gnus-confirm-mail-reply-to-news)
                        (string-match gnus-confirm-mail-reply-to-news
                                      gnus-newsgroup-name))
                       ((functionp gnus-confirm-mail-reply-to-news)
-                       (funcall gnus-confirm-mail-reply-to-news gnus-newsgroup-name))
+                       (funcall gnus-confirm-mail-reply-to-news
+                                gnus-newsgroup-name))
                       (t gnus-confirm-mail-reply-to-news)))
            (if (or wide very-wide)
                t ;; Ignore gnus-confirm-mail-reply-to-news for wide and very
@@ -1124,7 +1123,7 @@ If VERY-WIDE, make a very wide reply."
            (insert headers))
          (goto-char (point-max)))
        (mml-quote-region (point) (point-max))
-       (message-reply nil wide)
+       (message-reply nil wide 'switch-to-buffer)
        (when yank
          (gnus-inews-yank-articles yank))
        (gnus-summary-handle-replysign)))))
@@ -1294,7 +1293,6 @@ composing a new message."
        (goto-char (point-max))
        (insert mail-header-separator)
        ;; Add Gcc header.
-       (gnus-inews-insert-archive-gcc)
        (gnus-inews-insert-gcc)
        (goto-char (point-min))
        (when (re-search-forward "^To:\\|^Newsgroups:" nil 'move)
@@ -1307,24 +1305,6 @@ See `gnus-summary-mail-forward' for ARG."
   (interactive "P")
   (gnus-summary-mail-forward arg t))
 
-(defvar gnus-nastygram-message
-  "The following article was inappropriately posted to %s.\n\n"
-  "Format string to insert in nastygrams.
-The current group name will be inserted at \"%s\".")
-
-(defun gnus-summary-mail-nastygram (n)
-  "Send a nastygram to the author of the current article."
-  (interactive "P")
-  (when (or gnus-expert-user
-           (gnus-y-or-n-p
-            "Really send a nastygram to the author of the current article? "))
-    (let ((group gnus-newsgroup-name))
-      (gnus-summary-reply-with-original n)
-      (set-buffer gnus-message-buffer)
-      (message-goto-body)
-      (insert (format gnus-nastygram-message group))
-      (message-send-and-exit))))
-
 (defun gnus-summary-mail-crosspost-complaint (n)
   "Send a complaint about crossposting to the current article(s)."
   (interactive "P")
@@ -1580,7 +1560,6 @@ this is a reply."
     (gnus-setup-message 'compose-bounce
       (message-bounce)
       ;; Add Gcc header.
-      (gnus-inews-insert-archive-gcc)
       (gnus-inews-insert-gcc)
       ;; If there are references, we fetch the article we answered to.
       (when parent
@@ -1628,7 +1607,7 @@ this is a reply."
            (unless (gnus-check-server method)
              (error "Can't open server %s" (if (stringp method) method
                                              (car method))))
-           (unless (gnus-request-group group nil method)
+           (unless (gnus-request-group group t method)
              (gnus-request-create-group group method))
            (setq mml-externalize-attachments
                  (if (stringp gnus-gcc-externalize-attachments)
@@ -1694,44 +1673,13 @@ this is a reply."
                (gnus-group-mark-article-read group (cdr group-art)))
              (kill-buffer (current-buffer)))))))))
 
-(defun gnus-inews-insert-gcc ()
-  "Insert Gcc headers based on `gnus-outgoing-message-group'."
-  (save-excursion
-    (save-restriction
-      (message-narrow-to-headers)
-      (let* ((group gnus-outgoing-message-group)
-            (gcc (cond
-                  ((functionp group)
-                   (funcall group))
-                  ((or (stringp group) (listp group))
-                   group))))
-       (when gcc
-         (insert "Gcc: "
-                 (if (stringp gcc)
-                     (if (string-match " " gcc)
-                         (concat "\"" gcc "\"")
-                       gcc)
-                   (mapconcat (lambda (group)
-                                (if (string-match " " group)
-                                    (concat "\"" group "\"")
-                                  group))
-                              gcc " "))
-                 "\n"))))))
-
-(defun gnus-inews-insert-archive-gcc (&optional group)
+(defun gnus-inews-insert-gcc (&optional group)
   "Insert the Gcc to say where the article is to be archived."
-  (setq group (cond (group
-                    (gnus-group-decoded-name group))
-                   (gnus-newsgroup-name
-                    (gnus-group-decoded-name gnus-newsgroup-name))
-                   (t
-                    "")))
-  (let* ((var gnus-message-archive-group)
+  (let* ((group (or group gnus-newsgroup-name))
+         (group (when group (gnus-group-decoded-name group)))
+         (var (or gnus-outgoing-message-group gnus-message-archive-group))
         (gcc-self-val
-         (and gnus-newsgroup-name
-              (not (equal gnus-newsgroup-name ""))
-              (gnus-group-find-parameter
-               gnus-newsgroup-name 'gcc-self)))
+         (and group (gnus-group-find-parameter group 'gcc-self)))
         result
         (groups
          (cond
@@ -1891,7 +1839,11 @@ this is a reply."
            (setq v
                  (cond
                   ((stringp value)
-                   value)
+                   (if (and (stringp match)
+                            (gnus-string-match-p "\\\\[&[:digit:]]" value)
+                            (match-beginning 1))
+                       (gnus-match-substitute-replacement value nil nil group)
+                     value))
                   ((or (symbolp value)
                        (functionp value))
                    (cond ((functionp value)