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

Re: Conversation View



On Fri, Aug 20, 2010 at 12:07 PM, Erik Hetzner <ehetzner@gmail.com> wrote:
> At Fri, 20 Aug 2010 10:20:48 -0800,
> Dave Abrahams wrote:
>> On Aug 20, 2010, at 10:01 AM, Erik Hetzner <ehetzner@gmail.com> wrote:
>
>> > (Virtual folders also allow you to create virtual folders that
>> > simulate gmail conversation view. See the above wiki.)
>>
>> Yeah; tried it but it didn't work for me. In fact it was kind of
>> awful. See this thread for the full report:
>> http://www.mail-archive.com/dovecot@dovecot.org/msg24923.html
>>
>> My guess is that this feature hasnt had much testing
>
> I haven’t tested the conversation view much. But the all virtual
> mailbox is working pretty well for me.

Well, caveat emptor.  I'm unwilling to any longer administer my own mail server
unless absolutely forced to, anyway.

>> I never tried switching the search backend, but with a large message
>> history searching was anything but fast.
>
> Solr is fast. WL spends more time building summaries than waiting for
> an IMAP response. Unfortunately it requires setting up a search
> server.
>
>> I think I may be on the trail of developing that feature. Could
>> really use some help tho
>
> Here is a start. It only works after you have displayed a message (I’m
> sure there is a fix for this). The real trouble is that we need to
> follow the trail of references up to the first message to really get
> the full thread, which entails a back-and-forth with the IMAP server.

Hmm, I didn't have that problem.  If you check out my blog post noted at the
beginning of this thread, I thiknk this is enough:

* X = the first message-ID in the message's "References:" header
(refers to the beginning of the thread if we're not at the beginning
and all MUAs are well-behaved).
* Y = the message-ID of the current message
* Set up a filtered folder showing everything whose message ID is X or
Y or that has X or Y in its references field.

> (defun egh:wl-all-folder ()
>  "%xxx:xxx@xxx.com:993!")
>
> (defun egh:wl-summary-visit-conversation ()
>  (interactive)
>  (let* ((f (lambda (str)
>              (mapcar (lambda (msgid)
>                        (substring msgid 1 -1))
>                      (split-string str " "))))
>         (msg (elmo-message-entity
>               wl-summary-buffer-elmo-folder
>               wl-summary-buffer-current-msg))
>         (ids (append
>               (funcall f (elmo-message-entity-field msg 'message-id))
>               (funcall f (elmo-message-entity-field msg 'references)))))
>    (wl-summary-goto-folder-subr
>     (concat
>      "/"
>      (mapconcat
>       (lambda (ref)
>         (concat "message-id:" ref
>                 "|references:" ref))
>       ids "|")
>      "/"
>      (egh:wl-all-folder))
>     'update nil nil t)))

Thanks; looks like I might be able to make this do some of what I want
(once I untwist your über-functional style and figure out what it
means) ;-)

-- 
Dave Abrahams
BoostPro Computing
http://www.boostpro.com