[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Orgmode] Re: Fixing slowness of following Gnus links to IMAP articles
From: |
Tassilo Horn |
Subject: |
[Orgmode] Re: Fixing slowness of following Gnus links to IMAP articles |
Date: |
Wed, 28 Jul 2010 08:36:57 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
David Maus <address@hidden> writes:
Hi David,
>>I'm trying to add a workaround to org-gnus.el which should save the
>>slowness of querying the IMAP server by looking up the article number
>>in the group's .overview file. But since I don't have nnimap groups,
>>we have to play some question & answer game. ;-)
>
>>Please apply this patch and set
>>`org-gnus-nnimap-query-article-no-from-file' to t.
>
> The patch does not work: It calls `nnimap-retrieve-headers-from-file'
> without the required arguments (group server)
Argh, stupid me! Here's a corrected patch.
--8<---------------cut here---------------start------------->8---
diff --git a/lisp/org-gnus.el b/lisp/org-gnus.el
index 7ec305b..7a339cd 100644
--- a/lisp/org-gnus.el
+++ b/lisp/org-gnus.el
@@ -55,6 +55,16 @@ negates this setting for the duration of the command."
:group 'org-link-store
:type 'boolean)
+(defcustom org-gnus-nnimap-query-article-no-from-file nil
+ "If non-nil, `org-gnus-follow-link' will try to translate
+Message-Ids to article numbers by querying the .overview file.
+Normally, this translation is done by querying the IMAP server,
+which is usually very fast. Unfortunately, some (maybe badly
+configured) IMAP servers don't support this operation quickly.
+So if following a link to a Gnus article takes ages, try setting
+this variable to `t'."
+ :group 'org-link-store
+ :type 'boolean)
;; Install the link type
(org-add-link-type "gnus" 'org-gnus-open)
@@ -173,7 +183,11 @@ If `org-store-link' was called with a prefix arg the
meaning of
(cond ((and group article)
(gnus-activate-group group t)
(condition-case nil
- (let ((backend (car (gnus-find-method-for-group group))))
+ (let* ((method (gnus-find-method-for-group group))
+ (backend (car method))
+ (server (cadr method)))
+ (message "method = %s\ngroup = %s\nbackend = %s\nserver = %s"
+ method group backend server)
(cond
((eq backend 'nndoc)
(if (gnus-group-read-group t nil group)
@@ -183,6 +197,12 @@ If `org-store-link' was called with a prefix arg the
meaning of
(t
(let ((articles 1)
group-opened)
+ ;; work arround IMAP servers that perform badly in
+ ;; SEARCH commands.
+ (when (and (eq backend 'nnimap)
+ org-gnus-nnimap-query-article-no-from-file)
+ (let ((headers (nnimap-retrieve-headers-from-file group
server)))
+ (message "headers = %s" headers)))
(while (and (not group-opened)
;; stop on integer overflows
(> articles 0))
--8<---------------cut here---------------end--------------->8---
> and the headers are not fetched because
> `nnimap-retrieve-headers-from-file' looks for a NOV cache file, not
> .overview.
Aren't overview file and NOV file synonyms?
Hm, anyway. In the Gnus docs I've found this paragraph:
,----[ (info "(gnus)IMAP") ]
| `nnimap-nov-is-evil'
| Never generate or use a local NOV database. Defaults to the value
| of `gnus-agent'.
|
| Using a NOV database usually makes header fetching much faster,
| but it uses the `UID SEARCH UID' command, which is very slow on
| some servers (notably some versions of Courier). Since the Gnus
| Agent caches the information in the NOV database without using the
| slow command, this variable defaults to true if the Agent is in
| use, and false otherwise.
`----
So maybe we're trying to replace one slow command with another slow
command. Especially, the fact that Courier is explicitly mentioned is a
bit frustrating. Well, let's try it out and see if it helps a bit.
> Alas: I couldn't figure out how to enable NOV cache for my nnimap
> group. Setting `nnimap-nov-is-evil' to nil didn't help.
This variable defaults to the value of `gnus-agent', so I assume the
agent has to be enabled (which is default), and most probably the IMAP
server has to be agentized as well. That can be done in the server
buffer (`^' in *Group*), and then:
,----[ (info "(gnus)Server Agent Commands") ]
| `J a'
| Add the current server to the list of servers covered by the Gnus
| Agent (`gnus-agent-add-server').
`----
Bye,
Tassilo
- Re: [Orgmode] Re: Behavior of Gnus when called from an hyperlink, (continued)
- [Orgmode] Fixing slowness of following Gnus links to IMAP articles (was: Behavior of Gnus when called from an hyperlink), Tassilo Horn, 2010/07/27
- Re: [Orgmode] Fixing slowness of following Gnus links to IMAP articles (was: Behavior of Gnus when called from an hyperlink), David Maus, 2010/07/27
- Re: [Orgmode] Fixing slowness of following Gnus links to IMAP articles (was: Behavior of Gnus when called from an hyperlink), Nick Dokos, 2010/07/27
- [Orgmode] Re: Fixing slowness of following Gnus links to IMAP articles, Tassilo Horn, 2010/07/28
- Re: [Orgmode] Re: Fixing slowness of following Gnus links to IMAP articles, David Maus, 2010/07/29
- [Orgmode] Re: Fixing slowness of following Gnus links to IMAP articles, Tassilo Horn, 2010/07/29
- [Orgmode] Re: Fixing slowness of following Gnus links to IMAP articles, Sébastien Vauban, 2010/07/30
- [Orgmode] Re: Fixing slowness of following Gnus links to IMAP articles,
Tassilo Horn <=
- Message not available
- [Orgmode] Re: Patchwork: Patch 176 Accepted, Tassilo Horn, 2010/07/31
- [Orgmode] Re: Patchwork: Patch 176 Accepted, Bastien, 2010/07/31
- [Orgmode] Re: Behavior of Gnus when called from an hyperlink, Tassilo Horn, 2010/07/20
- [Orgmode] Re: Behavior of Gnus when called from an hyperlink, Sébastien Vauban, 2010/07/21
- [Orgmode] Re: Behavior of Gnus when called from an hyperlink, Bernt Hansen, 2010/07/20
- [Orgmode] Re: Behavior of Gnus when called from an hyperlink, Tassilo Horn, 2010/07/20
- [Orgmode] Re: Behavior of Gnus when called from an hyperlink, Sébastien Vauban, 2010/07/21
- [Orgmode] Re: Behavior of Gnus when called from an hyperlink, Tassilo Horn, 2010/07/22
- [Orgmode] Re: Behavior of Gnus when called from an hyperlink, Matt Lundin, 2010/07/22
- [Orgmode] Re: Behavior of Gnus when called from an hyperlink, Sébastien Vauban, 2010/07/22