aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorMiles Bader2008-06-06 22:53:14 +0000
committerMiles Bader2008-06-06 22:53:14 +0000
commite6d2d263da3c83033860f408bc400386b54ff288 (patch)
treec4c0f27e446dee40040fa777ee9735285d85aeda /doc
parent2a6c4d7524018fcf0fe9fa9657c67a9376a8a5dc (diff)
downloademacs-e6d2d263da3c83033860f408bc400386b54ff288.tar.gz
emacs-e6d2d263da3c83033860f408bc400386b54ff288.zip
Merge from gnus--devo--0
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1215
Diffstat (limited to 'doc')
-rw-r--r--doc/misc/ChangeLog17
-rw-r--r--doc/misc/gnus.texi656
2 files changed, 668 insertions, 5 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index ff2f0292c3f..578abef1051 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,16 @@
12008-06-05 Reiner Steib <Reiner.Steib@gmx.de>
2
3 * gnus.texi (nnmairix): Markup and othe minor fixes.
4
52008-06-05 David Engster <dengste@eml.cc>
6
7 * gnus.texi (nnmairix): New nodes describing nnmairix.el.
8
92008-06-05 Reiner Steib <Reiner.Steib@gmx.de>
10
11 * gnus.texi (Group Parameters): Change ~/.gnus to ~/.gnus.el
12 (Searching, nnir, nnmairix): New stub nodes.
13
12008-05-30 "Felix -" <felix.1@canids.net> (tiny change) 142008-05-30 "Felix -" <felix.1@canids.net> (tiny change)
2 15
3 * cl.texi (Iteration Clauses): Fix incorrect "identical" examples. 16 * cl.texi (Iteration Clauses): Fix incorrect "identical" examples.
@@ -42,10 +55,6 @@
42 55
432008-04-13 Reiner Steib <Reiner.Steib@gmx.de> 562008-04-13 Reiner Steib <Reiner.Steib@gmx.de>
44 57
45 * gnus.texi (Searching, nnir.el, nnmairix.el): New nodes.
46
472008-04-13 Reiner Steib <Reiner.Steib@gmx.de>
48
49 * gnus.texi (Oort Gnus): Add message-fill-column. 58 * gnus.texi (Oort Gnus): Add message-fill-column.
50 59
512008-04-12 Adrian Aichner <adrian@xemacs.org> 602008-04-12 Adrian Aichner <adrian@xemacs.org>
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 8273be8f6da..8e7ebd17906 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -1736,6 +1736,7 @@ long as Gnus is active.
1736* Exiting Gnus:: Stop reading news and get some work done. 1736* Exiting Gnus:: Stop reading news and get some work done.
1737* Group Topics:: A folding group mode divided into topics. 1737* Group Topics:: A folding group mode divided into topics.
1738* Non-ASCII Group Names:: Accessing groups of non-English names. 1738* Non-ASCII Group Names:: Accessing groups of non-English names.
1739* Searching:: Mail search engines.
1739* Misc Group Stuff:: Other stuff that you can to do. 1740* Misc Group Stuff:: Other stuff that you can to do.
1740@end menu 1741@end menu
1741 1742
@@ -3167,7 +3168,7 @@ message). As a workaround, it might help to add the variable in
3167question to @code{gnus-newsgroup-variables}. @xref{Various Summary 3168question to @code{gnus-newsgroup-variables}. @xref{Various Summary
3168Stuff}. So if you want to set @code{message-from-style} via the group 3169Stuff}. So if you want to set @code{message-from-style} via the group
3169parameters, then you may need the following statement elsewhere in your 3170parameters, then you may need the following statement elsewhere in your
3170@file{~/.gnus} file: 3171@file{~/.gnus.el} file:
3171 3172
3172@lisp 3173@lisp
3173(add-to-list 'gnus-newsgroup-variables 'message-from-style) 3174(add-to-list 'gnus-newsgroup-variables 'message-from-style)
@@ -4356,6 +4357,659 @@ names should be the same in both groups. Otherwise the Newsgroups
4356header will be displayed incorrectly in the article buffer. 4357header will be displayed incorrectly in the article buffer.
4357 4358
4358 4359
4360@node Searching
4361@section Searching
4362
4363@menu
4364* nnir:: Searching on IMAP, with swish, namazu, etc.
4365* nnmairix:: Searching maildir, MH or mbox with Mairix.
4366@end menu
4367
4368@cindex Searching
4369
4370FIXME: This node is a stub.
4371
4372FIXME: Add a brief overview of Gnus search capabilities. A brief
4373comparison of nnir, nnmairix, contrib/gnus-namazu would be nice
4374as well.
4375
4376FIXME: Explain difference to @ref{Searching for Articles}, add reference
4377and back-reference.
4378
4379@node nnir
4380@subsection nnir
4381
4382FIXME: As a first step, convert the commentary of @file{nnir} to texi.
4383@cindex nnir
4384
4385@node nnmairix
4386@subsection nnmairix
4387
4388@cindex mairix
4389@cindex nnmairix
4390This paragraph describes how to set up mairix and the back end
4391@code{nnmairix} for indexing and searching your mail from within
4392Gnus. Additionally, you can create permanent ``smart'' groups which are
4393bound to mairix searches and are automatically updated.
4394
4395@menu
4396* About mairix:: About the mairix mail search engine
4397* nnmairix requirements:: What you will need for using nnmairix
4398* What nnmairix does:: What does nnmairix actually do?
4399* Setting up mairix:: Set up your mairix installation
4400* Configuring nnmairix:: Set up the nnmairix back end
4401* nnmairix keyboard shortcuts:: List of available keyboard shortcuts
4402* Propagating marks:: How to propagate marks from nnmairix groups
4403* nnmairix tips and tricks:: Some tips, tricks and examples
4404* nnmairix caveats:: Some more stuff you might want to know
4405@end menu
4406
4407@c FIXME: The markup in this section needs improvement. E.g. add
4408@c @sample{...}, maybe remove some @strong{...}, convert ` - ' to `---`,
4409@c ...
4410
4411@node About mairix
4412@subsubsection About mairix
4413
4414Mairix is a tool for indexing and searching words in locally stored
4415mail. It was written by Richard Curnow and is licensed under the
4416GPL. Mairix comes with most popular GNU/Linux distributions, but it also
4417runs under Windows (with cygwin), Mac OS X and Solaris. The homepage can
4418be found at
4419@uref{http://www.rpcurnow.force9.co.uk/mairix/index.html}
4420
4421Though mairix might not be as flexible as other search tools like
4422swish++ or namazu, which you can use via the @code{nnir} back end, it
4423has the prime advantage of being incredibly fast. On current systems, it
4424can easily search through headers and message bodies of thousands and
4425thousands of mails in well under a second. Building the database
4426necessary for searching might take a minute or two, but only has to be
4427done once fully. Afterwards, the updates are done incrementally and
4428therefore are really fast, too. Additionally, mairix is very easy to set
4429up.
4430
4431For maximum speed though, mairix should be used with mails stored in
4432@code{Maildir} or @code{MH} format (this includes the @code{nnml} back
4433end), although it also works with mbox. Mairix presents the search
4434results by populating a @emph{virtual} maildir/MH folder with symlinks
4435which point to the ``real'' message files (if mbox is used, copies are
4436made). Since mairix already presents search results in such a virtual
4437mail folder, it is very well suited for using it as an external program
4438for creating @emph{smart} mail folders, which represent certain mail
4439searches. This is similar to a Kiboze group (@pxref{Kibozed Groups}),
4440but much faster.
4441
4442@node nnmairix requirements
4443@subsubsection nnmairix requirements
4444
4445Mairix searches local mail - that means, mairix absolutely must have
4446direct access to your mail folders. If your mail resides on another
4447server (e.g. an @acronym{IMAP} server) and you happen to have shell
4448access, @code{nnmairix} supports running mairix remotely, e.g. via ssh.
4449
4450Additionally, @code{nnmairix} only supports the following Gnus back
4451ends: @code{nnml}, @code{nnmaildir}, and @code{nnimap}. You
4452@strong{must} use one of these back ends for using
4453@code{nnmairix}. Other back ends, like @code{nnmbox}, @code{nnfolder} or
4454@code{nnmh}, won't work.
4455
4456If you absolutely must use mbox and still want to use @code{nnmairix},
4457you can set up a local @acronym{IMAP} server, which you then access via
4458@code{nnimap}. This is a rather massive setup for accessing some mbox
4459files, so just change to MH or Maildir already...
4460
4461@node What nnmairix does
4462@subsubsection What nnmairix does
4463
4464The back end @code{nnmairix} enables you to call mairix from within Gnus,
4465either to query mairix with a search term or to update the
4466database. While visiting a message in the summary buffer, you can use
4467several pre-defined shortcuts for calling mairix, e.g. to quickly
4468search for all mails from the sender of the current message or to
4469display the whole thread associated with the message, even if the
4470mails are in different folders.
4471
4472Additionally, you can create permanent @code{nnmairix} groups which are bound
4473to certain mairix searches. This way, you can easily create a group
4474containing mails from a certain sender, with a certain subject line or
4475even for one specific thread based on the Message-ID. If you check for
4476new mail in these folders (e.g. by pressing @kbd{g} or @kbd{M-g}), they
4477automatically update themselves by calling mairix.
4478
4479You might ask why you need @code{nnmairix} at all, since mairix already
4480creates the group, populates it with links to the mails so that you can
4481then access it with Gnus, right? Well, this @emph{might} work, but often
4482does not - at least not without problems. Most probably you will get
4483strange article counts, and sometimes you might see mails which Gnus
4484claims have already been canceled and are inaccessible. This is due to
4485the fact that Gnus isn't really amused when things are happening behind
4486its back. Another problem can be the mail back end itself, e.g. if you
4487use mairix with an @acronym{IMAP} server (I had Dovecot complaining
4488about corrupt index files when mairix changed the contents of the search
4489group). Using @code{nnmairix} should circumvent these problems.
4490
4491@code{nnmairix} is not really a mail back end - it's actually more like a
4492wrapper, sitting between a ``real'' mail back end where mairix stores the
4493searches and the Gnus front end. You can choose between three different
4494mail back ends for the mairix folders: @code{nnml}, @code{nnmaildir} or
4495@code{nnimap}. @code{nnmairix} will call the mairix binary so that the
4496search results are stored in folders named
4497@code{zz_mairix-<NAME>-<NUMBER>} on this mail back end, but it will
4498present these folders in the Gnus front end only with @code{<NAME>}. You
4499can use an existing mail back end where you already store your mail, but
4500if you're uncomfortable with @code{nnmairix} creating new mail groups
4501alongside your other mail, you can also create e.g. a new
4502@code{nnmaildir} server exclusively for mairix. However, a special case
4503exists if you want to use mairix remotely on an IMAP server with
4504@code{nnimap} - here the mairix folders and your other mail must be on
4505the same @code{nnimap} back end.
4506
4507@node Setting up mairix
4508@subsubsection Setting up mairix
4509
4510First: create a backup of your mail folders (@pxref{nnmairix caveats}).
4511
4512Setting up mairix is easy: simply create a @file{.mairixrc} file with
4513(at least) the following entries:
4514
4515@example
4516# Your Maildir/MH base folder
4517base=~/Maildir
4518@end example
4519
4520This is the base folder for your mails. All the following paths are
4521relative to this base folder. If you want to use @code{nnmairix} with
4522@code{nnimap}, this base path has to point to the mail path where the
4523@acronym{IMAP} server stores the mail folders!
4524
4525@c FIXME: Add typical examples?
4526@example
4527maildir= ... your maildir folders which should be indexed ...
4528mh= ... your nnml/mh folders which should be indexed ...
4529mbox = ... your mbox files which should be indexed ...
4530@end example
4531
4532Specify all your maildir/nnml folders and mbox files (relative to the
4533base path!) you want to index with mairix. See the man-page for
4534mairixrc for details.
4535
4536@example
4537omit=zz_mairix-*
4538@end example
4539
4540@vindex nnmairix-group-prefix
4541This should make sure that you don't accidentally index the mairix
4542search results. You can change the prefix of these folders with the
4543variable @code{nnmairix-group-prefix}.
4544
4545@c FIXME: Add typical examples?
4546@example
4547mformat= ... 'maildir' or 'mh' ...
4548database= ... location of database file ...
4549@end example
4550
4551The @code{format} setting specifies the output format for the mairix
4552search folder. Set this to @code{mh} if you want to access search results
4553with @code{nnml}. Otherwise choose @code{maildir}.
4554
4555See the man pages for mairix and mairixrc for further options. Now
4556simply call @code{mairix} to create the index for the first time.
4557
4558@node Configuring nnmairix
4559@subsubsection Configuring nnmairix
4560
4561In group mode, type @kbd{G b c}
4562(@code{nnmairix-create-server-and-default-group}). This will ask you for all
4563necessary information and create a @code{nnmairix} server as a foreign
4564server. You will have to specify the following:
4565
4566@itemize @bullet
4567
4568@item
4569The @strong{name} of the @code{nnmairix} server - choose whatever you
4570want.
4571
4572@item
4573The @strong{mail back end} where mairix should stores its
4574searches. Currently @code{nnmaildir}, @code{nnimap} and @code{nnml} are
4575supported. As explained above, for locally stored mails, this can be an
4576existing mail back end where you store your mails. However, you can also
4577create e.g. a new @code{nnmaildir} server exclusively for
4578@code{nnmairix} in your secondary select methods (@pxref{Finding the
4579News}). If you want to use mairix remotely on an @acronym{IMAP} server,
4580you have to choose the corresponding @code{nnimap} back end here.
4581
4582@item
4583@vindex nnmairix-mairix-search-options
4584The @strong{command} to call the mairix binary. This will usually just
4585be @code{mairix}, but you can also choose something like @code{ssh
4586SERVER mairix} if you want to call mairix remotely, e.g. on your
4587@acronym{IMAP} server. If you want to add some default options to
4588mairix, you could do this here, but better use the variable
4589@code{nnmairix-mairix-search-options} instead.
4590
4591@item
4592The name of the @strong{default search group}. This will be the group
4593where all temporary mairix searches are stored, i.e. all searches which
4594are not bound to permanent @code{nnmairix} groups. Choose whatever you
4595like.
4596
4597@item
4598If the mail back end is @code{nnimap} or @code{nnmaildir}, you will be
4599asked if you work with @strong{Maildir++}, i.e. with hidden maildir
4600folders (=beginning with a dot). For example, you have to answer
4601@samp{yes} here if you work with the Dovecot @acronym{IMAP}
4602server. Otherwise, you should answer @samp{no} here.
4603
4604@end itemize
4605
4606@node nnmairix keyboard shortcuts
4607@subsubsection nnmairix keyboard shortcuts
4608
4609In group mode:
4610
4611@table @kbd
4612
4613@item G b c
4614@kindex G b c (Group)
4615@findex nnmairix-create-server-and-default-group
4616Creates @code{nnmairix} server and default search group for this server
4617(@code{nnmairix-create-server-and-default-group}). You should have done
4618this by now (@pxref{Configuring nnmairix}).
4619
4620@item G b s
4621@kindex G b s (Group)
4622@findex nnmairix-search
4623Prompts for query which is then sent to the mairix binary. Search
4624results are put into the default search group which is automatically
4625displayed (@code{nnmairix-search}).
4626
4627@item G b m
4628@kindex G b m (Group)
4629@findex nnmairix-widget-search
4630Allows you to create a mairix search or a permanent group more
4631comfortably using graphical widgets, similar to a customization
4632group. Just try it to see how it works (@code{nnmairix-widget-search}).
4633
4634@item G b i
4635@kindex G b i (Group)
4636@findex nnmairix-search-interactive
4637Another command for creating a mairix query more comfortably, but uses
4638only the minibuffer (@code{nnmairix-search-interactive}).
4639
4640@item G b g
4641@kindex G b g (Group)
4642@findex nnmairix-create-search-group
4643Creates a permanent group which is associated with a search query
4644(@code{nnmairix-create-search-group}). The @code{nnmairix} back end
4645automatically calls mairix when you update this group with @kbd{g} or
4646@kbd{M-g}.
4647
4648@item G b q
4649@kindex G b q (Group)
4650@findex nnmairix-group-change-query-this-group
4651Changes the search query for the @code{nnmairix} group under cursor
4652(@code{nnmairix-group-change-query-this-group}).
4653
4654@item G b t
4655@kindex G b t (Group)
4656@findex nnmairix-group-toggle-threads-this-group
4657Toggles the 'threads' parameter for the @code{nnmairix} group under cursor,
4658i.e. if you want see the whole threads of the found messages
4659(@code{nnmairix-group-toggle-threads-this-group}).
4660
4661@item G b u
4662@kindex G b u (Group)
4663@findex nnmairix-update-database
4664@vindex nnmairix-mairix-update-options
4665Calls mairix binary for updating the database
4666(@code{nnmairix-update-database}). The default parameters are @code{-F}
4667and @code{-Q} for making this as fast as possible (see variable
4668@code{nnmairix-mairix-update-options} for defining these default
4669options).
4670
4671@item G b r
4672@kindex G b r (Group)
4673@findex nnmairix-group-toggle-readmarks-this-group
4674Keep articles in this @code{nnmairix} group always read or unread, or leave the
4675marks unchanged (@code{nnmairix-group-toggle-readmarks-this-group}).
4676
4677@item G b d
4678@kindex G b d (Group)
4679@findex nnmairix-group-delete-recreate-this-group
4680Recreate @code{nnmairix} group on the ``real'' mail back end
4681(@code{nnmairix-group-delete-recreate-this-group}). You can do this if
4682you always get wrong article counts with a @code{nnmairix} group.
4683
4684@item G b a
4685@kindex G b a (Group)
4686@findex nnmairix-group-toggle-allowfast-this-group
4687Toggles the @code{allow-fast} parameters for group under cursor
4688(@code{nnmairix-group-toggle-allowfast-this-group}). The default
4689behavior of @code{nnmairix} is to do a mairix search every time you
4690update or enter the group. With the @code{allow-fast} parameter set,
4691mairix will only be called when you explicitly update the group, but not
4692upon entering. This makes entering the group faster, but it may also
4693lead to dangling symlinks if something changed between updating and
4694entering the group which is not yet in the mairix database.
4695
4696@item G b p
4697@kindex G b p (Group)
4698@findex nnmairix-group-toggle-propmarks-this-group
4699Toggle marks propagation for this group
4700(@code{nnmairix-group-toggle-propmarks-this-group}). (@pxref{Propagating
4701marks}).
4702
4703@item G b o
4704@kindex G b o (Group)
4705@findex nnmairix-propagate-marks
4706Manually propagate marks (@code{nnmairix-propagate-marks}); needed only when
4707@code{nnmairix-propagate-marks-upon-close} is set to @code{nil}.
4708
4709@end table
4710
4711In summary mode:
4712
4713@table @kbd
4714
4715@item $ m
4716@kindex $ m (Summary)
4717@findex nnmairix-widget-search-from-this-article
4718Allows you to create a mairix query or group based on the current
4719message using graphical widgets (same as @code{nnmairix-widget-search})
4720(@code{nnmairix-widget-search-from-this-article}).
4721
4722@item $ g
4723@kindex $ g (Summary)
4724@findex nnmairix-create-search-group-from-message
4725Interactively creates a new search group with query based on the current
4726message, but uses the minibuffer instead of graphical widgets
4727(@code{nnmairix-create-search-group-from-message}).
4728
4729@item $ t
4730@kindex $ t (Summary)
4731@findex nnmairix-search-thread-this-article
4732Searches thread for the current article
4733(@code{nnmairix-search-thread-this-article}). This is effectively a
4734shortcut for calling @code{nnmairix-search} with @samp{m:msgid} of the
4735current article and enabled threads.
4736
4737@item $ f
4738@kindex $ f (Summary)
4739@findex nnmairix-search-from-this-article
4740Searches all messages from sender of the current article
4741(@code{nnmairix-search-from-this-article}). This is a shortcut for
4742calling @code{nnmairix-search} with @samp{f:From}.
4743
4744@item $ o
4745@kindex $ o (Summary)
4746@findex nnmairix-goto-original-article
4747(Only in @code{nnmairix} groups!) Tries determine the group this article
4748originally came from and displays the article in this group, so that
4749e.g. replying to this article the correct posting styles/group
4750parameters are applied (@code{nnmairix-goto-original-article}). This
4751function will use the registry if available, but can also parse the
4752article file path as a fallback method.
4753
4754@item $ u
4755@kindex $ u (Summary)
4756@findex nnmairix-remove-tick-mark-original-article
4757Remove possibly existing tick mark from original article
4758(@code{nnmairix-remove-tick-mark-original-article}). (@pxref{nnmairix
4759tips and tricks}).
4760
4761@end table
4762
4763@node Propagating marks
4764@subsubsection Propagating marks
4765
4766First of: you really need a patched mairix binary for using the marks
4767propagation feature efficiently. Otherwise, you would have to update
4768the mairix database all the time. You can get the patch at
4769
4770@uref{http://m61s02.vlinux.de/mairix-maildir-patch.tar}
4771
4772You need the mairix v0.21 source code for this patch; everything else
4773is explained in the accompanied readme file. If you don't want to use
4774marks propagation, you don't have to apply these patches, but they also
4775fix some annoyances regarding changing maildir flags, so it might still
4776be useful to you.
4777
4778With the patched mairix binary, you can use @code{nnmairix} as an
4779alternative to mail splitting (@pxref{Fancy Mail Splitting}). For
4780example, instead of splitting all mails from @samp{david@@foobar.com}
4781into a group, you can simply create a search group with the query
4782@samp{f:david@@foobar.com}. This is actually what ``smart folders'' are
4783all about: simply put everything in one mail folder and dynamically
4784create searches instead of splitting. This is more flexible, since you
4785can dynamically change your folders any time you want to. This also
4786implies that you will usually read your mails in the @code{nnmairix}
4787groups instead of your ``real'' mail groups.
4788
4789There is one problem, though: say you got a new mail from
4790@samp{david@@foobar.com} - it will now show up in two groups, the
4791``real'' group (your INBOX, for example) and in the @code{nnmairix}
4792search group (provided you have updated the mairix database). Now you
4793enter the @code{nnmairix} group and read the mail. The mail will be
4794marked as read, but only in the @code{nnmairix} group - in the ``real''
4795mail group it will be still shown as unread.
4796
4797You could now catch up the mail group (@pxref{Group Data}), but this is
4798tedious and error prone, since you may overlook mails you don't have
4799created @code{nnmairix} groups for. Of course, you could first use
4800@code{nnmairix-goto-original-article} (@pxref{nnmairix keyboard
4801shortcuts}) and then read the mail in the original group, but that's
4802even more cumbersome.
4803
4804Clearly, the easiest way would be if marks could somehow be
4805automatically set for the original article. This is exactly what
4806@emph{marks propagation} is about.
4807
4808Marks propagation is deactivated by default. You can activate it for a
4809certain @code{nnmairix} group with
4810@code{nnmairix-group-toggle-propmarks-this-group} (bound to @kbd{G b
4811p}). This function will warn you if you try to use it with your default
4812search group; the reason is that the default search group is used for
4813temporary searches, and it's easy to accidentally propagate marks from
4814this group. However, you can ignore this warning if you really want to.
4815
4816With marks propagation enabled, all the marks you set in a @code{nnmairix}
4817group should now be propagated to the original article. For example,
4818you can now tick an article (by default with @kbd{!}) and this mark should
4819magically be set for the original article, too.
4820
4821A few more remarks which you may or may not want to know:
4822
4823@vindex nnmairix-propagate-marks-upon-close
4824Marks will not be set immediately, but only upon closing a group. This
4825not only makes marks propagation faster, it also avoids problems with
4826dangling symlinks when dealing with maildir files (since changing flags
4827will change the file name). You can also control when to propagate marks
4828via @code{nnmairix-propagate-marks-upon-close} (see the doc-string for
4829details).
4830
4831Obviously, @code{nnmairix} will have to look up the original group for every
4832article you want to set marks for. If available, @code{nnmairix} will first use
4833the registry for determining the original group. The registry is very
4834fast, hence you should really, really enable the registry when using
4835marks propagation. If you don't have to worry about RAM and disc space,
4836set @code{gnus-registry-max-entries} to a large enough value; to be on
4837the safe side, choose roughly the amount of mails you index with mairix.
4838
4839@vindex nnmairix-only-use-registry
4840If you don't want to use the registry or the registry hasn't seen the
4841original article yet, @code{nnmairix} will use an additional mairix search
4842for determining the file path of the article. This, of course, is way
4843slower than the registry - if you set hundreds or even thousands of
4844marks this way, it might take some time. You can avoid this situation
4845by setting @code{nnmairix-only-use-registry} to t.
4846
4847Maybe you also want to propagate marks the other way round, i.e. if you
4848tick an article in a "real" mail group, you'd like to have the same
4849article in a @code{nnmairix} group ticked, too. For several good
4850reasons, this can only be done efficiently if you use maildir. To
4851immediately contradict myself, let me mention that it WON'T work with
4852@code{nnmaildir}, since @code{nnmaildir} stores the marks externally and
4853not in the file name. Therefore, propagating marks to @code{nnmairix}
4854groups will usually only work if you use an IMAP server which uses
4855maildir as its file format.
4856
4857@vindex nnmairix-propagate-marks-to-nnmairix-groups
4858If you work with this setup, just set
4859@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t} and see what
4860happens. If you don't like what you see, just set it to @code{nil} again. One
4861problem might be that you get a wrong number of unread articles; this
4862usually happens when you delete or expire articles in the original
4863groups. When this happens, you can recreate the @code{nnmairix} group on the
4864back end using @kbd{G b d}.
4865
4866@node nnmairix tips and tricks
4867@subsubsection nnmairix tips and tricks
4868
4869@itemize
4870@item
4871Checking Mail
4872
4873@findex nnmairix-update-groups
4874I put all my important mail groups at group level 1. The mairix groups
4875have group level 5, so they do not get checked at start up (@pxref{Group
4876Levels}).
4877
4878I use the following to check for mails:
4879
4880@lisp
4881(defun my-check-mail-mairix-update (level)
4882 (interactive "P")
4883 ;; if no prefix given, set level=1
4884 (gnus-group-get-new-news (or level 1))
4885 (nnmairix-update-groups "mairixsearch" t t)
4886 (gnus-group-list-groups))
4887
4888(define-key gnus-group-mode-map "g" 'my-check-mail-mairix-update)
4889@end lisp
4890
4891Instead of @samp{"mairixsearch"} use the name of your @code{nnmairix}
4892server. See the doc string for @code{nnmairix-update-groups} for
4893details.
4894
4895@item
4896Example: search group for ticked articles
4897
4898For example, you can create a group for all ticked articles, where the
4899articles always stay unread:
4900
4901Hit @kbd{G b g}, enter group name (e.g. @samp{important}), use
4902@samp{F:f} as query and do not include threads.
4903
4904Now activate marks propagation for this group by using @kbd{G b p}. Then
4905activate the always-unread feature by using @kbd{G b r} twice.
4906
4907So far so good - but how do you remove the tick marks in the @code{nnmairix}
4908group? There are two options: You may simply use
4909@code{nnmairix-remove-tick-mark-original-article} (bound to @kbd{$ u}) to remove
4910tick marks from the original article. The other possibility is to set
4911@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t}, but see the above
4912comments about this option. If it works for you, the tick marks should
4913also exist in the @code{nnmairix} group and you can remove them as usual,
4914e.g. by marking an article as read.
4915
4916When you have removed a tick mark from the original article, this
4917article should vanish from the @code{nnmairix} group after you have updated the
4918mairix database and updated the group. Fortunately, there is a function
4919for doing exactly that: @code{nnmairix-update-groups}. See the previous code
4920snippet and the doc string for details.
4921
4922@item
4923Dealing with auto-subscription of mail groups
4924
4925As described before, all @code{nnmairix} groups are in fact stored on
4926the mail back end in the form @samp{zz_mairix-<NAME>-<NUMBER>}. You can
4927see them when you enter the back end server in the server buffer. You
4928should not subscribe these groups! Unfortunately, these groups will
4929usually get @strong{auto-subscribed} when you use @code{nnmaildir} or
4930@code{nnml}, i.e. you will suddenly see groups of the form
4931@samp{zz_mairix*} pop up in your group buffer. If this happens to you,
4932simply kill these groups with C-k. For avoiding this, turn off
4933auto-subscription completely by setting the variable
4934@code{gnus-auto-subscribed-groups} to @code{nil} (@pxref{Filtering New
4935Groups}), or if you like to keep this feature use the following kludge
4936for turning it off for all groups beginning with @samp{zz_}:
4937
4938@lisp
4939(setq gnus-auto-subscribed-groups
4940 "^\\(nnml\\|nnfolder\\|nnmbox\\|nnmh\\|nnbabyl\\|nnmaildir\\).*:\\([^z]\\|z$\\|\\z[^z]\\|zz$\\|zz[^_]\\|zz_$\\).*")
4941@end lisp
4942
4943@end itemize
4944
4945@node nnmairix caveats
4946@subsubsection nnmairix caveats
4947
4948@itemize
4949@item
4950If you use the Gnus agent (@pxref{Gnus Unplugged}): don't agentize
4951@code{nnmairix} groups (though I have no idea what happens if you do).
4952
4953@item
4954If you use the Gnus registry: don't use the registry with
4955@code{nnmairix} groups (put them in
4956@code{gnus-registry-unfollowed-groups}). Be @strong{extra careful} if
4957you use @code{gnus-registry-split-fancy-with-parent} - mails which are
4958split into @code{nnmairix} groups are usually gone for good as soon as
4959you check the group for new mail (yes, it has happened to me...).
4960
4961@item
4962Therefore: @strong{Never ever} put ``real'' mails into @code{nnmairix}
4963groups (you shouldn't be able to, anyway).
4964
4965@item
4966mairix does only support us-ascii characters.
4967
4968@item
4969@code{nnmairix} uses a rather brute force method to force Gnus to
4970completely reread the group on the mail back end after mairix was
4971called - it simply deletes and re-creates the group on the mail
4972back end. So far, this has worked for me without any problems, and I
4973don't see how @code{nnmairix} could delete other mail groups than its
4974own, but anyway: you really should have a backup of your mail
4975folders.
4976
4977@item
4978All necessary information is stored in the group parameters
4979(@pxref{Group Parameters}). This has the advantage that no active file
4980is needed, but also implies that when you kill a @code{nnmairix} group,
4981it is gone for good.
4982
4983@item
4984@findex nnmairix-purge-old-groups
4985If you create and kill a lot of @code{nnmairix} groups, the
4986``zz_mairix-*'' groups will accumulate on the mail back end server. To
4987delete old groups which are no longer needed, call
4988@code{nnmairix-purge-old-groups}. Note that this assumes that you don't
4989save any ``real'' mail in folders of the form
4990@code{zz_mairix-<NAME>-<NUMBER>}. You can change the prefix of
4991@code{nnmairix} groups by changing the variable
4992@code{nnmairix-group-prefix}.
4993
4994@item
4995The following only applies if you @strong{don't} use the mentioned patch
4996for mairix (@pxref{Propagating marks}):
4997
4998A problem can occur when using @code{nnmairix} with maildir folders and
4999comes with the fact that maildir stores mail flags like @samp{Seen} or
5000@samp{Replied} by appending chars @samp{S} and @samp{R} to the message
5001file name, respectively. This implies that currently you would have to
5002update the mairix database not only when new mail arrives, but also when
5003mail flags are changing. The same applies to new mails which are indexed
5004while they are still in the @samp{new} folder but then get moved to
5005@samp{cur} when Gnus has seen the mail. If you don't update the database
5006after this has happened, a mairix query can lead to symlinks pointing to
5007non-existing files. In Gnus, these messages will usually appear with
5008``(none)'' entries in the header and can't be accessed. If this happens
5009to you, using @kbd{G b u} and updating the group will usually fix this.
5010
5011@end itemize
5012
4359@node Misc Group Stuff 5013@node Misc Group Stuff
4360@section Misc Group Stuff 5014@section Misc Group Stuff
4361 5015