Simon Josefsson writes: > Maybe the problem is a condition-case within another condition-case > work? I recall problems related to this when run as an async process > filter. Yes -- signals from process filters are normally caught; I wasn't thinking or looking closely enough at what the code does originally. I must have had debug-on-error set when testing, but I was sure I'd actually tried it in fresh Emacs. > Maybe it is possible to re-write the approach without using > condition-case, that would likely be easier to debug anyway. I'm not sure it would be easier, but see the comment in the patch below. I made it before reading this, and at least the fix over my previous code is just an extra binding. It works for me in a fresh Emacs, and isn't broken in Emacs 22. > I'd prefer to avoid sending the Exchange bug-workaround approach > ("1,*:*") to any server that does not need it. I've seen servers that > (internally) open up all e-mails in the folder and searches them, but > for the 1,* approach was able to return data quickly. Obviously that's a good reason. Previous comments about efficiency that I was referred to seemed to be about something different. > This may be old > information now, but generally I don't see why imap.el should send poor > protocol output to all servers just because Exchange is broken. [It does have workarounds for various other servers, not that I want to defend Exchange in any way. Exchange 2007 is doing horrible things like messing with MIME parts, which I don't think the previous version did, and I wish I could avoid it.] Anyhow, per the comment in the patch, is there a good reason -- other than simplicity? -- to use FETCH rather than UID like other clients? I'm speaking mostly in ignorance of IMAP...