9.4.7 Propagating marks

First of: you really need a patched mairix binary for using the marks propagation feature efficiently. Otherwise, you would have to update the mairix database all the time. You can get the patch at

http://www.randomsample.de/mairix-maildir-patch.tar

You need the mairix v0.21 source code for this patch; everything else is explained in the accompanied readme file. If you don’t want to use marks propagation, you don’t have to apply these patches, but they also fix some annoyances regarding changing maildir flags, so it might still be useful to you.

With the patched mairix binary, you can use nnmairix as an alternative to mail splitting (see Fancy Mail Splitting). For example, instead of splitting all mails from ‘david@foobar.com’ into a group, you can simply create a search group with the query ‘f:david@foobar.com’. This is actually what “smart folders” are all about: simply put everything in one mail folder and dynamically create searches instead of splitting. This is more flexible, since you can dynamically change your folders any time you want to. This also implies that you will usually read your mails in the nnmairix groups instead of your “real” mail groups.

There is one problem, though: say you got a new mail from ‘david@foobar.com’; it will now show up in two groups, the “real” group (your INBOX, for example) and in the nnmairix search group (provided you have updated the mairix database). Now you enter the nnmairix group and read the mail. The mail will be marked as read, but only in the nnmairix group—in the “real” mail group it will be still shown as unread.

You could now catch up the mail group (see Group Data), but this is tedious and error prone, since you may overlook mails you don’t have created nnmairix groups for. Of course, you could first use nnmairix-goto-original-article (see nnmairix keyboard shortcuts) and then read the mail in the original group, but that’s even more cumbersome.

Clearly, the easiest way would be if marks could somehow be automatically set for the original article. This is exactly what marks propagation is about.

Marks propagation is inactive by default. You can activate it for a certain nnmairix group with nnmairix-group-toggle-propmarks-this-group (bound to G b p). This function will warn you if you try to use it with your default search group; the reason is that the default search group is used for temporary searches, and it’s easy to accidentally propagate marks from this group. However, you can ignore this warning if you really want to.

With marks propagation enabled, all the marks you set in a nnmairix group should now be propagated to the original article. For example, you can now tick an article (by default with !) and this mark should magically be set for the original article, too.

A few more remarks which you may or may not want to know:

Marks will not be set immediately, but only upon closing a group. This not only makes marks propagation faster, it also avoids problems with dangling symlinks when dealing with maildir files (since changing flags will change the file name). You can also control when to propagate marks via nnmairix-propagate-marks-upon-close (see the doc-string for details).

Obviously, nnmairix will have to look up the original group for every article you want to set marks for. If available, nnmairix will first use the registry for determining the original group. The registry is very fast, hence you should really, really enable the registry when using marks propagation. If you don’t have to worry about RAM and disc space, set gnus-registry-max-entries to a large enough value; to be on the safe side, choose roughly the amount of mails you index with mairix.

If you don’t want to use the registry or the registry hasn’t seen the original article yet, nnmairix will use an additional mairix search for determining the file name of the article. This, of course, is way slower than the registry—if you set hundreds or even thousands of marks this way, it might take some time. You can avoid this situation by setting nnmairix-only-use-registry to t.

Maybe you also want to propagate marks the other way round, i.e., if you tick an article in a "real" mail group, you’d like to have the same article in a nnmairix group ticked, too. For several good reasons, this can only be done efficiently if you use maildir. To immediately contradict myself, let me mention that it WON’T work with nnmaildir, since nnmaildir stores the marks externally and not in the file name. Therefore, propagating marks to nnmairix groups will usually only work if you use an IMAP server which uses maildir as its file format.

If you work with this setup, just set nnmairix-propagate-marks-to-nnmairix-groups to t and see what happens. If you don’t like what you see, just set it to nil again. One problem might be that you get a wrong number of unread articles; this usually happens when you delete or expire articles in the original groups. When this happens, you can recreate the nnmairix group on the back end using G b d.