   This file documents Gnus, the GNU Emacs newsreader.

   Copyright (C) 1995,96 Free Software Foundation, Inc.

   Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

   Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
that the entire resulting derived work is distributed under the terms
of a permission notice identical to this one.

   Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions.

Newest Features
---------------

   Also known as the "todo list".  Sure to be implemented before the
next millennium.

   Be afraid.  Be very afraid.

   (That a feature appears in this list doesn't necessarily mean that
I've decided to actually implement it.  It just means that I think it
sounds interesting.)

   (Yes, this is the actual, up-to-the-second todo list.)

   * Native MIME support is something that should be done.

   * Really do unbinhexing.

   *  I would like the zombie-page to contain an URL to the source of
     the latest version of gnus or some explanation on where to find it.

   *  A way to continue editing the latest Message composition.

   *  http://www.sonicnet.com/feature/ari3/

   *  facep is not declared.

   *  Include a section in the manual on why the number of articles
     isn't the same in the group buffer and on the SPC prompt.

   *  Interacting with rmail fcc isn't easy.

   *       Hypermail:
          <URL:http://www.falch.no/people/pepper/DSSSL-Lite/archives/>
          <URL:http://www.eit.com/software/hypermail/hypermail.html>
          <URL:http://homer.ncm.com/>
          <URL:http://www.yahoo.com/Computers_and_Internet/Internet/World_Wide_Web/HTML_Converters/>
          http://www.uwsg.indiana.edu/hypermail/linux/kernel/9610/index.html
          <URL:http://union.ncsa.uiuc.edu/HyperNews/get/www/html/converters.html>
          http://www.miranova.com/gnus-list/

   * `^-- ' is made into - in LaTeX.

   *  gnus-kill is much slower than it was in GNUS 4.1.3.

   *  when expunging articles on low score, the sparse nodes keep
     hanging on?

   *  starting the first time seems to hang Gnus on some systems.  Does
     NEWGROUPS answer too fast?

   *  nndir doesn't read gzipped files.

   *  FAQ doesn't have an up node?

   *  when moving mail from a procmail spool to the crash-box, the
     crash-box is only appropriate to one specific group.

   *  `t' `t' makes X-Faces disappear.

   *  nnmh-be-safe means that crossposted articles will be marked as
     unread.

   *  Orphan score entries don't show on "V t" score trace

   *  when clearing out data, the cache data should also be reset.

   *  rewrite gnus-summary-limit-children to be non-recursive to avoid
     exceeding lisp nesting on huge groups.

   *  expunged articles are counted when computing scores.

   *  implement gnus-batch-brew-soup

   *  ticked articles aren't easy to read in pick mode - `n' and stuff
     just skips past them.  Read articles are the same.

   *  topics that contain just groups with ticked articles aren't
     displayed.

   *  nndoc should always allocate unique Message-IDs.

   *  If there are mail groups the first time you use Gnus, Gnus'll
     make the mail groups killed.

   *  no "no news is good news" when using topics.

   *  when doing crosspost marking, the cache has to be consulted and
     articles have to be removed.

   *  nnweb should fetch complete articles when they are split into
     several parts.

   *  scoring on head immediate doesn't work.

   *  finding short score file names takes forever.

   *  canceling articles in foreign groups.

   *  nntp-open-rlogin no longer works.

   *  C-u C-x C-s (Summary) switches to the group buffer.

   *  move nnmail-split-history out to the backends.

   *  nnweb doesn't work properly.

   *  using a virtual server name as `gnus-select-method' doesn't work?

   *  when killing/yanking a group from one topic to another in a
     slave, the master will yank it first to one topic and then add it
     to another.  Perhaps.

   *  warn user about `=' redirection of a group in the active file?

   *  really unbinhex binhex files.

   *  take over the XEmacs menubar and offer a toggle between the XEmacs
     bar and the Gnus bar.

   *       push active file and NOV file parsing down into C code.
          `(canonize-message-id id)'
          `(mail-parent-message-id references n)'
          `(parse-news-nov-line &optional dependency-hashtb)'
          `(parse-news-nov-region beg end &optional dependency-hashtb fullp)'
          `(parse-news-active-region beg end hashtb)'

   *  nnml .overview directory with splits.

   *  asynchronous cache

   *  postponed commands.

   *  the selected article show have its Subject displayed in its
     summary line.

   *  when entering groups, get the real number of unread articles from
     the server?

   *  sort after gathering threads - make false roots have the headers
     of the oldest orphan with a 0 article number?

   *  nndoc groups should inherit the score files of their parents?
     Also inherit copy prompts and save files.

   *  command to start up Gnus (if not running) and enter a mail mode
     buffer.

   *  allow editing the group description from the group buffer for
     backends that support that.

   * gnus-hide,show-all-topics

   *  groups and sub-topics should be allowed to mingle inside each
     topic, and not just list all subtopics at the end.

   *  a command to remove all read articles that are not needed to
     connect threads - `gnus-summary-limit-to-sparse-unread'?

   *  a variable to turn off limiting/cutting of threads in the tree
     buffer.

   *  a variable to limit how many files are uudecoded.

   *  add zombie groups to a special "New Groups" topic.

   *  server mode command: close/open all connections

   *  put a file date in gnus-score-alist and check whether the file
     has been changed before using it.

   *  on exit from a digest group, go to the next article in the parent
     group.

   *  hide (sub)threads with low score.

   *  when expiring, remove all marks from expired articles.

   *  gnus-summary-limit-to-body

   *  a regexp alist that says what level groups are to be subscribed
     on.  Eg. - `(("nnml:" . 1))'.

   *  easier interface to nnkiboze to create ephemeral groups that
     contain groups that match a regexp.

   *  allow newlines in <URL:> urls, but remove them before using the
     URL.

   *  If there is no From line, the mail backends should fudge one from
     the "From " line.

   *  fuzzy simplifying should strip all non-alpha-numerical info from
     subject lines.

   *  gnus-soup-brew-soup-with-high-scores.

   *  nntp-ping-before-connect

   *  command to check whether NOV is evil.  "list overview.fmt".

   *  when entering a group, Gnus should look through the score files
     very early for `local' atoms and set those local variables.

   *  message annotations.

   *  topics are always yanked before groups, and that's not good.

   *  (set-extent-property extent 'help-echo "String to display in
     minibuf") to display help in the minibuffer on buttons under
     XEmacs.

   *  allow group line format spec to say how many articles there are
     in the cache.

   *  AUTHINFO GENERIC

   *  support qmail maildir spools

   *  `run-with-idle-timer' in gnus-demon.

   *  stop using invisible text properties and start using overlays
     instead

   *  C-c C-f C-e to add an Expires header.

   *  go from one group to the next; everything is expunged; go to the
     next group instead of going to the group buffer.

   *  gnus-renumber-cache - to renumber the cache using "low" numbers.

   *  record topic changes in the dribble buffer.

   *  `nnfolder-generate-active-file' should look at the folders it
     finds and generate proper active ranges.

   *  nneething-look-in-files-for-article-heads variable to control
     whether nneething should sniff all files in the directories.

   *  gnus-fetch-article - start Gnus, enter group, display article

   *  gnus-dont-move-articles-to-same-group variable when respooling.

   *  when messages are crossposted between several auto-expirable
     groups, articles aren't properly marked as expirable.

   *  nneething should allow deletion/moving.

   *  TAB on the last button should go to the first button.

   *  if the car of an element in `mail-split-methods' is a function,
     and the function returns non-nil, use that as the name of the
     group(s) to save mail in.

   *  command for listing all score files that have been applied.

   *  a command in the article buffer to return to `summary' config.

   *  `gnus-always-post-using-current-server' - variable to override
     `C-c C-c' when posting.

   *  nnmail-group-spool-alist - says where each group should use as a
     spool file.

   *  when an article is crossposted to an auto-expirable group, the
     article should be marker as expirable.

   *  article mode command/menu for "send region as URL to browser".

   *  on errors, jump to info nodes that explain the error.  For
     instance, on invalid From headers, or on error messages from the
     nntp server.

   *  when gathering threads, make the article that has no "Re: " the
     parent.  Also consult Date headers.

   *  a token in splits to call shrink-window-if-larger-than-buffer

   *  `1 0 A M' to do matches on the active hashtb.

   *  duplicates - command to remove Gnus-Warning header, use the read
     Message-ID, delete the "original".

   *  when replying to several messages at once, put the "other"
     message-ids into a See-Also header.

   *  support setext: URL:http://www.bsdi.com/setext/

   *  support ProleText:
     <URL:http://proletext.clari.net/prole/proletext.html>

   *  when browsing a foreign server, the groups that are already
     subscribed should be listed as such and not as "K".

   *  generate font names dynamically.

   *  score file mode auto-alist.

   *  allow nndoc to change/add/delete things from documents.  Implement
     methods for each format for adding an article to the document.

   *  `gnus-fetch-old-headers' `all' value to incorporate absolutely
     all headers there is.

   *  function like `|', but concatenate all marked articles and pipe
     them to the process.

   *  cache the list of killed (or active) groups in a separate file.
     Update the file whenever we read the active file or the list of
     killed groups in the .eld file reaches a certain length.

   *  function for starting to edit a file to put into the current mail
     group.

   *  score-find-trace should display the total score of the article.

   *  "ghettozie" - score on Xref header and nix it out after using it
     to avoid marking as read in other groups it has been crossposted
     to.

   *  look at procmail splitting.  The backends should create the
     groups automatically if a spool file exists for that group.

   *  function for backends to register themselves with Gnus.

   *  when replying to several process-marked articles, have all the
     From end up in Cc headers?  Variable to toggle.

   *  command to delete a crossposted mail article from all groups it
     has been mailed to.

   *  `B c' and `B m' should be crosspost aware.

   *  hide-pgp should also hide PGP public key blocks.

   *  Command in the group buffer to respool process-marked groups.

   *  `gnus-summary-find-matching' should accept pseudo-"headers" like
     "body", "head" and "all"

   *  When buttifying <URL: > things, all white space (including
     newlines) should be ignored.

   *  Process-marking all groups in a topic should process-mark groups
     in subtopics as well.

   *  Add non-native groups to the list of killed groups when killing
     them.

   *  nntp-suggest-kewl-config to probe the nntp server and suggest
     variable settings.

   *  add edit and forward secondary marks.

   *  nnml shouldn't visit its .overview files.

   *  allow customizing sorting within gathered threads.

   *  `B q' shouldn't select the current article.

   *  nnmbox should support a newsgroups file for descriptions.

   *  allow fetching mail from several pop servers.

   *  Be able to specify whether the saving commands save the original
     or the formatted article.

   *  a command to reparent with the child process-marked (cf. `T ^'.).

   *  I think the possibility to send a password with nntp-open-rlogin
     should be a feature in Red Gnus.

   *  The `Z n' command should be possible to execute from a mouse
     click.

   *  more limiting functions - date, etc.

   *  be able to limit on a random header; on body; using reverse
     matches.

   *  a group parameter (`absofucking-total-expiry') that will make
     Gnus expire even unread articles.

   *  a command to print the article buffer as postscript.

   *  variable to disable password fetching when opening by
     nntp-open-telnet.

   *  manual: more example servers - nntp with rlogin, telnet

   *  checking for bogus groups should clean topic alists as well.

   *  canceling articles in foreign groups.

   *  article number in folded topics isn't properly updated by Xref
     handling.

   *  Movement in the group buffer to the next unread group should go
     to the next closed topic with unread messages if no group can be
     found.

   *  Extensive info pages generated on the fly with help everywhere -
     in the "*Gnus edit*" buffers, for instance.

   *  Topic movement commands - like thread movement.  Up, down,
     forward, next.

   *  a way to tick/mark as read Gcc'd articles.

   *  a way to say that all groups within a specific topic comes from a
     particular server?  Hm.

   *  `gnus-article-fill-if-long-lines' - a function to fill the
     article buffer if there are any looong lines there.

   *  `T h' should jump to the parent topic and fold it.

   *  a command to create an ephemeral nndoc group out of a file, and
     then splitting it/moving it to some other group/backend.

   *  a group parameter for nnkiboze groups that says that all kibozed
     articles should be entered into the cache.

   *  It should also probably be possible to delimit what
     `gnus-jog-cache' does - for instance, work on just some groups, or
     on some levels, and entering just articles that have a score
     higher than a certain number.

   *  nnfolder should append to the folder instead of re-writing the
     entire folder to disk when accepting new messages.

   *  allow all backends to do the proper thing with .gz files.

   *  a backend for reading collections of babyl files nnbabylfolder?

   *  a command for making the native groups into foreign groups.

   *  server mode command for clearing read marks from all groups from
     a server.

   *  when following up multiple articles, include all To, Cc, etc
     headers from all articles.

   *  a command for deciding what the total score of the current thread
     is.  Also a way to highlight based on this.

   *  command to show and edit group scores

   *  a gnus-tree-minimize-horizontal to minimize tree buffers
     horizontally.

   *  command to generate nnml overview file for one group.

   *  `C-u C-u a' - prompt for many crossposted groups.

   *  keep track of which mail groups have received new articles (in
     this session).  Be able to generate a report and perhaps do some
     marking in the group buffer.

   *  gnus-build-sparse-threads to a number - build only sparse threads
     that are of that length.

   *  have nnmh respect mh's unseen sequence in .mh_profile.

   *  cache the newsgroups descriptions locally.

   *  asynchronous posting under nntp.

   *  be able to control word adaptive scoring from the score files.

   *  a variable to make `C-c C-c' post using the "current" select
     method.

   *  `limit-exclude-low-scored-articles'.

   *  if `gnus-summary-show-thread' is a number, hide threads that have
     a score lower than this number.

   *  split newsgroup subscription variable up into "order" and
     "method".

   *  buttonize ange-ftp file names.

   *  a command to make a duplicate copy of the current article so that
     each copy can be edited separately.

   *  nnweb should allow fetching from the local nntp server.

   *  record the sorting done in the summary buffer so that it can be
     repeated when limiting/regenerating the buffer.

   *  nnml-generate-nov-databses should generate for all nnml servers.

   *  when the user does commands in the group buffer, check the
     modification time of the .newsrc.eld file and use
     ask-user-about-supersession-threat.  Also warn when trying to save
     .newsrc.eld and it has changed.

   *  M-g on a topic will display all groups with 0 articles in the
     topic.

   *  command to remove all topic stuff.

   *  allow exploding incoming digests when reading incoming mail and
     splitting the resulting digests.

   *  nnsoup shouldn't set the `message-' variables.

   *  command to nix out all nnoo state information.

   *  nnmail-process-alist that calls functions if group names matches
     an alist - before saving.

   *  use buffer-invisibility-spec everywhere for hiding text.

   *  variable to activate each group before entering them to get the
     (new) number of articles.  `gnus-activate-before-entering'.

   *  command to fetch a Message-ID from any buffer, even starting Gnus
     first if necessary.

   *  when posting and checking whether a group exists or not, just ask
     the nntp server instead of relying on the active hashtb.

   *  buttonize the output of `C-c C-a' in an apropos-like way.

   *  `G p' should understand process/prefix, and allow editing of
     several groups at once.

   *  command to create an ephemeral nnvirtual group that matches some
     regexp(s).

   *  nndoc should understand "Content-Type: message/rfc822" forwarded
     messages.

   *  it should be possible to score "thread" on the From header.

   *  hitting RET on a "gnus-uu-archive" pseudo article should unpack
     it.

   *  `B i' should display the article at once in the summary buffer.

   *  remove the "*" mark at once when unticking an article.

   *  `M-s' should highlight the matching text.

   *  when checking for duplicated mails, use Resent-Message-ID if
     present.

   *  killing and yanking groups in topics should be better.  If
     killing one copy of a group that exists in multiple topics, only
     that copy should be removed.  Yanking should insert the copy, and
     yanking topics should be possible to be interspersed with the
     other yankings.

   *  command for enter a group just to read the cached articles.  A
     way to say "ignore the nntp connection; just read from the cache."

   *  `X u' should decode base64 articles.

   *  a way to hide all "inner" cited text, leaving just the most
     recently cited text.

   *  nnvirtual should be asynchronous.

   *  after editing an article, gnus-original-article-buffer should be
     invalidated.

   *  there should probably be a way to make Gnus not connect to the
     server and just read the articles in the server

   *  allow a `set-default' (or something) to change the default value
     of nnoo variables.

   *  a command to import group infos from a .newsrc.eld file.

   *  groups from secondary servers have the entire select method
     listed in each group info.

   *  a command for just switching from the summary buffer to the group
     buffer.

   *  a way to specify that some incoming mail washing functions should
     only be applied to some groups.

   *  Message `C-f C-t' should ask the user whether to heed
     mail-copies-to: never.

   *  new group parameter - `post-to-server' that says to post using
     the current server.  Also a variable to do the same.

   *  the slave dribble files should autosave to the slave file names.

   *  a group parameter that says what articles to display on group
     entry, based on article marks.

   *  a way to visually distinguish slave Gnusae from masters.  (Whip
     instead of normal logo?)

   *  Use DJ Bernstein "From " quoting/dequoting, where applicable.

   *  Why is hide-citation-maybe and hide-citation different?  Also
     clear up info.

   *  group user-defined meta-parameters.

     From: John Griffith <griffith@sfs.nphil.uni-tuebingen.de>

   *  I like the option for trying to retrieve the FAQ for a group and
     I was thinking it would be great if for those newsgroups that had
     archives you could also try to read the archive for that group.
     Part of the problem is that archives are spread all over the net,
     unlike FAQs.  What would be best I suppose is to find the one
     closest to your site.

     In any case, there is a list of general news group archives at

     ftp://ftp.neosoft.com/pub/users/claird/news.lists/newsgroup_archives.html

   *      From: Jason L Tibbitts III <tibbs@hpc.uh.edu>
          (add-hook 'gnus-select-group-hook
            (lambda ()
              (gnus-group-add-parameter group
                 (cons 'gnus-group-date-last-entered (list (current-time-string))))))

          (defun gnus-user-format-function-d (headers)
            "Return the date the group was last read."
            (cond ((car (gnus-group-get-parameter gnus-tmp-group 'gnus-group-date-last-entered)))
                (t "")))

   *  tanken var at når du bruker `gnus-startup-file' som prefix (FOO)
     til å lete opp en fil FOO-SERVER, FOO-SERVER.el, FOO-SERVER.eld,
     kan du la den være en liste hvor du bruker hvert element i listen
     som FOO, istedet.  da kunne man hatt forskjellige serveres
     startup-filer forskjellige steder.

   * LMI> Well, nnbabyl could alter the group info to heed labels like
     LMI> answered and read, I guess.

     It could also keep them updated (the same for the Status: header of
     unix mbox files).

     They could be used like this:

          `M l <name> RET' add label <name> to current message.
          `M u <name> RET' remove label <name> from current message.
          `/ l <expr> RET' limit summary buffer according to <expr>.

          <expr> would be a boolean expression on the labels, e.g.

          `/ l bug & !fixed RET'

     would show all the messages which are labeled `bug' but not labeled
     `fixed'.

     One could also imagine the labels being used for highlighting, or
     affect the summary line format.

   * Sender: abraham@dina.kvl.dk

     I'd like a gnus-find-file which work like find file, except that it
     would recognize things that looks like messages or folders:

     - If it is a directory containing numbered files, create an nndir
     summary buffer.

     - For other directories, create a nneething summary buffer.

     - For files matching "\\`From ", create a nndoc/mbox summary.

     - For files matching "\\`BABYL OPTIONS:", create a nndoc/baby
     summary.

     - For files matching "\\`[^ \t\n]+:", create an *Article* buffer.

     - For other files, just find them normally.

     I'd like `nneething' to use this function, so it would work on a
     directory potentially containing mboxes or babyl files.

   * Please send a mail to bwarsaw@cnri.reston.va.us (Barry A. Warsaw)
     and tell him what you are doing.

   * Currently, I get prompted:

     decend into sci?  - type y decend into sci.something ?  - type n
     decend into ucd?

     The problem above is that since there is really only one
     subsection of science, shouldn't it prompt you for only descending
     sci.something?  If there was a sci.somethingelse group or section,
     then it should prompt for sci? first the sci.something? then
     sci.somethingelse?...

   * Ja, det burde være en måte å si slikt.  Kanskje en ny variabel?
     `gnus-use-few-score-files'?  Så kunne score-regler legges til den
     "mest" lokale score-fila.  F. eks. ville no-gruppene betjenes av
     "no.all.SCORE", osv.

   * What i want is for Gnus to treat any sequence or combination of
     the following as a single spoiler warning and hide it all,
     replacing it with a "Next Page" button:

     ^L's

     more than n blank lines

     more than m identical lines (which should be replaced with button
     to show them)

     any whitespace surrounding any of the above

   * Well, we could allow a new value to `gnus-thread-ignore-subject' -
     `spaces', or something.  (We could even default to that.)  And then
     subjects that differ in white space only could be considered the
     "same" subject for threading purposes.

   * Modes to preprocess the contents (e.g. jka-compr) use the second
     form "(REGEXP FUNCTION NON-NIL)" while ordinary modes (e.g. tex)
     use the first form "(REGEXP . FUNCTION)", so you could use it to
     distinguish between those two types of modes. (auto-modes-alist,
     insert-file-contents-literally.)

   *  Under XEmacs - do funny article marks: tick - thumb tack killed -
     skull soup - bowl of soup score below - dim light bulb score over
     - bright light bulb

   * Yes. I think the algorithm is as follows:

          Group-mode

             show-list-of-articles-in-group
                  if (key-pressed == SPACE)
                          if (no-more-articles-in-group-to-select)
                                  if (articles-selected)
                                          start-reading-selected-articles;
                                  junk-unread-articles;
                                  next-group;
                           else
                                  show-next-page;

                   else if (key-pressed = '.')
                          if (consolidated-menus)         # same as hide-thread in Gnus
                                  select-thread-under-cursor;
                          else
                                  select-article-under-cursor;

          Article-mode
                  if (key-pressed == SPACE)
                          if (more-pages-in-article)
                                  next-page;
                          else if (more-selected-articles-to-read)
                                  next-article;
                          else
                                  next-group;

   * My precise need here would have been to limit files to Incoming*.
     One could think of some `nneething-only-files' variable, but I
     guess it would have been unacceptable if one was using many
     unrelated such nneething groups.

     A more useful approach would be to, in response to the `G D'
     prompt, be allowed to say something like: `~/.mail/Incoming*',
     somewhat limiting the top-level directory only (in case
     directories would be matched by the wildcard expression).

   * It would be nice if it also handled

     <URL:news://sunsite.auc.dk/>

     which should correspond to `B nntp RET sunsite.auc.dk' in *Group*.

   *    Take a look at w3-menu.el in the Emacs-W3 distribution - this
     works out really well.  Each menu is 'named' by a symbol that
     would be on a gnus-*-menus (where * would be whatever, but at
     least group, summary, and article versions) variable.

     So for gnus-summary-menus, I would set to '(sort mark dispose ...)

     A value of '1' would just put _all_ the menus in a single 'GNUS'
     menu in the main menubar.  This approach works really well for
     Emacs-W3 and VM.

   *  nndoc should take care to create unique Message-IDs for all its
     articles.

   *  gnus-score-followup-article only works when you have a summary
     buffer active.  Make it work when posting from the group buffer as
     well.  (message-sent-hook).

   *  rewrite gnus-demon to use run-with-idle-timers.

   *  * Enhancements to Gnus:

     Add two commands:

     * gnus-servers (gnus-start-server-buffer?)-enters Gnus and goes
     straight to the server buffer, without opening any connections to
        servers first.

     * gnus-server-read-server-newsrc-produces a buffer very similar to
        the group buffer, but with only groups from that server listed;
        quitting this buffer returns to the server buffer.

   *  add a command to check the integrity of an nnfolder folder - go
     through the article numbers and see that there are no duplicates,
     and stuff.

   *  `unsmileyfy-buffer' to undo smileification.

   *  a command to give all relevant info on an article, including all
     secondary marks.

   *  when doing `-request-accept-article', the backends should do the
     nnmail duplicate checking.

   *  allow `message-signature-file' to be a function to return the
     value of the signature file.

   *  In addition, I would love it if I could configure message-tab so
     that it could call `bbdb-complete-name' in other headers.  So,
     some sort of interface like

     (setq message-tab-alist       '((message-header-regexp
     message-expand-group)         ("^\\(To\\|[cC]c\\|[bB]cc\\)"
     bbdb-complete-name)))

     then you could run the relevant function to complete the
     information in the header

   *  cache the newsgroups file locally to avoid reloading it all the
     time.

   *  a command to import a buffer into a group.

   *  nnweb should allow fetching by Message-ID from servers.

   *  point in the article buffer doesn't always go to the beginning of
     the buffer when selecting new articles.

   *  a command to process mark all unread articles.

   *  `gnus-gather-threads-by-references-and-subject' - first do
     gathering by references, and then go through the dummy roots and
     do more gathering by subject.

   *  gnus-uu-mark-in-numerical-order - process mark articles in
     article numerical order.

   *  (gnus-thread-total-score  (gnus-id-to-thread (mail-header-id
     (gnus-summary-article-header)))) bind to a key.

   *  sorting by score is wrong when using sparse threads.

   *  a command to fetch an arbitrary article - without having to be in
     the summary buffer.

   *  a new nncvs backend.  Each group would show an article, using
     version branches as threading, checkin date as the date, etc.

   *  http://www.dejanews.com/forms/dnsetfilter_exp.html ?  This filter
     allows one to construct advance queries on the Dejanews database
     such as specifying start and end dates, subject, author, and/or
     newsgroup name.

   *  new Date header scoring type - older, newer

   *  use the summary toolbar in the article buffer.

   *  a command to fetch all articles that are less than X days old.

   *  in pick mode, `q' should save the list of selected articles in the
     group info.  The next time the group is selected, these articles
     will automatically get the process mark.

   *  Isn't it possible to (also?) allow M-^ to automatically try the
     default server if it fails on the current server?  (controlled by a
     user variable, (nil, t, 'ask)).

   *  make it possible to cancel articles using the select method for
     the current group.

   *  `gnus-summary-select-article-on-entry' or something.  It'll
     default to t and will select whatever article decided by
     `gnus-auto-select-first'.

   *  a new variable to control which selection commands should be
     unselecting.  `first', `best', `next', `prev', `next-unread',
     `prev-unread' are candidates.

   *  be able to select groups that have no articles in them to be able
     to post in them (using the current select method).

   *  be able to post via DejaNews.

   *  `x' should retain any sortings that have been performed.

   *  allow the user to specify the precedence of the secondary marks.
     Also allow them to be displayed separately.

   *  gnus-summary-save-in-pipe should concatenate the results from the
     processes when doing a process marked pipe.

   *  a new match type, like Followup, but which adds Thread matches on
     all articles that match a certain From header.

   *  a function that can be read from kill-emacs-query-functions to
     offer saving living summary buffers.

   *  a function for selecting a particular group which will contain
     the articles listed in a list of article numbers/id's.

   *  a battery of character translation functions to translate common
     Mac, MS (etc) characters into ISO 8859-1.

          (defun article-fix-m$word ()
            "Fix M$Word smartquotes in an article."
            (interactive)
            (save-excursion
              (let ((buffer-read-only nil))
                (goto-char (point-min))
                (while (search-forward "\221" nil t)
                  (replace-match "`" t t))
                (goto-char (point-min))
                (while (search-forward "\222" nil t)
                  (replace-match "'" t t))
                (goto-char (point-min))
                (while (search-forward "\223" nil t)
                  (replace-match "\"" t t))
                (goto-char (point-min))
                (while (search-forward "\224" nil t)
                  (replace-match "\"" t t)))))

   *       (add-hook 'gnus-exit-query-functions
          '(lambda ()
             (if (and (file-exists-p nnmail-spool-file)
                      (> (nnheader-file-size nnmail-spool-file) 0))
                 (yes-or-no-p "New mail has arrived.  Quit Gnus anyways? ")
                 (y-or-n-p "Are you sure you want to quit Gnus? "))))

   *  allow message-default-headers to be a function.

   *  new Date score match types - < > = (etc) that take floating point
     numbers and match on the age of the article.

   *      >  > > If so, I've got one gripe: It seems that when I fire up gnus 5.2.25
          >  > > under xemacs-19.14, it's creating a new frame, but is erasing the
          >  > > buffer in the frame that it was called from =:-O
          >
          >  > Hm.  How do you start up Gnus?  From the toolbar or with
          >  > `M-x gnus-other-frame'?
          >
          >    I normally start it up from the toolbar; at
          > least that's the way I've caught it doing the
          > deed before.

   *  all commands that react to the process mark should push the
     current process mark set onto the stack.

   *  gnus-article-hide-pgp Selv ville jeg nok ha valgt å slette den
     dersom teksten matcher
          "\\(This\s+\\)?[^ ]+ has been automatically signed by"
     og det er maks hundre tegn mellom match-end og ---linja.  Men -det-
     er min type heuristikk og langt fra alles.

   *  `gnus-subscribe-sorted' - insert new groups where they would have
     been sorted to if `gnus-group-sort-function' were run.

   *  gnus-(group,summary)-highlight should respect any `face' text
     props set on the lines.

   *  use run-with-idle-timer for gnus-demon instead of the home-brewed
     stuff for better reliability.

   *  add a way to select which NoCeM type to apply - spam, troll, etc.

   *  nndraft-request-group should tally autosave files.

   *  implement nntp-retry-on-break and nntp-command-timeout.

   *  gnus-article-highlight-limit that says when not to highlight
     (long) articles.

   *  (nnoo-set SERVER VARIABLE VALUE)

   *  nn*-spool-methods

   *  interrupitng agent fetching of articles should save articles.

   *  command to open a digest group, and copy all the articles there
     to the current group.

   *  a variable to disable article body highlights if there's more than
     X characters in the body.

   *  handle 480/381 authinfo requests separately.

   *  include the texi/dir file in the distribution.

   *  format spec to "tab" to a position.

   *  Move all prompting to the new `M-n' default style.

   *  command to display all dormant articles.

   *  gnus-auto-select-next makeover - list of things it should do.

   *  a score match type that adds scores matching on From if From has
     replied to something someone else has said.

   *  Read Netscape discussion groups:
     snews://secnews.netscape.com/netscape.communicator.unix

   * One command to edit the original version if an article, and one to
     edit the displayed version.

   * `T v' - make all process-marked articles the children of the
     current article.

   * Switch from initial text to the new default text mechanism.

   * How about making it possible to expire local articles?  Will it be
     possible to make various constraints on when an article can be
     expired, e.g. (read), (age > 14 days), or the more interesting
     (read & age > 14 days)?

   * New limit command--limit to articles that have a certain string in
     the head or body.

   * Allow breaking lengthy NNTP commands.

   * gnus-article-highlight-limit, to disable highlighting in big
     articles.

   * Editing an article should put the article to be edited in a
     special, unique buffer.

   * A command to send a mail to the admin-address group param.

   * A Date scoring type that will match if the article is less than a
     certain number of days old.

   * New spec: %~(tab 56) to put point on column 56

   * Allow Gnus Agent scoring to use normal score files.

   * Rething the Agent active file thing.  `M-g' doesn't update the
     active file, for instance.

   * With dummy roots, `^' and then selecing the first article in any
     other dummy thread will make Gnus highlight the dummy root instead
     of the first article.

   * Propagate all group properties (marks, article numbers, etc) up to
     the topics for displaying.

   * `n' in the group buffer with topics should go to the next group
     with unread articles, even if that group is hidden in a topic.

   * gnus-posting-styles doesn't work in drafts.

   * gnus-summary-limit-include-cached is slow when there are many
     articles in the cache, since it regenerates big parts of the
     summary buffer for each article.

   * Implement gnus-batch-brew-soup.

   * Group parameters and summary commands for un/subscribing to mailing
     lists.

   * Introduce nnmail-home-directory.

   * gnus-fetch-group and friends should exit Gnus when the user exits
     the group.

   * Solve the halting problem.

Terminology
===========

"news"
     This is what you are supposed to use this thing for--reading news.
     News is generally fetched from a nearby NNTP server, and is
     generally publicly available to everybody.  If you post news, the
     entire world is likely to read just what you have written, and
     they'll all snigger mischievously.  Behind your back.

"mail"
     Everything that's delivered to you personally is mail.  Some
     news/mail readers (like Gnus) blur the distinction between mail
     and news, but there is a difference.  Mail is private.  News is
     public.  Mailing is not posting, and replying is not following up.

"reply"
     Send a mail to the person who has written what you are reading.

"follow up"
     Post an article to the current newsgroup responding to the article
     you are reading.

"backend"
     Gnus gets fed articles from a number of backends, both news and
     mail backends.  Gnus does not handle the underlying media, so to
     speak--this is all done by the backends.

"native"
     Gnus will always use one method (and backend) as the "native", or
     default, way of getting news.

"foreign"
     You can also have any number of foreign groups active at the same
     time.  These are groups that use non-native non-secondary backends
     for getting news.

"secondary"
     Secondary backends are somewhere half-way between being native and
     being foreign, but they mostly act like they are native.

"article"
     A message that has been posted as news.

"mail message"
     A message that has been mailed.

"message"
     A mail message or news article

"head"
     The top part of a message, where administrative information (etc.)
     is put.

"body"
     The rest of an article.  Everything not in the head is in the body.

"header"
     A line from the head of an article.

"headers"
     A collection of such lines, or a collection of heads.  Or even a
     collection of NOV lines.

"NOV"
     When Gnus enters a group, it asks the backend for the headers of
     all unread articles in the group.  Most servers support the News
     OverView format, which is more compact and much faster to read and
     parse than the normal HEAD format.

"level"
     Each group is subscribed at some "level" or other (1-9).  The ones
     that have a lower level are "more" subscribed than the groups with
     a higher level.  In fact, groups on levels 1-5 are considered
     "subscribed"; 6-7 are "unsubscribed"; 8 are "zombies"; and 9 are
     "killed".  Commands for listing groups and scanning for new
     articles will all use the numeric prefix as "working level".

"killed groups"
     No information on killed groups is stored or updated, which makes
     killed groups much easier to handle than subscribed groups.

"zombie groups"
     Just like killed groups, only slightly less dead.

"active file"
     The news server has to keep track of what articles it carries, and
     what groups exist.  All this information in stored in the active
     file, which is rather large, as you might surmise.

"bogus groups"
     A group that exists in the `.newsrc' file, but isn't known to the
     server (i.e.,  it isn't in the active file), is a *bogus group*.
     This means that the group probably doesn't exist (any more).

"activating"
     The act of asking the server for info on a group and computing the
     number of unread articles is called "activating the group".
     Un-activated groups are listed with `*' in the group buffer.

"server"
     A machine one can connect to and get news (or mail) from.

"select method"
     A structure that specifies the backend, the server and the virtual
     server settings.

"virtual server"
     A named select method.  Since a select method defines all there is
     to know about connecting to a (physical) server, taking the thing
     as a whole is a virtual server.

"washing"
     Taking a buffer and running it through a filter of some sort.  The
     result will (more often than not) be cleaner and more pleasing
     than the original.

"ephemeral groups"
     Most groups store data on what articles you have read.  "Ephemeral"
     groups are groups that will have no data stored--when you exit the
     group, it'll disappear into the aether.

"solid groups"
     This is the opposite of ephemeral groups.  All groups listed in the
     group buffer are solid groups.

"sparse articles"
     These are article placeholders shown in the summary buffer when
     `gnus-build-sparse-threads' has been switched on.

"threading"
     To put responses to articles directly after the articles they
     respond to--in a hierarchical fashion.

"root"
     The first article in a thread is the root.  It is the ancestor of
     all articles in the thread.

"parent"
     An article that has responses.

"child"
     An article that responds to a different article--its parent.

"digest"
     A collection of messages in one file.  The most common digest
     format is specified by RFC1153.

Customization
=============

   All variables are properly documented elsewhere in this manual.  This
section is designed to give general pointers on how to customize Gnus
for some quite common situations.

Slow/Expensive NNTP Connection
------------------------------

   If you run Emacs on a machine locally, and get your news from a
machine over some very thin strings, you want to cut down on the amount
of data Gnus has to get from the NNTP server.

`gnus-read-active-file'
     Set this to `nil', which will inhibit Gnus from requesting the
     entire active file from the server.  This file is often v.  large.
     You also have to set `gnus-check-new-newsgroups' and
     `gnus-check-bogus-newsgroups' to `nil' to make sure that Gnus
     doesn't suddenly decide to fetch the active file anyway.

`gnus-nov-is-evil'
     This one has to be `nil'.  If not, grabbing article headers from
     the NNTP server will not be very fast.  Not all NNTP servers
     support XOVER; Gnus will detect this by itself.

Slow Terminal Connection
------------------------

   Let's say you use your home computer for dialing up the system that
runs Emacs and Gnus.  If your modem is slow, you want to reduce (as
much as possible) the amount of data sent over the wires.

`gnus-auto-center-summary'
     Set this to `nil' to inhibit Gnus from re-centering the summary
     buffer all the time.  If it is `vertical', do only vertical
     re-centering.  If it is neither `nil' nor `vertical', do both
     horizontal and vertical recentering.

`gnus-visible-headers'
     Cut down on the headers included in the articles to the minimum.
     You can, in fact, make do without them altogether--most of the
     useful data is in the summary buffer, anyway.  Set this variable to
     `^NEVVVVER' or `From:', or whatever you feel you need.

`gnus-article-display-hook'
     Set this hook to all the available hiding commands:
          (setq gnus-article-display-hook
                '(gnus-article-hide-headers
                  gnus-article-hide-signature
                  gnus-article-hide-citation))

`gnus-use-full-window'
     By setting this to `nil', you can make all the windows smaller.
     While this doesn't really cut down much generally, it means that
     you have to see smaller portions of articles before deciding that
     you didn't want to read them anyway.

`gnus-thread-hide-subtree'
     If this is non-`nil', all threads in the summary buffer will be
     hidden initially.

`gnus-updated-mode-lines'
     If this is `nil', Gnus will not put information in the buffer mode
     lines, which might save some time.

Little Disk Space
-----------------

   The startup files can get rather large, so you may want to cut their
sizes a bit if you are running out of space.

`gnus-save-newsrc-file'
     If this is `nil', Gnus will never save `.newsrc'--it will only
     save `.newsrc.eld'.  This means that you will not be able to use
     any other newsreaders than Gnus.  This variable is `t' by default.

`gnus-save-killed-list'
     If this is `nil', Gnus will not save the list of dead groups.  You
     should also set `gnus-check-new-newsgroups' to `ask-server' and
     `gnus-check-bogus-newsgroups' to `nil' if you set this variable to
     `nil'.  This variable is `t' by default.

Slow Machine
------------

   If you have a slow machine, or are just really impatient, there are a
few things you can do to make Gnus run faster.

   Set `gnus-check-new-newsgroups' and `gnus-check-bogus-newsgroups' to
`nil' to make startup faster.

   Set `gnus-show-threads', `gnus-use-cross-reference' and
`gnus-nov-is-evil' to `nil' to make entering and exiting the summary
buffer faster.

   Set `gnus-article-display-hook' to `nil' to make article processing
a bit faster.