diff options
| author | Miles Bader | 2008-06-06 22:53:14 +0000 |
|---|---|---|
| committer | Miles Bader | 2008-06-06 22:53:14 +0000 |
| commit | e6d2d263da3c83033860f408bc400386b54ff288 (patch) | |
| tree | c4c0f27e446dee40040fa777ee9735285d85aeda /doc | |
| parent | 2a6c4d7524018fcf0fe9fa9657c67a9376a8a5dc (diff) | |
| download | emacs-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/ChangeLog | 17 | ||||
| -rw-r--r-- | doc/misc/gnus.texi | 656 |
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 @@ | |||
| 1 | 2008-06-05 Reiner Steib <Reiner.Steib@gmx.de> | ||
| 2 | |||
| 3 | * gnus.texi (nnmairix): Markup and othe minor fixes. | ||
| 4 | |||
| 5 | 2008-06-05 David Engster <dengste@eml.cc> | ||
| 6 | |||
| 7 | * gnus.texi (nnmairix): New nodes describing nnmairix.el. | ||
| 8 | |||
| 9 | 2008-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 | |||
| 1 | 2008-05-30 "Felix -" <felix.1@canids.net> (tiny change) | 14 | 2008-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 | ||
| 43 | 2008-04-13 Reiner Steib <Reiner.Steib@gmx.de> | 56 | 2008-04-13 Reiner Steib <Reiner.Steib@gmx.de> |
| 44 | 57 | ||
| 45 | * gnus.texi (Searching, nnir.el, nnmairix.el): New nodes. | ||
| 46 | |||
| 47 | 2008-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 | ||
| 51 | 2008-04-12 Adrian Aichner <adrian@xemacs.org> | 60 | 2008-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 | |||
| 3167 | question to @code{gnus-newsgroup-variables}. @xref{Various Summary | 3168 | question to @code{gnus-newsgroup-variables}. @xref{Various Summary |
| 3168 | Stuff}. So if you want to set @code{message-from-style} via the group | 3169 | Stuff}. So if you want to set @code{message-from-style} via the group |
| 3169 | parameters, then you may need the following statement elsewhere in your | 3170 | parameters, 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 | |||
| 4356 | header will be displayed incorrectly in the article buffer. | 4357 | header 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 | |||
| 4370 | FIXME: This node is a stub. | ||
| 4371 | |||
| 4372 | FIXME: Add a brief overview of Gnus search capabilities. A brief | ||
| 4373 | comparison of nnir, nnmairix, contrib/gnus-namazu would be nice | ||
| 4374 | as well. | ||
| 4375 | |||
| 4376 | FIXME: Explain difference to @ref{Searching for Articles}, add reference | ||
| 4377 | and back-reference. | ||
| 4378 | |||
| 4379 | @node nnir | ||
| 4380 | @subsection nnir | ||
| 4381 | |||
| 4382 | FIXME: 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 | ||
| 4390 | This paragraph describes how to set up mairix and the back end | ||
| 4391 | @code{nnmairix} for indexing and searching your mail from within | ||
| 4392 | Gnus. Additionally, you can create permanent ``smart'' groups which are | ||
| 4393 | bound 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 | |||
| 4414 | Mairix is a tool for indexing and searching words in locally stored | ||
| 4415 | mail. It was written by Richard Curnow and is licensed under the | ||
| 4416 | GPL. Mairix comes with most popular GNU/Linux distributions, but it also | ||
| 4417 | runs under Windows (with cygwin), Mac OS X and Solaris. The homepage can | ||
| 4418 | be found at | ||
| 4419 | @uref{http://www.rpcurnow.force9.co.uk/mairix/index.html} | ||
| 4420 | |||
| 4421 | Though mairix might not be as flexible as other search tools like | ||
| 4422 | swish++ or namazu, which you can use via the @code{nnir} back end, it | ||
| 4423 | has the prime advantage of being incredibly fast. On current systems, it | ||
| 4424 | can easily search through headers and message bodies of thousands and | ||
| 4425 | thousands of mails in well under a second. Building the database | ||
| 4426 | necessary for searching might take a minute or two, but only has to be | ||
| 4427 | done once fully. Afterwards, the updates are done incrementally and | ||
| 4428 | therefore are really fast, too. Additionally, mairix is very easy to set | ||
| 4429 | up. | ||
| 4430 | |||
| 4431 | For maximum speed though, mairix should be used with mails stored in | ||
| 4432 | @code{Maildir} or @code{MH} format (this includes the @code{nnml} back | ||
| 4433 | end), although it also works with mbox. Mairix presents the search | ||
| 4434 | results by populating a @emph{virtual} maildir/MH folder with symlinks | ||
| 4435 | which point to the ``real'' message files (if mbox is used, copies are | ||
| 4436 | made). Since mairix already presents search results in such a virtual | ||
| 4437 | mail folder, it is very well suited for using it as an external program | ||
| 4438 | for creating @emph{smart} mail folders, which represent certain mail | ||
| 4439 | searches. This is similar to a Kiboze group (@pxref{Kibozed Groups}), | ||
| 4440 | but much faster. | ||
| 4441 | |||
| 4442 | @node nnmairix requirements | ||
| 4443 | @subsubsection nnmairix requirements | ||
| 4444 | |||
| 4445 | Mairix searches local mail - that means, mairix absolutely must have | ||
| 4446 | direct access to your mail folders. If your mail resides on another | ||
| 4447 | server (e.g. an @acronym{IMAP} server) and you happen to have shell | ||
| 4448 | access, @code{nnmairix} supports running mairix remotely, e.g. via ssh. | ||
| 4449 | |||
| 4450 | Additionally, @code{nnmairix} only supports the following Gnus back | ||
| 4451 | ends: @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 | |||
| 4456 | If you absolutely must use mbox and still want to use @code{nnmairix}, | ||
| 4457 | you 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 | ||
| 4459 | files, so just change to MH or Maildir already... | ||
| 4460 | |||
| 4461 | @node What nnmairix does | ||
| 4462 | @subsubsection What nnmairix does | ||
| 4463 | |||
| 4464 | The back end @code{nnmairix} enables you to call mairix from within Gnus, | ||
| 4465 | either to query mairix with a search term or to update the | ||
| 4466 | database. While visiting a message in the summary buffer, you can use | ||
| 4467 | several pre-defined shortcuts for calling mairix, e.g. to quickly | ||
| 4468 | search for all mails from the sender of the current message or to | ||
| 4469 | display the whole thread associated with the message, even if the | ||
| 4470 | mails are in different folders. | ||
| 4471 | |||
| 4472 | Additionally, you can create permanent @code{nnmairix} groups which are bound | ||
| 4473 | to certain mairix searches. This way, you can easily create a group | ||
| 4474 | containing mails from a certain sender, with a certain subject line or | ||
| 4475 | even for one specific thread based on the Message-ID. If you check for | ||
| 4476 | new mail in these folders (e.g. by pressing @kbd{g} or @kbd{M-g}), they | ||
| 4477 | automatically update themselves by calling mairix. | ||
| 4478 | |||
| 4479 | You might ask why you need @code{nnmairix} at all, since mairix already | ||
| 4480 | creates the group, populates it with links to the mails so that you can | ||
| 4481 | then access it with Gnus, right? Well, this @emph{might} work, but often | ||
| 4482 | does not - at least not without problems. Most probably you will get | ||
| 4483 | strange article counts, and sometimes you might see mails which Gnus | ||
| 4484 | claims have already been canceled and are inaccessible. This is due to | ||
| 4485 | the fact that Gnus isn't really amused when things are happening behind | ||
| 4486 | its back. Another problem can be the mail back end itself, e.g. if you | ||
| 4487 | use mairix with an @acronym{IMAP} server (I had Dovecot complaining | ||
| 4488 | about corrupt index files when mairix changed the contents of the search | ||
| 4489 | group). Using @code{nnmairix} should circumvent these problems. | ||
| 4490 | |||
| 4491 | @code{nnmairix} is not really a mail back end - it's actually more like a | ||
| 4492 | wrapper, sitting between a ``real'' mail back end where mairix stores the | ||
| 4493 | searches and the Gnus front end. You can choose between three different | ||
| 4494 | mail back ends for the mairix folders: @code{nnml}, @code{nnmaildir} or | ||
| 4495 | @code{nnimap}. @code{nnmairix} will call the mairix binary so that the | ||
| 4496 | search results are stored in folders named | ||
| 4497 | @code{zz_mairix-<NAME>-<NUMBER>} on this mail back end, but it will | ||
| 4498 | present these folders in the Gnus front end only with @code{<NAME>}. You | ||
| 4499 | can use an existing mail back end where you already store your mail, but | ||
| 4500 | if you're uncomfortable with @code{nnmairix} creating new mail groups | ||
| 4501 | alongside your other mail, you can also create e.g. a new | ||
| 4502 | @code{nnmaildir} server exclusively for mairix. However, a special case | ||
| 4503 | exists 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 | ||
| 4505 | the same @code{nnimap} back end. | ||
| 4506 | |||
| 4507 | @node Setting up mairix | ||
| 4508 | @subsubsection Setting up mairix | ||
| 4509 | |||
| 4510 | First: create a backup of your mail folders (@pxref{nnmairix caveats}). | ||
| 4511 | |||
| 4512 | Setting 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 | ||
| 4517 | base=~/Maildir | ||
| 4518 | @end example | ||
| 4519 | |||
| 4520 | This is the base folder for your mails. All the following paths are | ||
| 4521 | relative 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 | ||
| 4527 | maildir= ... your maildir folders which should be indexed ... | ||
| 4528 | mh= ... your nnml/mh folders which should be indexed ... | ||
| 4529 | mbox = ... your mbox files which should be indexed ... | ||
| 4530 | @end example | ||
| 4531 | |||
| 4532 | Specify all your maildir/nnml folders and mbox files (relative to the | ||
| 4533 | base path!) you want to index with mairix. See the man-page for | ||
| 4534 | mairixrc for details. | ||
| 4535 | |||
| 4536 | @example | ||
| 4537 | omit=zz_mairix-* | ||
| 4538 | @end example | ||
| 4539 | |||
| 4540 | @vindex nnmairix-group-prefix | ||
| 4541 | This should make sure that you don't accidentally index the mairix | ||
| 4542 | search results. You can change the prefix of these folders with the | ||
| 4543 | variable @code{nnmairix-group-prefix}. | ||
| 4544 | |||
| 4545 | @c FIXME: Add typical examples? | ||
| 4546 | @example | ||
| 4547 | mformat= ... 'maildir' or 'mh' ... | ||
| 4548 | database= ... location of database file ... | ||
| 4549 | @end example | ||
| 4550 | |||
| 4551 | The @code{format} setting specifies the output format for the mairix | ||
| 4552 | search folder. Set this to @code{mh} if you want to access search results | ||
| 4553 | with @code{nnml}. Otherwise choose @code{maildir}. | ||
| 4554 | |||
| 4555 | See the man pages for mairix and mairixrc for further options. Now | ||
| 4556 | simply call @code{mairix} to create the index for the first time. | ||
| 4557 | |||
| 4558 | @node Configuring nnmairix | ||
| 4559 | @subsubsection Configuring nnmairix | ||
| 4560 | |||
| 4561 | In group mode, type @kbd{G b c} | ||
| 4562 | (@code{nnmairix-create-server-and-default-group}). This will ask you for all | ||
| 4563 | necessary information and create a @code{nnmairix} server as a foreign | ||
| 4564 | server. You will have to specify the following: | ||
| 4565 | |||
| 4566 | @itemize @bullet | ||
| 4567 | |||
| 4568 | @item | ||
| 4569 | The @strong{name} of the @code{nnmairix} server - choose whatever you | ||
| 4570 | want. | ||
| 4571 | |||
| 4572 | @item | ||
| 4573 | The @strong{mail back end} where mairix should stores its | ||
| 4574 | searches. Currently @code{nnmaildir}, @code{nnimap} and @code{nnml} are | ||
| 4575 | supported. As explained above, for locally stored mails, this can be an | ||
| 4576 | existing mail back end where you store your mails. However, you can also | ||
| 4577 | create e.g. a new @code{nnmaildir} server exclusively for | ||
| 4578 | @code{nnmairix} in your secondary select methods (@pxref{Finding the | ||
| 4579 | News}). If you want to use mairix remotely on an @acronym{IMAP} server, | ||
| 4580 | you have to choose the corresponding @code{nnimap} back end here. | ||
| 4581 | |||
| 4582 | @item | ||
| 4583 | @vindex nnmairix-mairix-search-options | ||
| 4584 | The @strong{command} to call the mairix binary. This will usually just | ||
| 4585 | be @code{mairix}, but you can also choose something like @code{ssh | ||
| 4586 | SERVER 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 | ||
| 4588 | mairix, you could do this here, but better use the variable | ||
| 4589 | @code{nnmairix-mairix-search-options} instead. | ||
| 4590 | |||
| 4591 | @item | ||
| 4592 | The name of the @strong{default search group}. This will be the group | ||
| 4593 | where all temporary mairix searches are stored, i.e. all searches which | ||
| 4594 | are not bound to permanent @code{nnmairix} groups. Choose whatever you | ||
| 4595 | like. | ||
| 4596 | |||
| 4597 | @item | ||
| 4598 | If the mail back end is @code{nnimap} or @code{nnmaildir}, you will be | ||
| 4599 | asked if you work with @strong{Maildir++}, i.e. with hidden maildir | ||
| 4600 | folders (=beginning with a dot). For example, you have to answer | ||
| 4601 | @samp{yes} here if you work with the Dovecot @acronym{IMAP} | ||
| 4602 | server. Otherwise, you should answer @samp{no} here. | ||
| 4603 | |||
| 4604 | @end itemize | ||
| 4605 | |||
| 4606 | @node nnmairix keyboard shortcuts | ||
| 4607 | @subsubsection nnmairix keyboard shortcuts | ||
| 4608 | |||
| 4609 | In 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 | ||
| 4616 | Creates @code{nnmairix} server and default search group for this server | ||
| 4617 | (@code{nnmairix-create-server-and-default-group}). You should have done | ||
| 4618 | this by now (@pxref{Configuring nnmairix}). | ||
| 4619 | |||
| 4620 | @item G b s | ||
| 4621 | @kindex G b s (Group) | ||
| 4622 | @findex nnmairix-search | ||
| 4623 | Prompts for query which is then sent to the mairix binary. Search | ||
| 4624 | results are put into the default search group which is automatically | ||
| 4625 | displayed (@code{nnmairix-search}). | ||
| 4626 | |||
| 4627 | @item G b m | ||
| 4628 | @kindex G b m (Group) | ||
| 4629 | @findex nnmairix-widget-search | ||
| 4630 | Allows you to create a mairix search or a permanent group more | ||
| 4631 | comfortably using graphical widgets, similar to a customization | ||
| 4632 | group. 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 | ||
| 4637 | Another command for creating a mairix query more comfortably, but uses | ||
| 4638 | only the minibuffer (@code{nnmairix-search-interactive}). | ||
| 4639 | |||
| 4640 | @item G b g | ||
| 4641 | @kindex G b g (Group) | ||
| 4642 | @findex nnmairix-create-search-group | ||
| 4643 | Creates a permanent group which is associated with a search query | ||
| 4644 | (@code{nnmairix-create-search-group}). The @code{nnmairix} back end | ||
| 4645 | automatically 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 | ||
| 4651 | Changes 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 | ||
| 4657 | Toggles the 'threads' parameter for the @code{nnmairix} group under cursor, | ||
| 4658 | i.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 | ||
| 4665 | Calls mairix binary for updating the database | ||
| 4666 | (@code{nnmairix-update-database}). The default parameters are @code{-F} | ||
| 4667 | and @code{-Q} for making this as fast as possible (see variable | ||
| 4668 | @code{nnmairix-mairix-update-options} for defining these default | ||
| 4669 | options). | ||
| 4670 | |||
| 4671 | @item G b r | ||
| 4672 | @kindex G b r (Group) | ||
| 4673 | @findex nnmairix-group-toggle-readmarks-this-group | ||
| 4674 | Keep articles in this @code{nnmairix} group always read or unread, or leave the | ||
| 4675 | marks 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 | ||
| 4680 | Recreate @code{nnmairix} group on the ``real'' mail back end | ||
| 4681 | (@code{nnmairix-group-delete-recreate-this-group}). You can do this if | ||
| 4682 | you 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 | ||
| 4687 | Toggles the @code{allow-fast} parameters for group under cursor | ||
| 4688 | (@code{nnmairix-group-toggle-allowfast-this-group}). The default | ||
| 4689 | behavior of @code{nnmairix} is to do a mairix search every time you | ||
| 4690 | update or enter the group. With the @code{allow-fast} parameter set, | ||
| 4691 | mairix will only be called when you explicitly update the group, but not | ||
| 4692 | upon entering. This makes entering the group faster, but it may also | ||
| 4693 | lead to dangling symlinks if something changed between updating and | ||
| 4694 | entering 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 | ||
| 4699 | Toggle marks propagation for this group | ||
| 4700 | (@code{nnmairix-group-toggle-propmarks-this-group}). (@pxref{Propagating | ||
| 4701 | marks}). | ||
| 4702 | |||
| 4703 | @item G b o | ||
| 4704 | @kindex G b o (Group) | ||
| 4705 | @findex nnmairix-propagate-marks | ||
| 4706 | Manually 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 | |||
| 4711 | In summary mode: | ||
| 4712 | |||
| 4713 | @table @kbd | ||
| 4714 | |||
| 4715 | @item $ m | ||
| 4716 | @kindex $ m (Summary) | ||
| 4717 | @findex nnmairix-widget-search-from-this-article | ||
| 4718 | Allows you to create a mairix query or group based on the current | ||
| 4719 | message 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 | ||
| 4725 | Interactively creates a new search group with query based on the current | ||
| 4726 | message, 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 | ||
| 4732 | Searches thread for the current article | ||
| 4733 | (@code{nnmairix-search-thread-this-article}). This is effectively a | ||
| 4734 | shortcut for calling @code{nnmairix-search} with @samp{m:msgid} of the | ||
| 4735 | current article and enabled threads. | ||
| 4736 | |||
| 4737 | @item $ f | ||
| 4738 | @kindex $ f (Summary) | ||
| 4739 | @findex nnmairix-search-from-this-article | ||
| 4740 | Searches all messages from sender of the current article | ||
| 4741 | (@code{nnmairix-search-from-this-article}). This is a shortcut for | ||
| 4742 | calling @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 | ||
| 4748 | originally came from and displays the article in this group, so that | ||
| 4749 | e.g. replying to this article the correct posting styles/group | ||
| 4750 | parameters are applied (@code{nnmairix-goto-original-article}). This | ||
| 4751 | function will use the registry if available, but can also parse the | ||
| 4752 | article file path as a fallback method. | ||
| 4753 | |||
| 4754 | @item $ u | ||
| 4755 | @kindex $ u (Summary) | ||
| 4756 | @findex nnmairix-remove-tick-mark-original-article | ||
| 4757 | Remove possibly existing tick mark from original article | ||
| 4758 | (@code{nnmairix-remove-tick-mark-original-article}). (@pxref{nnmairix | ||
| 4759 | tips and tricks}). | ||
| 4760 | |||
| 4761 | @end table | ||
| 4762 | |||
| 4763 | @node Propagating marks | ||
| 4764 | @subsubsection Propagating marks | ||
| 4765 | |||
| 4766 | First of: you really need a patched mairix binary for using the marks | ||
| 4767 | propagation feature efficiently. Otherwise, you would have to update | ||
| 4768 | the mairix database all the time. You can get the patch at | ||
| 4769 | |||
| 4770 | @uref{http://m61s02.vlinux.de/mairix-maildir-patch.tar} | ||
| 4771 | |||
| 4772 | You need the mairix v0.21 source code for this patch; everything else | ||
| 4773 | is explained in the accompanied readme file. If you don't want to use | ||
| 4774 | marks propagation, you don't have to apply these patches, but they also | ||
| 4775 | fix some annoyances regarding changing maildir flags, so it might still | ||
| 4776 | be useful to you. | ||
| 4777 | |||
| 4778 | With the patched mairix binary, you can use @code{nnmairix} as an | ||
| 4779 | alternative to mail splitting (@pxref{Fancy Mail Splitting}). For | ||
| 4780 | example, instead of splitting all mails from @samp{david@@foobar.com} | ||
| 4781 | into 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 | ||
| 4783 | all about: simply put everything in one mail folder and dynamically | ||
| 4784 | create searches instead of splitting. This is more flexible, since you | ||
| 4785 | can dynamically change your folders any time you want to. This also | ||
| 4786 | implies that you will usually read your mails in the @code{nnmairix} | ||
| 4787 | groups instead of your ``real'' mail groups. | ||
| 4788 | |||
| 4789 | There 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} | ||
| 4792 | search group (provided you have updated the mairix database). Now you | ||
| 4793 | enter the @code{nnmairix} group and read the mail. The mail will be | ||
| 4794 | marked as read, but only in the @code{nnmairix} group - in the ``real'' | ||
| 4795 | mail group it will be still shown as unread. | ||
| 4796 | |||
| 4797 | You could now catch up the mail group (@pxref{Group Data}), but this is | ||
| 4798 | tedious and error prone, since you may overlook mails you don't have | ||
| 4799 | created @code{nnmairix} groups for. Of course, you could first use | ||
| 4800 | @code{nnmairix-goto-original-article} (@pxref{nnmairix keyboard | ||
| 4801 | shortcuts}) and then read the mail in the original group, but that's | ||
| 4802 | even more cumbersome. | ||
| 4803 | |||
| 4804 | Clearly, the easiest way would be if marks could somehow be | ||
| 4805 | automatically set for the original article. This is exactly what | ||
| 4806 | @emph{marks propagation} is about. | ||
| 4807 | |||
| 4808 | Marks propagation is deactivated by default. You can activate it for a | ||
| 4809 | certain @code{nnmairix} group with | ||
| 4810 | @code{nnmairix-group-toggle-propmarks-this-group} (bound to @kbd{G b | ||
| 4811 | p}). This function will warn you if you try to use it with your default | ||
| 4812 | search group; the reason is that the default search group is used for | ||
| 4813 | temporary searches, and it's easy to accidentally propagate marks from | ||
| 4814 | this group. However, you can ignore this warning if you really want to. | ||
| 4815 | |||
| 4816 | With marks propagation enabled, all the marks you set in a @code{nnmairix} | ||
| 4817 | group should now be propagated to the original article. For example, | ||
| 4818 | you can now tick an article (by default with @kbd{!}) and this mark should | ||
| 4819 | magically be set for the original article, too. | ||
| 4820 | |||
| 4821 | A few more remarks which you may or may not want to know: | ||
| 4822 | |||
| 4823 | @vindex nnmairix-propagate-marks-upon-close | ||
| 4824 | Marks will not be set immediately, but only upon closing a group. This | ||
| 4825 | not only makes marks propagation faster, it also avoids problems with | ||
| 4826 | dangling symlinks when dealing with maildir files (since changing flags | ||
| 4827 | will change the file name). You can also control when to propagate marks | ||
| 4828 | via @code{nnmairix-propagate-marks-upon-close} (see the doc-string for | ||
| 4829 | details). | ||
| 4830 | |||
| 4831 | Obviously, @code{nnmairix} will have to look up the original group for every | ||
| 4832 | article you want to set marks for. If available, @code{nnmairix} will first use | ||
| 4833 | the registry for determining the original group. The registry is very | ||
| 4834 | fast, hence you should really, really enable the registry when using | ||
| 4835 | marks propagation. If you don't have to worry about RAM and disc space, | ||
| 4836 | set @code{gnus-registry-max-entries} to a large enough value; to be on | ||
| 4837 | the safe side, choose roughly the amount of mails you index with mairix. | ||
| 4838 | |||
| 4839 | @vindex nnmairix-only-use-registry | ||
| 4840 | If you don't want to use the registry or the registry hasn't seen the | ||
| 4841 | original article yet, @code{nnmairix} will use an additional mairix search | ||
| 4842 | for determining the file path of the article. This, of course, is way | ||
| 4843 | slower than the registry - if you set hundreds or even thousands of | ||
| 4844 | marks this way, it might take some time. You can avoid this situation | ||
| 4845 | by setting @code{nnmairix-only-use-registry} to t. | ||
| 4846 | |||
| 4847 | Maybe you also want to propagate marks the other way round, i.e. if you | ||
| 4848 | tick an article in a "real" mail group, you'd like to have the same | ||
| 4849 | article in a @code{nnmairix} group ticked, too. For several good | ||
| 4850 | reasons, this can only be done efficiently if you use maildir. To | ||
| 4851 | immediately contradict myself, let me mention that it WON'T work with | ||
| 4852 | @code{nnmaildir}, since @code{nnmaildir} stores the marks externally and | ||
| 4853 | not in the file name. Therefore, propagating marks to @code{nnmairix} | ||
| 4854 | groups will usually only work if you use an IMAP server which uses | ||
| 4855 | maildir as its file format. | ||
| 4856 | |||
| 4857 | @vindex nnmairix-propagate-marks-to-nnmairix-groups | ||
| 4858 | If you work with this setup, just set | ||
| 4859 | @code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t} and see what | ||
| 4860 | happens. If you don't like what you see, just set it to @code{nil} again. One | ||
| 4861 | problem might be that you get a wrong number of unread articles; this | ||
| 4862 | usually happens when you delete or expire articles in the original | ||
| 4863 | groups. When this happens, you can recreate the @code{nnmairix} group on the | ||
| 4864 | back end using @kbd{G b d}. | ||
| 4865 | |||
| 4866 | @node nnmairix tips and tricks | ||
| 4867 | @subsubsection nnmairix tips and tricks | ||
| 4868 | |||
| 4869 | @itemize | ||
| 4870 | @item | ||
| 4871 | Checking Mail | ||
| 4872 | |||
| 4873 | @findex nnmairix-update-groups | ||
| 4874 | I put all my important mail groups at group level 1. The mairix groups | ||
| 4875 | have group level 5, so they do not get checked at start up (@pxref{Group | ||
| 4876 | Levels}). | ||
| 4877 | |||
| 4878 | I 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 | |||
| 4891 | Instead of @samp{"mairixsearch"} use the name of your @code{nnmairix} | ||
| 4892 | server. See the doc string for @code{nnmairix-update-groups} for | ||
| 4893 | details. | ||
| 4894 | |||
| 4895 | @item | ||
| 4896 | Example: search group for ticked articles | ||
| 4897 | |||
| 4898 | For example, you can create a group for all ticked articles, where the | ||
| 4899 | articles always stay unread: | ||
| 4900 | |||
| 4901 | Hit @kbd{G b g}, enter group name (e.g. @samp{important}), use | ||
| 4902 | @samp{F:f} as query and do not include threads. | ||
| 4903 | |||
| 4904 | Now activate marks propagation for this group by using @kbd{G b p}. Then | ||
| 4905 | activate the always-unread feature by using @kbd{G b r} twice. | ||
| 4906 | |||
| 4907 | So far so good - but how do you remove the tick marks in the @code{nnmairix} | ||
| 4908 | group? There are two options: You may simply use | ||
| 4909 | @code{nnmairix-remove-tick-mark-original-article} (bound to @kbd{$ u}) to remove | ||
| 4910 | tick 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 | ||
| 4912 | comments about this option. If it works for you, the tick marks should | ||
| 4913 | also exist in the @code{nnmairix} group and you can remove them as usual, | ||
| 4914 | e.g. by marking an article as read. | ||
| 4915 | |||
| 4916 | When you have removed a tick mark from the original article, this | ||
| 4917 | article should vanish from the @code{nnmairix} group after you have updated the | ||
| 4918 | mairix database and updated the group. Fortunately, there is a function | ||
| 4919 | for doing exactly that: @code{nnmairix-update-groups}. See the previous code | ||
| 4920 | snippet and the doc string for details. | ||
| 4921 | |||
| 4922 | @item | ||
| 4923 | Dealing with auto-subscription of mail groups | ||
| 4924 | |||
| 4925 | As described before, all @code{nnmairix} groups are in fact stored on | ||
| 4926 | the mail back end in the form @samp{zz_mairix-<NAME>-<NUMBER>}. You can | ||
| 4927 | see them when you enter the back end server in the server buffer. You | ||
| 4928 | should not subscribe these groups! Unfortunately, these groups will | ||
| 4929 | usually 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, | ||
| 4932 | simply kill these groups with C-k. For avoiding this, turn off | ||
| 4933 | auto-subscription completely by setting the variable | ||
| 4934 | @code{gnus-auto-subscribed-groups} to @code{nil} (@pxref{Filtering New | ||
| 4935 | Groups}), or if you like to keep this feature use the following kludge | ||
| 4936 | for 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 | ||
| 4950 | If 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 | ||
| 4954 | If 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 | ||
| 4957 | you use @code{gnus-registry-split-fancy-with-parent} - mails which are | ||
| 4958 | split into @code{nnmairix} groups are usually gone for good as soon as | ||
| 4959 | you check the group for new mail (yes, it has happened to me...). | ||
| 4960 | |||
| 4961 | @item | ||
| 4962 | Therefore: @strong{Never ever} put ``real'' mails into @code{nnmairix} | ||
| 4963 | groups (you shouldn't be able to, anyway). | ||
| 4964 | |||
| 4965 | @item | ||
| 4966 | mairix does only support us-ascii characters. | ||
| 4967 | |||
| 4968 | @item | ||
| 4969 | @code{nnmairix} uses a rather brute force method to force Gnus to | ||
| 4970 | completely reread the group on the mail back end after mairix was | ||
| 4971 | called - it simply deletes and re-creates the group on the mail | ||
| 4972 | back end. So far, this has worked for me without any problems, and I | ||
| 4973 | don't see how @code{nnmairix} could delete other mail groups than its | ||
| 4974 | own, but anyway: you really should have a backup of your mail | ||
| 4975 | folders. | ||
| 4976 | |||
| 4977 | @item | ||
| 4978 | All necessary information is stored in the group parameters | ||
| 4979 | (@pxref{Group Parameters}). This has the advantage that no active file | ||
| 4980 | is needed, but also implies that when you kill a @code{nnmairix} group, | ||
| 4981 | it is gone for good. | ||
| 4982 | |||
| 4983 | @item | ||
| 4984 | @findex nnmairix-purge-old-groups | ||
| 4985 | If you create and kill a lot of @code{nnmairix} groups, the | ||
| 4986 | ``zz_mairix-*'' groups will accumulate on the mail back end server. To | ||
| 4987 | delete old groups which are no longer needed, call | ||
| 4988 | @code{nnmairix-purge-old-groups}. Note that this assumes that you don't | ||
| 4989 | save 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 | ||
| 4995 | The following only applies if you @strong{don't} use the mentioned patch | ||
| 4996 | for mairix (@pxref{Propagating marks}): | ||
| 4997 | |||
| 4998 | A problem can occur when using @code{nnmairix} with maildir folders and | ||
| 4999 | comes 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 | ||
| 5001 | file name, respectively. This implies that currently you would have to | ||
| 5002 | update the mairix database not only when new mail arrives, but also when | ||
| 5003 | mail flags are changing. The same applies to new mails which are indexed | ||
| 5004 | while 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 | ||
| 5006 | after this has happened, a mairix query can lead to symlinks pointing to | ||
| 5007 | non-existing files. In Gnus, these messages will usually appear with | ||
| 5008 | ``(none)'' entries in the header and can't be accessed. If this happens | ||
| 5009 | to 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 | ||