From: Ted Zlatanov <tzz@lifelogs.com>
To: ding@gnus.org
Subject: registry doc patch (was: bugs and features)
Date: Mon, 15 Sep 2008 16:00:20 -0500 [thread overview]
Message-ID: <86vdwxnmzf.fsf_-_@lifelogs.com> (raw)
In-Reply-To: <86zlmvkg8p.fsf_-_@lifelogs.com>
[-- Attachment #1: Type: text/plain, Size: 541 bytes --]
On Fri, 29 Aug 2008 10:12:06 -0500 Ted Zlatanov <tzz@lifelogs.com> wrote:
TZ> I also need to write the gnus-registry documentation sometime this century.
The unthinkable has happened. Attached is a patch to the docs to
document the Gnus registry.
I didn't commit it because I'd like some comments (it's a very quick
read) and because the menu update screwed up the Gnus menus in it (I
edited that out of the patch), so I am not sure if the menus are
correct. It's been many years since I edited Texinfo so any hints are
welcome.
Ted
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: registry.gnus.texi.patch --]
[-- Type: text/x-diff, Size: 8698 bytes --]
Index: gnus.texi
===================================================================
RCS file: /usr/local/cvsroot/gnus/texi/gnus.texi,v
retrieving revision 7.305
diff -c -r7.305 gnus.texi
*** gnus.texi 8 Sep 2008 21:29:47 -0000 7.305
--- gnus.texi 15 Sep 2008 20:50:27 -0000
***************
*** 22740,22745 ****
--- 22209,22215 ----
* Fuzzy Matching:: What's the big fuzz?
* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
* Spam Package:: A package for filtering and processing spam.
+ * The Gnus Registry:: A package for tracking messages by Message-ID.
* Other modes:: Interaction with other modes.
* Various Various:: Things that are really various.
@end menu
***************
*** 26502,26507 ****
--- 25972,26190 ----
Save table: (spam-stat-save)
@end smallexample
+ @node The Gnus Registry
+ @section The Gnus Registry
+
+ @cindex registry
+ @cindex split
+ @cindex track
+
+ The Gnus registry is a package that tracks messages by their
+ Message-ID across all backends. This allows Gnus users to do several
+ cool things, be the envy of the locals, get free haircuts, and be
+ experts on world issues. Well, maybe not all of those, but the
+ features are pretty cool.
+
+ Although they will be explained in detail shortly, here's a quick list
+ of said features in case your attention span is... never mind.
+
+ @enumerate
+
+ @item Split messages to their parent
+ This keeps discussions in the same group. You can use the subject and
+ the sender in addition to the Message-ID. Several strategies are
+ available.
+
+ @item Store custom flags and keywords
+ The registry can store custom flags and keywords for a message. For
+ instance, you can mark a message ``To-Do'' this way and the flag will
+ persist whether the message is in the nnimap, nnml, nnmaildir,
+ etc. backends.
+
+ @item Store arbitrary data
+ Through a simple ELisp API, the registry can remember any data for a
+ message. A built-in inverse map, when activated, allows quick lookups
+ of all messages matching a particular set of criteria.
+
+ @end enumerate
+
+
+ @menu
+ * Setup::
+ * Fancy splitting to parent::
+ * Store custom flags and keywords::
+ * Store arbitrary data::
+ @end menu
+
+ @node Setup
+ @subsection Setup
+
+ Fortunately, setting up the Gnus registry is pretty easy:
+
+ @lisp
+ (setq gnus-registry-max-entries 2500
+ gnus-registry-use-long-group-names t)
+
+ (gnus-registry-initialize)
+ @end lisp
+
+ This adds registry saves to Gnus newsrc saves (which happen on exit
+ and when you press @kbd{s} from the @code{*Group*} buffer. It also
+ adds registry calls to article actions in Gnus (copy, move, etc.) so
+ it's not easy to undo the initialization. See
+ @code{gnus-registry-initialize} for the gory details.
+
+ Here are other settings used by the author of the registry (understand
+ what they do before you copy them blindly).
+
+ @lisp
+ (setq
+ gnus-registry-split-strategy 'majority
+ gnus-registry-ignored-groups '(("nntp" t)
+ ("nnrss" t)
+ ("spam" t)
+ ("train" t))
+ gnus-registry-max-entries 500000
+ gnus-registry-use-long-group-names t
+ gnus-registry-track-extra '(sender subject))
+ @end lisp
+
+ They say: keep a lot of messages around, use long group names, track
+ messages by sender and subject (not just parent Message-ID), and when
+ the registry splits incoming mail, use a majority rule to decide where
+ messages should go if there's more than one possibility. In addition,
+ the registry should ignore messages in groups that match ``nntp'',
+ ``nnrss'', ``spam'', or ``train.''
+
+ You are doubtless impressed by all this, but you ask: ``I am a Gnus
+ user, I customize to live. Give me more.'' Here you go, these are
+ the general settings.
+
+ @defvar gnus-registry-unfollowed-groups
+ The groups that will not be followed by
+ @code{gnus-registry-split-fancy-with-parent}. They will still be
+ remembered by the registry. This is a list of regular expressions.
+ @end defvar
+
+ @defvar gnus-registry-ignored-groups
+ The groups that will not be remembered by the registry. This is a
+ list of regular expressions, also available through Group/Topic
+ customization (so you can ignore or keep a specific group or a whole
+ topic).
+ @end defvar
+
+ @defvar gnus-registry-use-long-group-names
+ Whether the registry will use long group names. It's recommended to
+ set this to t, although everything works if you don't. Future
+ functionality will require it.
+ @end defvar
+
+ @defvar gnus-registry-max-entries
+ The number (an integer or nil for unlimited) of entries the registry
+ will keep.
+ @end defvar
+
+ @defvar gnus-registry-cache-file
+ The file where the registry will be stored between Gnus sessions.
+ @end defvar
+
+ @node Fancy splitting to parent
+ @subsection Fancy splitting to parent
+
+ Simply put, this lets you put followup e-mail where it belongs.
+
+ Every message has a Message-ID, which is unique, and the registry
+ remembers it. When the message is moved or copied, the registry will
+ notice this and offer the new group as a choice to the splitting
+ strategy.
+
+ When a followup is made, usually it mentions the original message's
+ Message-ID in the headers. The registry knows this and uses that
+ mention to find the group where the original message lives. You only
+ have to put a rule like this:
+
+ @lisp
+ (setq nnimap-my-split-fancy '(|
+
+ ;; split to parent: you need this
+ (: gnus-registry-split-fancy-with-parent)
+
+ ;; other rules, as an example
+ (: spam-split)
+ ;; default mailbox
+ "mail")
+ @end lisp
+
+ in your fancy split setup. In addition, you may want to customize the
+ following variables.
+
+ @defvar gnus-registry-track-extra
+ This is a list of symbols, so it's best to change it from the
+ Customize interface. By default it's nil, but you may want to track
+ subject and sender as well when splitting by parent. It may work
+ for you. It can be annoying if your mail flow is large and people
+ don't stick to the same groups.
+ @end defvar
+
+ @defvar gnus-registry-split-strategy
+ This is a symbol, so it's best to change it from the Customize
+ interface. By default it's nil, but you may want to set it to
+ @code{'majority} or @code{'first} to split by sender or subject based
+ on the majority of matches or on the first found.
+ @end defvar
+
+ @node Store custom flags and keywords
+ @subsection Store custom flags and keywords
+
+ The registry lets you set custom flags and keywords per message. You
+ can use the Gnus->Registry Marks menu or the @kbd{M M x} keyboard
+ shortcuts, where @code{x} is the first letter of the mark's name.
+
+ @defvar gnus-registry-marks
+ The custom marks that the registry can use. You can modify the
+ default list, if you like. If you do, you'll have to exit Emacs
+ before they take effect (you can also unload the registry and reload
+ it or evaluate the specific macros you'll need, but you probably don't
+ want to bother). Use the Customize interface to modify the list.
+
+ By default this list has the Important, Work, Personal, To-Do, and
+ Later marks. They all have keyboard shortcuts like @kbd{M M i} for
+ Important, using the first letter.
+ @end defvar
+
+ @defun gnus-registry-mark-article
+ Call this function to mark an article with a custom registry mark. It
+ will offer the available marks for completion.
+ @end defun
+
+ @node Store arbitrary data
+ @subsection Store arbitrary data
+
+ The registry has a simple API that uses a Message-ID as the key to
+ store arbitrary data (as long as it can be converted to a list for
+ storage).
+
+ @defun gnus-registry-store-extra-entry (id key value)
+ Store @code{value} in the extra data key @code{key} for message
+ @code{id}.
+ @end defun
+
+ @defun gnus-registry-delete-extra-entry (id key)
+ Delete the extra data key @code{key} for message @code{id}.
+ @end defun
+
+ @defun gnus-registry-fetch-extra (id key)
+ Get the extra data key @code{key} for message @code{id}.
+ @end defun
+
+ @defvar gnus-registry-extra-entries-precious
+ If any extra entries are previous, their presence will make the
+ registry keep the whole entry forever, even if there are no groups for
+ the Message-ID and if the size limit of the registry is reached. By
+ default this is just @code{'(marks)} so the custom registry marks are
+ precious.
+ @end defvar
+
@node Other modes
@section Interaction with other modes
next prev parent reply other threads:[~2008-09-15 21:00 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87abfkmuko.fsf@jondo.cante.net>
2008-08-13 8:29 ` Group, Summary buffers: End of line contain whitespaces Katsumi Yamaoka
2008-08-13 18:56 ` Reiner Steib
2008-08-13 21:47 ` Jari Aalto
2008-08-15 16:31 ` jidanni
2008-08-19 11:48 ` Miles Bader
2008-08-22 15:52 ` Ted Zlatanov
2008-08-27 23:01 ` Miles Bader
2008-08-28 13:51 ` Ted Zlatanov
2008-08-29 11:15 ` Reiner Steib
2008-08-29 15:12 ` bugs and features (was: Group, Summary buffers: End of line contain whitespaces) Ted Zlatanov
2008-09-15 21:00 ` Ted Zlatanov [this message]
2008-09-16 9:17 ` registry doc patch Rupert Swarbrick
2008-09-16 13:36 ` Ted Zlatanov
2008-09-16 12:30 ` Magnus Henoch
2008-09-16 13:39 ` Ted Zlatanov
2008-09-18 23:19 ` Katsumi Yamaoka
2008-09-19 16:19 ` Ted Zlatanov
2008-09-23 19:18 ` Reiner Steib
2008-09-24 0:37 ` Katsumi Yamaoka
2008-09-24 6:45 ` Katsumi Yamaoka
2008-09-24 16:45 ` Reiner Steib
2008-09-24 16:44 ` informat.el: `Info-split' split size (was: registry doc patch) Reiner Steib
2008-09-24 23:58 ` informat.el: `Info-split' split size Katsumi Yamaoka
2008-09-25 3:10 ` Eli Zaretskii
2008-09-25 4:01 ` Katsumi Yamaoka
2008-09-25 23:10 ` Katsumi Yamaoka
2008-08-29 13:51 ` Group, Summary buffers: End of line contain whitespaces Ted Zlatanov
2008-08-29 15:31 ` Daiki Ueno
2008-08-29 15:55 ` Ted Zlatanov
2008-08-30 5:07 ` Katsumi Yamaoka
2008-08-30 9:33 ` Ted Zlatanov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86vdwxnmzf.fsf_-_@lifelogs.com \
--to=tzz@lifelogs.com \
--cc=ding@gnus.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).