From ef86e3be364cbdee3ff5d83d2d37bb31c1a9ba6b Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Fri, 8 Dec 2023 09:39:58 -0800 Subject: [PATCH] Provide option to forward Gnus messages with all (most) headers * lisp/gnus/gnus-msg.el (gnus-summary-mail-forward): Accept symbolic prefix to let-bind message-forward-included-headers to nil, which will include most original message headers in the forwarded copy. (gnus-summary-post-forward): Corresponding arglist update. --- doc/misc/gnus.texi | 26 +++++++++++++++++--------- lisp/gnus/gnus-msg.el | 26 +++++++++++++++++--------- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index 586e4b94ba1..ead5954a96e 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -5868,15 +5868,23 @@ Summary Mail Commands @findex gnus-summary-mail-forward @c @icon{gnus-summary-mail-forward} Forward the current article to some other person -(@code{gnus-summary-mail-forward}). If no prefix is given, the message -is forwarded according to the value of (@code{message-forward-as-mime}) -and (@code{message-forward-show-mml}); if the prefix is 1, decode the -message and forward directly inline; if the prefix is 2, forward message -as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and -forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message -directly inline; otherwise, the message is forwarded as no prefix given -but use the flipped value of (@code{message-forward-as-mime}). By -default, the forwarded message is inlined into the mail. +(@code{gnus-summary-mail-forward}). If no prefix is given, the +message is forwarded according to the value of +(@code{message-forward-as-mime}) and +(@code{message-forward-show-mml}); if the prefix is 1, decode the +message and forward directly inline; if the prefix is 2, forward +message as an rfc822 @acronym{MIME} section; if the prefix is 3, +decode message and forward as an rfc822 @acronym{MIME} section; if the +prefix is 4, forward message directly inline; otherwise, the message +is forwarded as no prefix given but use the negated value of +(@code{message-forward-as-mime}). By default, the forwarded message +is inlined into the mail. + +Which headers from the original message are included in the forwarded +message is determined by options specific to @code{message-mode}, +@pxref{Forwarding,,, message}. In addition, this command can be given +the symbolic prefix @samp{a}, using @kbd{M-i a}, to include most original +headers. @item S m @itemx m diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el index b065ae34851..e503ccae00f 100644 --- a/lisp/gnus/gnus-msg.el +++ b/lisp/gnus/gnus-msg.el @@ -1209,7 +1209,7 @@ gnus-summary-very-wide-reply-with-original (gnus-summary-reply (gnus-summary-work-articles n) t (gnus-summary-work-articles n))) -(defun gnus-summary-mail-forward (&optional arg post) +(defun gnus-summary-mail-forward (&optional arg all-headers post) "Forward the current message(s) to another user. If process marks exist, forward all marked messages; if ARG is nil, see `message-forward-as-mime' and `message-forward-show-mml'; @@ -1217,17 +1217,25 @@ gnus-summary-mail-forward if ARG is 2, forward message as an rfc822 MIME section; if ARG is 3, decode message and forward as an rfc822 MIME section; if ARG is 4, forward message directly inline; -otherwise, use flipped `message-forward-as-mime'. +otherwise, use negated `message-forward-as-mime'. If POST, post instead of mail. -For the \"inline\" alternatives, also see the variable -`message-forward-ignored-headers'." - (interactive "P" gnus-summary-mode) +If symbolic prefix ALL-HEADERS is the symbol `a', include all +original headers in the forwarded message, except those matching +`message-forward-ignored-headers'. Otherwise, include headers +based on the options `message-forward-included-headers', +`message-forward-ignored-headers', and potentially +`message-forward-included-mime-headers'." + (interactive (gnus-interactive "P\ny") gnus-summary-mode) (if (cdr (gnus-summary-work-articles nil)) ;; Process marks are given. (gnus-uu-digest-mail-forward nil post) ;; No process marks. (let ((message-forward-as-mime message-forward-as-mime) - (message-forward-show-mml message-forward-show-mml)) + (message-forward-show-mml message-forward-show-mml) + (message-forward-included-headers + (if (eq all-headers 'a) + nil + message-forward-included-headers))) (cond ((null arg)) ((eq arg 1) @@ -1380,11 +1388,11 @@ gnus-summary-resend-message-edit (forward-char 1)) (widen))))) -(defun gnus-summary-post-forward (&optional arg) +(defun gnus-summary-post-forward (&optional arg all-headers) "Forward the current article to a newsgroup. See `gnus-summary-mail-forward' for ARG." - (interactive "P" gnus-summary-mode) - (gnus-summary-mail-forward arg t)) + (interactive (gnus-interactive "P\ny") gnus-summary-mode) + (gnus-summary-mail-forward arg all-headers t)) (defun gnus-summary-mail-crosspost-complaint (n) "Send a complaint about crossposting to the current article(s)." -- 2.43.0