From: Josh Huber <huber@alum.wpi.edu>
Subject: Re: new Mail-Followup-To patch...please take a look...
Date: Thu, 25 Oct 2001 14:48:04 -0400 [thread overview]
Message-ID: <877ktj1rq3.fsf@mclinux.com> (raw)
In-Reply-To: <rjzo6hvszn.fsf@ssv2.dina.kvl.dk>
Here's my current version. I use the following in my .gnus.el:
(setq gnus-parameters
'(("^mail\\.lists\\." (subscribed . t))))
(setq message-subscribed-address-functions
'(gnus-find-subscribed-addresses))
but I do understand that people would like everything to be
automatic. I've got so much stuff in my .gnus.el already that this
(small) addition isn't a big deal to me, but getting it for free
automatically would be nice.
Index: gnus.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/gnus.el,v
retrieving revision 6.61
diff -u -r6.61 gnus.el
--- gnus.el 2001/10/24 17:18:46 6.61
+++ gnus.el 2001/10/25 18:53:44
@@ -2313,6 +2313,21 @@
;;; Gnus Utility Functions
;;;
+(defun gnus-find-subscribed-addresses ()
+ "Return a regexp matching the addresses of all subscribed mail groups.
+It consists of the `to-address' or `to-list' parameter of all groups
+with a nil `not-subscribed' parameter."
+ (let ((addresses))
+ (mapc (lambda (entry)
+ (let ((group (car entry)))
+ (when (gnus-group-find-parameter group 'subscribed)
+ (let ((address (or
+ (gnus-group-fast-parameter group 'to-address)
+ (gnus-group-fast-parameter group 'to-list))))
+ (when address
+ (setq addresses (cons address addresses)))))))
+ (cdr gnus-newsrc-alist))
+ (list (mapconcat 'regexp-quote addresses "\\|"))))
(defmacro gnus-string-or (&rest strings)
"Return the first element of STRINGS that is a non-blank string.
Index: message.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/message.el,v
retrieving revision 6.137
diff -u -r6.137 message.el
--- message.el 2001/10/20 17:27:25 6.137
+++ message.el 2001/10/25 18:53:46
@@ -424,6 +424,32 @@
(const use)
(const ask)))
+(defcustom message-subscribed-address-functions nil
+ "*Specifies functions for determining list subscription.
+If nil, do not attempt to determine list subscribtion with functions.
+If non-nil, this variable contains a list of functions which return
+regular expressions to match lists. These functions can be used in
+conjunction with `message-subscribed-regexps' and
+`message-subscribed-addresses'."
+ :group 'message-interface
+ :type '(repeat sexp))
+
+(defcustom message-subscribed-addresses nil
+ "*Specifies a list of addresses the user is subscribed to.
+If nil, do not use any predefined list subscriptions. This list of
+addresses can be used in conjuction with
+`message-subscribed-address-functions' and `message-subscribed-regexps'."
+ :group 'message-interface
+ :type '(repeat string))
+
+(defcustom message-subscribed-regexps nil
+ "*Specifies a list of addresses the user is subscribed to.
+If nil, do not use any predefined list subscriptions. This list of
+regular expressions can be used in conjuction with
+`message-subscribed-address-functions' and `message-subscribed-addresses'."
+ :group 'message-interface
+ :type '(repeat regexp))
+
(defcustom message-sendmail-f-is-evil nil
"*Non-nil means don't add \"-f username\" to the sendmail command line.
Doing so would be even more evil than leaving it out."
@@ -1468,6 +1494,7 @@
(define-key message-mode-map "\C-c\C-f\C-n" 'message-goto-newsgroups)
(define-key message-mode-map "\C-c\C-f\C-d" 'message-goto-distribution)
(define-key message-mode-map "\C-c\C-f\C-f" 'message-goto-followup-to)
+ (define-key message-mode-map "\C-c\C-f\C-m" 'message-goto-mail-followup-to)
(define-key message-mode-map "\C-c\C-f\C-k" 'message-goto-keywords)
(define-key message-mode-map "\C-c\C-f\C-u" 'message-goto-summary)
(define-key message-mode-map "\C-c\C-b" 'message-goto-body)
@@ -1547,6 +1574,7 @@
["Keywords" message-goto-keywords t]
["Newsgroups" message-goto-newsgroups t]
["Followup-To" message-goto-followup-to t]
+ ["Mail-Followup-To" message-goto-mail-followup-to t]
["Distribution" message-goto-distribution t]
["Body" message-goto-body t]
["Signature" message-goto-signature t]))
@@ -1570,6 +1598,7 @@
C-c C-f C-u move to Summary C-c C-f C-n move to Newsgroups
C-c C-f C-k move to Keywords C-c C-f C-d move to Distribution
C-c C-f C-f move to Followup-To
+ C-c C-f C-m move to Mail-Followup-To
C-c C-t `message-insert-to' (add a To header to a news followup)
C-c C-n `message-insert-newsgroups' (add a Newsgroup header to a news reply)
C-c C-b `message-goto-body' (move to beginning of message text).
@@ -1721,6 +1750,11 @@
(interactive)
(message-position-on-field "Followup-To" "Newsgroups"))
+(defun message-goto-mail-followup-to ()
+ "Move point to the Mail-Followup-To header."
+ (interactive)
+ (message-position-on-field "Mail-Followup-To" "From"))
+
(defun message-goto-keywords ()
"Move point to the Keywords header."
(interactive)
@@ -2527,6 +2561,16 @@
(let ((message-deletable-headers
(if news nil message-deletable-headers)))
(message-generate-headers message-required-mail-headers))
+ ;; Generate the Mail-Followup-To header if the header is not there...
+ (if (and (or message-subscribed-regexps
+ message-subscribed-addresses
+ message-subscribed-address-functions)
+ (not (mail-fetch-field "mail-followup-to")))
+ (message-generate-headers
+ `(("Mail-Followup-To" . ,(message-make-mft))))
+ ;; otherwise, delete the MFT header if the field is empty
+ (when (equal "" (mail-fetch-field "mail-followup-to"))
+ (message-remove-header "Mail-Followup-To")))
;; Let the user do all of the above.
(run-hooks 'message-header-hook))
(unwind-protect
@@ -3536,6 +3580,29 @@
"Return the domain name."
(or mail-host-address
(message-make-fqdn)))
+
+(defun message-make-mft ()
+ "Return the Mail-Followup-To header."
+ (let* ((msg-recipients (message-options-get 'message-recipients))
+ (recipients
+ (mapcar 'mail-strip-quoted-names
+ (message-tokenize-header msg-recipients)))
+ (mft-regexps (apply 'append message-subscribed-regexps
+ (mapcar 'regexp-quote
+ message-subscribed-addresses)
+ (mapcar 'funcall
+ message-subscribed-address-functions))))
+ (save-match-data
+ (when (eval (apply 'append '(or)
+ (mapcar
+ (function (lambda (regexp)
+ (mapcar
+ (function (lambda (recipient)
+ `(string-match ,regexp
+ ,recipient)))
+ recipients)))
+ mft-regexps)))
+ msg-recipients))))
(defun message-generate-headers (headers)
"Prepare article HEADERS.
--
Josh Huber
next prev parent reply other threads:[~2001-10-25 18:48 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-23 15:24 Josh Huber
2001-10-23 15:42 ` Josh Huber
2001-10-23 16:32 ` Paul Jarc
2001-10-23 16:54 ` Josh Huber
2001-10-23 17:45 ` Paul Jarc
2001-10-23 18:54 ` Matt Armstrong
2001-10-23 19:53 ` Paul Jarc
2001-10-24 0:34 ` Josh Huber
2001-10-24 11:35 ` Per Abrahamsen
2001-10-24 12:48 ` Josh Huber
2001-10-24 16:31 ` Paul Jarc
2001-10-24 17:08 ` Per Abrahamsen
2001-10-24 17:18 ` Paul Jarc
2001-10-26 6:24 ` Kai Großjohann
2001-10-27 23:23 ` Florian Weimer
2001-10-23 16:56 ` Josh Huber
2001-10-23 17:32 ` Per Abrahamsen
2001-10-23 23:53 ` Josh Huber
2001-10-23 22:40 ` Davide G. M. Salvetti
2001-10-24 1:40 ` Paul Jarc
2001-10-24 12:45 ` Davide G. M. Salvetti
2001-10-24 13:44 ` Samuel Padgett
2001-10-24 15:23 ` Paul Jarc
2001-10-24 15:42 ` Per Abrahamsen
2001-10-24 15:51 ` Samuel Padgett
2001-10-26 6:28 ` Kai Großjohann
2001-10-27 1:19 ` Barry Fishman
2001-10-29 14:49 ` Kai Großjohann
2001-10-27 22:27 ` Florian Weimer
2001-10-24 1:59 ` Josh Huber
2001-10-24 15:02 ` Per Abrahamsen
2001-10-24 16:48 ` Paul Jarc
2001-10-24 17:13 ` Per Abrahamsen
2001-10-25 1:52 ` Josh Huber
2001-10-24 16:13 ` Paul Jarc
2001-10-24 17:19 ` Per Abrahamsen
2001-10-24 17:28 ` Paul Jarc
2001-10-24 17:38 ` Per Abrahamsen
2001-10-25 1:45 ` Josh Huber
2001-10-25 18:48 ` Josh Huber [this message]
2001-10-29 21:58 ` Matt Armstrong
2001-10-29 22:19 ` Josh Huber
2001-10-29 22:31 ` Paul Jarc
2001-10-30 2:47 ` Josh Huber
2001-10-30 3:11 ` Paul Jarc
2001-10-30 3:49 ` Matt Armstrong
2001-10-30 12:55 ` Per Abrahamsen
2001-10-30 15:31 ` Josh Huber
2001-10-31 13:44 ` ShengHuo ZHU
2001-10-31 17:28 ` Matt Armstrong
2001-10-31 17:51 ` Josh Huber
2001-10-31 18:22 ` ShengHuo ZHU
2001-10-26 6:34 ` Kai Großjohann
2001-10-26 9:07 ` Per Abrahamsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877ktj1rq3.fsf@mclinux.com \
--to=huber@alum.wpi.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).