--- gnus-msg.el~ 2006-02-08 05:42:05 +0000 +++ gnus-msg.el 2006-02-27 07:27:31 +0000 @@ -1084,31 +1084,60 @@ (car yank))) (gnus-article-reply (or article (gnus-summary-article-number))) (gnus-article-yanked-articles yank) - (headers "")) + headers) ;; Stripping headers should be specified with mail-yank-ignored-headers. (when yank (gnus-summary-goto-subject article)) (gnus-setup-message (if yank 'reply-yank 'reply) - (if (not very-wide) - (gnus-summary-select-article) - (dolist (article very-wide) - (gnus-summary-select-article nil nil nil article) - (save-excursion - (set-buffer (gnus-copy-article-buffer)) - (gnus-msg-treat-broken-reply-to) - (save-restriction - (message-narrow-to-head) - (setq headers (concat headers (buffer-string))))))) + (cond ((not very-wide) + (gnus-summary-select-article)) + (message-wide-reply-to-function + (dolist (article very-wide) + (gnus-summary-select-article nil nil nil article) + (save-excursion + (set-buffer (gnus-copy-article-buffer)) + (gnus-msg-treat-broken-reply-to) + (save-restriction + (message-narrow-to-head) + (setq headers (concat headers (buffer-string))))))) + (t ;; (and very-wide (not message-wide-reply-to-function)) + (let (header recipients) + (while very-wide + (gnus-summary-select-article nil nil nil (pop very-wide)) + (with-current-buffer (gnus-copy-article-buffer) + (setq headers (message-get-reply-headers t)) + (while headers + (if (setq header (assq (caar headers) recipients)) + (setcdr header (concat (cdr header) ", " + (cdar headers))) + (push (car headers) recipients)) + (setq headers (cdr headers))))) + ;; Remove duplicates. + (let ((message-use-mail-followup-to 'use) + (message-wide-reply-confirm-recipients nil)) + (mm-with-multibyte-buffer + (while recipients + (erase-buffer) + (insert "To: " (cdar recipients) "\n") + (push (cons (car (pop recipients)) + (mapconcat 'cdr + (message-get-reply-headers t) + ", ")) + headers))))))) (set-buffer (gnus-copy-article-buffer)) (gnus-msg-treat-broken-reply-to gnus-msg-force-broken-reply-to) (save-restriction (message-narrow-to-head) - (when very-wide + (when (stringp headers) (erase-buffer) (insert headers)) (goto-char (point-max))) (mml-quote-region (point) (point-max)) - (message-reply nil wide) + (let ((message-wide-reply-to-function + (if (consp headers) + `(lambda nil ',(nreverse headers)) + message-wide-reply-to-function))) + (message-reply nil wide)) (when yank (gnus-inews-yank-articles yank)) (gnus-summary-handle-replysign)))))