Gnus development mailing list
 help / color / mirror / Atom feed
* Patch submission: Allow group-local mail sources for nnmail
@ 2008-01-01 17:23 Michael Sperber
  2008-01-02 19:29 ` Reiner Steib
  0 siblings, 1 reply; 11+ messages in thread
From: Michael Sperber @ 2008-01-01 17:23 UTC (permalink / raw)
  To: ding

[-- 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

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2008-01-24 22:23 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-01-01 17:23 Patch submission: Allow group-local mail sources for nnmail Michael Sperber
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

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