Eric Abrahamsen writes: > Rainer M Krug writes: > >> Eric Abrahamsen writes: >> >>> Rainer M Krug writes: >>> >>>> <#secure method=pgpmime mode=sign> >>>> Eric Abrahamsen writes: >>>> >>>>> Rainer M Krug 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 "#>> *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? I see all groups which are not quoted except the ones which have "[...]" in their name / path. So I do not see RMKrugGMAIL.[Gmail].Important, but I see e.g. RMKrugGMAIL.INBOX > > 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. That explains. > > 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] Interestingly, when stepping through the code, I see several Gmail. occurring, but I do not see them in the listing. > > 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. Same here - and I think I saw them in an earlier version of gnus, but I am not sure. > > 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. Agreed. AS I am using offlineimap, I could use name translation rules, but I kind of don't like the idea here. > > 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. OK - this is working. Thanks a lot. I will add it to my .gnus.el file until a release of gnus which includes a fix is released. If there is anything else I should test, please let ma know. Thanks a million, Rainer > > (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))) > > > -- Rainer M. Krug email: Rainerkrugsde PGP: 0x0F52F982