16 Viewing Message Threads

MH-E groups messages by threads which are messages that are part of the same discussion and usually all have the same ‘Subject:’ header field. Other ways to organize messages in a folder include limiting (see Limiting Display) or using full-text indexed searches (see Searching Through Messages).

A thread begins with a single message called a root. All replies to the same message are siblings of each other. Any message that has replies to it is an ancestor of those replies.

There are several commands that you can use to navigate and operate on threads.

T ?

Display cheat sheet for the commands of the current prefix in minibuffer (mh-prefix-help).

T o

Refile (output) thread into folder (mh-thread-refile).

T d

Delete thread (mh-thread-delete).

T t

Toggle threaded view of folder (mh-toggle-threads).

T n

Display next sibling (mh-thread-next-sibling).

T p

Display previous sibling (mh-thread-previous-sibling).

T u

Display ancestor of current message (mh-thread-ancestor).

The ‘mh-thread’ customization group contains one option.

mh-show-threads-flag

On means new folders start in threaded mode (default: ‘off’).

Threading large number of messages can be time consuming so the option mh-show-threads-flag is turned off by default. If you turn on this option, then threading will be done only if the number of messages being threaded is less than mh-large-folder. In any event, threading can be turned on (and off) with the command T t (mh-toggle-threads).

There are a few commands to help you navigate threads. If you do not care for the way a particular thread has turned, you can move up the chain of messages with the command T u (mh-thread-ancestor. At any point you can use T n (mh-thread-next-sibling or T p (mh-thread-previous-sibling) to jump to the next or previous sibling, skipping the sub-threads. The command T u can also take a prefix argument to jump to the message that started everything.

There are threaded equivalents for the commands that delete and refile messages. For example, T o (mh-thread-refile) refiles the current message and all its children. Similarly, the command T d (mh-thread-delete) deletes the current message and all its children. These commands do not refile or delete sibling messages. See Navigating, for a description of the similar command k (mh-delete-subject-or-thread).

If you find that threading is too slow, it may be that you have mh-large-folder set too high. Also, threading is one of the few features of MH-E that really benefits from compiling. If you haven’t compiled MH-E, I encourage you to do so48.


Footnotes

(48)

If you’re not sure if MH-E has been byte-compiled, you could try running ‘locate mh-thread.elc’ or otherwise find MH-E on your system and ensure that mh-thread.elc exists. If you have multiple versions and you find that one is compiled but the other is not, then go into your *scratch* buffer in Emacs, enter load-path C-j, and ensure that the byte-compiled version appears first in the load-path. If you find that MH-E is not compiled and you installed MH-E yourself, please refer to the installation directions in the file README in the distribution.