From: "Bjørn Mork" <bjorn@mork.no>
To: ding@gnus.org
Cc: "Bjørn Mork" <bjorn@mork.no>
Subject: [PATCH] nnimap.el (nnimap-process-expiry-targets): avoid downloading articles unless necessary
Date: Thu, 2 Dec 2010 13:03:03 +0100 [thread overview]
Message-ID: <1291291383-18946-1-git-send-email-bjorn@mork.no> (raw)
In-Reply-To: <874od8fjcc.fsf@nemi.mork.no>
Using UID COPY to move the articles will always be faster. And downloading articles
which we already know are to be deleted, seems a bit unnecessary...
Signed-off-by: Bjørn Mork <bjorn@mork.no>
---
Finally got around to porting this from my previous implementation.
Let me just repeat that I'm really lisp illiterate and add that I
don't know much about Gnus internals either. So this code will
most likely look a bit strange to anyone familiar with either or
both. Please fix as you find appropriate, or use as it is.
This Works For Me(tm).
lisp/nnimap.el | 52 ++++++++++++++++++++++++++++++++++++----------------
1 files changed, 36 insertions(+), 16 deletions(-)
diff --git a/lisp/nnimap.el b/lisp/nnimap.el
index a53f9ac..4b4793d 100644
--- a/lisp/nnimap.el
+++ b/lisp/nnimap.el
@@ -793,22 +793,42 @@ textual parts.")
(defun nnimap-process-expiry-targets (articles group server)
(let ((deleted-articles nil))
- (dolist (article articles)
- (let ((target nnmail-expiry-target))
- (with-temp-buffer
- (mm-disable-multibyte)
- (when (nnimap-request-article article group server (current-buffer))
- (nnheader-message 7 "Expiring article %s:%d" group article)
- (when (functionp target)
- (setq target (funcall target group)))
- (when (and target
- (not (eq target 'delete)))
- (if (or (gnus-request-group target t)
- (gnus-request-create-group target))
- (nnmail-expiry-target-group target group)
- (setq target nil)))
- (when target
- (push article deleted-articles))))))
+ (cond
+ ;; shortcut further processing if we're going to delete the articles
+ ((eq nnmail-expiry-target 'delete)
+ (setq deleted-articles articles)
+ t)
+ ;; or just move them to another folder on the same IMAP server
+ ((and (not (functionp nnmail-expiry-target))
+ (gnus-server-equal (gnus-group-method nnmail-expiry-target)
+ (gnus-server-to-method
+ (format "nnimap:%s" server))))
+ (and (nnimap-possibly-change-group group server)
+ (with-current-buffer (nnimap-buffer)
+ (nnheader-message 7 "Expiring articles from %s: %s" group articles)
+ (nnimap-command
+ "UID COPY %s %S"
+ (nnimap-article-ranges (gnus-compress-sequence articles))
+ (utf7-encode (gnus-group-real-name nnmail-expiry-target) t))
+ (setq deleted-articles articles)))
+ t)
+ (t
+ (dolist (article articles)
+ (let ((target nnmail-expiry-target))
+ (with-temp-buffer
+ (mm-disable-multibyte)
+ (when (nnimap-request-article article group server (current-buffer))
+ (nnheader-message 7 "Expiring article %s:%d" group article)
+ (when (functionp target)
+ (setq target (funcall target group)))
+ (when (and target
+ (not (eq target 'delete)))
+ (if (or (gnus-request-group target t)
+ (gnus-request-create-group target))
+ (nnmail-expiry-target-group target group)
+ (setq target nil)))
+ (when target
+ (push article deleted-articles))))))))
;; Change back to the current group again.
(nnimap-possibly-change-group group server)
(setq deleted-articles (nreverse deleted-articles))
--
1.7.2.3
next prev parent reply other threads:[~2010-12-02 12:03 UTC|newest]
Thread overview: 219+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-05 1:04 That newfangled IMAP thing Lars Magne Ingebrigtsen
2010-09-05 1:12 ` Steinar Bang
2010-09-05 11:20 ` Lars Magne Ingebrigtsen
2010-09-05 11:44 ` Sebastian Krause
2010-09-05 12:00 ` Frank Schmitt
2010-09-05 13:16 ` Steinar Bang
2010-09-05 19:58 ` James Cloos
2010-09-06 7:17 ` Bjørn Mork
2010-09-07 14:15 ` Wes Hardaker
2010-09-07 14:52 ` Richard Riley
2010-09-07 17:56 ` Wes Hardaker
2010-12-05 12:33 ` Matthias Andree
2010-09-05 1:56 ` Daniel Pittman
2010-09-05 2:17 ` Tibor Simko
2010-09-05 2:27 ` Ted Zlatanov
2010-09-05 7:18 ` Steinar Bang
2010-09-05 11:00 ` Bjørn Mork
2010-09-05 13:31 ` Steinar Bang
2010-09-05 11:23 ` Lars Magne Ingebrigtsen
2010-09-05 13:22 ` Steinar Bang
2010-09-05 13:25 ` Lars Magne Ingebrigtsen
2010-09-05 13:43 ` Steinar Bang
2010-09-05 17:26 ` Bjørn Mork
2010-09-05 17:30 ` Bjørn Mork
2010-09-06 9:05 ` Bjørn Mork
2010-09-06 15:02 ` Lars Magne Ingebrigtsen
2010-09-06 15:28 ` Lars Magne Ingebrigtsen
2010-09-09 14:54 ` Ted Zlatanov
2010-09-09 14:58 ` Lars Magne Ingebrigtsen
2010-09-09 15:07 ` Ted Zlatanov
2010-09-05 17:30 ` Lars Magne Ingebrigtsen
2010-09-05 10:55 ` Bjørn Mork
2010-09-05 13:28 ` Lars Magne Ingebrigtsen
2010-09-05 17:07 ` Bjørn Mork
2010-09-05 17:10 ` Lars Magne Ingebrigtsen
2010-09-05 17:30 ` Memnon Anon
2010-09-06 7:41 ` Bjørn Mork
2010-09-27 23:16 ` Bjørn Mork
2010-09-29 14:43 ` Lars Magne Ingebrigtsen
2010-09-29 19:19 ` Bjørn Mork
2010-12-02 12:03 ` Bjørn Mork [this message]
2010-12-02 12:17 ` expiry taking "forever" in both cpu time and real time when the IMAP UID is high Bjørn Mork
2010-12-02 12:59 ` Daniel Pittman
2010-12-02 13:28 ` Bjørn Mork
2010-12-05 12:21 ` Lars Magne Ingebrigtsen
2011-11-06 22:24 ` slow nnimap expiry (dubious patch) John Magorrian
2012-01-03 22:53 ` Lars Magne Ingebrigtsen
2012-02-13 8:56 ` Bjørn Mork
2012-02-13 19:27 ` Lars Ingebrigtsen
2012-02-13 20:48 ` Bjørn Mork
2012-02-26 14:27 ` Dave Abrahams
2012-03-10 0:51 ` Lars Magne Ingebrigtsen
2012-03-10 18:16 ` Dave Abrahams
2012-03-10 19:57 ` John Magorrian
2010-12-05 12:16 ` [PATCH] nnimap.el (nnimap-process-expiry-targets): avoid downloading articles unless necessary Lars Magne Ingebrigtsen
2010-09-05 12:43 ` That newfangled IMAP thing Greg Troxel
2010-09-05 12:56 ` Lars Magne Ingebrigtsen
2010-09-05 13:16 ` Lars Magne Ingebrigtsen
2010-09-05 13:38 ` Lars Magne Ingebrigtsen
2010-09-05 13:40 ` Lars Magne Ingebrigtsen
2010-09-05 13:46 ` Lars Magne Ingebrigtsen
2010-09-05 14:12 ` Lars Magne Ingebrigtsen
2010-09-05 14:43 ` Lars Magne Ingebrigtsen
2010-09-05 14:49 ` Steinar Bang
2010-09-05 16:59 ` Lars Magne Ingebrigtsen
2010-09-05 17:00 ` Lars Magne Ingebrigtsen
2010-09-05 17:47 ` Steinar Bang
2010-09-05 17:49 ` Steinar Bang
2010-09-06 12:50 ` Ted Zlatanov
2010-09-09 12:55 ` Steinar Bang
2010-09-09 13:55 ` Bjørn Mork
2010-09-09 13:59 ` Lars Magne Ingebrigtsen
2010-09-09 14:26 ` Daniel Pittman
2010-09-09 17:14 ` Sebastian Krause
2010-09-10 23:33 ` Lars Magne Ingebrigtsen
2010-09-10 23:53 ` Jason L Tibbitts III
2010-09-11 0:02 ` Lars Magne Ingebrigtsen
2010-09-11 0:16 ` Greg Troxel
2010-09-11 0:31 ` Lars Magne Ingebrigtsen
2010-09-11 3:42 ` Daniel Pittman
2010-09-11 11:07 ` Ted Zlatanov
2010-09-11 11:47 ` Julien Danjou
2010-09-11 15:44 ` Lars Magne Ingebrigtsen
2010-09-11 17:20 ` Lars Magne Ingebrigtsen
2010-09-11 17:30 ` Julien Danjou
2010-09-11 17:31 ` Lars Magne Ingebrigtsen
2010-09-12 8:38 ` Daniel Pittman
2010-09-12 9:24 ` Julien Danjou
2010-09-12 9:53 ` Daniel Pittman
2010-09-12 11:12 ` Richard Riley
2010-09-12 13:15 ` Lars Magne Ingebrigtsen
2010-09-12 15:12 ` Lars Magne Ingebrigtsen
2010-09-12 15:40 ` Steinar Bang
2010-09-12 16:03 ` Lars Magne Ingebrigtsen
2010-09-12 16:56 ` Frank Schmitt
2010-09-12 17:03 ` Lars Magne Ingebrigtsen
2010-09-12 17:26 ` Steinar Bang
2010-09-12 17:29 ` Lars Magne Ingebrigtsen
2010-09-12 19:47 ` Lars Magne Ingebrigtsen
2010-09-12 20:19 ` Lars Magne Ingebrigtsen
2010-09-13 4:28 ` Daniel Pittman
2010-09-12 17:24 ` Richard Riley
2010-09-13 10:54 ` Ted Zlatanov
2010-09-13 4:26 ` Daniel Pittman
2010-09-13 9:28 ` Lars Magne Ingebrigtsen
2010-09-13 9:49 ` Steinar Bang
2010-09-13 9:57 ` David Edmondson
2010-09-13 10:20 ` Lars Magne Ingebrigtsen
2010-09-13 9:58 ` Lars Magne Ingebrigtsen
2010-09-13 10:07 ` Julien Danjou
2010-09-13 10:24 ` Steinar Bang
2010-09-13 11:06 ` Lars Magne Ingebrigtsen
2010-09-13 11:54 ` Daniel Pittman
2010-09-13 12:20 ` Steinar Bang
2010-09-11 20:52 ` Lars Magne Ingebrigtsen
2010-09-12 2:17 ` Lars Magne Ingebrigtsen
2010-09-12 8:32 ` Daniel Pittman
2010-09-12 13:08 ` Lars Magne Ingebrigtsen
2010-09-13 4:24 ` Daniel Pittman
2010-09-13 10:51 ` Ted Zlatanov
2010-09-13 11:09 ` Lars Magne Ingebrigtsen
2010-09-13 12:24 ` Ted Zlatanov
2010-09-13 12:58 ` Lars Magne Ingebrigtsen
2010-09-13 14:22 ` Lars Magne Ingebrigtsen
2010-09-13 20:36 ` Lars Magne Ingebrigtsen
2010-09-13 21:43 ` Knut Anders Hatlen
2010-09-13 21:55 ` Lars Magne Ingebrigtsen
2010-09-13 22:12 ` Knut Anders Hatlen
2010-09-13 22:14 ` Steinar Bang
2010-09-13 22:54 ` Dan Christensen
2010-09-14 7:19 ` Steinar Bang
2010-09-14 15:10 ` Lars Magne Ingebrigtsen
2010-09-14 15:18 ` Julien Danjou
2010-09-14 15:29 ` Steinar Bang
2010-09-14 15:30 ` Ted Zlatanov
2010-09-14 15:44 ` Lars Magne Ingebrigtsen
2010-09-14 16:21 ` Lars Magne Ingebrigtsen
2010-09-14 18:51 ` Steinar Bang
2010-09-14 19:01 ` Lars Magne Ingebrigtsen
2010-09-14 19:23 ` Steinar Bang
2010-09-14 19:26 ` Lars Magne Ingebrigtsen
2010-09-14 19:47 ` Steinar Bang
2010-09-14 19:57 ` Lars Magne Ingebrigtsen
2010-09-14 20:07 ` Steinar Bang
2010-09-14 19:19 ` Ted Zlatanov
2010-09-14 19:24 ` Lars Magne Ingebrigtsen
2010-09-14 19:35 ` Ted Zlatanov
2010-09-14 19:40 ` Lars Magne Ingebrigtsen
2010-09-14 19:40 ` Julien Danjou
2010-09-14 19:43 ` Lars Magne Ingebrigtsen
2010-09-14 19:46 ` Ted Zlatanov
2010-09-15 8:37 ` Julien Danjou
2010-09-14 19:26 ` Ted Zlatanov
2010-09-14 19:28 ` Lars Magne Ingebrigtsen
2010-09-14 19:44 ` Ted Zlatanov
2010-09-15 10:24 ` Steinar Bang
2010-09-14 19:35 ` Julien Danjou
2010-09-14 19:44 ` Dan Christensen
2010-09-14 19:50 ` Ted Zlatanov
2010-09-14 20:07 ` Lars Magne Ingebrigtsen
2010-09-14 20:23 ` Ted Zlatanov
2010-09-14 20:49 ` Frank Schmitt
2010-09-15 6:05 ` Steinar Bang
2010-09-15 7:33 ` Lars Magne Ingebrigtsen
2010-09-13 23:56 ` Lars Magne Ingebrigtsen
2010-09-14 0:10 ` Lars Magne Ingebrigtsen
2010-09-14 0:35 ` Lars Magne Ingebrigtsen
2010-09-14 10:58 ` Ted Zlatanov
2010-09-12 2:18 ` Ted Zlatanov
2010-09-12 2:32 ` Lars Magne Ingebrigtsen
2010-09-06 15:23 ` Dan Christensen
2010-09-06 20:14 ` Lars Magne Ingebrigtsen
2010-09-06 21:01 ` Steinar Bang
2010-09-06 21:05 ` Lars Magne Ingebrigtsen
2010-09-06 21:27 ` Steinar Bang
2010-09-06 21:29 ` Lars Magne Ingebrigtsen
2010-09-06 21:39 ` Steinar Bang
2010-09-07 0:57 ` Daniel Pittman
2010-09-07 1:41 ` Lars Magne Ingebrigtsen
2010-09-07 2:49 ` Daniel Pittman
2010-09-07 6:14 ` Gijs Hillenius
2010-09-07 7:17 ` Steinar Bang
2010-09-07 14:57 ` Bjørn Mork
2010-09-07 17:59 ` James Cloos
2010-09-07 18:16 ` Steinar Bang
2010-09-08 8:34 ` Vegard Vesterheim
2010-09-08 9:06 ` Steinar Bang
2010-09-08 10:00 ` Vegard Vesterheim
2010-09-08 10:07 ` Julien Danjou
2010-09-08 12:06 ` Steinar Bang
2010-09-08 12:18 ` Julien Danjou
2010-09-08 14:29 ` Vegard Vesterheim
2010-09-08 14:43 ` Steinar Bang
2010-09-08 11:50 ` Steinar Bang
2010-09-08 21:26 ` Wes Hardaker
2010-09-05 15:02 ` Mark Plaksin
2010-09-05 16:01 ` David Engster
2010-09-05 16:06 ` David Engster
2010-09-05 16:15 ` Lars Magne Ingebrigtsen
2010-09-05 18:15 ` Steinar Bang
2010-09-05 18:21 ` Lars Magne Ingebrigtsen
2010-09-05 19:46 ` Steinar Bang
2010-09-05 19:58 ` Lars Magne Ingebrigtsen
2010-09-06 12:57 ` Ted Zlatanov
2010-09-06 13:01 ` Lars Magne Ingebrigtsen
2010-09-06 13:12 ` Ted Zlatanov
2010-09-05 20:04 ` Julien Danjou
2010-09-05 20:10 ` Lars Magne Ingebrigtsen
2010-09-05 14:44 ` Tom Rauchenwald
2010-09-06 3:51 ` Daniel Pittman
2010-09-06 8:45 ` Julien Danjou
2010-09-06 13:39 ` Romain Francoise
2010-09-06 14:23 ` Julien Danjou
2010-09-06 21:01 ` Daniel Dehennin
2010-09-06 21:04 ` Lars Magne Ingebrigtsen
2010-09-06 16:26 ` Gijs Hillenius
2010-09-06 16:40 ` Lars Magne Ingebrigtsen
2010-09-05 13:27 ` Steinar Bang
2010-09-05 17:25 ` Frank Schmitt
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=1291291383-18946-1-git-send-email-bjorn@mork.no \
--to=bjorn@mork.no \
--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).