[gnus git] branch master updated: m0-1-44-g5056ea6 =1= Make gnus-summary-resend-message do Gcc
Katsumi Yamaoka <[email protected]>
| Newsgroups | gmane.emacs.gnus.cvs |
|---|---|
| Message-ID | <[email protected]> |
via 5056ea6daee76116bc35aca791d25c1754005c97 (commit)
from 9d6224f58308ca07a5bfc3851e7c581d6d24e163 (commit)
- Log -----------------------------------------------------------------
commit 5056ea6daee76116bc35aca791d25c1754005c97
Author: Katsumi Yamaoka <[email protected]>
Date: Thu Feb 2 01:26:06 2012 +0000
Make gnus-summary-resend-message do Gcc
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 1088b44..7255fe9 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,14 @@
+2012-02-02 Katsumi Yamaoka <[email protected]>
+
+ * gnus-msg.el (gnus-gcc-self-resent-messages): New user option.
+ (gnus-summary-resend-message-insert-gcc): New function.
+ (gnus-summary-resend-message): Modify message-header-setup-hook and
+ message-sent-hook to make it work for Gcc.
+ (gnus-inews-do-gcc): Update the number of unread articles of groups
+ that messages are Gcc'd to.
+
+ * message.el (message-resend): Run message-sent-hook to do Gcc.
+
2012-02-01 Lars Ingebrigtsen <[email protected]>
* lpath.el: Fix an XEmacs compilation warning.
diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el
index c825c42..c12e4d9 100644
--- a/lisp/gnus-msg.el
+++ b/lisp/gnus-msg.el
@@ -163,6 +163,22 @@ if nil, attach files as normal parts."
(const all :tag "Any")
(string :tag "Regexp")))
+(defcustom gnus-gcc-self-resent-messages 'no-gcc-self
+ "Like `gcc-self' group parameter, only for unmodified resent messages.
+Applied to messages sent by `gnus-summary-resend-message'. Non-nil
+value of this variable takes precedence over any existing Gcc header.
+
+If this is `none', no Gcc copy will be made. If this is t, messages
+resent will be Gcc'd to the current group. If this is a string, it
+specifies a group to which resent messages will be Gcc'd. If this is
+nil, Gcc will be done according to existing Gcc header(s), if any.
+If this is `no-gcc-self', resent messages will be Gcc'd to groups that
+existing Gcc header specifies, except for the current group."
+ :version "24.2"
+ :group 'gnus-message
+ :type '(choice (const none) (const t) string (const nil)
+ (const no-gcc-self)))
+
(gnus-define-group-parameter
posting-charset-alist
:type list
@@ -1264,6 +1280,43 @@ For the \"inline\" alternatives, also see the variable
(set-buffer gnus-original-article-buffer)
(message-forward post)))))))
+(defun gnus-summary-resend-message-insert-gcc ()
+ "Insert Gcc header according to `gnus-gcc-self-resent-messages'."
+ (gnus-inews-insert-gcc)
+ (let ((gcc (mapcar
+ (lambda (group)
+ (mm-encode-coding-string
+ group
+ (gnus-group-name-charset (gnus-inews-group-method group)
+ group)))
+ (message-unquote-tokens
+ (message-tokenize-header (mail-fetch-field "gcc" nil t)
+ " ,")))))
+ (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)
+ (insert "Gcc: \"" gnus-newsgroup-name "\"\n"))
+ ((stringp gnus-gcc-self-resent-messages)
+ (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))
+ "\n"))
+ ((null gnus-gcc-self-resent-messages)
+ (insert "Gcc: " (mapconcat 'identity gcc ", ") "\n"))
+ ((eq gnus-gcc-self-resent-messages 'no-gcc-self)
+ (when (setq gcc (delete
+ gnus-newsgroup-name
+ (delete (concat "\"" gnus-newsgroup-name "\"")
+ gcc)))
+ (insert "Gcc: " (mapconcat 'identity gcc ", ") "\n")))))))
+
(defun gnus-summary-resend-message (address n)
"Resend the current article to ADDRESS."
(interactive
@@ -1277,12 +1330,20 @@ For the \"inline\" alternatives, also see the variable
(with-current-buffer gnus-original-article-buffer
(nnmail-fetch-field "to"))))
current-prefix-arg))
+ (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
+ 'gnus-summary-resend-message-insert-gcc)
+ (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))
+ (let ((gnus-gcc-externalize-attachments nil)
+ (message-inhibit-body-encoding t))
(message-resend address)))
- (gnus-summary-mark-article-as-forwarded article)))
+ (gnus-summary-mark-article-as-forwarded article))))
;; From: Matthieu Moy <[email protected]>
(defun gnus-summary-resend-message-edit ()
@@ -1624,12 +1685,16 @@ this is a reply."
(when (and group-art
;; FIXME: Should gcc-mark-as-read work when
;; Gnus is not running?
- (gnus-alive-p)
- (or gnus-gcc-mark-as-read
- (and
- (boundp 'gnus-inews-mark-gcc-as-read)
- (symbol-value 'gnus-inews-mark-gcc-as-read))))
- (gnus-group-mark-article-read group (cdr group-art)))
+ (gnus-alive-p))
+ (if (or gnus-gcc-mark-as-read
+ (and (boundp 'gnus-inews-mark-gcc-as-read)
+ (symbol-value 'gnus-inews-mark-gcc-as-read)))
+ (gnus-group-mark-article-read group (cdr group-art))
+ (with-current-buffer gnus-group-buffer
+ (let ((gnus-group-marked (list group))
+ (gnus-get-new-news-hook nil)
+ (inhibit-read-only t))
+ (gnus-group-get-new-news-this-group nil t)))))
(setq options message-options)
(with-current-buffer cur (setq message-options options))
(kill-buffer (current-buffer)))))))))
diff --git a/lisp/message.el b/lisp/message.el
index 5569363..acd546a 100644
--- a/lisp/message.el
+++ b/lisp/message.el
@@ -7586,7 +7586,7 @@ is for the internal use."
(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*"))
@@ -7599,6 +7599,8 @@ is for the internal use."
;; 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-*".
@@ -7640,6 +7642,10 @@ is for the internal use."
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)))
-----------------------------------------------------------------------
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we listed those
revisions in full, above.
Summary of changes:
lisp/ChangeLog | 11 +++++++
lisp/gnus-msg.el | 89 ++++++++++++++++++++++++++++++++++++++++++++++-------
lisp/message.el | 8 ++++-
3 files changed, 95 insertions(+), 13 deletions(-)
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnus Project".
The branch, master has been updated
hooks/post-receive
--
Gnus Project