[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Conversation View



At Sun, 22 Aug 2010 16:06:48 -0800,
David Abrahams wrote:
> 
> At Sun, 22 Aug 2010 14:48:26 -0700,
> Erik Hetzner wrote:
> > 
> > Thanks for debugging my code & my thinking! You are correct. I
> > assumed we needed to gather more references because my code wasn’t
> > working as expected, but it does seem we are not getting all
> > references from the msgdb.
> > 
> > I don’t know why the msgdb is not keeping all the references
> > around. 
> 
> I feel certain it's a bug, though there are a few places in the code
> that look suspiciously as though they're relying on that bug by
> assuming references contains a single UID.

That sounds like it could be a difficult bug to fix if it is that
entrenched.
 
> > Here is another version based on the code in
> > wl-summary-jump-to-parent-message which works around the problem.
> 
> Yes!  However, I think you may be making the filter more complicated
> than absolutely necessary.  I'm not sure whether that slows things
> down or not, but again, unless M[TU]As are ill-behaved, it should be
> enough to find every message whose message-id or references field
> contain the first UID in references.

Of course, I should have read that post more carefully. I didn’t know
that References was an ordered list. That simplifies the code a lot.

> > I notice when turning on elmo-imap4-debug that WL does a search for:
> > 
> >   uid search all undeleted
> > 
> > when performing this filter, which retrieves all uids. 
> 
> All UIDs, hmm, that seems like another bug.  I guess this could be a
> lot faster if it didn't have to do that.
> 
> > Does anybody know why this is happening, or how it might be
> > prevented?
> 
> Do you think those concerned are likely to be paying attention to this
> thread?  Maybe we should post both these issues as separate bug
> reports.

It’s not strictly a bug, I think, but perhaps unexpected &
unnecessary(?) behavior. Visiting the filter folder calls
elmo-folder-synchronize on the filter folder which calls
elmo-folder-synchronize on the IMAP folder, which calls
elmo-folder-list-messages, which results in all messages being
returned. This does not seem strictly necessary, but perhaps it
is.

Here is a new version of this function. I have bound it to X for the
time being, and if it is called with C-u it should jump back to where
you came from.

best, Erik

(defvar egh:wl-summary-prev-folder-name nil)

(defun egh:wl-summary-visit-conversation (&optional close)
  (interactive "P")
  (if close
      (if egh:wl-summary-prev-folder-name
          (wl-summary-goto-folder-subr egh:wl-summary-prev-folder-name
                                       'no-sync nil nil t)
        (message "No previous folder to visit."))
    (let (folder-name prev-folder-name)
      (save-excursion
        (setq prev-folder-name wl-summary-buffer-folder-name)
        (wl-summary-set-message-buffer-or-redisplay)
        (set-buffer (wl-message-get-original-buffer))
        (let* ((ref (substring (car (split-string (or (std11-field-body "References")
                                                      (std11-field-body "Message-Id")))) 1 -1)))
          (setq folder-name (concat "/message-id:\"" ref
                                    "\"|references:\"" ref
                                    "\"/" (egh:wl-all-folder)))))
      (wl-summary-goto-folder-subr folder-name 'update nil nil t)
      (setq egh:wl-summary-prev-folder-name prev-folder-name)
      (make-local-variable 'egh:wl-summary-prev-folder-name))))

(define-key wl-summary-mode-map "X" 'egh:wl-summary-visit-conversation)

Attachment: pgpwClqhVMoQ8.pgp
Description: PGP signature