2011-11-25 Katsumi Yamaoka * gnus-msg.el (gnus-gcc-inhibit-gcc-self-when-resending): New option. (gnus-summary-resend-messag): Modify message-header-setup-hook and message-sent-hook to make it work for Gcc. * message.el (message-resend): Run message-sent-hook to do Gcc. --- gnus-msg.el~ 2011-09-11 22:00:39 +0000 +++ gnus-msg.el 2011-11-25 04:22:24 +0000 @@ -163,6 +163,14 @@ (const all :tag "Any") (string :tag "Regexp"))) +(defcustom gnus-gcc-inhibit-gcc-self-when-resending t + "If non-nil, don't do Gcc to the identical group when resending articles. +This variable is effective when resending articles with no modification +using `gnus-summary-resend-message'." + :version "24.2" + :group 'gnus-message + :type 'boolean) + (gnus-define-group-parameter posting-charset-alist :type list @@ -1277,12 +1285,30 @@ (with-current-buffer gnus-original-article-buffer (nnmail-fetch-field "to")))) current-prefix-arg)) - (dolist (article (gnus-summary-work-articles n)) - (gnus-summary-select-article nil nil nil article) - (with-current-buffer gnus-original-article-buffer - (let ((gnus-gcc-externalize-attachments nil)) - (message-resend address))) - (gnus-summary-mark-article-as-forwarded article))) + (let ((message-header-setup-hook (copy-sequence message-header-setup-hook)) + (message-sent-hook (copy-sequence message-sent-hook))) + (add-hook 'message-header-setup-hook + (lambda nil + (gnus-inews-insert-gcc) + (when gnus-gcc-inhibit-gcc-self-when-resending + (let ((gcc (mail-fetch-field "gcc" nil t))) + (when gcc + (message-remove-header "gcc") + (when (setq gcc (delete + gnus-newsgroup-name + (message-unquote-tokens + (message-tokenize-header gcc " ,")))) + (insert "Gcc: " + (mapconcat 'identity gcc ", ") "\n"))))))) + (add-hook 'message-sent-hook (if gnus-agent + 'gnus-agent-possibly-do-gcc + 'gnus-inews-do-gcc)) + (dolist (article (gnus-summary-work-articles n)) + (gnus-summary-select-article nil nil nil article) + (with-current-buffer gnus-original-article-buffer + (let ((gnus-gcc-externalize-attachments nil)) + (message-resend address))) + (gnus-summary-mark-article-as-forwarded article)))) ;; From: Matthieu Moy (defun gnus-summary-resend-message-edit () --- message.el~ 2011-11-20 22:02:20 +0000 +++ message.el 2011-11-25 04:22:24 +0000 @@ -7562,7 +7562,7 @@ (message "Resending message to %s..." address) (save-excursion (let ((cur (current-buffer)) - beg) + gcc beg) ;; We first set up a normal mail buffer. (unless (message-mail-user-agent) (set-buffer (get-buffer-create " *message resend*")) @@ -7575,6 +7575,8 @@ ;; Insert our usual headers. (message-generate-headers '(From Date To Message-ID)) (message-narrow-to-headers) + (when (setq gcc (mail-fetch-field "gcc" nil t)) + (message-remove-header "gcc")) ;; Remove X-Draft-From header etc. (message-remove-header message-ignored-mail-headers t) ;; Rename them all to "Resent-*". @@ -7616,6 +7618,10 @@ message-generate-hashcash rfc2047-encode-encoded-words) (message-send-mail)) + (when gcc + (message-goto-eoh) + (insert "Gcc: " gcc "\n")) + (run-hooks 'message-sent-hook) (kill-buffer (current-buffer))) (message "Resending message to %s...done" address)))