From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: ding@gnus.org
Subject: Re: [gmane.emacs.gnus.user] Re: One folder in local imap not seen
Date: Wed, 13 Aug 2014 18:43:50 +0800 [thread overview]
Message-ID: <87a978vfdl.fsf@ericabrahamsen.net> (raw)
In-Reply-To: <m2egwk7li2.fsf@krugs.de>
Rainer M Krug <Rainer@krugs.de> writes:
> Eric Abrahamsen <eric@ericabrahamsen.net> writes:
>
>> Rainer M Krug <Rainer@krugs.de> writes:
>>
>>> <#secure method=pgpmime mode=sign>
>>> Eric Abrahamsen <eric@ericabrahamsen.net> writes:
>>>
>>>> Rainer M Krug <Rainer@krugs.de> writes:
>>>>
>>>>> I am posting this here now, as I did not get any reponse on the
>>>>> gnus.user list.
>>>>>
>>>>> I have one folder in my local imap, which I see when I telnet into the
>>>>> local imap server, which is seen by e.g. Mail (OSX), but not seen by
>>>>> gnus. I have added the local imap server again as an additional server,
>>>>> but I also couldn't see it there. It is not killed as far as I can see.
>>>>
>>>> One good way of seeing where things are going wrong is to edebug
>>>> `nnimap-get-groups'. When you go into the *Server* buffer and list the
>>>> groups in your local imap server, you'll be able to see the results of
>>>> the LIST command, and then see how Gnus parses those results. That
>>>> should get you closer to the source of the problem.
>>>
>>> OK - yes, it does. But it does not help me. When I cycle through the
>>> 'nnimap-get-groups' function, I can't make any sense out of the results,
>>> but I realized that in the (while ...) loop (see the code for reference below), the folder
>>> ...[Mailbox].Later does not occur. As I can't make any sense out of the
>>> previous results.
>>>
>>> Any further tips how I can debug this?
>>
>> The early part of the function is just issuing the LIST command to imap,
>> and inserting the results into a buffer. Just to make sure that the LIST
>> command *isn't* returning your folder, step through `nnimap-get-groups'
>> again, and when you get to the second (goto-char (point-min)), hit "e"
>> to eval, and tell it (switch-to-buffer (current-buffer)). That should
>> make visible a buffer with a name like "#<buffer *nnimap PR nil
>> *nntpd**-44898>". You can see the results of the LIST command there.
>>
>> If the folder really isn't in that list, then I don't know what to tell
>> you -- Gnus should be getting exactly the same results as your local
>> telnet experiments.
>
> OK - they are in the result from the LIST output:
>
> ,----
> | ...
> | * LIST (%HasNoChildren) "." "RMKrugGMAIL.[Gmail].All Mail".
> | * LIST (%HasNoChildren) "." RMKrugGMAIL.[Gmail].Bin.
> | * LIST (%HasNoChildren) "." RMKrugGMAIL.[Gmail].Drafts.
> | * LIST (%HasNoChildren) "." RMKrugGMAIL.[Gmail].Important.
> | * LIST (%HasNoChildren) "." RMKrugGMAIL.[Gmail].Sent.
> | * LIST (%HasNoChildren) "." "RMKrugGMAIL.[Gmail].Sent Mail".
> | * LIST (%HasNoChildren) "." RMKrugGMAIL.[Gmail].Spam.
> | * LIST (%HasNoChildren) "." RMKrugGMAIL.[Gmail].Starred.
> | * LIST (%HasChildren) "." RMKrugGMAIL.[Mailbox].
> | * LIST (%HasNoChildren) "." RMKrugGMAIL.[Mailbox].Later.
> | * LIST (%HasNoChildren) "." "RMKrugGMAIL.[Mailbox].To Buy".
> | * LIST (%HasNoChildren) "." "RMKrugGMAIL.[Mailbox].To Download".
> | * LIST (%HasNoChildren) "." "RMKrugGMAIL.[Mailbox].To Follow".
> | * LIST (%HasNoChildren) "." "RMKrugGMAIL.[Mailbox].To Read".
> | * LIST (%HasNoChildren) "." "RMKrugGMAIL.[Mailbox].To Watch".
> | * LIST (%HasNoChildren) "." "RMKrugGMAIL.[Mailbox].Wait For Feedback".
> | * LIST (%HasNoChildren) "." RMKrugGMAIL.Emacs-macosx.
> | * LIST (%HasNoChildren) "." RMKrugGMAIL.INBOX.
> | ...
> `----
>
> But the line with the '.Later' folder is not iterated through in the
> while loop.
In Gnus, do you see any of the groups above that are *not* quoted? Ie,
Important, or Emacs-macosx?
A problem I've run into in the past is that Gnus parses the mailbox name
using (read (current-buffer)). That's supposed to chomp the whole name
in one go, which it does if the mailbox is quoted. But if it isn't
quoted, the read just chomps forward until it hits a slash, or a period,
or some other character that it considers to delimit a Lisp object.
Right now, browsing the group list for any of my Gmail imap accounts, I
see this in the list:
U 0: [Gmail]
U 0: [Gmail]
U 0: [Gmail]
U 0: [Gmail]
Actually, those are my Spam, Trash, and Drafts groups, plus the one
"HasChildren" [Gmail] mailbox. They just show up broken in the browse
list, I think because of the problem I outlined above.
Mind you, I'm actually able to access those groups in the *Group*
buffer, I assume because the groups were already entered into my newsrc
file.
It would be nice if there was a dovecot option to say "quote mailbox
names no matter what," but I don't know if there is. I think the spec
says the names must be quoted if there's a space in them, but if not
it's up to the server.
Just to confirm this, would you mind eval'ling this version of
nnimap-get-groups, and seeing if it helps? It's an ugly hack from ages
ago, that I used when I was having this problem, but then I stopped
using it, I don't remember why. It's possible I used it for a while, the
groups were entered correctly into my newsrc, and then when I stopped
using it it didn't break anything, so I let it go.
One manual edit you'll have to make is to add a ^M control character
where I've indicated below -- I think it wouldn't survive the email
trip.
(defun nnimap-get-groups ()
(erase-buffer)
(let ((sequence (nnimap-send-command "LIST \"\" \"*\""))
groups)
(nnimap-wait-for-response sequence)
(subst-char-in-region (point-min) (point-max)
?\\ ?% t)
(goto-char (point-min))
(nnimap-unfold-quoted-lines)
(goto-char (point-min))
(while (search-forward "* LIST " nil t)
(let ((flags (read (current-buffer)))
(separator (read (current-buffer)))
(group (buffer-substring-no-properties
(progn (skip-chars-forward " \"")
(point))
(progn (move-end-of-line 1)
(skip-chars-backward " \"") ; add a C-q C-m inside this string
(point)))))
(unless (member '%NoSelect flags)
(push (utf7-decode (if (stringp group)
group
(format "%s" group)) t)
groups))))
(nreverse groups)))
next prev parent reply other threads:[~2014-08-13 10:43 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-12 13:36 Rainer M Krug
2014-08-12 23:17 ` Eric Abrahamsen
2014-08-13 8:29 ` Rainer M Krug
2014-08-13 9:14 ` Eric Abrahamsen
2014-08-13 10:05 ` Rainer M Krug
2014-08-13 10:43 ` Eric Abrahamsen [this message]
2014-08-13 12:29 ` SOLVED: unquoted group names from dovecot not shown in GNUS WAS: " Rainer M Krug
2014-08-13 14:39 ` Eric Abrahamsen
2014-08-13 16:12 ` Rainer M Krug
2015-01-27 7:34 ` [gmane.emacs.gnus.user] " Lars Ingebrigtsen
2015-01-27 14:37 ` Eric Abrahamsen
2015-01-28 0:45 ` Lars Ingebrigtsen
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=87a978vfdl.fsf@ericabrahamsen.net \
--to=eric@ericabrahamsen.net \
--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).