X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fgnus-msg.el;h=8d16a426970a91e32937b4349e01382374a74e98;hp=5e163e499fd6d6f196720ea62a14684c0571ad6a;hb=4b33d9287652b0d133fd6fe59971da5cece40ef8;hpb=264e5aaaaaff94b53f308363fd4402be837a3f15 diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index 5e163e499..8d16a4269 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -313,6 +313,22 @@ If nil, the address field will always be empty after invoking :group 'gnus-message :type 'boolean) +(defcustom gnus-gcc-pre-body-encode-hook nil + "A hook called before encoding the body of the Gcc copy of a message. +The current buffer (when the hook is run) contains the message +including the message header. Changes made to the message will +only affect the Gcc copy, but not the original message." + :group 'gnus-message + :type 'hook) + +(defcustom gnus-gcc-post-body-encode-hook nil + "A hook called after encoding the body of the Gcc copy of a message. +The current buffer (when the hook is run) contains the message +including the message header. Changes made to the message will +only affect the Gcc copy, but not the original message." + :group 'gnus-message + :type 'hook) + (autoload 'gnus-message-citation-mode "gnus-cite" nil t) ;;; Internal variables. @@ -825,9 +841,21 @@ post using the current select method." (interactive (gnus-interactive "P\ny")) (let ((message-post-method `(lambda (arg) - (gnus-post-method (eq ',symp 'a) ,gnus-newsgroup-name)))) + (gnus-post-method (eq ',symp 'a) ,gnus-newsgroup-name))) + (user-mail-address user-mail-address)) (dolist (article (gnus-summary-work-articles n)) (when (gnus-summary-select-article t nil nil article) + ;; Pretend that we're doing a followup so that we can see what + ;; the From header would have ended up being. + (save-window-excursion + (save-excursion + (gnus-summary-followup nil) + (let ((from (message-fetch-field "from"))) + (when from + (setq user-mail-address + (car (mail-header-parse-address from))))) + (kill-buffer (current-buffer)))) + ;; Now cancel the article using the From header we got. (when (gnus-eval-in-buffer-window gnus-original-article-buffer (message-cancel-news)) (gnus-summary-mark-as-read article gnus-canceled-mark) @@ -1297,26 +1325,27 @@ For the \"inline\" alternatives, also see the variable group))) (message-unquote-tokens (message-tokenize-header (mail-fetch-field "gcc" nil t) - " ,"))))) + " ,")))) + (self (with-current-buffer gnus-summary-buffer + gnus-gcc-self-resent-messages))) (message-remove-header "gcc") (when gcc (goto-char (point-max)) - (cond ((eq gnus-gcc-self-resent-messages 'none)) - ((eq gnus-gcc-self-resent-messages t) + (cond ((eq self 'none)) + ((eq self t) (insert "Gcc: \"" gnus-newsgroup-name "\"\n")) - ((stringp gnus-gcc-self-resent-messages) + ((stringp self) (insert "Gcc: " (mm-encode-coding-string - (if (string-match " " gnus-gcc-self-resent-messages) - (concat "\"" gnus-gcc-self-resent-messages "\"") - gnus-gcc-self-resent-messages) - (gnus-group-name-charset - (gnus-inews-group-method gnus-gcc-self-resent-messages) - gnus-gcc-self-resent-messages)) + (if (string-match " " self) + (concat "\"" self "\"") + self) + (gnus-group-name-charset (gnus-inews-group-method self) + self)) "\n")) - ((null gnus-gcc-self-resent-messages) + ((null self) (insert "Gcc: " (mapconcat 'identity gcc ", ") "\n")) - ((eq gnus-gcc-self-resent-messages 'no-gcc-self) + ((eq self 'no-gcc-self) (when (setq gcc (delete gnus-newsgroup-name (delete (concat "\"" gnus-newsgroup-name "\"") @@ -1341,9 +1370,12 @@ For the \"inline\" alternatives, also see the variable ;; `gnus-summary-resend-message-insert-gcc' must run last. (add-hook 'message-header-setup-hook 'gnus-summary-resend-message-insert-gcc t) - (add-hook 'message-sent-hook (if gnus-agent - 'gnus-agent-possibly-do-gcc - 'gnus-inews-do-gcc)) + (add-hook 'message-sent-hook + `(lambda () + (let ((rfc2047-encode-encoded-words nil)) + ,(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 @@ -1642,7 +1674,9 @@ this is a reply." (nnheader-set-temp-buffer " *acc*") (setq message-options (with-current-buffer cur message-options)) (insert-buffer-substring cur) + (run-hooks 'gnus-gcc-pre-body-encode-hook) (message-encode-message-body) + (run-hooks 'gnus-gcc-post-body-encode-hook) (save-restriction (message-narrow-to-headers) (let* ((mail-parse-charset message-default-charset) @@ -1736,11 +1770,13 @@ this is a reply." (not (setq result (cond - ((stringp (caar var)) + ((and group + (stringp (caar var))) ;; Regexp. (when (string-match (caar var) group) (cdar var))) - ((functionp (car var)) + ((and group + (functionp (car var))) ;; Function. (funcall (car var) group)) (t