Gnus development mailing list
 help / color / mirror / Atom feed
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



  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).