| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| 10.1 XEmacs | Requirements for installing under XEmacs. | |
| 10.2 History | How Gnus got where it is today. | |
| 10.3 On Writing Manuals | Why this is not a beginner's guide. | |
| 10.4 Terminology | We use really difficult, like, words here. | |
| 10.5 Customization | Tailoring Gnus to your needs. | |
| 10.6 Troubleshooting | What you might try if things do not work. | |
| 10.7 Gnus Reference Guide | Rilly, rilly technical stuff. | |
| 10.8 Emacs for Heathens | A short introduction to Emacsian terms. | |
| 10.9 Frequently Asked Questions | The Gnus FAQ |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
XEmacs is distributed as a collection of packages. You should install whatever packages the Gnus XEmacs package requires. The current requirements are `gnus', `mail-lib', `xemacs-base', `eterm', `sh-script', `net-utils', `os-utils', `dired', `mh-e', `sieve', `ps-print', `W3', `pgg', `mailcrypt', `ecrypto', and `sasl'.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
GNUS was written by Masanobu UMEDA. When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and decided to rewrite Gnus.
If you want to investigate the person responsible for this outrage, you can point your (feh!) web browser to http://quimby.gnus.org/. This is also the primary distribution point for the new and spiffy versions of Gnus, and is known as The Site That Destroys Newsrcs And Drives People Mad.
During the first extended alpha period of development, the new Gnus was called "(ding) Gnus". (ding) is, of course, short for ding is not Gnus, which is a total and utter lie, but who cares? (Besides, the "Gnus" in this abbreviation should probably be pronounced "news" as UMEDA intended, which makes it a more appropriate name, don't you think?)
In any case, after spending all that energy on coming up with a new and spunky name, we decided that the name was too spunky, so we renamed it back again to "Gnus". But in mixed case. "Gnus" vs. "GNUS". New vs. old.
| 10.2.1 Gnus Versions | What Gnus versions have been released. | |
| 10.2.2 Other Gnus Versions | Other Gnus versions that also have been released. | |
| 10.2.3 Why? | What's the point of Gnus? | |
| 10.2.4 Compatibility | Just how compatible is Gnus with GNUS? | |
| 10.2.5 Conformity | Gnus tries to conform to all standards. | |
| 10.2.6 Emacsen | Gnus can be run on a few modern Emacsen. | |
| 10.2.7 Gnus Development | How Gnus is developed. | |
| 10.2.8 Contributors | Oodles of people. | |
| 10.2.9 New Features | Pointers to some of the new stuff in Gnus. |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The first "proper" release of Gnus 5 was done in November 1995 when it was included in the Emacs 19.30 distribution (132 (ding) Gnus releases plus 15 Gnus 5.0 releases).
In May 1996 the next Gnus generation (aka. "September Gnus" (after 99 releases)) was released under the name "Gnus 5.2" (40 releases).
On July 28th 1996 work on Red Gnus was begun, and it was released on January 25th 1997 (after 84 releases) as "Gnus 5.4" (67 releases).
On September 13th 1997, Quassia Gnus was started and lasted 37 releases. It was released as "Gnus 5.6" on March 8th 1998 (46 releases).
Gnus 5.6 begat Pterodactyl Gnus on August 29th 1998 and was released as "Gnus 5.8" (after 99 releases and a CVS repository) on December 3rd 1999.
On the 26th of October 2000, Oort Gnus was begun and was released as Gnus 5.10 on May 1st 2003 (24 releases).
On the January 4th 2004, No Gnus was begun.
If you happen upon a version of Gnus that has a prefixed name -- "(ding) Gnus", "September Gnus", "Red Gnus", "Quassia Gnus", "Pterodactyl Gnus", "Oort Gnus", "No Gnus" -- don't panic. Don't let it know that you're frightened. Back away. Slowly. Whatever you do, don't run. Walk away, calmly, until you're out of its reach. Find a proper released version of Gnus and snuggle up to that instead.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
In addition to the versions of Gnus which have had their releases coordinated by Lars, one major development has been Semi-gnus from Japan. It's based on a library called SEMI, which provides MIME capabilities.
These Gnusae are based mainly on Gnus 5.6 and Pterodactyl Gnus. Collectively, they are called "Semi-gnus", and different strains are called T-gnus, ET-gnus, Nana-gnus and Chaos. These provide powerful MIME and multilingualization things, especially important for Japanese users.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
What's the point of Gnus?
I want to provide a "rad", "happening", "way cool" and "hep" newsreader, that lets you do anything you can think of. That was my original motivation, but while working on Gnus, it has become clear to me that this generation of newsreaders really belong in the stone age. Newsreaders haven't developed much since the infancy of the net. If the volume continues to rise with the current rate of increase, all current newsreaders will be pretty much useless. How do you deal with newsgroups that have thousands of new articles each day? How do you keep track of millions of people who post?
Gnus offers no real solutions to these questions, but I would very much like to see Gnus being used as a testing ground for new methods of reading and fetching news. Expanding on UMEDA-san's wise decision to separate the newsreader from the back ends, Gnus now offers a simple interface for anybody who wants to write new back ends for fetching mail and news from different sources. I have added hooks for customizations everywhere I could imagine it being useful. By doing so, I'm inviting every one of you to explore and invent.
May Gnus never be complete. C-u 100 M-x all-hail-emacs and C-u 100 M-x all-hail-xemacs.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gnus was designed to be fully compatible with GNUS. Almost all key bindings have been kept. More key bindings have been added, of course, but only in one or two obscure cases have old bindings been changed.
Our motto is:
In a cloud bones of steel.
All commands have kept their names. Some internal functions have changed their names.
The gnus-uu package has changed drastically. See section 3.16 Decoding Articles.
One major compatibility question is the presence of several summary buffers. All variables relevant while reading a group are buffer-local to the summary buffer they belong in. Although many important variables have their values copied into their global counterparts whenever a command is executed in the summary buffer, this change might lead to incorrect values being used unless you are careful.
All code that relies on knowledge of GNUS internals will probably
fail. To take two examples: Sorting gnus-newsrc-alist (or
changing it in any way, as a matter of fact) is strictly verboten. Gnus
maintains a hash table that points to the entries in this alist (which
speeds up many functions), and changing the alist directly will lead to
peculiar results.
Old hilit19 code does not work at all. In fact, you should probably
remove all hilit code from all Gnus hooks
(gnus-group-prepare-hook and gnus-summary-prepare-hook).
Gnus provides various integrated functions for highlighting. These are
faster and more accurate. To make life easier for everybody, Gnus will
by default remove all hilit calls from all hilit hooks. Uncleanliness!
Away!
Packages like expire-kill will no longer work. As a matter of
fact, you should probably remove all old GNUS packages (and other
code) when you start using Gnus. More likely than not, Gnus already
does what you have written code to make GNUS do. (Snicker.)
Even though old methods of doing things are still supported, only the new methods are documented in this manual. If you detect a new method of doing something while reading this manual, that does not mean you have to stop doing it the old way.
Gnus understands all GNUS startup files.
Overall, a casual user who hasn't written much code that depends on GNUS internals should suffer no problems. If problems occur, please let me know by issuing that magic command M-x gnus-bug.
If you are in the habit of sending bug reports very often, you
may find the helpful help buffer annoying after a while. If so, set
gnus-bug-create-help-buffer to nil to avoid having it pop
up at you.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
No rebels without a clue here, ma'am. We conform to all standards known to (wo)man. Except for those standards and/or conventions we disagree with, of course.
tin and Netscape I know not to use
either of those for posting articles. I would not have known that if
it wasn't for the X-Newsreader header.
If you ever notice Gnus acting non-compliant with regards to the texts mentioned above, don't hesitate to drop a note to Gnus Towers and let us know.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gnus should work on:
This Gnus version will absolutely not work on any Emacsen older than that. Not reliably, at least. Older versions of Gnus may work on older Emacs versions.
There are some vague differences between Gnus on the various platforms--XEmacs features more graphics (a logo and a toolbar)---but other than that, things should look pretty much the same under all Emacsen.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gnus is developed in a two-phased cycle. The first phase involves much discussion on the `ding@gnus.org' mailing list, where people propose changes and new features, post patches and new back ends. This phase is called the alpha phase, since the Gnusae released in this phase are alpha releases, or (perhaps more commonly in other circles) snapshots. During this phase, Gnus is assumed to be unstable and should not be used by casual users. Gnus alpha releases have names like "Red Gnus" and "Quassia Gnus".
After futzing around for 50-100 alpha releases, Gnus is declared frozen, and only bug fixes are applied. Gnus loses the prefix, and is called things like "Gnus 5.6.32" instead. Normal people are supposed to be able to use these, and these are mostly discussed on the `gnu.emacs.gnus' newsgroup.
Some variable defaults differ between alpha Gnusae and released Gnusae.
In particular, mail-source-delete-incoming defaults to nil in
alpha Gnusae and t in released Gnusae. This is to prevent
lossage of mail if an alpha release hiccups while handling the mail.
The division of discussion between the ding mailing list and the Gnus newsgroup is not purely based on publicity concerns. It's true that having people write about the horrible things that an alpha Gnus release can do (sometimes) in a public forum may scare people off, but more importantly, talking about new experimental features that have been introduced may confuse casual users. New features are frequently introduced, fiddled with, and judged to be found wanting, and then either discarded or totally rewritten. People reading the mailing list usually keep up with these rapid changes, while people on the newsgroup can't be assumed to do so.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The new Gnus version couldn't have been done without the help of all the people on the (ding) mailing list. Every day for over a year I have gotten billions of nice bug reports from them, filling me with joy, every single one of them. Smooches. The people on the list have been tried beyond endurance, what with my "oh, that's a neat idea <type type>, yup, I'll release it right away <ship off> no wait, that doesn't work at all <type type>, yup, I'll ship that one off right away <ship off> no, wait, that absolutely does not work" policy for releases. Micro$oft--bah. Amateurs. I'm much worse. (Or is that "worser"? "much worser"? "worsest"?)
I would like to take this opportunity to thank the Academy for... oops, wrong show.
This manual was proof-read by Adrian Aichner, with Ricardo Nassif, Mark Borges, and Jost Krieger proof-reading parts of the manual.
The following people have contributed many patches and suggestions:
Christopher Davis, Andrew Eskilsson, Kai Grossjohann, Kevin Greiner, Jesper Harder, Paul Jarc, Simon Josefsson, David Kċgedal, Richard Pieri, Fabrice Popineau, Daniel Quinlan, Michael Shields, Reiner Steib, Jason L. Tibbitts, III, Jack Vinson, Katsumi Yamaoka, and Teodor Zlatanov.
Also thanks to the following for patches and stuff:
Jari Aalto, Adrian Aichner, Vladimir Alexiev, Russ Allbery, Peter Arius, Matt Armstrong, Marc Auslander, Miles Bader, Alexei V. Barantsev, Frank Bennett, Robert Bihlmeyer, Chris Bone, Mark Borges, Mark Boyns, Lance A. Brown, Rob Browning, Kees de Bruin, Martin Buchholz, Joe Buehler, Kevin Buhr, Alastair Burt, Joao Cachopo, Zlatko Calusic, Massimo Campostrini, Castor, David Charlap, Dan Christensen, Kevin Christian, Jae-you Chung, James H. Cloos, Jr., Laura Conrad, Michael R. Cook, Glenn Coombs, Andrew J. Cosgriff, Neil Crellin, Frank D. Cringle, Geoffrey T. Dairiki, Andre Deparade, Ulrik Dickow, Dave Disser, Rui-Tao Dong, Joev Dubach, Michael Welsh Duggan, Dave Edmondson, Paul Eggert, Mark W. Eichin, Karl Eichwalder, Enami Tsugutomo, Michael Ernst, Luc Van Eycken, Sam Falkner, Nelson Jose dos Santos Ferreira, Sigbjorn Finne, Sven Fischer, Paul Fisher, Decklin Foster, Gary D. Foster, Paul Franklin, Guy Geens, Arne Georg Gleditsch, David S. Goldberg, Michelangelo Grigni, Dale Hagglund, D. Hall, Magnus Hammerin, Kenichi Handa, Raja R. Harinath, Yoshiki Hayashi, P. E. Jareth Hein, Hisashige Kenji, Scott Hofmann, Marc Horowitz, Gunnar Horrigmo, Richard Hoskins, Brad Howes, Miguel de Icaza, François Felix Ingrand, Tatsuya Ichikawa, Ishikawa Ichiro, Lee Iverson, Iwamuro Motonori, Rajappa Iyer, Andreas Jaeger, Adam P. Jenkins, Randell Jesup, Fred Johansen, Gareth Jones, Greg Klanderman, Karl Kleinpaste, Michael Klingbeil, Peter Skov Knudsen, Shuhei Kobayashi, Petr Konecny, Koseki Yoshinori, Thor Kristoffersen, Jens Lautenbacher, Martin Larose, Seokchan Lee, Joerg Lenneis, Carsten Leonhardt, James LewisMoss, Christian Limpach, Markus Linnala, Dave Love, Mike McEwan, Tonny Madsen, Shlomo Mahlab, Nat Makarevitch, Istvan Marko, David Martin, Jason R. Mastaler, Gordon Matzigkeit, Timo Metzemakers, Richard Mlynarik, Lantz Moore, Morioka Tomohiko, Erik Toubro Nielsen, Hrvoje Niksic, Andy Norman, Fred Oberhauser, C. R. Oldham, Alexandre Oliva, Ken Olstad, Masaharu Onishi, Hideki Ono, Ettore Perazzoli, William Perry, Stephen Peters, Jens-Ulrik Holger Petersen, Ulrich Pfeifer, Matt Pharr, Andy Piper, John McClary Prevost, Bill Pringlemeir, Mike Pullen, Jim Radford, Colin Rafferty, Lasse Rasinen, Lars Balker Rasmussen, Joe Reiss, Renaud Rioboo, Roland B. Roberts, Bart Robinson, Christian von Roques, Markus Rost, Jason Rumney, Wolfgang Rupprecht, Jay Sachs, Dewey M. Sasser, Conrad Sauerwald, Loren Schall, Dan Schmidt, Ralph Schleicher, Philippe Schnoebelen, Andreas Schwab, Randal L. Schwartz, Danny Siu, Matt Simmons, Paul D. Smith, Jeff Sparkes, Toby Speight, Michael Sperber, Darren Stalder, Richard Stallman, Greg Stark, Sam Steingold, Paul Stevenson, Jonas Steverud, Paul Stodghill, Kiyokazu Suto, Kurt Swanson, Samuel Tardieu, Teddy, Chuck Thompson, Tozawa Akihiko, Philippe Troin, James Troup, Trung Tran-Duc, Jack Twilley, Aaron M. Ucko, Aki Vehtari, Didier Verna, Vladimir Volovich, Jan Vroonhof, Stefan Waldherr, Pete Ware, Barry A. Warsaw, Christoph Wedler, Joe Wells, Lee Willis, and Lloyd Zusman.
For a full overview of what each person has done, the ChangeLogs included in the Gnus alpha distributions should give ample reading (550kB and counting).
Apologies to everybody that I've forgotten, of which there are many, I'm sure.
Gee, that's quite a list of people. I guess that must mean that there actually are people who are using Gnus. Who'd'a thunk it!
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| 10.2.9.1 (ding) Gnus | New things in Gnus 5.0/5.1, the first new Gnus. | |
| 10.2.9.2 September Gnus | The Thing Formally Known As Gnus 5.2/5.3. | |
| 10.2.9.3 Red Gnus | Third time best--Gnus 5.4/5.5. | |
| 10.2.9.4 Quassia Gnus | Two times two is four, or Gnus 5.6/5.7. | |
| 10.2.9.5 Pterodactyl Gnus | Pentad also starts with P, AKA Gnus 5.8/5.9. | |
| 10.2.9.6 Oort Gnus | It's big. It's far out. Gnus 5.10/5.11. |
These lists are, of course, just short overviews of the most important new features. No, really. There are tons more. Yes, we have feeping creaturism in full effect.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
New features in Gnus 5.0/5.1:
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
New features in Gnus 5.2/5.3:
mail-mode, rnews-reply-mode and gnus-msg are
now obsolete.
(setq gnus-build-sparse-threads 'some) |
trn-like tree buffer can be displayed (see section 3.24 Tree Display).
(setq gnus-use-trees t) |
nn-like pick-and-read minor mode is available for the summary
buffers (see section 3.23.1 Pick and Read).
(add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) |
(add-hook 'gnus-group-mode-hook 'gnus-topic-mode) |
(add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group) |
nndoc now understands all kinds of digests, mail boxes, rnews
news batches, ClariNet briefs collections, and just about everything
else (see section 6.6.3 Document Groups).
nnsoup) to create/read SOUP packets
(see section 6.6.4 SOUP).
Message-ID.
gnus-buffer-configuration (see section 8.5 Window Layout).
(setq gnus-use-nocem t) |
(setq gnus-permanently-visible-groups "^nnml:") |
Mail-Copies-To header.
References header
(see section 3.9.1 Customizing Threading).
(setq gnus-summary-thread-gathering-function
'gnus-gather-threads-by-references)
|
(setq gnus-keep-backlog 50) |
(setq gnus-prompt-before-saving t) |
gnus-uu can view decoded files asynchronously while fetching
articles (see section 3.16.5.2 Other Decode Variables).
(setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view) |
(setq gnus-cited-lines-visible 2) |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
New features in Gnus 5.4/5.5:
and,
or, not, and parent redirection (see section 7.16 Advanced Scoring).
(setq gnus-suppress-duplicates t) |
nndoc was rewritten to be easily extendable (see section 6.6.3.1 Document Server Internals).
nn-like. Line
numbers are displayed and the . command can be used to pick
articles (Pick and Read).
w
(see section 7.4 Score File Format).
(setq gnus-use-adaptive-scoring '(word)) |
(setq gnus-decay-scores t) |
nndoc with nnvirtual on top) has been added---C-M-d
(see section 3.26.4 Really Various Summary Commands).
Sorting
Groups).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
New features in Gnus 5.6:
nndraft back end has returned, but works differently than
before. All Message buffers are now also articles in the nndraft
group, which is created automatically.
gnus-alter-header-function can now be used to alter header
values.
gnus-summary-goto-article now accept Message-ID's.
nnvirtual groups with
C-u C-c C-c.
nntp-rlogin-program---new variable to ease customization.
C-u C-c C-c in gnus-article-edit-mode will now inhibit
re-highlighting of the article buffer.
gnus-boring-article-headers---long-to.
gnus-simplify-subject-functions variable to allow greater
control over simplification.
nnmail-split-methods.
custom-face-lookup function has been removed.
If you used this function in your initialization files, you must
rewrite them to use face-spec-set instead.
nntp, you can set
nntp-record-commands to a non-nil value.
nntp now uses `~/.authinfo', a `.netrc'-like file, for
controlling where and how to send AUTHINFO to NNTP servers.
article-date-iso8601.
gnus-score-thread-simplify.
message-cite-original-without-signature.
article-strip-all-blank-lines---new article command.
gnus-adaptive-word-minimum variable.
gnus-start-date-timer command.
nnlistserv back end.
nnweb.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
New features in Gnus 5.8:
If you used procmail like in
(setq nnmail-use-procmail t) (setq nnmail-spool-file 'procmail) (setq nnmail-procmail-directory "~/mail/incoming/") (setq nnmail-procmail-suffix "\\.in") |
this now has changed to
(setq mail-sources
'((directory :path "~/mail/incoming/"
:suffix ".in")))
|
See section 6.3.4.1 Mail Source Specifiers.
gnus-auto-select-first can now be a function to be
called to position point.
gnus-article-display-hook has been removed. Instead, a number
of variables starting with gnus-treat- have been added.
nnslashdot,
nnwarchive and nnultimate. nnweb has been revamped,
again, to keep up with ever-changing layouts.
nnimap.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
New features in Gnus 5.10:
gnus-article-followup-with-original) and R
(gnus-article-reply-with-original) only yank the text in the
region if the region is active.
gnus-group-read-ephemeral-group can be called interactively,
using G M.
gnus-draft-edit-message.
Use B w for gnus-summary-edit-article instead.
If you have tried Oort (the unstable Gnus branch leading to this release) but went back to a stable version, be careful when upgrading to this version. In particular, you will probably want to remove all `.marks' (nnml) and `.mrk' (nnfolder) files, so that flags are read from your `.newsrc.eld' instead of from the `.marks'/`.mrk' file where this release store flags. See a later entry for more information about marks. Note that downgrading isn't save in general.
More buttons for URLs, mail addresses, Message-IDs, Info links, man
pages and Emacs or Gnus related references. See section 3.17.6 Article Buttons. The
variables gnus-button-*-level can be used to control the
appearance of all article buttons. See section 3.17.7 Article button levels.
gnus-dired-minor-mode (see 8.20 Interaction with other modes) installs key
bindings in dired buffers to send a file as an attachment, open a file
using the appropriate mailcap entry, and print a file using the mailcap
entry.
The picons code has been reimplemented to work in GNU Emacs--some of the previous options have been removed or renamed.
Picons are small "personal icons" representing users, domain and newsgroups, which can be displayed in the Article buffer. See section 8.17.4 Picons.
gnus-treat-body-boundary is non-nil, a
boundary line is drawn at the end of the headers.
There are new commands for fetching newsgroup charters (H c) and control messages (H C).
You can delay the sending of a message with C-c C-j in the Message buffer. The messages are delivered at specified time. This is useful for sending yourself reminders. See section 3.6 Delayed Articles.
auto-compression-mode is enabled, attachments are automatically
decompressed when activated.
nnml-use-compressed-files is non-nil,
the nnml back end allows compressed message files.
(setq gnus-summary-display-arrow nil) to disable it.
Do you often find yourself replying to news by email by mistake? Then
the new option gnus-confirm-mail-reply-to-news is just the thing for
you.
gnus-summary-display-while-building is
non-nil, the summary buffer is shown and updated as it's being
built.
recent mark `.' indicates newly arrived messages (as
opposed to old but unread messages).
gnus-gcc-mark-as-read automatically marks
Gcc articles as read.
mm-uu-diff-groups-regexp
TLS/SSL is now supported in IMAP and NNTP via `tls.el' and GNUTLS. The old TLS/SSL support via (external third party) `ssl.el' and OpenSSL still works.
Use `make.bat' if you want to install Gnus under MS Windows, the
first argument to the batch-program should be the directory where
`xemacs.exe' respectively `emacs.exe' is located, iff you want
to install Gnus after compiling it, give `make.bat' /copy as
the second parameter.
`make.bat' has been rewritten from scratch, it now features
automatic recognition of XEmacs and GNU Emacs, generates
`gnus-load.el', checks if errors occur while compilation and
generation of info files and reports them at the end of the build
process. It now uses makeinfo if it is available and falls
back to `infohack.el' otherwise. `make.bat' should now
install all files which are necessary to run Gnus and be generally a
complete replacement for the configure; make; make install
cycle used under Unix systems.
The new `make.bat' makes `make-x.bat' superfluous, so it has been removed.
Message supports non-ASCII domain names in From:, To: and
Cc: and will query you whether to perform encoding when you try to
send a message. The variable message-use-idna controls this.
Gnus will also decode non-ASCII domain names in From:, To:
and Cc: when you view a message. The variable gnus-use-idna
controls this.
Gnus now tries to recognize the mangled header block that some Microsoft
mailers use to indicate that the rest of the message is a citation, even
though it is not quoted in any way. The variable
gnus-cite-unsightly-citation-regexp matches the start of these
citations.
gnus-article-skip-boring
If you set gnus-article-skip-boring to t, then Gnus will
not scroll down to show you a page that contains only boring text,
which by default means cited text and signature. You can customize
what is skippable using gnus-article-boring-faces.
This feature is especially useful if you read many articles that consist of a little new content at the top with a long, untrimmed message cited below.
%C for positioning point has changed to %*.
gnus-parameters can be used to set group parameters.
Earlier this was done only via G p (or G c), which stored the parameters in `~/.newsrc.eld', but via this variable you can enjoy the powers of customize, and simplified backups since you set the variable in `~/.gnus.el' instead of `~/.newsrc.eld'. The variable maps regular expressions matching group names to group parameters, a'la:
(setq gnus-parameters
'(("mail\\..*"
(gnus-show-threads nil)
(gnus-use-scoring nil))
("^nnimap:\\(foo.bar\\)$"
(to-group . "\\1"))))
|
Put (setq gnus-treat-display-smileys nil) in `~/.gnus.el' to
disable it.
Earlier it was generated iff the user configurable email address was
different from the Gnus guessed default user address. As the guessing
algorithm is rarely correct these days, and (more controversially) the
only use of the Sender: header was to check if you are entitled to
cancel/supersede news (which is now solved by Cancel Locks instead,
see another entry), generation of the header has been disabled by
default. See the variables message-required-headers,
message-required-news-headers, and
message-required-mail-headers.
Message now asks if you wish to remove `(was: <old subject>)' from
subject lines (see message-subject-trailing-was-query). C-c
M-m and C-c M-f inserts markers indicating included text.
C-c C-f a adds a X-No-Archive: header. C-c C-f x inserts
appropriate headers and a note in the body for cross-postings and
followups (see the variables message-cross-post-*).
message-generate-headers-first is
nil.
Gnus is now able to take out spam from your mail and news streams using a wide variety of programs and filter rules. Among the supported methods are RBL blocklists, bogofilter and white/blacklists. Hooks for easy use of external packages such as SpamAssassin and Hashcash are also new. See section 8.19 Thwarting Email Spam.
The estimated number of unread articles in the group buffer should now
be correct for nnimap groups. This is achieved by calling
nnimap-fixup-unread-after-getting-new-news from the
gnus-setup-news-hook (called on startup) and
gnus-after-getting-new-news-hook. (called after getting new
mail). If you have modified those variables from the default, you may
want to add nnimap-fixup-unread-after-getting-new-news again. If
you were happy with the estimate and want to save some (minimal) time
when getting new mail, remove the function.
To support groups that contains SPC and other weird characters, groups
are quoted before they are placed in the Gcc: header. This means
variables such as gnus-message-archive-group should no longer
contain quote characters to make groups containing SPC work. Also, if
you are using the string `nnml:foo, nnml:bar' (indicating Gcc
into two groups) you must change it to return the list
("nnml:foo" "nnml:bar"), otherwise the Gcc: line will be quoted
incorrectly. Note that returning the string `nnml:foo, nnml:bar'
was incorrect earlier, it just didn't generate any problems since it
was inserted directly.
As a result of the following change, the `~/News/overview/' directory is not used any more. You can safely delete the entire hierarchy.
gnus-agent
The Gnus Agent has seen a major updated and is now enabled by default,
and all nntp and nnimap servers from gnus-select-method and
gnus-secondary-select-method are agentized by default. Earlier
only the server in gnus-select-method was agentized by the
default, and the agent was disabled by default. When the agent is
enabled, headers are now also retrieved from the Agent cache instead
of the back ends when possible. Earlier this only happened in the
unplugged state. You can enroll or remove servers with J a and
J r in the server buffer. Gnus will not download articles into
the Agent cache, unless you instruct it to do so, though, by using
J u or J s from the Group buffer. You revert to the old
behavior of having the Agent disabled with (setq gnus-agent
nil). Note that putting (gnus-agentize) in `~/.gnus.el'
is not needed any more.
gnus-summary-line-format
The default value changed to `%U%R%z%I%(%[%4L: %-23,23f%]%)
%s\n'. Moreover gnus-extra-headers,
nnmail-extra-headers and gnus-ignored-from-addresses
changed their default so that the users name will be replaced by the
recipient's name or the group name posting to for NNTP
groups.
gnus-article-outlook-deuglify-article)
A new file from Raymond Scholz rscholz@zonix.de for deuglifying broken Outlook (Express) articles.
(require 'gnus-load)
If you use a stand-alone Gnus distribution, you'd better add
(require 'gnus-load) into your `~/.emacs' after adding the Gnus
lisp directory into load-path.
File `gnus-load.el' contains autoload commands, functions and variables, some of which may not be included in distributions of Emacsen.
gnus-slave-unplugged
A new command which starts Gnus offline in slave mode.
message-insinuate-rmail
Adding (message-insinuate-rmail) and (setq
mail-user-agent 'gnus-user-agent) in `.emacs' convinces Rmail to
compose, reply and forward messages in message-mode, where you can
enjoy the power of MML.
message-minibuffer-local-map
The line below enables BBDB in resending a message:
(define-key message-minibuffer-local-map [(tab)] 'bbdb-complete-name) |
If gnus-gcc-externalize-attachments or
message-fcc-externalize-attachments is non-nil, attach
local files as external parts.
The command gnus-mime-save-part-and-strip (bound to C-o
on MIME buttons) saves a part and replaces the part with an
external one. gnus-mime-delete-part (bound to d on
MIME buttons) removes a part. It works only on back ends
that support editing.
gnus-default-charset
The default value is determined from the
current-language-environment variable, instead of
iso-8859-1. Also the `.*' item in
gnus-group-charset-alist is removed.
gnus-posting-styles
Add a new format of match like
((header "to" "larsi.*org") (Organization "Somewhere, Inc.")) |
(header "to" "larsi.*org"
(Organization "Somewhere, Inc."))
|
message-ignored-news-headers and message-ignored-mail-headers
`X-Draft-From' and `X-Gnus-Agent-Meta-Information' have been added into these two variables. If you customized those, perhaps you need add those two headers too.
If one reads an article while plugged, and the article already exists
in the Agent, it won't get downloaded once more. (setq
gnus-agent-cache nil) reverts to the old behavior.
use-hard-newlines.
Decoding format=flowed was present but not documented in earlier
versions.
mm-fill-flowed can be used to disable treatment of
"format=flowed" messages. Also, flowed text is disabled when sending
inline PGP signed messages. (New in Gnus 5.10.7)
This is invoked with the C-c M-n key binding from message mode.
Gnus includes a new back end `nnmaildir.el'. See section 6.3.13.5 Maildir.
Gnus supports Muttprint natively with O P from the Summary and Article buffers. Also, each individual MIME part can be printed using p on the MIME button.
In the message buffer, C-c C-f C-i or C-c C-u cycles through the valid values.
This means a header `Cancel-Lock' is inserted in news posting. It is
used to determine if you wrote an article or not (for canceling and
superseding). Gnus generates a random password string the first time
you post a message, and saves it in your `~/.emacs' using the Custom
system. While the variable is called canlock-password, it is not
security sensitive data. Publishing your canlock string on the web
will not allow anyone to be able to anything she could not already do.
The behavior can be changed by customizing message-insert-canlock.
Sieve rules can be added as Group Parameters for groups, and the complete Sieve script is generated using D g from the Group buffer, and then uploaded to the server using C-c C-l in the generated Sieve buffer. See section 2.17.5 Sieve Commands, and the new Sieve manual section `Top' in Emacs Sieve.
Format spec `%&user-date;' is added into
gnus-summary-line-format-alist. Also, user defined extended
format specs are supported. The extended format specs look like
`%u&foo;', which invokes function
gnus-user-format-function-foo. Because `&' is used as the
escape character, old user defined format `%u&' is no longer supported.
gnus-summary-limit-include-cached) is rewritten.
It was aliased to Y c
(gnus-summary-insert-cached-articles). The new function filters
out other articles.
If C-u is used on subject, author or extra headers, i.e., /
s, / a, and / x
(gnus-summary-limit-to-{subject,author,extra}) respectively, the
result will be to display all articles that do not match the expression.
This is supposedly what USEFOR wanted to migrate to. See
gnus-group-name-charset-group-alist and
gnus-group-name-charset-method-alist for customization.
This makes it possible to take backup of nnml/nnfolder servers/groups
separately of `~/.newsrc.eld', while preserving marks. It also
makes it possible to share articles and marks between users (without
sharing the `~/.newsrc.eld' file) within e.g. a department. It
works by storing the marks stored in `~/.newsrc.eld' in a per-group
file `.marks' (for nnml) and `groupname.mrk' (for
nnfolder, named groupname). If the nnml/nnfolder is moved to
another machine, Gnus will automatically use the `.marks' or
`.mrk' file instead of the information in `~/.newsrc.eld'.
The new server variables nnml-marks-is-evil and
nnfolder-marks-is-evil can be used to disable this feature.
gnus-group-charset-alist and
gnus-group-ignored-charsets-alist.
The regexps in these variables are compared with full group names instead of real group names in 5.8. Users who customize these variables should change those regexps accordingly. For example:
("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr)
|
It needs an external S/MIME and OpenPGP implementation, but no
additional Lisp libraries. This add several menu items to the
Attachments menu, and C-c RET key bindings, when composing
messages. This also obsoletes gnus-article-hide-pgp-hook.
This change was made to avoid conflict with the standard binding of
back-to-indentation, which is also useful in message mode.
message-forward-show-mml changed to symbol best.
The behavior for the best value is to show MML (i.e.,
convert to MIME) when appropriate. MML will not be
used when forwarding signed or encrypted messages, as the conversion
invalidate the digital signature.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
I guess most manuals are written after-the-fact; documenting a program that's already there. This is not how this manual is written. When implementing something, I write the manual entry for that something straight away. I then see that it's difficult to explain the functionality, so I write how it's supposed to be, and then I change the implementation. Writing the documentation and writing the code goes hand in hand.
This, of course, means that this manual has no, or little, flow. It documents absolutely everything in Gnus, but often not where you're looking for it. It is a reference manual, and not a guide to how to get started with Gnus.
That would be a totally different book, that should be written using the reference manual as source material. It would look quite differently.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
So a back end mainly defines either a protocol (the nntp back
end accesses news via NNTP, the nnimap back end
accesses mail via IMAP) or a file format and directory
layout (the nnspool back end accesses news via the common
"spool directory" format, the nnml back end access mail via a
file format and directory layout that's quite similar).
Gnus does not handle the underlying media, so to speak--this is all done by the back ends. A back end is a collection of functions to access the articles.
However, sometimes the term "back end" is also used where "server" would have been more appropriate. And then there is the term "select method" which can mean either. The Gnus terminology can be quite confusing.
gnus-build-sparse-threads has been switched on.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.
| 10.5.1 Slow/Expensive NNTP Connection | You run a local Emacs and get the news elsewhere. | |
| 10.5.2 Slow Terminal Connection | You run a remote Emacs. | |
| 10.5.3 Little Disk Space | You feel that having large setup files is icky. | |
| 10.5.4 Slow Machine | You feel like buying a faster machine. |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
nil, which will inhibit Gnus from requesting the
entire active file from the server. This file is often very 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
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.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
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
Use the following to enable all the available hiding features:
(setq gnus-treat-hide-headers 'head
gnus-treat-hide-signature t
gnus-treat-hide-citation t)
|
gnus-use-full-window
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
nil, all threads in the summary buffer will be
hidden initially.
gnus-updated-mode-lines
nil, Gnus will not put information in the buffer mode
lines, which might save some time.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
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-read-newsrc-file
nil, Gnus will never read `.newsrc'---it will
only read `.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
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.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gnus works so well straight out of the box--I can't imagine any problems, really.
Ahem.
max-lisp-eval-depth to 500 or
something like that.
If all else fails, report the problem as a bug.
If you find a bug in Gnus, you can report it with the M-x gnus-bug command. M-x set-variable RET debug-on-error RET t RET, and send me the backtrace. I will fix bugs, but I can only fix them if you send me a precise description as to how to reproduce the bug.
You really can never be too detailed in a bug report. Always use the M-x gnus-bug command when you make bug reports, even if it creates a 10Kb mail each time you use it, and even if you have sent me your environment 500 times before. I don't care. I want the full info each time.
It is also important to remember that I have no memory whatsoever. If you send a bug report, and I send you a reply, and then you just send back "No, it's not! Moron!", I will have no idea what you are insulting me about. Always over-explain everything. It's much easier for all of us--if I don't have all the information I need, I will just mail you and ask for more info, and everything takes more time.
If the problem you're seeing is very visual, and you can't quite explain
it, copy the Emacs window to a file (with xwd, for instance), put
it somewhere it can be reached, and include the URL of the picture in
the bug report.
If you would like to contribute a patch to fix bugs or make improvements, please produce the patch using `diff -u'.
If you want to debug your problem further before reporting, possibly in order to solve the problem yourself and send a patch, you can use edebug. Debugging Lisp code is documented in the Elisp manual (see section `Debugging Lisp Programs' in The GNU Emacs Lisp Reference Manual). To get you started with edebug, consider if you discover some weird behavior when pressing c, the first step is to do C-h k c and click on the hyperlink (Emacs only) in the documentation buffer that leads you to the function definition, then press M-x edebug-defun RET with point inside that function, return to Gnus and press c to invoke the code. You will be placed in the lisp buffer and can single step using SPC and evaluate expressions using M-: or inspect variables using C-h v, abort execution with q, and resume execution with c or g.
Sometimes, a problem do not directly generate an elisp error but manifests itself by causing Gnus to be very slow. In these cases, you can use M-x toggle-debug-on-quit and press C-g when things are slow, and then try to analyze the backtrace (repeating the procedure helps isolating the real problem areas).
A fancier approach is to use the elisp profiler, ELP. The profiler is (or should be) fully documented elsewhere, but to get you started there are a few steps that need to be followed. First, instrument the part of Gnus you are interested in for profiling, e.g. M-x elp-instrument-package RET gnus or M-x elp-instrument-package RET message. Then perform the operation that is slow and press M-x elp-results. You will then see which operations that takes time, and can debug them further. If the entire operation takes much longer than the time spent in the slowest function in the profiler output, you probably profiled the wrong part of Gnus. To reset profiling statistics, use M-x elp-reset-all. M-x elp-restore-all is supposed to remove profiling, but given the complexities and dynamic code generation in Gnus, it might not always work perfectly.
If you just need help, you are better off asking on `gnu.emacs.gnus'. I'm not very helpful. You can also ask on the ding mailing list. Write to ding-request@gnus.org to subscribe.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
It is my hope that other people will figure out smart stuff that Gnus can do, and that other people will write those smart things as well. To facilitate that I thought it would be a good idea to describe the inner workings of Gnus. And some of the not-so-inner workings, while I'm at it.
You can never expect the internals of a program not to change, but I will be defining (in some details) the interface between Gnus and its back ends (this is written in stone), the format of the score files (ditto), data structures (some are less likely to change than others) and general methods of operation.
| 10.7.1 Gnus Utility Functions | Common functions and variable to use. | |
| 10.7.2 Back End Interface | How Gnus communicates with the servers. | |
| 10.7.3 Score File Syntax | A BNF definition of the score file standard. | |
| 10.7.4 Headers | How Gnus stores headers internally. | |
| 10.7.5 Ranges | A handy format for storing mucho numbers. | |
| 10.7.6 Group Info | The group info format. | |
| 10.7.7 Extended Interactive | Symbolic prefixes and stuff. | |
| 10.7.8 Emacs/XEmacs Code | Gnus can be run under all modern Emacsen. | |
| 10.7.9 Various File Formats | Formats of files that Gnus use. |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
When writing small functions to be run from hooks (and stuff), it's vital to have access to the Gnus internal functions and variables. Below is a list of the most common ones.
gnus-newsgroup-name
gnus-find-method-for-group
gnus-group-real-name
gnus-group-prefixed-name
gnus-get-info
gnus-group-unread
t if that is
unknown.
gnus-active
gnus-set-active
gnus-add-current-to-buffer-list
gnus-continuum-version
gnus-group-read-only-p
gnus-news-group-p
gnus-ephemeral-group-p
gnus-server-to-method
gnus-server-equal
gnus-group-native-p
gnus-group-secondary-p
gnus-group-foreign-p
gnus-group-find-parameter
gnus-group-set-parameter
gnus-narrow-to-body
gnus-check-backe