Gnus development mailing list
 help / color / mirror / Atom feed
From: Michael Sperber <sperber@deinprogramm.de>
To: ding@gnus.org
Subject: Patch submission: Allow group-local mail sources for nnmail
Date: Tue, 01 Jan 2008 18:23:31 +0100	[thread overview]
Message-ID: <y9lr6h1zch8.fsf@deinprogramm.de> (raw)

[-- Attachment #1: Type: text/plain, Size: 1244 bytes --]


Hi there,

I've had the following problem forever: I get *lots* of e-mail, and I
travel a lot.  I often have a slow Internet connection.  For this
reason, I pre-sort the e-mail into different IMAP folders on the server,
and would like to only selectively fetch what I want depending on where
I am.  Unfortunately, `mail-sources' is global to all groups---I would
really like to say "fetch the new mail for this group from this IMAP
folder".

To do this, I've added a `group' mail source which activates a
`mail-source' group parameter, which does the job.  The attached patch
is relative to today's CVS.

Could this be applied to the code?  Of course, I'm also happy to hear
suggestions for improvement.

2008-01-01  Michael Sperber  <sperber@deinprogramm.de>

	* mail-source.el (mail-sources): Add `group' choice.

	* nnmail.el (nnmail-get-new-mail-1): Abstract this out to add another
	parameter `in-group' to control into which group the articles go.
	Add treatment of `group' mail-source.

2008-01-01  Michael Sperber  <sperber@deinprogramm.de>

	* gnus.texi (Mail Source Specifiers): Document `group' specifier.
	(Group Parameters): Document `mail-source' parameter.

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla

[-- Attachment #2: Type: text/plain, Size: 3373 bytes --]

Index: lisp/mail-source.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/mail-source.el,v
retrieving revision 7.24
diff -u -r7.24 mail-source.el
--- lisp/mail-source.el	16 Dec 2007 04:23:18 -0000	7.24
+++ lisp/mail-source.el	1 Jan 2008 17:12:10 -0000
@@ -74,6 +74,8 @@
 	  (repeat :tag "List"
 	   (choice :format "%[Value Menu%] %v"
 		   :value (file)
+		   (cons :tag "Group parameter `mail-source'"
+			 (const :format "" group))
 		   (cons :tag "Spool file"
 			 (const :format "" file)
 			 (checklist :tag "Options" :greedy t
Index: lisp/nnmail.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/nnmail.el,v
retrieving revision 7.38
diff -u -r7.38 nnmail.el
--- lisp/nnmail.el	16 Dec 2007 04:23:18 -0000	7.38
+++ lisp/nnmail.el	1 Jan 2008 17:12:11 -0000
@@ -1766,11 +1766,15 @@
       (symbol-value sym))))
 
 (defun nnmail-get-new-mail (method exit-func temp
-				   &optional group spool-func)
+			    &optional group spool-func)
   "Read new incoming mail."
+  (nnmail-get-new-mail-1 method exit-func temp group nil spool-func))
+
+(defun nnmail-get-new-mail-1 (method exit-func temp
+			      group in-group spool-func)
+
   (let* ((sources mail-sources)
 	 fetching-sources
-	 (group-in group)
 	 (i 0)
 	 (new 0)
 	 (total 0)
@@ -1778,6 +1782,16 @@
     (when (and (nnmail-get-value "%s-get-new-mail" method)
 	       sources)
       (while (setq source (pop sources))
+
+	;; Use group's parameter
+	(when (eq (car source) 'group)
+	  (let ((mail-sources
+		 (list
+		  (gnus-group-find-parameter (concat (symbol-name method) ":" group)
+					     'mail-source t))))
+	    (nnmail-get-new-mail-1 method exit-func temp group group spool-func))
+	  (setq source nil))
+	  
 	;; Hack to only fetch the contents of a single group's spool file.
 	(when (and (eq (car source) 'directory)
 		   (null nnmail-scan-directory-mail-source-once)
@@ -1816,9 +1830,10 @@
 			 (nnmail-split-incoming
 			  file ',(intern (format "%s-save-mail" method))
 			  ',spool-func
-			  (if (equal file orig-file)
-			      nil
-			    (nnmail-get-split-group orig-file ',source))
+			  (or in-group
+			      (if (equal file orig-file)
+				  nil
+				(nnmail-get-split-group orig-file ',source)))
 			  ',(intern (format "%s-active-number" method)))))))
 	  (incf total new)
 	  (incf i)))
Index: texi/gnus.texi
===================================================================
RCS file: /usr/local/cvsroot/gnus/texi/gnus.texi,v
retrieving revision 7.267
diff -u -r7.267 gnus.texi
--- texi/gnus.texi	28 Dec 2007 22:28:04 -0000	7.267
+++ texi/gnus.texi	1 Jan 2008 17:12:16 -0000
@@ -3035,6 +3035,12 @@
 If it is set, the value is used as the method for posting message
 instead of @code{gnus-post-method}.
 
+@item mail-source
+@cindex mail-source
+If it is set, and the setting of @code{mail-sources} includes a
+@code{group} mail source (@pxref{Mail Sources}), the value specifies the
+mail source for this group.
+
 @item banner
 @cindex banner
 An item like @code{(banner . @var{regexp})} causes any part of an article
@@ -14546,6 +14552,11 @@
          :user "user-name"
          :password "secret")
 @end lisp
+
+@item group
+Get the actual mail source from the @code{mail-source} group parameter,
+@xref{Group Parameters}.
+
 @end table
 
 @table @dfn

             reply	other threads:[~2008-01-01 17:23 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-01 17:23 Michael Sperber [this message]
2008-01-02 19:29 ` Reiner Steib
2008-01-03  6:48   ` Michael Sperber
2008-01-03 12:42     ` Ted Zlatanov
2008-01-03 14:12       ` Michael Sperber
2008-01-03 17:58         ` Ted Zlatanov
2008-01-04  7:24           ` Michael Sperber
2008-01-04 11:59             ` Reiner Steib
2008-01-04 12:28               ` Michael Sperber
2008-01-16  7:20               ` Michael Sperber
2008-01-24 22:23                 ` Reiner Steib

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=y9lr6h1zch8.fsf@deinprogramm.de \
    --to=sperber@deinprogramm.de \
    --cc=ding@gnus.org \
    /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).