+2003-05-01 Jesper Harder <harder@ifa.au.dk>
+
+ * etc/gnus-tut.txt (http): Update.
+
+2003-05-01 Simon Josefsson <jas@extundo.com>
+
+ * GNUS-NEWS: Add prefix limit feature.
+
+2003-04-30 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * GNUS-NEWS: Added Article Buttons. Added Upgrading (from Simon
+ Josefsson). Add gnus-mime-delete-part, markup fixes and some
+ other corrections. Mention Gnus FAQ.
+
+
+2003-04-30 Jesper Harder <harder@ifa.au.dk>
+
+ * GNUS-NEWS: Additions.
+
+2003-04-28 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * GNUS-NEWS: Fixed X-Draft-Headers entry.
+
+2003-04-27 Simon Josefsson <jas@extundo.com>
+
+ * GNUS-NEWS: Fix PGP entry. Doc GCC variable change.
+
2003-04-22 Reiner Steib <Reiner.Steib@gmx.de>
* make.bat: Flag as binary to ensure DOS line terminators. Delete
\f
* Changes in Oort Gnus
+** The revised Gnus FAQ is included in the manual.
+See the info node "Frequently Asked Questions".
+
+** Upgrading from previous (stable) version if you have used Oort.
+
+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.
+
+** Article Buttons
+
+More buttons for URLs, mail addresses, Message-IDs, Info links, man pages and
+Emacs or Gnus related references, see the info node "Article Buttons". The
+variables `gnus-button-*-level' can be used to control the appearance of all
+article buttons, see the info node "Article Button Levels".
+
+** Dired integration
+`gnus-dired-minor-mode' installs key bindings in dired buffers to send
+a file as an attachment (`C-c C-a'), open a file using the approriate
+mailcap entry (`C-c C-l'), and print a file using the mailcap entry
+(`C-c P'). It is enabled with
+
+ (add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode)
+
+** Gnus can display RSS newsfeeds as a newsgroup. To get started do `B
+nnrss RET RET' in the Group buffer.
+
+** Single-part yenc encoded attachments can be decoded.
+
+** Picons
+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. To enable
+picons, install the picons database from
+
+ http://www.cs.indiana.edu/picons/ftp/index.html
+
+and point `gnus-picon-databases' to that location.
+
+** If the new option `gnus-treat-body-boundary' is `head', a boundary
+line is drawn at the end of the headers.
+
+** Retrieval of charters and control messages
+There are new commands for fetching newsgroup charters (`H c') and
+control messages (`H C').
+
+** Delayed articles
+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. Setup with (gnus-delay-initialize).
+
+** If `auto-compression-mode' is enabled, attachments are automatically
+decompressed when activated.
+
+** If the new option `nnml-use-compressed-files' is non-nil,
+the nnml back end allows compressed message files.
+
+** Signed article headers (X-PGP-Sig) can be verified with `W p'.
+
+** The Summary Buffer uses an arrow in the fringe to indicate the current
+article. Use (setq gnus-summary-display-arrow nil) to disable it.
+
+** Warn about email replies to news
+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.
+
+** If the new option `gnus-summary-display-while-building' is non-nil,
+the summary buffer is shown and updated as it's being built.
+
+** The new `recent' mark "." indicates newly arrived messages (as
+opposed to old but unread messages).
+
+** The new option `gnus-gcc-mark-as-read' automatically marks
+Gcc articles as read.
+
+** The nndoc back end now supports mailman digests and exim bounces.
+
+** Gnus supports RFC 2369 mailing list headers, and adds a number of
+related commands in mailing list groups.
+
+** The Date header can be displayed in a format that can be read aloud
+in English, see `gnus-treat-date-english'.
+
+** The envelope sender address can be customized when using Sendmail, see
+`message-sendmail-envelope-from'.
+
+** diffs are automatically highlighted in groups matching
+`mm-uu-diff-groups-regexp'
+
** TLS wrapper shipped with Gnus
TLS/SSL is now supported in IMAP and NNTP via tls.el and GNUTLS. The
`message-cross-post-*').
** References and X-Draft-Headers are no longer generated when you
- start composing messages.
+ start composing messages and `message-generate-headers-first' is nil.
** Improved anti-spam features.
** message-insinuate-rmail
Adding (message-insinuate-rmail) and (setq mail-user-agent
-'gnus-user-agent) in .emacs convinces RMAIL to compose, reply and
+'gnus-user-agent) in .emacs convinces Rmail to compose, reply and
forward messages in message-mode, where you can enjoy the power of
MML.
(define-key message-minibuffer-local-map [(tab)] 'bbdb-complete-name)
-** Externalize attachments.
+** Externalizing and deleting of attachments.
If gnus-gcc-externalize-attachments (or
message-fcc-externalize-attachments) is non-nil, attach local files as
external parts.
-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. It works only
-on back ends that support editing.
+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
** Message supports the Importance: (RFC 2156) header.
-In the message buffer, C-c C-f C-i or C-u cycles through the valid values.
+In the message buffer, `C-c C-f C-i' or `C-c C-u' cycles through the
+valid values.
** Gnus supports Cancel Locks in News.
It was aliased to `Y c' (gnus-summary-insert-cached-articles). The new
function filters out other articles.
+** Some limiting commands accept a C-u prefix to negate the match.
+
+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.
+
** Group names are treated as UTF-8 by default.
This is supposedly what USEFOR wanted to migrate to. See
** The nnml and nnfolder backends store marks for each groups.
This makes it possible to take backup of nnml/nnfolder servers/groups
-separately of .newsrc.eld, while preserving marks. It also makes it
+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
+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 .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.
been renamed to "Gnus".
** The menu bar item (in Message mode) named "MML" has been renamed to
-"Attachments".
+"Attachments". Note that this menu also contains security related
+stuff, like signing and encryption.
** gnus-group-charset-alist and gnus-group-ignored-charsets-alist.
** Gnus supports PGP (RFC 1991/2440), PGP/MIME (RFC 2015/3156) and
** S/MIME (RFC 2630-2633).
-It needs an external S/MIME and OpenPGP implementation, but no additional
-lisp libraries.
+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'.
** Gnus inlines external parts (message/external).
+2003-05-01 Vasily Korytov <deskpot@despammed.com>
+
+ * gpg.el (gpg-passphrase-forget): Check that gpg-passphrase is
+ set.
+
2003-04-17 Steve Youngs <youngs@xemacs.org>
* hashcash.el (hashcash-point-at-bol): Move the fbound test
;; Keywords: crypto
;; Created: 2000-04-15
-;; $Id: gpg.el,v 1.1.1.3 2002-05-06 23:49:18 yamaoka Exp $
+;; $Id: gpg.el,v 1.1.1.4 2003-05-03 11:32:18 yamaoka Exp $
;; This file is NOT (yet?) part of GNU Emacs.
(defun gpg-passphrase-forget ()
"Forget stored passphrase."
(interactive)
- (cancel-timer gpg-passphrase-timer)
- (setq gpg-passphrase-timer nil)
- (gpg-passphrase-clear-string gpg-passphrase)
- (setq gpg-passphrase nil))
+ (when gpg-passphrase
+ (cancel-timer gpg-passphrase-timer)
+ (setq gpg-passphrase-timer nil)
+ (gpg-passphrase-clear-string gpg-passphrase)
+ (setq gpg-passphrase nil)))
(defun gpg-passphrase-store (passphrase)
"Store PASSPHRASE in cache.
There is absolutely no chance, whatsoever, of getting Gnus to work
with Emacs 18. It won't even work on Emacsen older than Emacs
-20.3/XEmacs 20.4. Upgrade your Emacs or die.
+20.7/XEmacs 21.1. Upgrade your Emacs or die.
From lars Thu Feb 23 23:20:38 1995
1.5. Which version of Emacs do I need?
Gnus 5.10.0 requires an Emacs version that is greater than or equal
- to Emacs 20.3 or XEmacs 20.1.
+ to Emacs 20.7 or XEmacs 21.1.
1.6. How do I run Gnus on both Emacs and XEmacs?
+2003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
+
+ * gnus.el: Oort Gnus v0.24 is released.
+
+2003-05-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * dgnushack.el (when): Check whether defadvice is fbound.
+
+2003-05-01 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus-registry.el (gnus-registry-unregistered-group-regex): new variable
+ (gnus-registry-register-message-ids): use it
+
+2003-05-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.el (gnus-version-number): Bump.
+
+ * gnus.el: Update copyright for several files.
+
+2003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
+
+ * gnus.el: Oort Gnus v0.23 is released.
+
+2003-05-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * spam-stat.el (spam-stat-test-directory): Compare against zero.
+
+2003-05-01 Trey Jackson <tjackson@ichips.intel.com> (tiny change)
+
+ * spam-stat.el (spam-stat-test-directory): Skip 0 length files.
+
+2003-05-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.el (message-forward-subject-name-subject): Decode
+ string when forwarding.
+
+2003-05-01 Oystein Viggen <oysteivi@tihlde.org>
+
+ * dgnushack.el (when): Add defadvice.
+
+2003-05-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.el (gnus-version-number): Bump.
+
+2003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
+
+ * gnus.el: Oort Gnus v0.22 is released.
+
+2003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
+
+ * gnus.el: Oort Gnus v0.21 is released.
+
+2003-05-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.el (gnus-version-number): Bump.
+
+2003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
+
+ * gnus.el: Oort Gnus v0.20 is released.
+
+2003-05-01 Vasily Korytov <deskpot@despammed.com>
+
+ * gnus-dired.el (gnus-dired-mode-map): Move to C-c C-l.
+
+2003-04-30 Mark A. Hershberger <mah@everybody.org>
+
+ * mm-url.el (mm-url-insert-file-contents): set url-current-object
+ in the case where mm-url-use-external is set.
+
+ * nnrss.el (nnrss-request-article): Change the messages created to
+ multipart/alternative. Hopefully fixes a problem interaction with
+ w3m.
+ (nnrss-find-rss-via-syndic8): Better handling if xml-rpc.el isn't
+ around.
+
+2003-05-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.el (message-check-news-header-syntax): Alter "posting"
+ message.
+
+ * nnrss.el (nnrss-node-text): Don't use char classes.
+
+2003-05-01 David Z. Maze <dmaze@mit.edu>
+
+ * nnrss.el (nnrss-find-rss-via-syndic8): Have an `error' branch
+ in condition-case.
+
+2003-05-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.el (message-required-headers): Remove In-Reply-To.
+
+ * gnus-int.el (gnus-open-server): Revert changes.
+
+2003-04-30 Kai Gro\e,A_\e(Bjohann <kai.grossjohann@gmx.net>
+
+ * gnus-int.el (gnus-open-server): Try to open unagentized servers
+ even when unplugged.
+
+2003-04-30 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * gnus-art.el (gnus-button-prefer-mid-or-mail): Fixed typo in
+ doc-string.
+
+2003-05-01 Steve Youngs <youngs@xemacs.org>
+
+ * lpath.el: Add a section for non-Mule XEmacsen.
+ fbind `find-charset-string' and `coding-system-base' in that
+ section.
+
+ * gnus-util.el (gnus-completing-read-maybe-default): New.
+ (gnus-completing-read): Use it.
+
+ * mm-view.el (mm-view-pkcs7-decrypt): Ditto.
+
+ * gnus-art.el (gnus-read-string): New.
+ (gnus-summary-pipe-to-muttprint): Use it.
+
+ * gnus-xmas.el (gnus-xmas-open-network-stream): New.
+
+ * dns.el (dns-make-network-process): Use it.
+
+ Take care of some differences between XEmacs 21.1 and newer
+ versions of XEmacs.
+
+2003-04-30 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus-registry.el (gnus-registry-split-fancy-with-parent): added
+ diagnostic message
+ (gnus-registry-grep-in-list): don't run when word is nil
+ (gnus-registry-fetch-message-id-fast): new function
+ (gnus-registry-delete-group, gnus-registry-add-group): make sure
+ the id and group are not nil
+ (gnus-registry-register-message-ids): new function
+ (gnus-register-action): optimized logical flow
+ (gnus-summary-prepare-hook): added gnus-registry-register-message-ids
+
+2003-04-30 Kai Gro\e,A_\e(Bjohann <kai.grossjohann@gmx.net>
+
+ * gnus-delay.el (gnus-delay-article): Call
+ `gnus-agent-queue-setup' to create the delay group.
+
+ * gnus-agent.el (gnus-agent-queue-setup): Support optional arg
+ for the (queue) group name.
+
+2003-04-30 Simon Josefsson <jas@extundo.com>
+
+ * mm-util.el (mm-charset-to-coding-system): Use user specified
+ charset unless coding-system-get is fboundp.
+
+2003-04-30 Kevin Greiner <kgreiner@xpediantsolutions.com>
+
+ * gnus-agent.el (gnus-agent-cat-defaccessor, gnus-agent-cat-name):
+ Wrapped in eval-when-compile.
+ (gnus-agent-mode): Bind gnus-agent-go-online to nil as you
+ shouldn't be asked twice to go online with each server.
+ (gnus-agent-get-undownloaded-list, gnus-agent-fetch-articles,
+ gnus-agent-crosspost, gnus-agent-flush-cache,
+ gnus-agent-fetch-session, gnus-agent-unread-articles,
+ gnus-agent-uncached-articles, gnus-agent-regenerate-group,
+ gnus-agent-group-covered-p): Expanded pop macros used for
+ effect. Avoids compilation warning in emacs 21.3.
+
+ * gnus-int.el (gnus-open-server): Restructured to only open
+ nnagent when gnus-plugged is nil.
+
+2003-04-30 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * lpath.el: Fbind string-to-multibyte.
+
+2003-04-30 Steve Youngs <youngs@xemacs.org>
+
+ * dgnushack.el: Add some missing autoloads for XEmacs 21.1.
+
+2003-04-29 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus-registry.el (gnus-registry-fetch-group): faster
+ (gnus-registry-delete-group): new function
+ (gnus-registry-add-group): new function
+ (gnus-register-spool-action): use it
+ (gnus-register-action): use it
+ (gnus-registry-translate-from-alist)
+ (gnus-registry-translate-to-alist): remove the headers registry
+ for now
+
+2003-04-29 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * gnus-art.el (gnus-button-alist): Fixed CTAN regexp.
+
+2003-04-29 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * spam-report.el (spam-report-gmane): gnus-summary-article-number
+ is not necessary, just use the function parameter
+
+2003-04-29 Karl Pflysterer <sigurd@12move.de>
+
+ * spam-stat.el (spam-stat-save): No longer font-locks the file
+ when saving
+
+2003-04-29 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * canlock.el: Bind mail-header-separator when compiling (XEmacs
+ provides it in mail-lib/auto-autoloads.el).
+
+2003-04-29 Simon Josefsson <jas@extundo.com>
+
+ * mml2015.el (mml2015-pgg-sign): Use mml-sender instead of
+ message-sender.
+
+ * mml.el (mml-generate-mime-1): Set mml-sender too.
+
+2003-04-29 Jesper Harder <harder@ifa.au.dk>
+
+ * gnus-sum.el (gnus-summary-display-while-building): Docstring fix.
+
+ * mm-url.el (mm-url-use-external): do.
+
+2003-04-29 Simon Josefsson <jas@extundo.com>
+
+ * canlock.el (mail-fetch-field): Autoload it (fix xemacs compile
+ warnings).
+
+ * sieve-mode.el (c-mode): Ditto.
+
+ * pgg.el (run-at-time): Ditto.
+
+ * mm-url.el (require): Require timer when compiling for
+ with-timeout macro (fix xemacs compile warnings).
+
+2003-04-28 Dave Love <fx@gnu.org>
+
+ * gnus-util.el (nnheader): Don't require.
+ (Nnheader-narrow-to-headers, nnheader-replace-chars-in-string):
+ Autoload.
+
+ * spam.el: Require cl when compiling.
+
+ * dns.el: Require cl when compiling.
+
+2003-04-28 Jesper Harder <harder@ifa.au.dk>
+
+ * gnus-art.el (gnus-article-goto-next-page)
+ (gnus-article-goto-prev-page): Revert 2003-02-12 change to make
+ gnus-pick-mode work.
+
+2003-04-28 Steve Youngs <youngs@xemacs.org>
+
+ * Makefile.in (FLAGS): Use @FLAGS@.
+
+2003-04-27 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * gnus-art.el (gnus-mime-display-multipart-as-mixed)
+ (gnus-mime-display-multipart-alternative-as-mixed)
+ (gnus-mime-display-multipart-related-as-mixed): Added doc-strings,
+ allow customization.
+
+2003-04-27 Kevin Greiner <kgreiner@xpediantsolutions.com>
+
+ * dgnushack.el (dgnushack-compile-verbosely): New function. Not
+ currently called (See source for explanation).
+
+2003-04-27 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-sum.el (gnus-summary-catchup): Don't mark ticked messages.
+ (gnus-summary-mark-read-and-unread-as-read): Take an optional
+ mark.
+
+ * gnus.el (gnus-version-number): Bump.
+
2003-04-27 06:47:31 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
* gnus.el: Oort Gnus v0.19 is released.
2003-04-24 Dave Love <fx@gnu.org>
+ * mm-encode.el (mm-long-lines-p): Autoload.
+ (mm-encode-content-transfer-encoding): Don't try to make buffer
+ unibyte before decoding. Don't ignore errors for base64 encoding.
+
* qp.el (quoted-printable-decode-region): Use mm-insert-byte.
Signal error on malformed text, as for base64.
(quoted-printable-encode-region): DTRT in Emacs 22.
top_srcdir = @top_srcdir@
EMACS = @EMACS@
-FLAGS = -batch -q -no-site-file -l $(srcdir)/dgnushack.el
+FLAGS = @FLAGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
SHELL = /bin/sh
;;; canlock.el --- functions for Cancel-Lock feature
-;; Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
;; Author: Katsumi Yamaoka <yamaoka@jpl.org>
;; Keywords: news, cancel-lock, hmac, sha1, rfc2104
(autoload 'sha1-binary "sha1-el")
(autoload 'base64-encode-string "base64")
+(autoload 'mail-fetch-field "mail-utils")
+(defvar mail-header-separator)
(defgroup canlock nil
"The Cancel-Lock feature."
;;; dgnushack.el --- a hack to set the load path for byte-compiling
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003
;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
(eval-and-compile
(when (featurep 'xemacs)
+ ;; XEmacs 21.1 needs some extra hand holding
+ (when (eq emacs-minor-version 1)
+ (autoload 'custom-declare-face "cus-face" nil t)
+ (autoload 'cl-compile-time-init "cl-macs" nil t)
+ (autoload 'defadvice "advice" nil nil 'macro))
+ (unless (fboundp 'defadvice)
+ (autoload 'defadvice "advice" nil nil 'macro))
(autoload 'Info-directory "info" nil t)
(autoload 'Info-menu "info" nil t)
(autoload 'annotations-at "annotations")
(defalias 'run-with-idle-timer 'ignore)
(defalias 'w3-coding-system-for-mime-charset 'ignore)))
+(defun dgnushack-compile-verbosely ()
+ "Call dgnushack-compile with warnings ENABLED. If you are compiling
+patches to gnus, you should consider modifying make.bat to call
+dgnushack-compile-verbosely. All other users should continue to use
+dgnushack-compile."
+ (dgnushack-compile t))
+
(defun dgnushack-compile (&optional warn)
;;(setq byte-compile-dynamic t)
(unless warn
;;; Code:
+(eval-when-compile (require 'cl))
+
(require 'mm-util)
(defvar dns-timeout 5
;;; Interface functions.
+(autoload 'gnus-xmacs-open-network-stream "gnus-xmas" nil nil 'macro)
+
(defmacro dns-make-network-process (server)
(if (featurep 'xemacs)
`(let ((coding-system-for-read 'binary)
(coding-system-for-write 'binary))
- (open-network-stream "dns" (current-buffer) ,server "domain" 'udp))
+ (gnus-xmas-open-network-stream "dns" (current-buffer)
+ ,server "domain" 'udp))
`(let ((server ,server)
(coding-system-for-read 'binary)
(coding-system-for-write 'binary))
(setq category (cdr category)))))))
category)
-;; Fixme: These two can probably be in eval-when-compile.
-
-(defmacro gnus-agent-cat-defaccessor (name prop-name)
- "Define accessor and setter methods for manipulating a list of the form
+(eval-when-compile
+ (defmacro gnus-agent-cat-defaccessor (name prop-name)
+ "Define accessor and setter methods for manipulating a list of the form
\(NAME (PROPERTY1 VALUE1) ... (PROPERTY_N VALUE_N)).
Given the call (gnus-agent-cat-defaccessor func PROPERTY1), the list may be
manipulated as follows:
(func LIST): Returns VALUE1
(setf (func LIST) NEW_VALUE1): Replaces VALUE1 with NEW_VALUE1."
- `(progn (defmacro ,name (category)
- (list (quote cdr) (list (quote assq)
- (quote (quote ,prop-name)) category)))
-
- (define-setf-method ,name (category)
- (let* ((--category--temp-- (make-symbol "--category--"))
- (--value--temp-- (make-symbol "--value--")))
- (list (list --category--temp--) ; temporary-variables
- (list category) ; value-forms
- (list --value--temp--) ; store-variables
- (let* ((category --category--temp--) ; store-form
- (value --value--temp--))
- (list (quote gnus-agent-cat-set-property)
- category
- (quote (quote ,prop-name))
- value))
- (list (quote ,name) --category--temp--) ; access-form
- )))))
-
-(defmacro gnus-agent-cat-name (category)
- `(car ,category))
+ `(progn (defmacro ,name (category)
+ (list (quote cdr) (list (quote assq)
+ (quote (quote ,prop-name)) category)))
+
+ (define-setf-method ,name (category)
+ (let* ((--category--temp-- (make-symbol "--category--"))
+ (--value--temp-- (make-symbol "--value--")))
+ (list (list --category--temp--) ; temporary-variables
+ (list category) ; value-forms
+ (list --value--temp--) ; store-variables
+ (let* ((category --category--temp--) ; store-form
+ (value --value--temp--))
+ (list (quote gnus-agent-cat-set-property)
+ category
+ (quote (quote ,prop-name))
+ value))
+ (list (quote ,name) --category--temp--) ; access-form
+ )))))
+
+ (defmacro gnus-agent-cat-name (category)
+ `(car ,category))
+ )
(gnus-agent-cat-defaccessor
gnus-agent-cat-days-until-old agent-days-until-old)
buffer))))
minor-mode-map-alist))
(when (eq major-mode 'gnus-group-mode)
- (let ((init-plugged gnus-plugged))
+ (let ((init-plugged gnus-plugged)
+ (gnus-agent-go-online nil))
;; g-a-t-p does nothing when gnus-plugged isn't changed.
;; Therefore, make certain that the current value does not
;; match the desired initial value.
gnus-agent-covered-methods ))))
(append (list gnus-select-method) gnus-secondary-select-methods))))
-(defun gnus-agent-queue-setup ()
- "Make sure the queue group exists."
- (unless (gnus-gethash "nndraft:queue" gnus-newsrc-hashtb)
- (gnus-request-create-group "queue" '(nndraft ""))
+(defun gnus-agent-queue-setup (&optional group-name)
+ "Make sure the queue group exists.
+Optional arg GROUP-NAME allows to specify another group."
+ (unless (gnus-gethash (format "nndraft:%s" (or group-name "queue"))
+ gnus-newsrc-hashtb)
+ (gnus-request-create-group (or group-name "queue") '(nndraft ""))
(let ((gnus-level-default-subscribed 1))
- (gnus-subscribe-group "nndraft:queue" nil '(nndraft "")))
+ (gnus-subscribe-group (format "nndraft:%s" (or group-name "queue"))
+ nil '(nndraft "")))
(gnus-group-set-parameter
- "nndraft:queue" 'gnus-dummy '((gnus-draft-mode)))))
+ (format "nndraft:%s" (or group-name "queue"))
+ 'gnus-dummy '((gnus-draft-mode)))))
(defun gnus-agent-send-mail ()
(if gnus-plugged
(cond ((< a h)
;; Ignore IDs in the alist that are not being
;; displayed in the summary.
- (pop alist))
+ (setq alist (cdr alist)))
((> a h)
;; Headers that are not in the alist should be
;; fictious (see nnagent-retrieve-headers); they
;; imply that this article isn't in the agent.
(gnus-agent-append-to-list tail-undownloaded h)
(gnus-agent-append-to-list tail-unfetched h)
- (pop headers))
+ (setq headers (cdr headers)))
((cdar alist)
- (pop alist)
- (pop headers)
+ (setq alist (cdr alist))
+ (setq headers (cdr headers))
nil ; ignore already downloaded
)
(t
- (pop alist)
- (pop headers)
+ (setq alist (cdr alist))
+ (setq headers (cdr headers))
;; This article isn't in the agent. Check to see
;; if it is in the cache. If it is, it's been
;; downloaded.
(while (and cached (< (car cached) a))
- (pop cached))
+ (setq cached (cdr cached)))
(unless (equal a (car cached))
(gnus-agent-append-to-list tail-undownloaded a))))))
(gnus-agent-append-to-list
tail-fetched-articles (caar pos)))
(widen)
- (pop pos))))
+ (setq pos (cdr pos)))))
(gnus-agent-save-alist group (cdr fetched-articles) date)
(gnus-message 7 ""))
(insert (string-to-number (cdar crosses)))
(insert-buffer-substring gnus-agent-overview-buffer beg end)
(gnus-agent-check-overview-buffer))
- (pop crosses))))
+ (setq crosses (cdr crosses)))))
(defun gnus-agent-backup-overview-buffer ()
(when gnus-newsgroup-name
(gnus-agent-article-name ".overview"
(caar gnus-agent-buffer-alist))
nil 'silent))
- (pop gnus-agent-buffer-alist))
+ (setq gnus-agent-buffer-alist (cdr gnus-agent-buffer-alist)))
(while gnus-agent-group-alist
(with-temp-file (gnus-agent-article-name
".agentview" (caar gnus-agent-group-alist))
(insert "\n")
(princ 1 (current-buffer))
(insert "\n"))
- (pop gnus-agent-group-alist))))
+ (setq gnus-agent-group-alist (cdr gnus-agent-group-alist)))))
(defun gnus-agent-find-parameter (group symbol)
"Search for GROUPs SYMBOL in the group's parameters, the group's
(error-message-string err)))
(signal 'quit
"Cannot fetch articles into the Gnus agent")))))))))
- (pop methods))
+ (setq methods (cdr methods)))
(gnus-run-hooks 'gnus-agent-fetched-hook)
(gnus-message 6 "Finished fetching articles into the Gnus agent"))))
(gnus-agent-append-to-list tail-unread candidate)
nil)
((> candidate max)
- (pop read)))))))
+ (setq read (cdr read))))))))
(while known
(gnus-agent-append-to-list tail-unread (car (pop known))))
(cdr unread)))
(v2 (caar ref)))
(cond ((< v1 v2) ; v1 does not appear in the reference list
(gnus-agent-append-to-list tail-uncached v1)
- (pop arts))
+ (setq arts (cdr arts)))
((= v1 v2)
(unless (or cached-header (cdar ref)) ; v1 is already cached
(gnus-agent-append-to-list tail-uncached v1))
- (pop arts)
- (pop ref))
+ (setq arts (cdr arts))
+ (setq ref (cdr ref)))
(t ; reference article (v2) preceeds the list being filtered
- (pop ref)))))
+ (setq ref (cdr ref))))))
(while arts
(gnus-agent-append-to-list tail-uncached (pop arts)))
(cdr uncached))
(gnus-message 4 "gnus-agent-regenerate-group: NOV\
entries contained duplicate of article %s. Duplicate deleted." l1)
(gnus-delete-line)
- (pop nov-arts)))))
+ (setq nov-arts (cdr nov-arts))))))
(t
(gnus-message 1 "gnus-agent-regenerate-group: NOV\
entries contained line that did not begin with an article number. Deleted\
(nth 5 (file-attributes
(concat dir (number-to-string
(car downloaded))))))) alist)
- (pop downloaded)
- (pop nov-arts))
+ (setq downloaded (cdr downloaded))
+ (setq nov-arts (cdr nov-arts)))
(t
;; This entry in the overview has not been downloaded
(push (cons (car nov-arts) nil) alist)
- (pop nov-arts))))
+ (setq nov-arts (cdr nov-arts)))))
;; When gnus-agent-consider-all-articles is set,
;; gnus-agent-regenerate-group should NOT remove article IDs from
(oID (caar o)))
(cond ((not nID)
(setq n (setcdr n (list (list oID))))
- (pop o))
+ (setq o (cdr o)))
((< oID nID)
(setcdr n (cons (list oID) (cdr n)))
- (pop o))
+ (setq o (cdr o)))
((= oID nID)
- (pop o)
- (pop n))
+ (setq o (cdr o))
+ (setq n (cdr n)))
(t
- (pop n)))))
+ (setq n (cdr n))))))
(setq alist (cdr merged)))
;; Restore the last article ID if it is not already in the new alist
(let ((n (last alist))
(caar days)
group))
(throw 'found (cadar days)))
- (pop days))
+ (setq days (cdr days)))
nil)))
(when day
(gnus-group-set-parameter group 'agent-days-until-old
(shell-command-on-region (point-min) (point-max) command nil)))
(setq gnus-last-shell-command command))
+(defmacro gnus-read-string (prompt &optional initial-contents history
+ default-value)
+ "Like `read-string' but allow for older XEmacsen that don't have the 5th arg."
+ (if (and (featurep 'xemacs)
+ (< emacs-minor-version 2))
+ `(read-string ,prompt ,initial-contents ,history)
+ `(read-string ,prompt ,initial-contents ,history ,default-value)))
+
(defun gnus-summary-pipe-to-muttprint (&optional command)
"Pipe this article to muttprint."
- (setq command (read-string
+ (setq command (gnus-read-string
"Print using command: " gnus-summary-muttprint-program
nil gnus-summary-muttprint-program))
(gnus-summary-save-in-pipe command))
(narrow-to-region (point-min) (point))
(gnus-treat-article 'head))))))))
-(defvar gnus-mime-display-multipart-as-mixed nil)
-(defvar gnus-mime-display-multipart-alternative-as-mixed nil)
-(defvar gnus-mime-display-multipart-related-as-mixed nil)
+(defcustom gnus-mime-display-multipart-as-mixed nil
+ "Display \"multipart\" parts as \"multipart/mixed\".
+
+If `t', it overrides `nil' values of
+`gnus-mime-display-multipart-alternative-as-mixed' and
+`gnus-mime-display-multipart-related-as-mixed'."
+ :group 'gnus-article-mime
+ :type 'boolean)
+
+(defcustom gnus-mime-display-multipart-alternative-as-mixed nil
+ "Display \"multipart/alternative\" parts as \"multipart/mixed\"."
+ :group 'gnus-article-mime
+ :type 'boolean)
+
+(defcustom gnus-mime-display-multipart-related-as-mixed nil
+ "Display \"multipart/related\" parts as \"multipart/mixed\".
+
+If displaying \"text/html\" is discouraged \(see
+`mm-discouraged-alternatives'\) images or other material inside a
+\"multipart/related\" part might be overlooked when this variable is `nil'."
+ :group 'gnus-article-mime
+ :type 'boolean)
(defun gnus-mime-display-part (handle)
(cond
(defun gnus-article-goto-next-page ()
"Show the next page of the article."
(interactive)
- (gnus-eval-in-buffer-window gnus-summary-buffer
- (gnus-summary-next-page)))
+ (when (gnus-article-next-page)
+ (goto-char (point-min))
+ (gnus-article-read-summary-keys nil (gnus-character-to-event ?n))))
+
(defun gnus-article-goto-prev-page ()
"Show the next page of the article."
(interactive)
- (gnus-eval-in-buffer-window gnus-summary-buffer
- (gnus-summary-prev-page)))
+ (if (bobp)
+ (gnus-article-read-summary-keys nil (gnus-character-to-event ?p))
+ (gnus-article-prev-page nil)))
+
+;; This is cleaner but currently breaks `gnus-pick-mode':
+;;
+;; (defun gnus-article-goto-next-page ()
+;; "Show the next page of the article."
+;; (interactive)
+;; (gnus-eval-in-buffer-window gnus-summary-buffer
+;; (gnus-summary-next-page)))
+;;
+;; (defun gnus-article-goto-prev-page ()
+;; "Show the next page of the article."
+;; (interactive)
+;; (gnus-eval-in-buffer-window gnus-summary-buffer
+;; (gnus-summary-prev-page)))
(defun gnus-article-next-page (&optional lines)
"Show the next page of the current article.
"What to do when the button on a string as \"foo123@bar.invalid\" is pushed.
Strings like this can be either a message ID or a mail address. If it is one
of the symbols `mid' or `mail', Gnus will always assume that the string is a
-message ID or a mail address, respectivly. If this variable is set to the
+message ID or a mail address, respectively. If this variable is set to the
symbol `ask', always query the user what do do. If it is a function, this
function will be called with the string as it's only argument. The function
must return `mid', `mail', `invalid' or `ask'."
("\\bmailto:\\([^ \n\t]+\\)"
0 (>= gnus-button-message-level 0) gnus-url-mailto 1)
;; CTAN
- ("\\bCTAN:[ \t\n]*\\([^>)!;:,'\n\t ]*\\)"
+ ((concat "\\bCTAN:[ \t\n]?[^>)!;:,'\n\t ]*\\("
+ gnus-button-ctan-directory-regexp
+ "[^][>)!;:,'\n\t ]+\\)")
0 (>= gnus-button-tex-level 1) gnus-button-handle-ctan 1)
((concat "\\btex-archive/\\("
gnus-button-ctan-directory-regexp
1 (>= gnus-button-emacs-level 8) gnus-button-handle-library 1)
("`\\([a-z][-a-z0-9]+\\.el\\)'"
1 (>= gnus-button-emacs-level 8) gnus-button-handle-library 1)
- ("`\\([a-z]+-[a-z]+-[-a-z]+\\|\\(gnus\\|message\\)-[-a-z]+\\)'"
+ ("`\\([a-z][a-z0-9]+-[a-z]+-[-a-z]+\\|\\(gnus\\|message\\)-[-a-z]+\\)'"
0 (>= gnus-button-emacs-level 8) gnus-button-handle-symbol 1)
- ("`\\([a-z]+-[a-z]+\\)'"
+ ("`\\([a-z][a-z0-9]+-[a-z]+\\)'"
0 (>= gnus-button-emacs-level 9) gnus-button-handle-symbol 1)
("(setq[ \t\n]+\\([a-z][a-z0-9]+-[-a-z0-9]+\\)[ \t\n]+.+)"
1 (>= gnus-button-emacs-level 7) gnus-button-handle-describe-variable 1)
(set-buffer-modified-p t)
;; If group does not exist, create it.
(let ((group (format "nndraft:%s" gnus-delay-group)))
- (unless (gnus-gethash group gnus-newsrc-hashtb)
- (nndraft-request-create-group gnus-delay-group)
- ;; Make it active.
- (gnus-set-active group (cons 1 0))))
+ (gnus-agent-queue-setup gnus-delay-group))
(message-disassociate-draft)
(nndraft-request-associate-buffer gnus-delay-group)
(save-buffer 0)
;;; gnus-demon.el --- daemonic Gnus behaviour
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2003
;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;;; gnus-diary.el --- Wrapper around the NNDiary Gnus backend
-;; Copyright (c) 2001, 2002 Free Software Foundation, Inc.
+;; Copyright (c) 2001, 2002, 2003 Free Software Foundation, Inc.
;; Copyright (C) 1999, 2000, 2001 Didier Verna.
;; Author: Didier Verna <didier@xemacs.org>
;;; gnus-dired.el --- utility functions where gnus and dired meet
-;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002
+;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003
;; Free Software Foundation, Inc.
;; Authors: Benjamin Rutt <brutt@bloomington.in.us>,
(gnus-define-keys gnus-dired-mode-map
"\C-c\C-a" gnus-dired-attach
- "\C-c\C-f" gnus-dired-find-file-mailcap
- "\C-cP" gnus-dired-print
- ))
+ "\C-c\C-l" gnus-dired-find-file-mailcap
+ "\C-cP" gnus-dired-print))
(defun gnus-dired-mode (&optional arg)
"Minor mode for intersections of gnus and dired.
;;; gnus-gl.el --- an interface to GroupLens for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
;; Free Software Foundation, Inc.
;; Author: Brad Miller <bmiller@cs.umn.edu>
;;; gnus-kill.el --- kill commands for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003
;; Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
"*The article registry by Message ID.")
(defvar gnus-registry-headers-hashtb nil
- "*The article header registry by Message ID.")
+ "*The article header registry by Message ID. Unused for now.")
(defcustom gnus-registry-unfollowed-groups '("delayed" "drafts" "queue")
"List of groups that gnus-registry-split-fancy-with-parent won't follow.
:group 'gnus-registry
:type '(repeat string))
+(defcustom gnus-registry-unregistered-group-regex "^nntp"
+ "Group name regex that gnus-registry-register-message-ids won't process."
+ :group 'gnus-registry
+ :type 'regexp)
+
;; Function(s) missing in Emacs 20
(when (memq nil (mapcar 'fboundp '(puthash)))
(require 'cl)
(defalias 'puthash 'cl-puthash)))
(defun gnus-registry-translate-to-alist ()
- (setq gnus-registry-alist (hashtable-to-alist gnus-registry-hashtb))
- (setq gnus-registry-headers-alist (hashtable-to-alist
- gnus-registry-headers-hashtb)))
+ (setq gnus-registry-alist (hashtable-to-alist gnus-registry-hashtb)))
(defun gnus-registry-translate-from-alist ()
- (setq gnus-registry-hashtb (alist-to-hashtable gnus-registry-alist))
- (setq gnus-registry-headers-hashtb (alist-to-hashtable
- gnus-registry-headers-alist)))
+ (setq gnus-registry-hashtb (alist-to-hashtable gnus-registry-alist)))
(defun alist-to-hashtable (alist)
"Build a hashtable from the values in ALIST."
(let* ((id (mail-header-id data-header))
(from (gnus-group-guess-full-name from))
(to (if to (gnus-group-guess-full-name to) nil))
- (to-name (if to to "the Bit Bucket")))
+ (to-name (if to to "the Bit Bucket"))
+ (old-entry (gethash id gnus-registry-hashtb)))
(gnus-message 5 "Registry: article %s %s from %s to %s"
id
(if method "respooling" "going")
from
- to)
- (unless (gethash id gnus-registry-headers-hashtb)
- (puthash id (list data-header) gnus-registry-headers-hashtb))
- (puthash id (cons (list action from to)
- (gethash id gnus-registry-hashtb))
- gnus-registry-hashtb)))
+ to)
+
+ ;; All except copy will need a delete
+ (gnus-registry-delete-group id from)
+
+ (when (equal 'copy action)
+ (gnus-registry-add-group id from)) ; undo the delete
+
+ (gnus-registry-add-group id to)))
(defun gnus-register-spool-action (id group)
;; do not process the draft IDs
; (unless (string-match "totally-fudged-out-message-id" id)
- (let ((group (gnus-group-guess-full-name group)))
- (when (string-match "\r$" id)
- (setq id (substring id 0 -1)))
- (gnus-message 5 "Registry: article %s spooled to %s"
- id
- group)
- (puthash id (cons (list 'spool nil group)
- (gethash id gnus-registry-hashtb))
- gnus-registry-hashtb)))
+; (let ((group (gnus-group-guess-full-name group)))
+ (when (string-match "\r$" id)
+ (setq id (substring id 0 -1)))
+ (gnus-message 5 "Registry: article %s spooled to %s"
+ id
+ group)
+ (gnus-registry-add-group id group))
;)
;; Function for nn{mail|imap}-split-fancy: look up all references in
nnmail-split-fancy-with-parent-ignore-groups))
(setq res nil)))
references)
+ (gnus-message
+ 5
+ "gnus-registry-split-fancy-with-parent traced %s to group %s"
+ refstr (if res res "nil"))
res)))
-(defun gnus-registry-grep-in-list (word list)
- (memq nil
- (mapcar 'not
- (mapcar
- (lambda (x)
- (string-match x word))
- list))))
+(defun gnus-registry-register-message-ids ()
+ "Register the Message-ID of every article in the group"
+ (unless (and gnus-registry-unregistered-group-regex
+ (string-match gnus-registry-unregistered-group-regex gnus-newsgroup-name))
+ (dolist (article gnus-newsgroup-articles)
+ (let ((id (gnus-registry-fetch-message-id-fast article)))
+ (unless (gnus-registry-fetch-group id)
+ (gnus-message 9 "Registry: Registering article %d with group %s"
+ article gnus-newsgroup-name)
+ (gnus-registry-add-group (gnus-registry-fetch-message-id-fast article)
+ gnus-newsgroup-name))))))
+
+(defun gnus-registry-fetch-message-id-fast (article)
+ "Fetch the Message-ID quickly, using the internal gnus-data-list function"
+ (if (and (numberp article)
+ (assoc article (gnus-data-list nil)))
+ (mail-header-id (gnus-data-header (assoc article (gnus-data-list nil))))
+ nil))
+(defun gnus-registry-grep-in-list (word list)
+ (when word
+ (memq nil
+ (mapcar 'not
+ (mapcar
+ (lambda (x)
+ (string-match x word))
+ list)))))
(defun gnus-registry-fetch-group (id)
"Get the group of a message, based on the message ID.
Returns the first place where the trail finds a spool action."
- (let ((trail (gethash id gnus-registry-hashtb)))
- (dolist (crumb trail)
- (let ((action (nth 0 crumb))
- (from (nth 1 crumb))
- (to (nth 2 crumb)))
- (when (eq action 'spool)
- (return to))))))
+ (when id
+ (let ((trail (gethash id gnus-registry-hashtb)))
+ (if trail
+ (car trail)
+ nil))))
+
+(defun gnus-registry-delete-group (id group)
+ "Get the group of a message, based on the message ID.
+Returns the first place where the trail finds a spool action."
+ (when group
+ (when id
+ (let ((trail (gethash id gnus-registry-hashtb))
+ (group (gnus-group-short-name group)))
+ (puthash id (if trail
+ (delete group trail)
+ nil)
+ gnus-registry-hashtb))
+ ;; now, clear the entry if it's empty
+ (unless (gethash id gnus-registry-hashtb)
+ (remhash id gnus-registry-hashtb)))))
+
+(defun gnus-registry-add-group (id group)
+ "Get the group of a message, based on the message ID.
+Returns the first place where the trail finds a spool action."
+ ;; make sure there are no duplicate entries
+ (when group
+ (when id
+ (let ((group (gnus-group-short-name group)))
+ (gnus-registry-delete-group id group)
+ (let ((trail (gethash id gnus-registry-hashtb)))
+ (puthash id (if trail
+ (cons group trail)
+ (list group))
+ gnus-registry-hashtb))))))
(defun gnus-registry-clear ()
"Clear the Gnus registry."
(add-hook 'gnus-save-newsrc-hook 'gnus-registry-translate-to-alist)
(add-hook 'gnus-read-newsrc-el-hook 'gnus-registry-translate-from-alist)
+(add-hook 'gnus-summary-prepare-hook 'gnus-registry-register-message-ids)
+
;; TODO: a lot of things
(provide 'gnus-registry)
:group 'gnus-summary-mail)
(defcustom gnus-summary-display-while-building nil
- "If not-nil, show and update the summary buffer as it's being built.
+ "If non-nil, show and update the summary buffer as it's being built.
If the value is t, update the buffer after every line is inserted. If
the value is an integer (N), update the display every N lines."
:group 'gnus-thread
(when (memq gnus-current-article gnus-newsgroup-unreads)
(gnus-summary-mark-article gnus-current-article gnus-read-mark)))
-(defun gnus-summary-mark-read-and-unread-as-read ()
+(defun gnus-summary-mark-read-and-unread-as-read (&optional new-mark)
"Intended to be used by `gnus-summary-mark-article-hook'."
(let ((mark (gnus-summary-article-mark)))
(when (or (gnus-unread-mark-p mark)
(gnus-read-mark-p mark))
- (gnus-summary-mark-article gnus-current-article gnus-read-mark))))
+ (gnus-summary-mark-article gnus-current-article
+ (or new-mark gnus-read-mark)))))
(defun gnus-summary-mark-unread-as-ticked ()
"Intended to be used by `gnus-summary-mark-article-hook'."
(if (and to-here reverse)
(progn
(goto-char to-here)
- (while (and
- (gnus-summary-mark-article-as-read gnus-catchup-mark)
- (gnus-summary-find-next (not all)))))
+ (gnus-summary-mark-read-and-unread-as-read gnus-catchup-mark)
+ (while (gnus-summary-find-next (not all))
+ (gnus-summary-mark-article-as-read gnus-catchup-mark)))
(when (gnus-summary-first-subject (not all))
(while (and
(if to-here (< (point) to-here) t)
;;; gnus-undo.el --- minor mode for undoing in Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2003
;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
(require 'cl)
;; Fixme: this should be a gnus variable, not nnmail-.
(defvar nnmail-pathname-coding-system))
-(require 'nnheader)
(require 'time-date)
(require 'netrc)
(autoload 'gnus-get-buffer-window "gnus-win")
(autoload 'rmail-insert-rmail-file-header "rmail")
(autoload 'rmail-count-new-messages "rmail")
- (autoload 'rmail-show-message "rmail"))
+ (autoload 'rmail-show-message "rmail")
+ (autoload 'nnheader-narrow-to-headers "nnheader")
+ (autoload 'nnheader-replace-chars-in-string "nnheader"))
(eval-and-compile
(cond
(delete-char 1))
(goto-char (next-single-property-change (point) prop nil (point-max))))))
-(require 'nnheader)
(defun gnus-newsgroup-directory-form (newsgroup)
"Make hierarchical directory name from NEWSGROUP name."
(let* ((newsgroup (gnus-newsgroup-savable-name newsgroup))
(+ 10 (- x ?A)))
(- x ?0)))
+;; Fixme: Do it like QP.
(defun gnus-url-unhex-string (str &optional allow-newlines)
"Remove %XX, embedded spaces, etc in a url.
If optional second argument ALLOW-NEWLINES is non-nil, then allow the
decoding of carriage returns and line feeds in the string, which is normally
forbidden in URL encoding."
- (setq str (or (mm-subst-char-in-string ?+ ? str) ""))
+ (setq str (or (mm-subst-char-in-string ?+ ? str) "")) ; why `or'?
(let ((tmp "")
(case-fold-search t))
(while (string-match "%[0-9a-f][0-9a-f]" str)
(t
(list 'local-map map))))
+(defmacro gnus-completing-read-maybe-default (prompt table &optional predicate
+ require-match initial-contents
+ history default)
+ "Like `completing-read', allowing for non-existent 7th arg in older XEmacsen."
+ `(completing-read ,prompt ,table ,predicate ,require-match
+ ,initial-contents ,history
+ ,@(if (and (featurep 'xemacs) (< emacs-minor-version 2))
+ ()
+ (list default))))
+
(defun gnus-completing-read (prompt table &optional predicate require-match
history)
(when (and history
(not (boundp history)))
(set history nil))
- (completing-read
+ (gnus-completing-read-maybe-default
(if (symbol-value history)
(concat prompt " (" (car (symbol-value history)) "): ")
(concat prompt ": "))
;;; gnus-uu.el --- extract (uu)encoded files in Gnus
;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
-;; 2001, 2002 Free Software Foundation, Inc.
+;; 2001, 2002, 2003 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Created: 2 Oct 1993
nil
history))
+;; This macro is because XEmacs versions prior to 21.2 do not have the
+;; PROTOCOL argument to `open-network-stream'.
+(defmacro gnus-xmas-open-network-stream (name buffer host service &optional protocol)
+ "Like `open-network-stream' but take into account older XEmacs versions."
+ (if (and (featurep 'xemacs)
+ (fboundp 'open-network-stream)
+ (emacs-version>= 21 2))
+ `(open-network-stream ,name ,buffer ,host ,service ,protocol)
+ `(open-network-stream ,name ,buffer ,host ,service)))
+
(provide 'gnus-xmas)
;;; gnus-xmas.el ends here
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "0.19"
+(defconst gnus-version-number "0.24"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Oort Gnus v%s" gnus-version-number)
;;; ietf-drums.el --- Functions for parsing RFC822bis headers
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
propertize put-image replace-regexp-in-string
rmail-msg-is-pruned rmail-msg-restore-non-pruned-header
sort-coding-systems spam-BBDB-register-routine
- spam-enter-ham-BBDB tool-bar-add-item
+ spam-enter-ham-BBDB string-to-multibyte tool-bar-add-item
tool-bar-add-item-from-menu tool-bar-local-item-from-menu
url-http-file-exists-p vcard-pretty-print w32-focus-frame
w3m-charset-to-coding-system x-focus-frame))
w3-meta-charset-content-type-regexp
w3-meta-content-type-charset-regexp)))
+(when (and (featurep 'xemacs)
+ (not (featurep 'mule)))
+ (progn
+ (maybe-fbind '(coding-system-base find-charset-string))))
+
+
(defun nnkiboze-score-file (a)
)
:type '(repeat sexp)) ; Fixme: improve this
(defcustom message-required-headers '((optional . References)
- From (optional . In-Reply-To))
+ From)
"*Headers to be generated or prompted for when sending a message.
Also see `message-required-news-headers' and
`message-required-mail-headers'."
errors)
(y-or-n-p
(format
- "Really post to %s possibly unknown group%s: %s? "
+ "Really use %s possibly unknown group%s: %s? "
(if (= (length errors) 1) "this" "these")
(if (= (length errors) 1) "" "s")
(mapconcat 'identity errors ", "))))
(let ((prefix
(or (message-fetch-field "newsgroups")
(cdr
- (mail-header-parse-address (message-fetch-field "from")))
+ (mail-header-parse-address
+ (mail-decode-encoded-word-string
+ (message-fetch-field "from"))))
"(nowhere)")))
(if message-forward-decoded-p
prefix
;;; mm-extern.el --- showing message/external-body
-;; Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
;; Keywords: message external-body
(eval-and-compile
(autoload 'executable-find "executable"))
+(eval-when-compile
+ (require 'timer))
+
(defgroup mm-url nil
"A wrapper of url package and external url command for Gnus."
:group 'gnus)
(condition-case nil
(require 'url)
(error nil)))
- "*If not-nil, use external grab program `mm-url-program'."
+ "*If non-nil, use external grab program `mm-url-program'."
:type 'boolean
:group 'mm-url)
(insert-file-contents (substring url (1- (match-end 0))))
(mm-url-insert-file-contents-external url))
(goto-char (point-min))
+ (if (fboundp 'url-generic-parse-url)
+ (setq url-current-object
+ (url-generic-parse-url url)))
(list url (buffer-size)))
(mm-url-load-url)
(let ((name buffer-file-name)
((null charset)
charset)
;; Running in a non-MULE environment.
- ((null (mm-get-coding-system-list))
+ ((or (null (mm-get-coding-system-list))
+ (not (fboundp 'coding-system-get)))
charset)
;; ascii
((eq charset 'us-ascii)
;;; mm-view.el --- functions for viewing MIME objects
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; This file is part of GNU Emacs.
(sit-for 1)
t)
+(autoload 'gnus-completing-read-maybe-default "gnus-util" nil nil 'macro)
+
(defun mm-view-pkcs7-decrypt (handle)
(insert-buffer-substring (mm-handle-buffer handle))
(goto-char (point-min))
(if (= (length smime-keys) 1)
(cadar smime-keys)
(smime-get-key-by-email
- (completing-read
+ (gnus-completing-read-maybe-default
(concat "Decipher using which key? "
(if smime-keys (concat "(default " (caar smime-keys) ") ")
""))
mml-encrypt-alist))
sender recipients)
(when (or sign-item encrypt-item)
- (if (setq sender (cdr (assq 'sender cont)))
- (message-options-set 'message-sender sender))
+ (when (setq sender (cdr (assq 'sender cont)))
+ (message-options-set 'mml-sender sender)
+ (message-options-set 'message-sender sender))
(if (setq recipients (cdr (assq 'recipients cont)))
(message-options-set 'message-recipients recipients))
(let ((style (mml-signencrypt-style (first (or sign-item encrypt-item)))))
(defun mml2015-pgg-sign (cont)
(let ((pgg-errors-buffer mml2015-result-buffer)
(boundary (funcall mml-boundary-function (incf mml-multipart-number)))
- (pgg-default-user-id (or (message-options-get 'message-sender)
+ (pgg-default-user-id (or (message-options-get 'mml-sender)
pgg-default-user-id)))
(unless (pgg-sign-region (point-min) (point-max))
(pop-to-buffer mml2015-result-buffer)
;;; nndb.el --- nndb access for Gnus
-;; Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
;; Kai Grossjohann <grossjohann@ls6.informatik.uni-dortmund.de>
;;; nndiary.el --- A diary backend for Gnus
-;; Copyright (C) 1999, 2000, 2001
+;; Copyright (C) 1999, 2000, 2001, 2003
;; Free Software Foundation, Inc.
;; Author: Didier Verna <didier@xemacs.org>
;;; nndoc.el --- single file access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;;; nnkiboze.el --- select virtual news access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003
;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;;; nnmbox.el --- mail mbox access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;;; nnmh.el --- mhspool access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003
;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;;; nnml.el --- mail spool access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003
;; Free Software Foundation, Inc.
;; Author: Simon Josefsson <simon@josefsson.org> (adding MARKS)
(deffoo nnrss-request-article (article &optional group server buffer)
(nnrss-possibly-change-group group server)
(let ((e (assq article nnrss-group-data))
+ (boundary "=-=-=-=-=-=-=-=-=-")
(nntp-server-buffer (or buffer nntp-server-buffer))
post err)
(when e
(with-current-buffer nntp-server-buffer
(erase-buffer)
(goto-char (point-min))
- (insert "Mime-Version: 1.0\nContent-Type: text/html\n")
+ (insert "Mime-Version: 1.0\nContent-Type: multipart/alternative; boundary=\"" boundary "\"\n")
(if group
(insert "Newsgroups: " group "\n"))
(if (nth 3 e)
(insert "Date: " (nnrss-format-string (nth 5 e)) "\n"))
(insert "Message-ID: " (format "<%d@%s.nnrss>" (car e) group) "\n")
(insert "\n")
- (if (nth 6 e)
- (let ((point (point)))
- (insert (nnrss-string-as-multibyte (nth 6 e)))
- (goto-char point)
- (while (re-search-forward "\n" nil t)
- (replace-match " "))
- (goto-char (point-max))
- (insert "\n\n")
- (fill-region point (point))))
- (if (nth 2 e)
- (insert "<p><a href='" (nth 2 e) "'>link</a></p>\n"))
+ (let ((text (if (nth 6 e)
+ (nnrss-string-as-multibyte (nth 6 e))))
+ (link (if (nth 2 e)
+ (nth 2 e))))
+ (insert "\n\n--" boundary "\nContent-Type: text/plain\n\n")
+ (let ((point (point)))
+ (if text
+ (progn (insert text)
+ (goto-char point)
+ (while (re-search-forward "\n" nil t)
+ (replace-match " "))
+ (goto-char (point-max))
+ (insert "\n\n")))
+ (if link
+ (insert link)))
+ (insert "\n\n--" boundary "\nContent-Type: text/html\n\n")
+ (let ((point (point)))
+ (if text
+ (progn (insert "<html><head></head><body>\n" text "\n</body></html>")
+ (goto-char point)
+ (while (re-search-forward "\n" nil t)
+ (replace-match " "))
+ (goto-char (point-max))
+ (insert "\n\n")))
+ (if link
+ (insert "<p><a href=\"" link "\">link</a></p>\n"))))
(if nnrss-content-function
(funcall nnrss-content-function e group article)))))
(cond
(second (assoc group nnrss-group-alist))))
(unless url
(setq url
- (nnrss-discover-feed
- (read-string
- (format "URL to search for %s: " group) "http://")))
+ (cdr
+ (assoc 'href
+ (nnrss-discover-feed
+ (read-string
+ (format "URL to search for %s: " group) "http://")))))
(let ((pair (assoc group nnrss-server-data)))
(if pair
(setcdr (cdr pair) (list url))
(nnrss-node-just-text node)
node))
(cleaned-text (if text (gnus-replace-in-string
- text "^[[:cntrl:]]+\\|^ +\\| +$" ""))))
+ text "^[\000-\037\177]+\\|^ +\\| +$" ""))))
(if (string-equal "" cleaned-text)
nil
cleaned-text)))
(defun nnrss-find-rss-via-syndic8 (url)
"query syndic8 for the rss feeds it has for the url."
- (condition-case nil
+ (if (locate-library "xml-rpc")
(progn (require 'xml-rpc)
(let ((feedid (xml-rpc-method-call
"http://www.syndic8.com/xmlrpc.php"
"Multiple feeds found. Select one: "
selection nil t) urllist)))
(cdar urllist))))))
- (message "XML-RPC is not available... not checking Syndic8.")))
+ (error (message "XML-RPC is not available... not checking Syndic8."))))
(defun nnrss-rss-p (data)
"Test if data is an RSS feed. Simply ensures that the first
;;; nnwarchive.el --- interfacing with web archives
-;; Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
;; Keywords: news egroups mail-archive
(require 'pgg-def)
(require 'pgg-parse)
+(autoload 'run-at-time "timer")
;; Don't merge these two `eval-when-compile's.
(eval-when-compile
;;; qp.el --- Quoted-Printable functions
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: mail, extensions
;;; rfc2047.el --- Functions for encoding and decoding rfc2047 messages
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
;;; rfc2231.el --- Functions for decoding rfc2231 headers
-;; Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; This file is part of GNU Emacs.
(autoload 'sieve-manage "sieve")
(autoload 'sieve-upload "sieve")
+(autoload 'c-mode "cc-mode")
(require 'easymenu)
(eval-when-compile
(require 'font-lock))
(spam-report-url-ping "spam.gmane.org"
(format "/%s:%d"
(gnus-group-real-name gnus-newsgroup-name)
- (gnus-summary-article-number)))
+ article))
(with-current-buffer nntp-server-buffer
(gnus-request-head article gnus-newsgroup-name)
(goto-char (point-min))
"Save the `spam-stat' hash table as lisp file."
(interactive)
(with-temp-buffer
- (let ((standard-output (current-buffer)))
+ (let ((standard-output (current-buffer))
+ (font-lock-maximum-size 0))
(insert "(setq spam-stat-ngood "
(number-to-string spam-stat-ngood)
" spam-stat-nbad "
(spam-stat-good entry)
(spam-stat-bad entry))))
spam-stat)
- (insert ")))"))
- (write-file spam-stat-file)))
+ (insert ")))")
+ (write-file spam-stat-file))))
(defun spam-stat-load ()
"Read the `spam-stat' hash table from disk."
(with-temp-buffer
(dolist (f files)
(when (and (file-readable-p f)
- (file-regular-p f))
+ (file-regular-p f)
+ (> (nth 7 (file-attributes f)) 0))
(setq count (1+ count))
(message "Reading %s: %.2f%%" dir (/ count max))
(insert-file-contents f)
(with-temp-buffer
(dolist (f files)
(when (and (file-readable-p f)
- (file-regular-p f))
+ (file-regular-p f)
+ (> (nth 7 (file-attributes f)) 0))
(setq count (1+ count))
(message "Reading %.2f%%, score %.2f%%"
(/ count max) (/ score count))
;;; Code:
+(eval-when-compile (require 'cl))
+
(require 'gnus-sum)
(require 'gnus-uu) ; because of key prefix issues
+2003-05-01 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * gnus.texi (Oort Gnus): Add prefix limit feature.
+ (Oort Gnus): Fix last commit.
+
+2003-05-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Emacsen): Update.
+
+2003-05-01 Simon Josefsson <jas@extundo.com>
+
+ * gnus.texi (IMAP): Document nnimap-need-unselect-to-notice-new-mail.
+
+2003-05-01 Jesper Harder <harder@ifa.au.dk>
+
+ * gnus.texi (Wide Characters): Proportional -> fixed width.
+
+ * texi2latex.el (latexi-translate-file): Add @syncodeindex.
+
+ * gnus.texi: Markup and formatting improvements.
+ Use @syncodeindex for merging indexes to get the same font for
+ @defvar and @vindex entries. Be more consistent about the case
+ of index entries.
+
+
+2003-04-30 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * gnus.texi (Top, Appendices): Fixed Gnus FAQ entry.
+
+ * gnus-faq.texi: Wrap long lines in menus. Index.
+
+ * gnus.texi (Image Enhancements): Mention missing images support
+ of Emacs on MS Windows.
+ (Oort Gnus): Mention Gnus FAQ.
+
+2003-04-30 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus.texi (Filtering Spam Using The Spam ELisp Package): revised
+ documentation
+ (Gmane Spam Reporting, Anti-spam Hashcash Payments): new sections
+
+2003-04-30 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * gnus.texi (Oort Gnus): New features in Gnus 5.10 from GNUS-NEWS.
+
+2003-04-30 Jesper Harder <harder@ifa.au.dk>
+
+ * gnus.texi (Filtering Spam Using The Spam ELisp Package): Index.
+ Add gnus-spam-mark.
+ (Various Summary Stuff): Add gnus-summary-display-arrow.
+
+ * gnus.texi: Fix typos.
+
+2003-04-27 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * gnus.texi (Group Parameters): Fix markup.
+ (Web Archive): Ditto.
+
2003-04-27 Jesper Harder <harder@ifa.au.dk>
+ * texi2latex.el (latexi-translate-file): Support @display,
+ @group, @smallexample, @subsubheading.
+
+ * gnus.texi, gnus-faq.texi: Fix some of the worst overfull and
+ underfull hboxes.
+
* message.texi, gnus.texi: Use the second arg to @uref where it
makes sense to make HTML and PDF output look nicer.
@c @chapter Frequently Asked Questions
@section Frequently Asked Questions
+@cindex FAQ
+@cindex Frequently Asked Questions
@c - Uncomment @chapter, comment @section
@c - run (texinfo-every-node-update)
@menu
* FAQ - Introduction:: About Gnus and this FAQ.
* FAQ 1 - Installation:: Installation of Gnus.
-* FAQ 2 - Startup / Group buffer:: Start up questions and the first buffer Gnus shows you.
+* FAQ 2 - Startup / Group buffer:: Start up questions and the first
+ buffer Gnus shows you.
* FAQ 3 - Getting messages:: Making Gnus read your mail and news.
* FAQ 4 - Reading messages:: How to efficiently read messages.
* FAQ 5 - Composing messages:: Composing mails or Usenet postings.
-* FAQ 6 - Old messages:: Importing, archiving, searching and deleting messages.
+* FAQ 6 - Old messages:: Importing, archiving, searching
+ and deleting messages.
* FAQ 7 - Gnus in a dial-up environment:: Reading mail and news while offline.
* FAQ 8 - Getting help:: When this FAQ isn't enough.
* FAQ 9 - Tuning Gnus:: How to make Gnus faster.
Please submit features and suggestions to the
- @uref{mailto:faq-discuss@@my.gnus.org,FAQ discussion list}.
+ @email{faq-discuss@@my.gnus.org,FAQ discussion list}.
The list is protected against junk mail with
- @uref{http://smarden.org/qconfirm/index.html,qconfirm}. As
+ @uref{http://smarden.org/qconfirm/index.html,qconfirm, qconfirm}. As
a subscriber, your submissions will automatically pass. You can
also subscribe to the list by sending a blank email to
@email{faq-discuss-subscribe@@my.gnus.org}
- and @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss,browse the archive}.
+ and
+ @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss,browse
+ the archive, browse the archive}.
@node FAQ - Introduction, FAQ 1 - Installation, Frequently Asked Questions, Frequently Asked Questions
@comment node-name, next, previous, up
Justin!
- If you have a Web browser, the official hypertext version is at:
+ If you have a Web browser, the official hypertext version is at:@*
@uref{http://my.gnus.org/FAQ/}.
This version is much nicer than the unofficial hypertext
versions that are archived at Utrecht, Oxford, Smart Pages, Ohio
@ifnottex
@node FAQ 1 - Installation, FAQ 2 - Startup / Group buffer, FAQ - Introduction, Frequently Asked Questions
@end ifnottex
-@section Installation
+@subsection Installation
@menu
-* [1.1]:: What is the latest version of Gnus?
-* [1.2]:: What's new in 5.10.0?
-* [1.3]:: Where and how to get Gnus?
-* [1.4]:: What to do with the tarball now?
-* [1.5]:: Which version of Emacs do I need?
-* [1.6]:: How do I run Gnus on both Emacs and XEmacs?
+* [1.1]:: What is the latest version of Gnus?
+* [1.2]:: What's new in 5.10.0?
+* [1.3]:: Where and how to get Gnus?
+* [1.4]:: What to do with the tarball now?
+* [1.5]:: Which version of Emacs do I need?
+* [1.6]:: How do I run Gnus on both Emacs and XEmacs?
@end menu
@ifnottex
@node [1.1], [1.2], FAQ 1 - Installation, FAQ 1 - Installation
@end ifnottex
-@subheading Question 1.1:
+@subsubheading Question 1.1:
What is the latest version of Gnus?
@ifnottex
@node [1.2], [1.3], [1.1], FAQ 1 - Installation
@end ifnottex
-@subheading Question 1.2:
+@subsubheading Question 1.2:
What's new in 5.10.0?
Major rewrite of the Gnus agent, Gnus agent is now
active by default.
-
+@item
Many new article washing functions for dealing with
ugly formatted articles.
-
+@item
Anti Spam features.
-
+@item
message-utils now included in Gnus.
-
+@item
New format specifiers for summary lines, e.g. %B for
a complex trn-style thread tree.
@ifnottex
@node [1.3], [1.4], [1.2], FAQ 1 - Installation
@end ifnottex
-@subheading Question 1.3:
+@subsubheading Question 1.3:
Where and how to get Gnus?
@ifnottex
@node [1.4], [1.5], [1.3], FAQ 1 - Installation
@end ifnottex
-@subheading Question 1.4:
+@subsubheading Question 1.4:
What to do with the tarball now?
@example
-
(add-to-list 'load-path "/path/to/gnus/lisp")
(if (featurep 'xemacs)
(add-to-list 'Info-directory-list "/path/to/gnus/texi/")
(add-to-list 'Info-default-directory-list "/path/to/gnus/texi/"))
-
@end example
@noindent
@ifnottex
@node [1.5], [1.6], [1.4], FAQ 1 - Installation
@end ifnottex
-@subheading Question 1.5:
+@subsubheading Question 1.5:
Which version of Emacs do I need?
Answer:
Gnus 5.10.0 requires an Emacs version that is greater
- than or equal to Emacs 20.3 or XEmacs 20.1.
+ than or equal to Emacs 20.7 or XEmacs 21.1.
@ifnottex
@node [1.6], , [1.5], FAQ 1 - Installation
@end ifnottex
-@subheading Question 1.6:
+@subsubheading Question 1.6:
How do I run Gnus on both Emacs and XEmacs?
@ifnottex
@node FAQ 2 - Startup / Group buffer, FAQ 3 - Getting messages, FAQ 1 - Installation, Frequently Asked Questions
@end ifnottex
-@section Startup / Group buffer
+@subsection Startup / Group buffer
@menu
-* [2.1]:: Every time I start Gnus I get a message "Gnus auto-save file exists. Do you want to read it?", what does this mean and how to prevent it?
-* [2.2]:: Gnus doesn't remember which groups I'm subscribed to, what's this?
-* [2.3]:: How to change the format of the lines in Group buffer?
-* [2.4]:: My group buffer becomes a bit crowded, is there a way to sort my groups into categories so I can easier browse through them?
-* [2.5]:: How to manually sort the groups in Group buffer? How to sort the groups in a topic?
+* [2.1]:: Every time I start Gnus I get a message
+ "Gnus auto-save file exists. Do you want to read it?",
+ what does this mean and how to prevent it?
+* [2.2]:: Gnus doesn't remember which groups I'm subscribed to, what's this?
+* [2.3]:: How to change the format of the lines in Group buffer?
+* [2.4]:: My group buffer becomes a bit crowded, is there a way to sort my
+ groups into categories so I can easier browse through them?
+* [2.5]:: How to manually sort the groups in Group buffer? How to sort the
+ groups in a topic?
@end menu
@ifnottex
@node [2.1], [2.2], FAQ 2 - Startup / Group buffer, FAQ 2 - Startup / Group buffer
@end ifnottex
-@subheading Question 2.1:
+@subsubheading Question 2.1:
Every time I start Gnus I get a message "Gnus auto-save
file exists. Do you want to read it?", what does this mean
@ifnottex
@node [2.2], [2.3], [2.1], FAQ 2 - Startup / Group buffer
@end ifnottex
-@subheading Question: 2.2
+@subsubheading Question: 2.2
Gnus doesn't remember which groups I'm subscribed to,
what's this?
@ifnottex
@node [2.3], [2.4], [2.2], FAQ 2 - Startup / Group buffer
@end ifnottex
-@subheading Question 2.3:
+@subsubheading Question 2.3:
How to change the format of the lines in Group buffer?
@ifnottex
@node [2.4], [2.5], [2.3], FAQ 2 - Startup / Group buffer
@end ifnottex
-@subheading Question 2.4:
+@subsubheading Question 2.4:
My group buffer becomes a bit crowded, is there a way to
sort my groups into categories so I can easier browse
@ifnottex
@node [2.5], , [2.4], FAQ 2 - Startup / Group buffer
@end ifnottex
-@subheading Question 2.5:
+@subsubheading Question 2.5:
How to manually sort the groups in Group buffer? How to
sort the groups in a topic?
@ifnottex
@node FAQ 3 - Getting messages, FAQ 4 - Reading messages, FAQ 2 - Startup / Group buffer, Frequently Asked Questions
@end ifnottex
-@section Getting messages
+@subsection Getting messages
@menu
-* [3.1]:: I just installed Gnus, started it via M-x gnus but it only says "nntp (news) open error", what to do?
-* [3.2]:: I'm working under Windows and have no idea what ~/.gnus means.
-* [3.3]:: My news server requires authentication, how to store user name and password on disk?
-* [3.4]:: Gnus seems to start up OK, but I can't find out how to subscribe to a group.
-* [3.5]:: Gnus doesn't show all groups / Gnus says I'm not allowed to post on this server as well as I am, what's that?
-* [3.6]:: I want Gnus to fetch news from several servers, is this possible?
-* [3.7]:: And how about local spool files?
-* [3.8]:: OK, reading news works now, but I want to be able to read my mail with Gnus, too. How to do it?
-* [3.9]:: And what about IMAP?
-* [3.10]:: At the office we use one of those MS Exchange servers, can I use Gnus to read my mail from it?
-* [3.11]:: Can I tell Gnus not to delete the mails on the server it retrieves via POP3?
+* [3.1]:: I just installed Gnus, started it via M-x gnus but it only says
+ "nntp (news) open error", what to do?
+* [3.2]:: I'm working under Windows and have no idea what ~/.gnus means.
+* [3.3]:: My news server requires authentication, how to store user name
+ and password on disk?
+* [3.4]:: Gnus seems to start up OK, but I can't find out how to
+ subscribe to a group.
+* [3.5]:: Gnus doesn't show all groups / Gnus says I'm not allowed to
+ post on this server as well as I am, what's that?
+* [3.6]:: I want Gnus to fetch news from several servers, is this possible?
+* [3.7]:: And how about local spool files?
+* [3.8]:: OK, reading news works now, but I want to be able to read my mail
+ with Gnus, too. How to do it?
+* [3.9]:: And what about IMAP?
+* [3.10]:: At the office we use one of those MS Exchange servers,
+ can I use Gnus to read my mail from it?
+* [3.11]:: Can I tell Gnus not to delete the mails on the server
+ it retrieves via POP3?
@end menu
@ifnottex
@node [3.1], [3.2], FAQ 3 - Getting messages, FAQ 3 - Getting messages
@end ifnottex
-@subheading Question 3.1:
+@subsubheading Question 3.1:
I just installed Gnus, started it via
@samp{M-x gnus}
@example
-
(setq gnus-select-method '(nntp "news.yourprovider.net"))
(setq user-mail-address "you@@yourprovider.net")
(setq user-full-name "Your Name")
-
@end example
@ifnottex
@node [3.2], [3.3], [3.1], FAQ 3 - Getting messages
@end ifnottex
-@subheading Question 3.2:
+@subsubheading Question 3.2:
I'm working under Windows and have no idea what ~/.gnus means.
@ifnottex
@node [3.3], [3.4], [3.2], FAQ 3 - Getting messages
@end ifnottex
-@subheading Question 3.3:
+@subsubheading Question 3.3:
My news server requires authentication, how to store
user name and password on disk?
@ifnottex
@node [3.4], [3.5], [3.3], FAQ 3 - Getting messages
@end ifnottex
-@subheading Question 3.4:
+@subsubheading Question 3.4:
Gnus seems to start up OK, but I can't find out how to
subscribe to a group.
@ifnottex
@node [3.5], [3.6], [3.4], FAQ 3 - Getting messages
@end ifnottex
-@subheading Question 3.5:
+@subsubheading Question 3.5:
Gnus doesn't show all groups / Gnus says I'm not allowed to
post on this server as well as I am, what's that?
@ifnottex
@node [3.6], [3.7], [3.5], FAQ 3 - Getting messages
@end ifnottex
-@subheading Question 3.6:
+@subsubheading Question 3.6:
I want Gnus to fetch news from several servers, is this possible?
@example
-
-(add-to-list 'gnus-secondary-select-methods '(nntp "news.yourSecondProvider.net"))
-(add-to-list 'gnus-secondary-select-methods '(nntp "news.yourThirdProvider.net"))
-
+(add-to-list 'gnus-secondary-select-methods
+ '(nntp "news.yourSecondProvider.net"))
+(add-to-list 'gnus-secondary-select-methods
+ '(nntp "news.yourThirdProvider.net"))
@end example
@ifnottex
@node [3.7], [3.8], [3.6], FAQ 3 - Getting messages
@end ifnottex
-@subheading Question 3.7:
+@subsubheading Question 3.7:
And how about local spool files?
@example
-
(add-to-list 'gnus-secondary-select-methods '(nnspool ""))
-
@end example
@noindent
@example
-
(setq gnus-select-method '(nnspool ""))
-
@end example
@noindent
@example
-
(add-to-list 'gnus-secondary-select-methods
'(nnspool "" (nnspool-directory "/usr/local/myspoolddir")))
-
@end example
@noindent
@ifnottex
@node [3.8], [3.9], [3.7], FAQ 3 - Getting messages
@end ifnottex
-@subheading Question 3.8:
+@subsubheading Question 3.8:
OK, reading news works now, but I want to be able to read my mail
with Gnus, too. How to do it?
@example
-
(add-to-list 'gnus-secondary-select-methods '(nnml ""))
-
@end example
@noindent
@example
-
(add-to-list 'gnus-secondary-select-methods '(nnfolder ""))
-
@end example
@example
-
(eval-after-load "mail-source"
'(add-to-list 'mail-sources '(pop :server "pop.YourProvider.net"
:user "yourUserName"
:password "yourPassword"))
-
@end example
@noindent
@example
-
(eval-after-load "mail-source"
- '(add-to-list 'mail-sources '(file :path "/path/to/spool/file"))
-
+ '(add-to-list 'mail-sources '(file :path "/path/to/spool/file")))
@end example
@noindent
@example
-
(eval-after-load "mail-source"
'(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/"
:subdirs ("cur" "new")))
-
@end example
@noindent
@example
-
(eval-after-load "mail-source"
'(add-to-list 'mail-sources '(directory :path "/path/to/procmail-dir/"
:suffix ".prcml"))
-
@end example
@noindent
@example
-
(setq send-mail-function 'smtpmail-send-it)
(setq message-send-mail-function 'smtpmail-send-it)
(setq smtpmail-default-smtp-server "smtp.yourProvider.net")
-
@end example
@ifnottex
@node [3.9], [3.10], [3.8], FAQ 3 - Getting messages
@end ifnottex
-@subheading Question 3.9:
+@subsubheading Question 3.9:
And what about IMAP?
@example
-
(add-to-list 'mail-sources '(imap :server "mail.mycorp.com"
:user "username"
:pass "password"
:authentication login
:mailbox "INBOX"
:fetchflag "\\Seen"))
-
@end example
@noindent
@example
-
-(add-to-list 'gnus-secondary-select-methods
- '(nnimap "Give the baby a name"
- (nnimap-address "imap.yourProvider.net")
- (nnimap-port 143)
- (nnimap-list-pattern "archive.*")))
-
+(add-to-list
+ 'gnus-secondary-select-methods
+ '(nnimap "Give the baby a name"
+ (nnimap-address "imap.yourProvider.net")
+ (nnimap-port 143)
+ (nnimap-list-pattern "archive.*")))
@end example
@noindent
@ifnottex
@node [3.10], [3.11], [3.9], FAQ 3 - Getting messages
@end ifnottex
-@subheading Question 3.10:
+@subsubheading Question 3.10:
At the office we use one of those MS Exchange servers, can I use
Gnus to read my mail from it?
@ifnottex
@node [3.11], , [3.10], FAQ 3 - Getting messages
@end ifnottex
-@subheading Question 3.11:
+@subsubheading Question 3.11:
Can I tell Gnus not to delete the mails on the server it
retrieves via POP3?
@ifnottex
@node FAQ 4 - Reading messages, FAQ 5 - Composing messages, FAQ 3 - Getting messages, Frequently Asked Questions
@end ifnottex
-@section Reading messages
+@subsection Reading messages
@menu
-* [4.1]:: When I enter a group, all read messages are gone. How to view them again?
-* [4.2]:: How to tell Gnus to show an important message every time I enter a group, even when it's read?
-* [4.3]:: How to view the headers of a message?
-* [4.4]:: How to view the raw unformatted message?
-* [4.5]:: How can I change the headers Gnus displays by default at the top of the article buffer?
-* [4.6]:: I'd like Gnus NOT to render HTML-mails but show me the text part if it's available. How to do it?
-* [4.7]:: Can I use some other browser than w3 to render my HTML-mails?
-* [4.8]:: Is there anything I can do to make poorly formatted mails more readable?
-* [4.9]:: Is there a way to automatically ignore posts by specific authors or with specific words in the subject? And can I highlight more interesting ones in some way?
-* [4.10]:: How can I disable threading in some (e.g. mail-) groups, or set other variables specific for some groups?
-* [4.11]:: Can I highlight messages written by me and follow-ups to those?
-* [4.12]:: The number of total messages in a group which Gnus displays in group buffer is by far to high, especially in mail groups. Is this a bug?
-* [4.13]:: I don't like the layout of summary and article buffer, how to change it? Perhaps even a three pane display?
-* [4.14]:: I don't like the way the Summary buffer looks, how to tweak it?
-* [4.15]:: How to split incoming mails in several groups?
+* [4.1]:: When I enter a group, all read messages are gone.
+ How to view them again?
+* [4.2]:: How to tell Gnus to show an important message every time
+ I enter a group, even when it's read?
+* [4.3]:: How to view the headers of a message?
+* [4.4]:: How to view the raw unformatted message?
+* [4.5]:: How can I change the headers Gnus displays by default at the
+ top of the article buffer?
+* [4.6]:: I'd like Gnus NOT to render HTML-mails but show me the
+ text part if it's available. How to do it?
+* [4.7]:: Can I use some other browser than w3 to render my HTML-mails?
+* [4.8]:: Is there anything I can do to make poorly formatted mails
+ more readable?
+* [4.9]:: Is there a way to automatically ignore posts by specific authors
+ or with specific words in the subject? And can I highlight more
+ interesting ones in some way?
+* [4.10]:: How can I disable threading in some (e.g. mail-) groups, or set
+ other variables specific for some groups?
+* [4.11]:: Can I highlight messages written by me and follow-ups to those?
+* [4.12]:: The number of total messages in a group which Gnus displays in
+ group buffer is by far to high, especially in mail groups.
+ Is this a bug?
+* [4.13]:: I don't like the layout of summary and article buffer,
+ how to change it? Perhaps even a three pane display?
+* [4.14]:: I don't like the way the Summary buffer looks, how to tweak it?
+* [4.15]:: How to split incoming mails in several groups?
@end menu
@ifnottex
@node [4.1], [4.2], FAQ 4 - Reading messages, FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.1:
+@subsubheading Question 4.1:
When I enter a group, all read messages are gone. How to view them again?
@example
-
(setq gnus-fetch-old-headers 'some)
-
@end example
@ifnottex
@node [4.2], [4.3], [4.1], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.2:
+@subsubheading Question 4.2:
How to tell Gnus to show an important message every time I
enter a group, even when it's read?
@ifnottex
@node [4.3], [4.4], [4.2], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.3:
+@subsubheading Question 4.3:
How to view the headers of a message?
@ifnottex
@node [4.4], [4.5], [4.3], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.4:
+@subsubheading Question 4.4:
How to view the raw unformatted message?
@ifnottex
@node [4.5], [4.6], [4.4], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.5:
+@subsubheading Question 4.5:
How can I change the headers Gnus displays by default at
the top of the article buffer?
date, and if the header exists, Followup-To and MUA / NUA
say this in ~/.gnus:
-
@example
-
(setq gnus-visible-headers
-"^\\(From:\\|Subject:\\|Date:\\|Followup-To:\\|X-Newsreader:\\|User-Agent:\\|X-Mailer:\\)")
-
+ "^\\(From:\\|Subject:\\|Date:\\|Followup-To:\
+\\|X-Newsreader:\\|User-Agent:\\|X-Mailer:\\)")
@end example
@ifnottex
@node [4.6], [4.7], [4.5], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.6:
+@subsubheading Question 4.6:
I'd like Gnus NOT to render HTML-mails but show me the
text part if it's available. How to do it?
@example
-
(eval-after-load "mm-decode"
'(progn
(add-to-list 'mm-discouraged-alternatives "text/html")
(add-to-list 'mm-discouraged-alternatives "text/richtext")))
-
@end example
@noindent
@example
-
(setq mm-automatic-display (remove "text/html" mm-automatic-display))
-
@end example
@noindent
@ifnottex
@node [4.7], [4.8], [4.6], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.7:
+@subsubheading Question 4.7:
Can I use some other browser than w3 to render my HTML-mails?
@example
-
(setq mm-text-html-renderer 'links)
-
@end example
@ifnottex
@node [4.8], [4.9], [4.7], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.8:
+@subsubheading Question 4.8:
Is there anything I can do to make poorly formatted mails
more readable?
@ifnottex
@node [4.9], [4.10], [4.8], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.9:
+@subsubheading Question 4.9:
Is there a way to automatically ignore posts by specific
authors or with specific words in the subject? And can I
@example
-
(("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s))
("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s)))
-
@end example
@noindent
@example
-
(setq gnus-use-adaptive-scoring t)
-
@end example
@noindent
@ifnottex
@node [4.10], [4.11], [4.9], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.10:
+@subsubheading Question 4.10:
How can I disable threading in some (e.g. mail-) groups, or
set other variables specific for some groups?
@ifnottex
@node [4.11], [4.12], [4.10], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.11:
+@subsubheading Question 4.11:
Can I highlight messages written by me and follow-ups to
those?
@ifnottex
@node [4.12], [4.13], [4.11], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.12:
+@subsubheading Question 4.12:
The number of total messages in a group which Gnus
displays in group buffer is by far to high, especially in
@ifnottex
@node [4.13], [4.14], [4.12], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.13:
+@subsubheading Question 4.13:
I don't like the layout of summary and article buffer, how
to change it? Perhaps even a three pane display?
@example
-
-(gnus-add-configuration '(article (vertical 1.0 (summary .35 point) (article 1.0))))
-
+(gnus-add-configuration
+ '(article (vertical 1.0
+ (summary .35 point)
+ (article 1.0))))
@end example
@example
-
(gnus-add-configuration
'(article
(horizontal 1.0
(group 1.0))
(vertical 1.0
(summary 1.0 point)))))
-
@end example
@ifnottex
@node [4.14], [4.15], [4.13], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.14:
+@subsubheading Question 4.14:
I don't like the way the Summary buffer looks, how to tweak it?
@example
-
-(setq gnus-summary-line-format ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n")
-
+(setq gnus-summary-line-format
+ ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n")
@end example
@noindent
resulting in:
-@example
-
+@smallexample
:O Re: [Richard Stallman] rfc2047.el | 13 |Lars Magne Ingebrigt |Sat 23:06
:O Re: Revival of the ding-patches list | 13 |Lars Magne Ingebrigt |Sat 23:12
:R > Re: Find correct list of articles for a gro| 25 |Lars Magne Ingebrigt |Sat 23:16
:R > Re: Gnus still doesn't count messages prope| 23 |Lars Magne Ingebrigt |Sat 23:57
:O \-> ... | 18 |Kai Grossjohann | 0:35
:O \-> ... | 13 |Lars Magne Ingebrigt | 0:56
-
-@end example
+@end smallexample
@ifnottex
@node [4.15], , [4.14], FAQ 4 - Reading messages
@end ifnottex
-@subheading Question 4.15:
+@subsubheading Question 4.15:
How to split incoming mails in several groups?
@example
-
(setq nnmail-crosspost nil)
-
@end example
@noindent
@example
-
(setq nnmail-split-methods
'(("duplicates" "^Gnus-Warning:.*duplicate")
("XEmacs-NT" "^\\(To:\\|CC:\\).*localpart@@xemacs.bla.*")
("Gnus-Tut" "^\\(To:\\|CC:\\).*localpart@@socha.bla.*")
("tcsh" "^\\(To:\\|CC:\\).*localpart@@mx.gw.bla.*")
("BAfH" "^\\(To:\\|CC:\\).*localpart@@.*uni-muenchen.bla.*")
- ("Hamster-src" "^\\(CC:\\|To:\\).*hamster-sourcen@@yahoogroups.\\(de\\|com\\).*")
+ ("Hamster-src"
+ "^\\(CC:\\|To:\\).*hamster-sourcen@@yahoogroups.\\(de\\|com\\).*")
("Tagesschau" "^From: tagesschau <localpart@@www.tagesschau.bla>$")
("Replies" "^\\(CC:\\|To:\\).*localpart@@Frank-Schmitt.bla.*")
- ("EK" "^From:.*\\(localpart@@privateprovider.bla\\|localpart@@workplace.bla\\).*")
- ("Spam" "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*")
- ("Spam" "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*")
- ("Spam" "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*")
+ ("EK"
+ "^From:.*\\(localpart@@privateprovider.bla\\|localpart@@workplace.bla\\).*")
+ ("Spam"
+ "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*")
+ ("Spam"
+ "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*")
+ ("Spam"
+ "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*")
("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)")
- ("Spam" "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)")
- ("Spam" "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*")
+ ("Spam"
+ "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)")
+ ("Spam"
+ "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*")
("Spam" "^Delivered-To: GMX delivery to spamtrap@@gmx.bla$")
("Spam" "^Received: from link2buy.com")
("Spam" "^CC: .*azzrael@@t-online.bla")
("Spam" "^X-Mailer-Version: 1.50 BETA")
("Uni" "^\\(CC:\\|To:\\).*localpart@@uni-koblenz.bla.*")
- ("Inbox" "^\\(CC:\\|To:\\).*\\(my\ name\\|address@@one.bla\\|adress@@two.bla\\)")
+ ("Inbox"
+ "^\\(CC:\\|To:\\).*\\(my\ name\\|address@@one.bla\\|adress@@two.bla\\)")
("Spam" "")))
-
@end example
@ifnottex
@node FAQ 5 - Composing messages, FAQ 6 - Old messages, FAQ 4 - Reading messages, Frequently Asked Questions
@end ifnottex
-@section Composing messages
+@subsection Composing messages
@menu
-* [5.1]:: What are the basic commands I need to know for sending mail and postings?
-* [5.2]:: How to enable automatic word-wrap when composing messages?
-* [5.3]:: How to set stuff like From, Organization, Reply-To, signature...?
-* [5.4]:: Can I set things like From, Signature etc group based on the group I post too?
-* [5.5]:: Is there a spell-checker? Perhaps even on-the-fly spell-checking?
-* [5.6]:: Can I set the dictionary based on the group I'm posting to?
-* [5.7]:: Is there some kind of address-book, so I needn't remember all those email addresses?
-* [5.8]:: Sometimes I see little images at the top of article buffer. What's that and how can I send one with my postings, too?
-* [5.9]:: Sometimes I accidentally hit r instead of f in newsgroups. Can Gnus warn me, when I'm replying by mail in newsgroups?
-* [5.10]:: How to tell Gnus not to generate a sender header?
-* [5.11]:: I want gnus to locally store copies of my send mail and news, how to do it?
-* [5.12]:: People tell me my Message-IDs are not correct, why aren't they and how to fix it?
+* [5.1]:: What are the basic commands I need to know for sending mail and
+ postings?
+* [5.2]:: How to enable automatic word-wrap when composing messages?
+* [5.3]:: How to set stuff like From, Organization, Reply-To, signature...?
+* [5.4]:: Can I set things like From, Signature etc group based on the
+ group I post too?
+* [5.5]:: Is there a spell-checker? Perhaps even on-the-fly spell-checking?
+* [5.6]:: Can I set the dictionary based on the group I'm posting to?
+* [5.7]:: Is there some kind of address-book, so I needn't remember all
+ those email addresses?
+* [5.8]:: Sometimes I see little images at the top of article buffer.
+ What's that and how can I send one with my postings, too?
+* [5.9]:: Sometimes I accidentally hit r instead of f in newsgroups.
+ Can Gnus warn me, when I'm replying by mail in newsgroups?
+* [5.10]:: How to tell Gnus not to generate a sender header?
+* [5.11]:: I want gnus to locally store copies of my send mail and news,
+ how to do it?
+* [5.12]:: People tell me my Message-IDs are not correct,
+ why aren't they and how to fix it?
@end menu
@ifnottex
@node [5.1], [5.2], FAQ 5 - Composing messages, FAQ 5 - Composing messages
@end ifnottex
-@subheading Question 5.1:
+@subsubheading Question 5.1:
What are the basic commands I need to know for sending mail and postings?
@ifnottex
@node [5.2], [5.3], [5.1], FAQ 5 - Composing messages
@end ifnottex
-@subheading Question 5.2:
+@subsubheading Question 5.2:
How to enable automatic word-wrap when composing messages?
@example
-
(add-hook 'message-mode-hook
(lambda ()
(setq fill-column 72)
(turn-on-auto-fill)))
-
@end example
@noindent
@ifnottex
@node [5.3], [5.4], [5.2], FAQ 5 - Composing messages
@end ifnottex
-@subheading Question 5.3:
+@subsubheading Question 5.3:
How to set stuff like From, Organization, Reply-To, signature...?
@example
-
(setq gnus-posting-styles
'((".*"
(name "Frank Schmitt")
(signature-file "~/.signature")
("X-SampleHeader" "foobar")
(eval (setq some-variable "Foo bar")))))
-
@end example
@noindent
@ifnottex
@node [5.4], [5.5], [5.3], FAQ 5 - Composing messages
@end ifnottex
-@subheading Question 5.4:
+@subsubheading Question 5.4:
Can I set things like From, Signature etc group based on the group I post too?
@example
-
(setq gnus-posting-styles
'((".*" ;;default
(name "Frank Schmitt")
(organization "Hamme net, kren mer och nimmi")
- (signature-file "~/.signature") )
+ (signature-file "~/.signature"))
((message-news-p) ;;Usenet news?
(address "mySpamTrap@@Frank-Schmitt.bla")
- ("Reply-To" "hereRealRepliesOnlyPlease@@Frank-Schmitt.bla") )
+ ("Reply-To" "hereRealRepliesOnlyPlease@@Frank-Schmitt.bla"))
((message-mail-p) ;;mail?
- (address "usedForMails@@Frank-Schmitt.bla") )
+ (address "usedForMails@@Frank-Schmitt.bla"))
("^gmane" ;;this is mail, too in fact
(address "usedForMails@@Frank-Schmitt.net")
- ("Reply-To" nil) )
+ ("Reply-To" nil))
("^gmane.mail.spam.spamassassin.general$"
(eval (setq mail-envelope-from "Azzrael@@rz-online.de"))
- (address "Azzrael@@rz-online.de")) ))
-
+ (address "Azzrael@@rz-online.de"))))
@end example
@ifnottex
@node [5.5], [5.6], [5.4], FAQ 5 - Composing messages
@end ifnottex
-@subheading Question 5.5:
+@subsubheading Question 5.5:
Is there a spell-checker? Perhaps even on-the-fly spell-checking?
Answer:
- You can use ispell.el to spell-check stuff in Emacs. So the
- first thing to do is to make sure that you've got either
- @uref{http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html,ispell}
- or @uref{http://aspell.sourceforge.net/,aspell}
- installed and in your Path. Then you need
- @uref{http://www.kdstevens.com/~stevens/ispell-page.html,ispell.el}
- and for on-the-fly spell-checking
- @uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html,flyspell.el}.
- Ispell.el is shipped with Gnus Emacs and available through the Emacs package system,
- flyspell.el is shipped with Emacs and part of XEmacs text-modes package which is
- available through the package system, so there should be no need to install them
- manually.
+You can use ispell.el to spell-check stuff in Emacs. So the first
+thing to do is to make sure that you've got either
+@itemize @bullet
+@item
+@uref{http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html,ispell}
+or
+@item
+@uref{http://aspell.sourceforge.net/,aspell}
+@end itemize
+@noindent
+installed and in your Path.
+
+Then you need
+@uref{http://www.kdstevens.com/~stevens/ispell-page.html,ispell.el,ispell.el}
+and for on-the-fly spell-checking
+@uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html,flyspell.el,flyspell.el}.
+Ispell.el is shipped with Gnus Emacs and available through the Emacs
+package system, flyspell.el is shipped with Emacs and part of XEmacs
+text-modes package which is available through the package system, so
+there should be no need to install them manually.
Ispell.el assumes you use ispell, if you choose aspell say
@ifnottex
@node [5.6], [5.7], [5.5], FAQ 5 - Composing messages
@end ifnottex
-@subheading Question 5.6:
+@subsubheading Question 5.6:
Can I set the dictionary based on the group I'm posting to?
@example
-
(add-hook 'gnus-select-group-hook
(lambda ()
(cond
(ispell-change-dictionary "deutsch8"))
(t
(ispell-change-dictionary "english")))))
-
@end example
@ifnottex
@node [5.7], [5.8], [5.6], FAQ 5 - Composing messages
@end ifnottex
-@subheading Question 5.7:
+@subsubheading Question 5.7:
Is there some kind of address-book, so I needn't remember
all those email addresses?
@example
-
alias al "Al <al@@english-heritage.bla>"
-
@end example
@noindent
@example
-
(require 'bbdb)
(bbdb-initialize 'gnus 'message)
-
@end example
@noindent
@example
-
(require 'bbdb)
;;If you don't live in Northern America, you should disable the
;;syntax check for telephone numbers by saying
(setq bbdb-complete-name-allow-cycling t)
;;No popup-buffers
(setq bbdb-use-pop-up nil)
-
@end example
@noindent
@ifnottex
@node [5.8], [5.9], [5.7], FAQ 5 - Composing messages
@end ifnottex
-@subheading Question 5.8:
+@subsubheading Question 5.8:
Sometimes I see little images at the top of article
buffer. What's that and how can I send one with my
@example
-
cat file.xbm | xbm2ikon |compface > file.face
cat ./file.face | sed 's/\\/\\\\/g' | sed 's/\"/\\\"/g' > ./file.face.quoted
-
@end example
@noindent
- if you can't use compface, there's an online X-face converter at
- @uref{http://www.dairiki.org/xface/}.
- If you use MS Windows, you could also use the WinFace program from
- @uref{http://www.xs4all.nl/~walterln/winface/}.
- Now you only have to tell Gnus to include the X-face in your postings by saying
-
+If you can't use compface, there's an online X-face converter at@*
+@uref{http://www.dairiki.org/xface/}. If you use MS Windows, you
+could also use the WinFace program from
+@uref{http://www.xs4all.nl/~walterln/winface/}.
-@example
+Now you only have to tell Gnus to include the X-face in your postings
+by saying
+@example
(setq message-default-headers
(with-temp-buffer
(insert "X-Face: ")
(insert-file-contents "~/.xemacs/xface")
(buffer-string)))
-
@end example
@noindent
@ifnottex
@node [5.9], [5.10], [5.8], FAQ 5 - Composing messages
@end ifnottex
-@subheading Question 5.9:
+@subsubheading Question 5.9:
Sometimes I accidentally hit r instead of f in
newsgroups. Can Gnus warn me, when I'm replying by mail in
@example
-
(setq gnus-confirm-mail-reply-to-news t)
-
@end example
@noindent
@example
-
(defadvice gnus-summary-reply (around reply-in-news activate)
(interactive)
(when (or (not (gnus-news-group-p gnus-newsgroup-name))
(y-or-n-p "Really reply? "))
ad-do-it))
-
@end example
@ifnottex
@node [5.10], [5.11], [5.9], FAQ 5 - Composing messages
@end ifnottex
-@subheading Question 5.10:
+@subsubheading Question 5.10:
How to tell Gnus not to generate a sender header?
@example
-
(eval-after-load "message"
'(add-to-list 'message-syntax-checks '(sender . disabled)))
-
@end example
@ifnottex
@node [5.11], [5.12], [5.10], FAQ 5 - Composing messages
@end ifnottex
-@subheading Question 5.11:
+@subsubheading Question 5.11:
I want gnus to locally store copies of my send mail and
news, how to do it?
@example
-
(setq gnus-message-archive-group
'((if (message-news-p)
"nnml:Send-News"
"nnml:Send-Mail")))
-
@end example
@ifnottex
@node [5.12], , [5.11], FAQ 5 - Composing messages
@end ifnottex
-@subheading Question 5.12:
+@subsubheading Question 5.12:
People tell me my Message-IDs are not correct, why
aren't they and how to fix it?
@example
-
(defun message-make-message-id()
(concat "<"(message-unique-id)"@@yourmachine.yourdomain.tld>"))
-
@end example
@example
-
(setq message-required-news-headers
(remove' Message-ID message-required-news-headers))
-
@end example
@noindent
@example
-
(setq message-required-mail-headers
(remove' Message-ID message-required-mail-headers))
-
@end example
@noindent
@ifnottex
@node FAQ 6 - Old messages, FAQ 7 - Gnus in a dial-up environment, FAQ 5 - Composing messages, Frequently Asked Questions
@end ifnottex
-@section Old messages
+@subsection Old messages
@menu
-* [6.1]:: How to import my old mail into Gnus?
-* [6.2]:: How to archive interesting messages?
-* [6.3]:: How to search for a specific message?
-* [6.4]:: How to get rid of old unwanted mail?
-* [6.5]:: I want that all read messages are expired (at least in some groups). How to do it?
-* [6.6]:: I don't want expiration to delete my mails but to move them to another group.
+* [6.1]:: How to import my old mail into Gnus?
+* [6.2]:: How to archive interesting messages?
+* [6.3]:: How to search for a specific message?
+* [6.4]:: How to get rid of old unwanted mail?
+* [6.5]:: I want that all read messages are expired (at least in some
+ groups). How to do it?
+* [6.6]:: I don't want expiration to delete my mails but to move them
+ to another group.
@end menu
@ifnottex
@node [6.1], [6.2], FAQ 6 - Old messages, FAQ 6 - Old messages
@end ifnottex
-@subheading Question 6.1:
+@subsubheading Question 6.1:
How to import my old mail into Gnus?
@ifnottex
@node [6.2], [6.3], [6.1], FAQ 6 - Old messages
@end ifnottex
-@subheading Question 6.2:
+@subsubheading Question 6.2:
How to archive interesting messages?
@example
-
(defun my-archive-article (&optional n)
"Copies one or more article(s) to a corresponding `nnml:' group, e.g.
`gnus.ding' goes to `nnml:1.gnus.ding'. And `nnml:List-gnus.ding' goes
(replace-in-string gnus-newsgroup-name "^.*:" "")
(replace-regexp-in-string "^.*:" "" gnus-newsgroup-name)))))
(gnus-summary-copy-article n archive-name)))
-
@end example
@noindent
@example
-
(setq gnus-use-cache t)
-
@end example
@noindent
@ifnottex
@node [6.3], [6.4], [6.2], FAQ 6 - Old messages
@end ifnottex
-@subheading Question 6.3:
+@subsubheading Question 6.3:
How to search for a specific message?
@ifnottex
@node [6.4], [6.5], [6.3], FAQ 6 - Old messages
@end ifnottex
-@subheading Question 6.4:
+@subsubheading Question 6.4:
How to get rid of old unwanted mail?
@ifnottex
@node [6.5], [6.6], [6.4], FAQ 6 - Old messages
@end ifnottex
-@subheading Question 6.5:
+@subsubheading Question 6.5:
I want that all read messages are expired (at least in
some groups). How to do it?
@ifnottex
@node [6.6], , [6.5], FAQ 6 - Old messages
@end ifnottex
-@subheading Question 6.6:
+@subsubheading Question 6.6:
I don't want expiration to delete my mails but to move them
to another group.
@example
-
(setq nnmail-expiry-target "nnml:expired")
-
@end example
@noindent
@ifnottex
@node FAQ 7 - Gnus in a dial-up environment, FAQ 8 - Getting help, FAQ 6 - Old messages, Frequently Asked Questions
@end ifnottex
-@section Gnus in a dial-up environment
+@subsection Gnus in a dial-up environment
@menu
-* [7.1]:: I don't have a permanent connection to the net, how can I minimize the time I've got to be connected?
-* [7.2]:: So what was this thing about the Agent?
-* [7.3]:: I want to store article bodies on disk, too. How to do it?
-* [7.4]:: How to tell Gnus not to try to send mails / postings while I'm offline?
+* [7.1]:: I don't have a permanent connection to the net, how can I
+ minimize the time I've got to be connected?
+* [7.2]:: So what was this thing about the Agent?
+* [7.3]:: I want to store article bodies on disk, too. How to do it?
+* [7.4]:: How to tell Gnus not to try to send mails / postings while
+ I'm offline?
@end menu
@ifnottex
@node [7.1], [7.2], FAQ 7 - Gnus in a dial-up environment, FAQ 7 - Gnus in a dial-up environment
@end ifnottex
-@subheading Question 7.1:
+@subsubheading Question 7.1:
I don't have a permanent connection to the net, how can
I minimize the time I've got to be connected?
when you're online.
- Let's talk about Unix systems first: For the news part,
- the easiest solution is a small nntp server like
- @uref{http://www.leafnode.org/,Leafnode} or
- @uref{http://infa.abo.fi/~patrik/sn/,sn},
- of course you can also install a full featured news
- server like
- @uref{http://www.isc.org/products/INN/,inn}.
- Then you want to fetch your Mail, popular choices
- are @uref{http://www.catb.org/~esr/fetchmail/,fetchmail}
- and @uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/,getmail}.
- You should tell those to write the mail to your disk and
- Gnus to read it from there. Last but not least the mail
- sending part: This can be done with every MTA like
- @uref{http://www.sendmail.org/,sendmail},
- @uref{http://www.qmail.org/,postfix},
- @uref{http://www.exim.org/,exim} or
- @uref{http://www.qmail.org/,qmail}.
+Let's talk about Unix systems first: For the news part, the easiest
+solution is a small nntp server like
+@uref{http://www.leafnode.org/,Leafnode} or
+@uref{http://infa.abo.fi/~patrik/sn/,sn}, of course you can also
+install a full featured news server like
+@uref{http://www.isc.org/products/INN/,inn}.
+
+Then you want to fetch your Mail, popular choices are
+@itemize @bullet
+@item
+@uref{http://www.catb.org/~esr/fetchmail/,fetchmail} and
+@item
+@uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/,getmail}.
+@end itemize
+You should tell those to write the mail to your disk and Gnus to read
+it from there. Last but not least the mail sending part: This can be
+done with every MTA like @uref{http://www.sendmail.org/,sendmail},
+@uref{http://www.qmail.org/,postfix}, @uref{http://www.exim.org/,exim}
+or @uref{http://www.qmail.org/,qmail}.
On windows boxes I'd vote for
@ifnottex
@node [7.2], [7.3], [7.1], FAQ 7 - Gnus in a dial-up environment
@end ifnottex
-@subheading Question 7.2:
+@subsubheading Question 7.2:
So what was this thing about the Agent?
@example
-
(setq gnus-agent t)
-
@end example
@ifnottex
@node [7.3], [7.4], [7.2], FAQ 7 - Gnus in a dial-up environment
@end ifnottex
-@subheading Question 7.3:
+@subsubheading Question 7.3:
I want to store article bodies on disk, too. How to do it?
@ifnottex
@node [7.4], , [7.3], FAQ 7 - Gnus in a dial-up environment
@end ifnottex
-@subheading Question 7.4:
+@subsubheading Question 7.4:
How to tell Gnus not to try to send mails / postings
while I'm offline?
@ifnottex
@node FAQ 8 - Getting help, FAQ 9 - Tuning Gnus, FAQ 7 - Gnus in a dial-up environment, Frequently Asked Questions
@end ifnottex
-@section Getting help
+@subsection Getting help
@menu
-* [8.1]:: How to find information and help inside Emacs?
-* [8.2]:: I can't find anything in the Gnus manual about X (e.g. attachments, PGP, MIME...), is it not documented?
-* [8.3]:: Which websites should I know?
-* [8.4]:: Which mailing lists and newsgroups are there?
-* [8.5]:: Where to report bugs?
-* [8.6]:: I need real-time help, where to find it?
+* [8.1]:: How to find information and help inside Emacs?
+* [8.2]:: I can't find anything in the Gnus manual about X
+ (e.g. attachments, PGP, MIME...), is it not documented?
+* [8.3]:: Which websites should I know?
+* [8.4]:: Which mailing lists and newsgroups are there?
+* [8.5]:: Where to report bugs?
+* [8.6]:: I need real-time help, where to find it?
@end menu
@ifnottex
@node [8.1], [8.2], FAQ 8 - Getting help, FAQ 8 - Getting help
@end ifnottex
-@subheading Question 8.1:
+@subsubheading Question 8.1:
How to find information and help inside Emacs?
@ifnottex
@node [8.2], [8.3], [8.1], FAQ 8 - Getting help
@end ifnottex
-@subheading Question 8.2:
+@subsubheading Question 8.2:
I can't find anything in the Gnus manual about X
(e.g. attachments, PGP, MIME...), is it not documented?
@ifnottex
@node [8.3], [8.4], [8.2], FAQ 8 - Getting help
@end ifnottex
-@subheading Question 8.3:
+@subsubheading Question 8.3:
Which websites should I know?
@ifnottex
@node [8.4], [8.5], [8.3], FAQ 8 - Getting help
@end ifnottex
-@subheading Question 8.4:
+@subsubheading Question 8.4:
Which mailing lists and newsgroups are there?
@ifnottex
@node [8.5], [8.6], [8.4], FAQ 8 - Getting help
@end ifnottex
-@subheading Question 8.5:
+@subsubheading Question 8.5:
Where to report bugs?
Answer:
- Say @samp{M-x gnus-bug}, this will start
- a message to the
- @uref{mailto:bugs@@gnus.org,gnus bug mailing list}
- including information about your environment which make
- it easier to help you.
+Say @samp{M-x gnus-bug}, this will start a message to the
+@email{bugs@@gnus.org,gnus bug mailing list} including information
+about your environment which make it easier to help you.
@ifnottex
@node [8.6], , [8.5], FAQ 8 - Getting help
@end ifnottex
-@subheading Question 8.6:
+@subsubheading Question 8.6:
I need real-time help, where to find it?
@ifnottex
@node FAQ 9 - Tuning Gnus, FAQ - Glossary, FAQ 8 - Getting help, Frequently Asked Questions
@end ifnottex
-@section Tuning Gnus
+@subsection Tuning Gnus
@menu
-* [9.1]:: Starting Gnus is really slow, how to speed it up?
-* [9.2]:: How to speed up the process of entering a group?
-* [9.3]:: Sending mail becomes slower and slower, what's up?
+* [9.1]:: Starting Gnus is really slow, how to speed it up?
+* [9.2]:: How to speed up the process of entering a group?
+* [9.3]:: Sending mail becomes slower and slower, what's up?
@end menu
@ifnottex
@node [9.1], [9.2], FAQ 9 - Tuning Gnus, FAQ 9 - Tuning Gnus
@end ifnottex
-@subheading Question 9.1:
+@subsubheading Question 9.1:
Starting Gnus is really slow, how to speed it up?
@example
-
(require 'message)
(add-to-list 'message-syntax-checks '(sender . disabled))
-
@end example
@noindent
@example
-
(eval-after-load "message"
'(add-to-list 'message-syntax-checks '(sender . disabled)))
-
@end example
@noindent
@ifnottex
@node [9.2], [9.3], [9.1], FAQ 9 - Tuning Gnus
@end ifnottex
-@subheading Question 9.2:
+@subsubheading Question 9.2:
How to speed up the process of entering a group?
@example
-
(gnus-compile)
-
@end example
@noindent
@example
-
(setq gc-cons-threshold 3500000)
-
@end example
@noindent
@example
-
(setq gnus-use-correct-string-widths nil)
-
@end example
@ifnottex
@node [9.3], , [9.2], FAQ 9 - Tuning Gnus
@end ifnottex
-@subheading Question 9.3:
+@subsubheading Question 9.3:
Sending mail becomes slower and slower, what's up?
@ifnottex
@node FAQ - Glossary, , FAQ 9 - Tuning Gnus, Frequently Asked Questions
@end ifnottex
-@section Glossary
+@subsection Glossary
@table @dfn
@setfilename gnus
@settitle Gnus Manual
-@synindex fn cp
-@synindex vr cp
-@synindex pg cp
+@syncodeindex fn cp
+@syncodeindex vr cp
+@syncodeindex pg cp
@dircategory Emacs
@direntry
* Gnus: (gnus). The newsreader Gnus.
\makeindex
\begin{document}
-\newcommand{\gnusversionname}{Oort Gnus v0.19}
+\newcommand{\gnusversionname}{Oort Gnus v0.24}
\newcommand{\gnuschaptername}{}
\newcommand{\gnussectionname}{}
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Oort Gnus v0.19.
+This manual corresponds to Oort Gnus v0.24.
@end ifinfo
Group Buffer Format
* Group Line Specification:: Deciding how the group buffer is to look.
-* Group Modeline Specification:: The group buffer modeline.
+* Group Mode Line Specification:: The group buffer mode line.
* Group Highlighting:: Having nice colors in the group buffer.
Group Topics
* Article Date:: Grumble, UT!
* Article Display:: Display various stuff---X-Face, Picons, Smileys
* Article Signature:: What is a signature?
-* Article Miscellania:: Various other stuff.
+* Article Miscellanea:: Various other stuff.
Alternative Approaches
* Troubleshooting:: What you might try if things do not work.
* Gnus Reference Guide:: Rilly, rilly technical stuff.
* Emacs for Heathens:: A short introduction to Emacsian terms.
-* Frequently Asked Questions::
+* Frequently Asked Questions:: The Gnus FAQ.
History
* Red Gnus:: Third time best---Gnus 5.4/5.5.
* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7.
* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9.
+* Oort Gnus:: It's big. It's far out. Gnus 5.10.
Customization
@menu
* Group Line Specification:: Deciding how the group buffer is to look.
-* Group Modeline Specification:: The group buffer modeline.
+* Group Mode Line Specification:: The group buffer mode line.
* Group Highlighting:: Having nice colors in the group buffer.
@end menu
group, or a bogus native group.
-@node Group Modeline Specification
-@subsection Group Modeline Specification
-@cindex group modeline
+@node Group Mode Line Specification
+@subsection Group Mode Line Specification
+@cindex group mode line
@vindex gnus-group-mode-line-format
The mode line can be changed by setting
(defface my-group-face-1
'((t (:foreground "Red" :bold t))) "First group face")
(defface my-group-face-2
- '((t (:foreground "DarkSeaGreen4" :bold t))) "Second group face")
+ '((t (:foreground "DarkSeaGreen4" :bold t)))
+ "Second group face")
(defface my-group-face-3
'((t (:foreground "Green4" :bold t))) "Third group face")
(defface my-group-face-4
parameters have this form @emph{except} local variable specs, which are
not dotted pairs, but proper lists.
-Some parameters have correspondant customizable variables, each of which
+Some parameters have correspondent customizable variables, each of which
is an alist of regexps and values.
The following group parameters can be used:
sending the message.
@findex gnus-mailing-list-mode
-@cindex Mail List Groups
+@cindex mail list groups
If this variable is set, @code{gnus-mailing-list-mode} is turned on when
entering summary buffer.
@}
@end example
-The Sieve language is described in RFC 3028. @xref{Top, , Top, sieve,
+The Sieve language is described in RFC 3028. @xref{Top, , Top, sieve,
Emacs Sieve}.
@item (@var{variable} @var{form})
@vindex gnus-list-identifiers
A use for this feature is to remove a mailing list identifier tag in
the subject fields of articles. E.g. if the news group
-@samp{nntp+news.gnus.org:gmane.text.docbook.apps} has the tag
-@samp{DOC-BOOK-APPS:} in the subject of all articles, this tag can be
-removed from the article subjects in the summary buffer for the group by
-putting @code{(gnus-list-identifiers "DOCBOOK-APPS:")} into the group
-parameters for the group.
+@example
+nntp+news.gnus.org:gmane.text.docbook.apps
+@end example
+has the tag @samp{DOC-BOOK-APPS:} in the subject of all articles, this
+tag can be removed from the article subjects in the summary buffer for
+the group by putting @code{(gnus-list-identifiers "DOCBOOK-APPS:")}
+into the group parameters for the group.
This can also be used as a group-specific hook function, if you'd like.
If you want to hear a beep when you enter a group, you could put
@item G S m
@kindex G S m (Group)
@findex gnus-group-sort-groups-by-method
-Sort the group buffer alphabetically by back end name
+Sort the group buffer alphabetically by back end name@*
(@code{gnus-group-sort-groups-by-method}).
@item G S n
@item G P m
@kindex G P m (Group)
@findex gnus-group-sort-selected-groups-by-method
-Sort the groups alphabetically by back end name
+Sort the groups alphabetically by back end name@*
(@code{gnus-group-sort-selected-groups-by-method}).
@item G P n
So, let's have a look at an example group buffer:
@example
+@group
Gnus
Emacs -- I wuw it!
3: comp.emacs
Misc
8: comp.binaries.fractals
13: comp.sources.unix
+@end group
@end example
So, here we have one top-level topic (@samp{Gnus}), two topics under
Used for the false root of a thread (@pxref{Loose Threads}). If
@code{nil}, use subject instead. The default is @samp{> }.
-@item gnus-sum-thread-tree-false-root
-@vindex gnus-sum-thread-tree-false-root
-Used for the root of a thread if it is a false root. If @code{nil},
-use subject instead. The default is @samp{> }.
-
@item gnus-sum-thread-tree-single-indent
@vindex gnus-sum-thread-tree-single-indent
Used for a thread with just one message. If @code{nil}, use subject
article, you could say something like:
@lisp
+@group
(add-hook 'gnus-summary-mode-hook 'my-alter-summary-map)
(defun my-alter-summary-map ()
(local-set-key "!" 'gnus-summary-put-mark-as-ticked-next))
+@end group
@end lisp
+@noindent
or
@lisp
@item / c
@kindex / c (Summary)
@findex gnus-summary-limit-exclude-childless-dormant
-Exclude all dormant articles that have no children from the limit
+Exclude all dormant articles that have no children from the limit@*
(@code{gnus-summary-limit-exclude-childless-dormant}).
@item / C
This can also be a predicate specifier (@pxref{Predicate Specifiers}).
Available predicates are @code{gnus-article-unread-p} and
-@code{gnus-article-unseen-p}).
+@code{gnus-article-unseen-p}.
Here's an example:
@item T s
@kindex T s (Summary)
@findex gnus-summary-show-thread
-Expose the (sub-)thread hidden under the current article, if any
+Expose the (sub-)thread hidden under the current article, if any@*
(@code{gnus-summary-show-thread}).
@item T h
* Article Date:: Grumble, UT!
* Article Display:: Display various stuff---X-Face, Picons, Smileys
* Article Signature:: What is a signature?
-* Article Miscellania:: Various other stuff.
+* Article Miscellanea:: Various other stuff.
@end menu
sends, you can use the following element to remove them:
@lisp
-("@@yoo-hoo\\.co\\.jp\\'" . "\n_+\nDo You Yoo-hoo!\\?\n.*\n.*\n")
+("@@yoo-hoo\\.co\\.jp\\'" .
+ "\n_+\nDo You Yoo-hoo!\\?\n.*\n.*\n")
@end lisp
@end table
Unwrap lines that appear to be wrapped citation lines. You can control
what lines will be unwrapped by frobbing
@code{gnus-outlook-deuglify-unwrap-min} and
-@code{gnus-outlook-deuglify-unwrap-max}, indicating the miminum and
+@code{gnus-outlook-deuglify-unwrap-max}, indicating the minimum and
maximum length of an unwrapped citation line.
(@code{gnus-article-outlook-unwrap-lines}).
@item W Y a
@kindex W Y a (Summary)
@findex gnus-article-outlook-repair-attribution
-Repair a broken attribution line.
+Repair a broken attribution line.@*
(@code{gnus-article-outlook-repair-attribution}).
@item W Y c
used to say what headers to apply the buttonize coding to:
@lisp
-(@var{header} @var{regexp} @var{nutton-par} @var{use-p} @var{function} @var{data-par})
+(@var{header} @var{regexp} @var{button-par} @var{use-p} @var{function} @var{data-par})
@end lisp
@var{header} is a regular expression.
+@end table
@subsubsection Related variables and functions
+@table @code
@item gnus-button-@var{*}-level
@xref{Article Button Levels}.
@samp{foo123@@bar.invalid} is pushed. Strings like this can be either a
message ID or a mail address. If it is one of the symbols @code{mid} or
@code{mail}, Gnus will always assume that the string is a message ID or
-a mail address, respectivly. If this variable is set to the symbol
+a mail address, respectively. If this variable is set to the symbol
@code{ask}, always query the user what do do. If it is a function, this
function will be called with the string as it's only argument. The
function must return @code{mid}, @code{mail}, @code{invalid} or
signature after all.
-@node Article Miscellania
-@subsection Article Miscellania
+@node Article Miscellanea
+@subsection Article Miscellanea
@table @kbd
@item A t
@item gnus-tree-brackets
@vindex gnus-tree-brackets
This is used for differentiating between ``real'' articles and
-``sparse'' articles. The format is @code{((@var{real-open} . @var{real-close})
-(@var{sparse-open} . @var{sparse-close}) (@var{dummy-open} . @var{dummy-close}))}, and the
-default is @code{((?[ . ?]) (?( . ?)) (?@{ . ?@}) (?< . ?>))}.
+``sparse'' articles. The format is
+@example
+((@var{real-open} . @var{real-close})
+ (@var{sparse-open} . @var{sparse-close})
+ (@var{dummy-open} . @var{dummy-close}))
+@end example
+and the default is @code{((?[ . ?]) (?( . ?)) (?@{ . ?@}) (?< . ?>))}.
@item gnus-tree-parent-child-edges
@vindex gnus-tree-parent-child-edges
Here's the same thread displayed in a vertical tree buffer:
@example
+@group
@{***@}
|--------------------------\-----\-----\
(***) [Bjo] [Gun] [Gun]
[Gun] [Eri] [Eri] [odd]
|
[Paa]
+@end group
@end example
If you're using horizontal trees, it might be nice to display the trees
If the value is an integer, @var{n}, update the display every @var{n}
lines. The default is @code{nil}.
+@vindex gnus-summary-display-arrow
+@item gnus-summary-display-arrow
+If non-@code{nil}, display an arrow in the fringe to indicate the
+current article.
+
@vindex gnus-summary-mode-hook
@item gnus-summary-mode-hook
This hook is called when creating a summary mode buffer.
@lisp
(setq gnus-newsgroup-variables
- '(message-use-followup-to
- (gnus-visible-headers .
- "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^To:")))
+ '(message-use-followup-to
+ (gnus-visible-headers .
+ "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^To:")))
@end lisp
@end table
@enumerate
@item
To handle @acronym{PGP} and @acronym{PGP/MIME} messages, you have to
-install an OpenPGP implementation such as GnuPG. The lisp interface
+install an OpenPGP implementation such as GnuPG. The Lisp interface
to GnuPG included with Gnus is called PGG (@pxref{Top, ,PGG, pgg, PGG
Manual}), but Mailcrypt and gpg.el are also supported.
@example
application/pgp-keys; gpg --import --interactive --verbose; needsterminal
@end example
-
+@noindent
This happens to also be the default action defined in
@code{mailcap-mime-data}.
@node Mailing List
@section Mailing List
+@cindex mailing list
+@cindex RFC 2396
@kindex A M (summary)
@findex gnus-mailing-list-insinuate
article. That's well and nice, but there's also lots of information
most people do not want to see---what systems the article has passed
through before reaching you, the @code{Message-ID}, the
-@code{References}, etc. ad nauseum---and you'll probably want to get rid
+@code{References}, etc. ad nauseam---and you'll probably want to get rid
of some of those lines. If you want to keep all those lines in the
article buffer, you can set @code{gnus-show-all-headers} to @code{t}.
@kindex RET (Article)
@itemx BUTTON-2 (Article)
Toggle displaying of the @acronym{MIME} object
-(@code{gnus-article-press-button}). If builtin viewers can not display
+(@code{gnus-article-press-button}). If built-in viewers can not display
the object, Gnus resorts to external viewers in the @file{mailcap}
files. If a viewer has the @samp{copiousoutput} specification, the
object is displayed inline.
@vindex gnus-article-decode-hook
@item gnus-article-decode-hook
-@cindex MIME
+@cindex @acronym{MIME}
Hook used to decode @acronym{MIME} articles. The default value is
@code{(article-decode-charset article-decode-encoded-words)}
@item nntp-xover-commands
@vindex nntp-xover-commands
-@cindex nov
+@cindex @acronym{NOV}
@cindex XOVER
List of strings used as commands to fetch @acronym{NOV} lines from a
server. The default value of this variable is @code{("XOVER"
@item nnspool-nov-directory
@vindex nnspool-nov-directory
-Where @code{nnspool} will look for @acronym{NOV} files. This is normally
+Where @code{nnspool} will look for @acronym{NOV} files. This is normally@*
@file{/usr/spool/news/over.view/}.
@item nnspool-lib-dir
variable is @code{add-name-to-file} by default.)
@kindex M-x nnmail-split-history
-@kindex nnmail-split-history
+@findex nnmail-split-history
If you wish to see where the previous mail split put the messages, you
can use the @kbd{M-x nnmail-split-history} command. If you wish to see
where re-spooling messages would put the messages, you can use
@table @code
@item mail-source-crash-box
@vindex mail-source-crash-box
-File where mail will be stored while processing it. The default is
+File where mail will be stored while processing it. The default is@*
@file{~/.emacs-mail-crash-box}.
@item mail-source-delete-incoming
If non-@code{nil}, delete incoming files after handling them. If
@code{t}, delete the files immediately, if @code{nil}, never delete any
files. If a positive number, delete files older than number of days
-(This will only happen, when reveiving new mail). You may also set
+(This will only happen, when receiving new mail). You may also set
@code{mail-source-delete-incoming} to @code{nil} and call
@code{mail-source-delete-old-incoming} from a hook or interactively.
@vindex nnmail-split-hook
@item nnmail-split-hook
@findex gnus-article-decode-encoded-words
-@findex RFC 1522 decoding
-@findex RFC 2047 decoding
+@cindex RFC 1522 decoding
+@cindex RFC 2047 decoding
Hook run in the buffer where the mail headers of each message is kept
just before the splitting based on these headers is done. The hook is
free to modify the buffer contents in any way it sees fit---the buffer
@samp{\<} and @samp{\>} pairs.
@vindex nnmail-split-abbrev-alist
-@var{field} and @var{value} can also be lisp symbols, in that case they
+@var{field} and @var{value} can also be Lisp symbols, in that case they
are expanded as specified by the variable
@code{nnmail-split-abbrev-alist}. This is an alist of cons cells, where
the @code{car} of a cell contains the key, and the @code{cdr} contains the associated
@var{groups} may be a regular expression or a list of group names whose
parameters will be scanned to generate the output split.
@var{no-crosspost} can be used to disable cross-posting; in this case, a
-single @code{|} split will be output. @var{catch-all} is the fallback
+single @code{|} split will be output. @var{catch-all} is the fall back
fancy split, used like @var{gnus-group-split-default-catch-all-group}.
If @var{catch-all} is @code{nil}, or if @var{split-regexp} matches the
empty string in any selected group, no catch-all split will be issued.
course.
To make Gnus get rid of your unwanted mail, you have to mark the
-articles as @dfn{expirable}. (With the default keybindings, this means
+articles as @dfn{expirable}. (With the default key bindings, this means
that you have to type @kbd{E}.) This does not mean that the articles
will disappear right away, however. In general, a mail article will be
deleted from your system if, 1) it is marked as expirable, AND 2) it is
@lisp
(setq nnmail-split-fancy
'(| ;; @r{Messages duplicates go to a separate group.}
- ("gnus-warning" "duplicat\\(e\\|ion\\) of message" "duplicate")
- ;; @r{Message from daemons, postmaster, and the like to another.}
- (any mail "mail.misc")
- ;; @r{Other rules.}
- [ ... ] ))
+ ("gnus-warning" "duplicat\\(e\\|ion\\) of message" "duplicate")
+ ;; @r{Message from daemons, postmaster, and the like to another.}
+ (any mail "mail.misc")
+ ;; @r{Other rules.}
+ [...] ))
@end lisp
-
+@noindent
Or something like:
@lisp
(setq nnmail-split-methods
maildir.
Maildir format was designed to allow concurrent deliveries and
-reading, without needing locks. With other backends, you would have
+reading, without needing locks. With other back ends, you would have
your mail delivered to a spool of some kind, and then you would
configure Gnus to split mail from that spool into your groups. You
can still do that with nnmaildir, but the more common configuration is
nnmaildir uses several group parameters. It's safe to ignore all
this; the default behavior for nnmaildir is the same as the default
-behavior for other mail backends: articles are deleted after one week,
+behavior for other mail back ends: articles are deleted after one week,
etc. Except for the expiry parameters, all this functionality is
unique to nnmaildir, so you can ignore it if you're just trying to
-duplicate the behavior you already have with another backend.
+duplicate the behavior you already have with another back end.
If the value of any of these parameters is a vector, the first element
is evaluated as a Lisp form and the result is used, rather than the
original value. If the value is not a vector, the value itself is
evaluated as a Lisp form. (This is why these parameters use names
different from those of other, similar parameters supported by other
-backends: they have different, though similar, meanings.) (For
+back ends: they have different, though similar, meanings.) (For
numbers, strings, @code{nil}, and @code{t}, you can ignore the
@code{eval} business again; for other values, remember to use an extra
quote and wrap the value in a vector when appropriate.)
it will be expired, or the symbol @code{never} to specify that
articles should never be expired. If this parameter is not set,
nnmaildir falls back to the usual
-@code{nnmail-expiry-wait}(@code{-function}) variables (overridable by
+@code{nnmail-expiry-wait}(@code{-function}) variables (overrideable by
the @code{expiry-wait}(@code{-function}) group parameters. If you
wanted a value of 3 days, you could use something like @code{[(* 3 24
60 60)]}; nnmaildir will evaluate the form and use the result. An
article (other than via expiry) may also make an article younger.
@item expire-group
-If this is set to a string (a full Gnus group name, like
-@code{"backend+server.address.string:group.name"}), and if it is not
-the name of the same group that the parameter belongs to, then
-articles will be moved to the specified group during expiry before
-being deleted. @emph{If this is set to an nnmaildir group, the
+If this is set to a string such as a full Gnus group name, like
+@example
+"backend+server.address.string:group.name"
+@end example
+and if it is not the name of the same group that the parameter belongs
+to, then articles will be moved to the specified group during expiry
+before being deleted. @emph{If this is set to an nnmaildir group, the
article will be just as old in the destination group as it was in the
source group.} So be careful with @code{expire-age} in the
destination group. If this is set to the name of the same group that
@item nnslashdot-active-url
@vindex nnslashdot-active-url
The @sc{url} format string that will be used to fetch the information on
-news articles and comments. The default is
+news articles and comments. The default is@*
@samp{http://slashdot.org/search.pl?section=&min=%d}.
@item nnslashdot-comments-url
@table @code
@item nnultimate-directory
@vindex nnultimate-directory
-The directory where @code{nnultimate} stores its files. The default is
+The directory where @code{nnultimate} stores its files. The default is@*
@file{~/News/ultimate/}.
@end table
The easiest way to get started with @code{nnwarchive} is to say
something like the following in the group buffer: @kbd{M-x
gnus-group-make-warchive-group RET @var{an_egroup} RET egroups RET
-www.egroups.com RET @var{your@@email.address RET}}. (Substitute the
+www.egroups.com RET @var{your@@email.address} RET}. (Substitute the
@var{an_egroup} with the mailing list you subscribed, the
@var{your@@email.address} with your email address.), or to browse the
back end by @kbd{B nnwarchive RET mail-archive RET}.
@table @code
@item nnwarchive-directory
@vindex nnwarchive-directory
-The directory where @code{nnwarchive} stores its files. The default is
+The directory where @code{nnwarchive} stores its files. The default is@*
@file{~/News/warchive/}.
@item nnwarchive-login
@end itemize
@item nnimap-expunge-on-close
-@cindex Expunging
+@cindex expunging
@vindex nnimap-expunge-on-close
Unlike Parmenides the @acronym{IMAP} designers has decided that things that
doesn't exist actually does exist. More specifically, @acronym{IMAP} has
has only one.)
Probably the only reason for frobing this would be if you're trying
-enable per-user persistant dormant flags, using something like:
+enable per-user persistent dormant flags, using something like:
@lisp
(setcdr (assq 'dormant nnimap-mark-to-flag-alist)
as ticked for other users.
@item nnimap-expunge-search-string
-@cindex Expunging
+@cindex expunging
@vindex nnimap-expunge-search-string
This variable contain the @acronym{IMAP} search command sent to server when
variable @code{nntp-authinfo-file} for exact syntax; also see
@ref{NNTP}.
+@item nnimap-need-unselect-to-notice-new-mail
+@vindex nnimap-need-unselect-to-notice-new-mail
+
+Unselect mailboxes before looking for new mail in them. Some servers
+seem to need this under some circumstances; it was reported that
+Courier 1.7.1 did.
+
@end table
@menu
No nnmail equivalent.
@item nnimap-split-rule
-@cindex Splitting, rules
+@cindex splitting, rules
@vindex nnimap-split-rule
New mail found in @code{nnimap-split-inbox} will be split according to
@lisp
(setq nnimap-split-rule
- '(("my1server" (".*" (("ding" "ding@@gnus.org")
- ("junk" "From:.*Simon")))
+ '(("my1server" (".*" (("ding" "ding@@gnus.org")
+ ("junk" "From:.*Simon"))))
("my2server" ("INBOX" nnimap-split-fancy))
- ("my[34]server" (".*" (("private" "To:.*Simon")
- ("junk" my-junk-func)))))
+ ("my[34]server" (".*" (("private" "To:.*Simon")
+ ("junk" my-junk-func))))))
@end lisp
The virtual server name is in fact a regexp, so that the same rules
@subsection Expunging mailboxes
@cindex expunging
-@cindex Expunge
-@cindex Manual expunging
+@cindex expunge
+@cindex manual expunging
@kindex G x
@findex gnus-group-nnimap-expunge
The @acronym{IMAP} protocol has a concept called namespaces, described
by the following text in the RFC:
-@example
+@display
5.1.2. Mailbox Namespace Naming Convention
By convention, the first hierarchical element of any mailbox name
comp.mail.misc newsgroup would have an mailbox name of
"#news.comp.mail.misc", and the name "comp.mail.misc" could refer
to a different object (e.g. a user's private mailbox).
-@end example
+@end display
While there is nothing in this text that warrants concern for the
@acronym{IMAP} implementation in Gnus, some servers use namespace
@item nngateway-mail2news-header-transformation
Creates a @code{To} header that looks like
@code{nngateway-address}.
+@end table
+
+@end table
Here's an example:
nngateway-mail2news-header-transformation)))
@end lisp
-@end table
-
-
-@end table
-
So, to use this, simply say something like:
@lisp
@section Gnus Unplugged
@cindex offline
@cindex unplugged
-@cindex Agent
-@cindex Gnus Agent
-@cindex Gnus Unplugged
+@cindex agent
+@cindex Gnus agent
+@cindex Gnus unplugged
In olden times (ca. February '88), people used to run their newsreaders
on big machines with permanent connections to the net. News transport
@code{gnus-secondary-select-methods} are agentized.
@item
-
Decide on download policy. It's fairly simple once you decide whether
you are going to use agent categories, topic parameters, and/or group
parameters to implement your policy. If you're new to gnus, it
to multiple groups. Which you use is entirely up to you. Topic
parameters do override categories so, if you mix the two, you'll have
to take that into account. If you have a few groups that deviate from
-your policy, you can use grou parameters (@pxref{Group Parameters}) to
+your policy, you can use group parameters (@pxref{Group Parameters}) to
configure them.
@item
@kindex @@ (Agent Summary)
@findex gnus-agent-toggle-mark
Toggle whether to download the article
-(@code{gnus-agent-toggle-mark}). The dowload mark is @samp{%} by
+(@code{gnus-agent-toggle-mark}). The download mark is @samp{%} by
default.
@item J c
@pxref{Agent Variables}) to always download headers and articles while
plugged. Gnus will almost certainly be slower, but it will be kept
synchronized with the server. That last point probably won't make any
-sense if you are using a nntp or nnimap backend.
+sense if you are using a nntp or nnimap back end.
@node Agent Expiry
@subsection Agent Expiry
@kindex M-x gnus-agent-expire
@kindex M-x gnus-agent-expire-group
@findex gnus-agent-expire-group
-@cindex Agent expiry
-@cindex Gnus Agent expiry
+@cindex agent expiry
+@cindex Gnus agent expiry
@cindex expiry
-The Agent backend, @code{nnagent}, doesn't handle expiry. Well, at
-least it doesn't handle it like other backends. Instead, there are
+The Agent back end, @code{nnagent}, doesn't handle expiry. Well, at
+least it doesn't handle it like other back ends. Instead, there are
special @code{gnus-agent-expire} and @code{gnus-agent-expire-group}
commands that will expire all read articles that are older than
@code{gnus-agent-expire-days} days. They can be run whenever you feel
@node Agent Regeneration
@subsection Agent Regeneration
-@cindex Agent Regeneration
-@cindex Gnus Agent Regeneration
+@cindex agent regeneration
+@cindex Gnus agent regeneration
@cindex regeneration
The local data structures used by @code{nnagent} may become corrupted
This example demonstrates most score file elements. For a different
approach, see @pxref{Advanced Scoring}.
-Even though this looks much like lisp code, nothing here is actually
-@code{eval}ed. The lisp reader is used to read this form, though, so it
+Even though this looks much like Lisp code, nothing here is actually
+@code{eval}ed. The Lisp reader is used to read this form, though, so it
has to be valid syntactically, if not semantically.
Six keys are supported by this alist:
@end table
@end enumerate
-@cindex Score File Atoms
+@cindex score file atoms
@item mark
The value of this entry should be a number. Any articles with a score
lower than this number will be marked as read.
when he's talking about Gnus:
@example
+@group
((&
("from" "Lars Ingebrigtsen")
("subject" "Gnus"))
1000)
+@end group
@end example
Quite simple, huh?
Gnus includes a command to help you while creating your own format
specs. @kbd{M-x gnus-update-format} will @code{eval} the current form,
update the spec in question and pop you to a buffer where you can
-examine the resulting lisp code to be run to generate the line.
+examine the resulting Lisp code to be run to generate the line.
@node Wide Characters
@subsection Wide Characters
-Proportional fonts in most countries have characters of the same width.
+Fixed width fonts in most countries have characters of the same width.
Some countries, however, use Latin characters mixed with wider
characters---most notable East Asian countries.
may look like:
@example
+@group
split = frame | horizontal | vertical | buffer | form
frame = "(frame " size *split ")"
horizontal = "(horizontal " size *split ")"
buffer = "(" buf-name " " size *[ "point" ] *[ "frame-focus"] ")"
size = number | frame-params
buf-name = group | article | summary ...
+@end group
@end example
The limitations are that the @code{frame} split can only appear as the
@item gnus-nocem-groups
@vindex gnus-nocem-groups
Gnus will look for NoCeM messages in the groups in this list. The
-default is @code{("news.lists.filters" "news.admin.net-abuse.bulletins"
-"alt.nocem.misc" "news.admin.net-abuse.announce")}.
+default is
+@lisp
+("news.lists.filters" "news.admin.net-abuse.bulletins"
+ "alt.nocem.misc" "news.admin.net-abuse.announce")
+@end lisp
@item gnus-nocem-issuers
@vindex gnus-nocem-issuers
There are many people issuing NoCeM messages. This list says what
-people you want to listen to. The default is @code{("Automoose-1"
-"clewis@@ferret.ocunix.on.ca" "cosmo.roadkill" "SpamHippo"
-"hweede@@snafu.de")}; fine, upstanding citizens all of them.
+people you want to listen to. The default is
+@lisp
+("Automoose-1" "clewis@@ferret.ocunix.on.ca"
+ "cosmo.roadkill" "SpamHippo" "hweede@@snafu.de")
+@end lisp
+fine, upstanding citizens all of them.
-Known despammers that you can put in this list are listed at
+Known despammers that you can put in this list are listed at@*
@uref{http://www.xs4all.nl/~rosalind/nocemreg/nocemreg.html}.
You do not have to heed NoCeM messages from all these people---just the
@item gnus-nocem-directory
@vindex gnus-nocem-directory
-This is where Gnus will store its NoCeM cache files. The default is
+This is where Gnus will store its NoCeM cache files. The default is@*
@file{~/News/NoCeM/}.
@item gnus-nocem-expiry-wait
@node Image Enhancements
@section Image Enhancements
-XEmacs, as well as Emacs 21, is able to display pictures and stuff, so
-Gnus has taken advantage of that.
+XEmacs, as well as Emacs 21@footnote{Emacs 21 on MS Windows doesn't
+support images yet.}, is able to display pictures and stuff, so Gnus has
+taken advantage of that.
@menu
* Picons:: How to display pictures of what you're reading.
@item gnus-picon-file-types
@vindex gnus-picon-file-types
Ordered list of suffixes on picon file names to try. Defaults to
-@code{("xpm" "gif" "xbm")} minus those not builtin your Emacs.
+@code{("xpm" "gif" "xbm")} minus those not built-in your Emacs.
@end table
(add-hook 'message-send-hook 'mail-add-payment)
@end lisp
-The @code{hashcash.el} library can be found at
-@uref{http://users.actrix.gen.nz/mycroft/hashcash.el}, or in the Gnus
-development contrib directory.
+The @code{hashcash.el} library can be found in the Gnus development
+contrib directory. or at
+@uref{http://users.actrix.gen.nz/mycroft/hashcash.el}.
You will need to set up some additional variables as well:
variables. Try @code{customize-group} on the @samp{spam} variable
group.
+@vindex gnus-spam-process-newsgroups
The concepts of ham processors and spam processors are very important.
Ham processors and spam processors for a group can be set with the
@code{spam-process} group parameter, or the
processors take mail known to be spam and process it so similar spam
will be detected later.
+@vindex gnus-spam-newsgroup-contents
Gnus learns from the spam you get. You have to collect your spam in
one or more spam groups, and set or customize the variable
@code{spam-junk-mailgroups} as appropriate. You can also declare
considered @emph{unclassified}. All groups are unclassified by
default.
+@vindex gnus-spam-mark
+@cindex $
In spam groups, all messages are considered to be spam by default:
-they get the @samp{$} mark when you enter the group. You must review
-these messages from time to time and remove the @samp{$} mark for
+they get the @samp{$} mark (@code{gnus-spam-mark}) when you enter the
+group. If you have seen a message, had it marked as spam, then
+unmarked it, it won't be marked as spam when you enter the group
+thereafter. You can disable that behavior, so all unread messages
+will get the @samp{$} mark, if you set the
+@code{spam-mark-only-unseen-as-spam} parameter to nil. You should
+remove the @samp{$} mark when you are in the group summary buffer for
every message that is not spam after all. To remove the @samp{$}
mark, you can use @kbd{M-u} to ``unread'' the article, or @kbd{d} for
declaring it read the non-spam way. When you leave a group, all
will study them as spam samples.
Messages may also be deleted in various other ways, and unless
-@code{spam-ham-marks} gets overridden below, marks @samp{R} and
-@samp{r} for default read or explicit delete, marks @samp{X} and
+@code{ham-marks} group parameter gets overridden below, marks @samp{R}
+and @samp{r} for default read or explicit delete, marks @samp{X} and
@samp{K} for automatic or explicit kills, as well as mark @samp{Y} for
low scores, are all considered to be associated with articles which
are not spam. This assumption might be false, in particular if you
use kill files or score files as means for detecting genuine spam, you
-should then adjust the @code{spam-ham-marks} variable.
+should then adjust the @code{ham-marks} group parameter.
-@defvar spam-ham-marks
-You can customize this variable to be the list of marks you want to
-consider ham. By default, the list contains the deleted, read,
-killed, kill-filed, and low-score marks.
+@defvar ham-marks
+You can customize this group or topic parameter to be the list of
+marks you want to consider ham. By default, the list contains the
+deleted, read, killed, kill-filed, and low-score marks.
@end defvar
-@defvar spam-spam-marks
-You can customize this variable to be the list of marks you want to
-consider spam. By default, the list contains only the spam mark.
+@defvar spam-marks
+You can customize this group or topic parameter to be the list of
+marks you want to consider spam. By default, the list contains only
+the spam mark.
@end defvar
When you leave @emph{any} group, regardless of its
spam. Best is to make sure that real spam is marked with @samp{$},
and nothing else.
+@vindex gnus-ham-process-destinations
When you leave a @emph{spam} group, all spam-marked articles are
marked as expired after processing with the spam processor. This is
not done for @emph{unclassified} or @emph{ham} groups. Also, any
names (it's easiest to customize this variable with
@code{customize-variable gnus-ham-process-destinations}). The ultimate
location is a group name. If the @code{ham-process-destination}
-parameter is not set, spam articles are only expired.
+parameter is not set, ham articles are left in place. If the
+@code{spam-mark-ham-unread-before-move-from-spam-group} parameter is
+set, the ham articles are marked as unread before being moved.
When you leave a @emph{ham} group, all ham-marked articles are sent to
a ham processor, which will study these as non-spam samples.
+@vindex gnus-spam-process-destinations
When you leave a @emph{ham} or @emph{unclassified} group, all
@strong{spam} articles are moved to a location determined by either
the @code{spam-process-destination} group parameter or a match in the
The @code{spam-split} function will process incoming mail and send the
mail considered to be spam into the group name given by the variable
@code{spam-split-group}. By default that group name is @samp{spam},
-but you can customize it.
+but you can customize @code{spam-split-group}.
+
+You can also give @code{spam-split} a parameter,
+e.g. @samp{'spam-use-regex-headers}. Why is this useful?
+
+Take these split rules (with @code{spam-use-regex-headers} and
+@code{spam-use-blackholes} set):
+
+@example
+ nnimap-split-fancy '(|
+ (any "ding" "ding")
+ (: spam-split)
+ ;; default mailbox
+ "mail")
+@end example
+
+Now, the problem is that you want all ding messages to make it to the
+ding folder. But that will let obvious spam (for example, spam
+detected by SpamAssassin, and @code{spam-use-regex-headers}) through,
+when it's sent to the ding list. On the other hand, some messages to
+the ding list are from a mail server in the blackhole list, so the
+invocation of @code{spam-split} can't be before the ding rule.
+
+You can let SpamAssassin headers supercede ding rules, but all other
+@code{spam-split} rules (including a second invocation of the
+regex-headers check) will be after the ding rule:
+
+@example
+ nnimap-split-fancy '(|
+ (: spam-split 'spam-use-regex-headers)
+ (any "ding" "ding")
+ (: spam-split)
+ ;; default mailbox
+ "mail")
+@end example
+
+Basically, this lets you invoke specific @code{spam-split} checks
+depending on your particular needs. You don't have to throw all mail
+into all the spam tests. Another reason why this is nice is that
+messages to mailing lists you have rules for don't have to have
+resource-intensive blackhole checks performed on them. You could also
+specify different spam checks for your nnmail split vs. your nnimap
+split. Go crazy.
+
+You still have to have specific checks such as
+@code{spam-use-regex-headers} set to t, even if you specifically
+invoke @code{spam-split} with the check. The reason is that when
+loading @code{spam.el}, some conditional loading is done depending on
+what @code{spam-use-xyz} variables you have set.
@emph{Note for IMAP users}
The boolean variable @code{nnimap-split-download-body} needs to be
set, if you want to split based on the whole message instead of just
-the headers. By default, the nnimap backend will only retrieve the
+the headers. By default, the nnimap back end will only retrieve the
message headers. If you use @code{spam-check-bogofilter},
@code{spam-check-ifile}, or @code{spam-check-stat} (the splitters that
can benefit from the full message body), you should set this variable.
-It is not set by default because it will slow @acronym{IMAP} down.
+It is not set by default because it will slow @acronym{IMAP} down, and
+that is not an appropriate decision to make on behalf of the user.
@xref{Splitting in IMAP}.
@emph{TODO: Currently, spam.el only supports insertion of articles
-into a backend. There is no way to tell spam.el that an article is no
+into a back end. There is no way to tell spam.el that an article is no
longer spam or ham.}
@emph{TODO: spam.el needs to provide a uniform way of training all the
@menu
* Blacklists and Whitelists::
* BBDB Whitelists::
+* Gmane Spam Reporting::
+* Anti-spam Hashcash Payments::
* Blackholes::
* Regular Expressions Header Matching::
* Bogofilter::
@end defvar
+@node Gmane Spam Reporting
+@subsubsection Gmane Spam Reporting
+@cindex spam reporting
+@cindex Gmane, spam reporting
+@cindex Gmane, spam reporting
+@cindex spam
+
+@defvar gnus-group-spam-exit-processor-report-gmane
+
+Add this symbol to a group's @code{spam-process} parameter by
+customizing the group parameters or the
+@code{gnus-spam-process-newsgroups} variable. When this symbol is
+added to a group's @code{spam-process} parameter, the spam-marked
+articles groups will be reported to the Gmane administrators.
+
+@end defvar
+
+@node Anti-spam Hashcash Payments
+@subsubsection Anti-spam Hashcash Payments
+@cindex spam filtering
+@cindex hashcash, spam filtering
+@cindex spam
+
+@defvar spam-use-hashcash
+
+Similar to @code{spam-use-whitelist} (@pxref{Blacklists and
+Whitelists}), but uses hashcash tokens for whitelisting messages
+instead of the sender address. You must have the @code{hashcash.el}
+package loaded for @code{spam-use-hashcash} to work properly.
+Messages without a hashcash payment token will be sent to the next
+spam-split rule. This is an explicit filter, meaning that unless a
+hashcash token is found, the messages are not assumed to be spam or
+ham.
+
+@end defvar
+
@node Blackholes
@subsubsection Blackholes
@cindex spam filtering
Typical test will involve calls to the following functions:
-@example
+@smallexample
Reset: (setq spam-stat (make-hash-table :test 'equal))
Learn spam: (spam-stat-process-spam-directory "~/Mail/mail/spam")
Learn non-spam: (spam-stat-process-non-spam-directory "~/Mail/mail/misc")
Number of words: (hash-table-count spam-stat)
Test spam: (spam-stat-test-directory "~/Mail/mail/spam")
Test non-spam: (spam-stat-test-directory "~/Mail/mail/misc")
-@end example
+@end smallexample
Here is how you would create your dictionary:
-@example
+@smallexample
Reset: (setq spam-stat (make-hash-table :test 'equal))
Learn spam: (spam-stat-process-spam-directory "~/Mail/mail/spam")
Learn non-spam: (spam-stat-process-non-spam-directory "~/Mail/mail/misc")
Repeat for any other non-spam group you need...
Reduce table size: (spam-stat-reduce-size)
Save table: (spam-stat-save)
-@end example
+@end smallexample
@node Various Various
@section Various Various
on your system (you OS/2 user you), you could say something like:
@lisp
+@group
(setq nnheader-file-name-translation-alist
'((?: . ?_)))
+@end group
@end lisp
In fact, this is the default value for this variable on OS/2 and MS
* Troubleshooting:: What you might try if things do not work.
* Gnus Reference Guide:: Rilly, rilly technical stuff.
* Emacs for Heathens:: A short introduction to Emacsian terms.
-* Frequently Asked Questions::
+* Frequently Asked Questions:: The Gnus FAQ
@end menu
@node XEmacs
@section XEmacs
@cindex XEmacs
-@cindex Installing under XEmacs
+@cindex installing under XEmacs
XEmacs is distributed as a collection of packages. You should install
whatever packages the Gnus XEmacs package requires. The current
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 @sc{semi}, which provides
+Japan. It's based on a library called @acronym{SEMI}, which provides
@acronym{MIME} capabilities.
These Gnusae are based mainly on Gnus 5.6 and Pterodactyl Gnus.
look into implementing the changes when the draft is accepted as an RFC.
@item MIME - RFC 2045-2049 etc
-@cindex MIME
+@cindex @acronym{MIME}
All the various @acronym{MIME} RFCs are supported.
@item Disposition Notifications - RFC 2298
@itemize @bullet
@item
-Emacs 20.3 and up.
+Emacs 20.7 and up.
@item
-XEmacs 20.4 and up.
+XEmacs 21.1 and up.
@end itemize
* Red Gnus:: Third time best---Gnus 5.4/5.5.
* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7.
* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9.
+* Oort Gnus:: It's big. It's far out. Gnus 5.10.
@end menu
These lists are, of course, just @emph{short} overviews of the
:suffix ".in")))
@end lisp
-More information is available in the info doc at Select Methods ->
-Getting Mail -> Mail Sources
+@xref{Mail Source Specifiers}.
@item
Gnus is now a @acronym{MIME}-capable reader. This affects many parts of
@end itemize
+@node Oort Gnus
+@subsubsection Oort Gnus
+@cindex Oort Gnus
+
+New features in Gnus 5.10:
+
+@itemize @bullet
+
+@item
+The revised Gnus @acronym{FAQ} is included in the manual,
+@xref{Frequently Asked Questions}.
+
+@item
+Upgrading from previous (stable) version if you have used Oort.
+
+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
+@file{.marks} (nnml) and @file{.mrk} (nnfolder) files, so that flags are
+read from your @file{.newsrc.eld} instead of from the
+@file{.marks}/@file{.mrk} file where this release store flags. See a
+later entry for more information about marks. Note that downgrading
+isn't save in general.
+
+@item
+Article Buttons
+
+More buttons for URLs, mail addresses, Message-IDs, Info links, man
+pages and Emacs or Gnus related references. @xref{Article Buttons}. The
+variables @code{gnus-button-@var{*}-level} can be used to control the
+appearance of all article buttons. @xref{Article Button Levels}.
+
+@item
+Dired integration
+
+@code{gnus-dired-minor-mode} installs key bindings in dired buffers to send
+a file as an attachment (@kbd{C-c C-a}), open a file using the approriate
+mailcap entry (@kbd{C-c C-l}), and print a file using the mailcap entry
+(@kbd{C-c P}). It is enabled with
+@lisp
+(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode)
+@end lisp
+
+@item
+Gnus can display RSS newsfeeds as a newsgroup. @xref{RSS}.
+
+@item
+Single-part yenc encoded attachments can be decoded.
+
+@item
+Picons
+
+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.
+@xref{Picons}.
+
+@item
+If the new option @code{gnus-treat-body-boundary} is non-@code{nil}, a
+boundary line is drawn at the end of the headers.
+
+@item
+Retrieval of charters and control messages
+
+There are new commands for fetching newsgroup charters (@kbd{H c}) and
+control messages (@kbd{H C}).
+
+@item
+Delayed articles
+
+You can delay the sending of a message with @kbd{C-c C-j} in the Message
+buffer. The messages are delivered at specified time. This is useful
+for sending yourself reminders. @xref{Delayed Articles}.
+
+@item
+If @code{auto-compression-mode} is enabled, attachments are automatically
+decompressed when activated.
+
+@item
+If the new option @code{nnml-use-compressed-files} is non-@code{nil},
+the nnml back end allows compressed message files.
+
+@item
+Signed article headers (X-PGP-Sig) can be verified with @kbd{W p}.
+
+@item
+The Summary Buffer uses an arrow in the fringe to indicate the current
+article. Use @code{(setq gnus-summary-display-arrow nil)} to disable it.
+
+@item
+Warn about email replies to news
+
+Do you often find yourself replying to news by email by mistake? Then
+the new option @code{gnus-confirm-mail-reply-to-news} is just the thing for
+you.
+
+@item
+If the new option @code{gnus-summary-display-while-building} is
+non-@code{nil}, the summary buffer is shown and updated as it's being
+built.
+
+@item
+The new @code{recent} mark @samp{.} indicates newly arrived messages (as
+opposed to old but unread messages).
+
+@item
+The new option @code{gnus-gcc-mark-as-read} automatically marks
+Gcc articles as read.
+
+@item
+The nndoc back end now supports mailman digests and exim bounces.
+
+@item
+Gnus supports RFC 2369 mailing list headers, and adds a number of
+related commands in mailing list groups. @xref{Mailing List}.
+
+@item
+The Date header can be displayed in a format that can be read aloud
+in English. @xref{Article Date}.
+
+@item
+The envelope sender address can be customized when using Sendmail.
+@xref{Mail Variables, Mail Variables,, message, Message Manual}.
+
+@item
+diffs are automatically highlighted in groups matching
+@code{mm-uu-diff-groups-regexp}
+
+@item
+@acronym{TLS} wrapper shipped with Gnus
+
+@acronym{TLS}/@acronym{SSL} is now supported in @acronym{IMAP} and
+@acronym{NNTP} via @file{tls.el} and GNUTLS. The old
+@acronym{TLS}/@acronym{SSL} support via (external third party)
+@file{ssl.el} and OpenSSL still works.
+
+@item
+New @file{make.bat} for compiling and installing Gnus under MS Windows
+
+Use @file{make.bat} if you want to install Gnus under MS Windows, the
+first argument to the batch-program should be the directory where
+@file{xemacs.exe} respectively @file{emacs.exe} is located, iff you want
+to install Gnus after compiling it, give @file{make.bat} @code{/copy} as
+the second parameter.
+
+@file{make.bat} has been rewritten from scratch, it now features
+automatic recognition of XEmacs and GNU Emacs, generates
+@file{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 @code{makeinfo} if it is available and falls
+back to @file{infohack.el} otherwise. @file{make.bat} should now
+install all files which are necessary to run Gnus and be generally a
+complete replacement for the @code{configure; make; make install}
+cycle used under Unix systems.
+
+The new @file{make.bat} makes @file{make-x.bat} superfluous, so it has
+been removed.
+
+@item
+Support for non-@acronym{ASCII} domain names
+
+Message supports non-@acronym{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 @code{message-use-idna} controls this.
+Gnus will also decode non-@acronym{ASCII} domain names in From:, To:
+and Cc: when you view a message. The variable @code{gnus-use-idna}
+controls this.
+
+@item
+Better handling of Microsoft citation styles
+
+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
+@code{gnus-cite-unsightly-citation-regexp} matches the start of these
+citations.
+
+@item
+@code{gnus-article-skip-boring}
+
+If you set @code{gnus-article-skip-boring} to @code{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 @code{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.
+
+@item
+The format spec @code{%C} for positioning point has changed to @code{%*}.
+
+@item
+The new variable @code{gnus-parameters} can be used to set group parameters.
+
+Earlier this was done only via @kbd{G p} (or @kbd{G c}), which stored
+the parameters in @file{~/.newsrc.eld}, but via this variable you can
+enjoy the powers of customize, and simplified backups since you set the
+variable in @file{~/.emacs} instead of @file{~/.newsrc.eld}. The
+variable maps regular expressions matching group names to group
+parameters, a'la:
+@lisp
+(setq gnus-parameters
+ '(("mail\\..*"
+ (gnus-show-threads nil)
+ (gnus-use-scoring nil))
+ ("^nnimap:\\(foo.bar\\)$"
+ (to-group . "\\1"))))
+@end lisp
+
+@item
+Smileys (@samp{:-)}, @samp{;-)} etc) are now iconized for Emacs too.
+
+Put @code{(setq gnus-treat-display-smileys nil)} in @file{~/.emacs} to
+disable it.
+
+@item
+Gnus no longer generate the Sender: header automatically.
+
+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 controversally) 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 @code{message-required-headers},
+@code{message-required-news-headers}, and
+@code{message-required-mail-headers}.
+
+@item
+Features from third party @file{message-utils.el} added to @file{message.el}.
+
+Message now asks if you wish to remove @samp{(was: <old subject>)} from
+subject lines (see @code{message-subject-trailing-was-query}). @kbd{C-c
+M-m} and @kbd{C-c M-f} inserts markers indicating included text.
+@kbd{C-c C-f a} adds a X-No-Archive: header. @kbd{C-c C-f x} inserts
+appropriate headers and a note in the body for cross-postings and
+followups (see the variables @code{message-cross-post-@var{*}}).
+
+@item
+References and X-Draft-Headers are no longer generated when you start
+composing messages and @code{message-generate-headers-first} is
+@code{nil}.
+
+@item
+Improved anti-spam features.
+
+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. @xref{Thwarting Email Spam}.
+
+@item
+Easy inclusion of X-Faces headers.
+
+@item
+In the summary buffer, the new command @kbd{/ N} inserts new messages
+and @kbd{/ o} inserts old messages.
+
+@item
+Gnus decodes morse encoded messages if you press @kbd{W m}.
+
+@item
+Unread count correct in nnimap groups.
+
+The estimated number of unread articles in the group buffer should now
+be correct for nnimap groups. This is achieved by calling
+@code{nnimap-fixup-unread-after-getting-new-news} from the
+@code{gnus-setup-news-hook} (called on startup) and
+@code{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 @code{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.
+
+@item
+Group Carbon Copy (GCC) quoting
+
+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 @code{gnus-message-archive-group} should no longer
+contain quote characters to make groups containing SPC work. Also, if
+you are using the string @samp{nnml:foo, nnml:bar} (indicating Gcc
+into two groups) you must change it to return the list
+@code{("nnml:foo" "nnml:bar")}, otherwise the Gcc: line will be quoted
+incorrectly. Note that returning the string @samp{nnml:foo, nnml:bar}
+was incorrect earlier, it just didn't generate any problems since it
+was inserted directly.
+
+@item
+@file{~/News/overview/} not used.
+
+As a result of the following change, the @file{~/News/overview/}
+directory is not used any more. You can safely delete the entire
+hierarchy.
+
+@item
+@code{gnus-agent}
+
+The Gnus Agent has seen a major updated and is now enabled by default,
+and all nntp and nnimap servers from @code{gnus-select-method} and
+@code{gnus-secondary-select-method} are agentized by default. Earlier
+only the server in @code{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 @kbd{J a} and
+@kbd{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
+@kbd{J u} or @kbd{J s} from the Group buffer. You revert to the old
+behaviour of having the Agent disabled with @code{(setq gnus-agent
+nil)}. Note that putting @code{(gnus-agentize)} in @file{~/.gnus.el}
+is not needed any more.
+
+@item
+@code{gnus-summary-line-format}
+
+The default value changed to @samp{%U%R%z%I%(%[%4L: %-23,23f%]%)
+%s\n}. Moreover @code{gnus-extra-headers},
+@code{nnmail-extra-headers} and @code{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 @acronym{NNTP}
+groups.
+
+@item
+@file{deuglify.el} (@code{gnus-article-outlook-deuglify-article})
+
+A new file from Raymond Scholz @email{rscholz@@zonix.de} for deuglifying
+broken Outlook (Express) articles.
+
+@item
+@code{(require 'gnus-load)}
+
+If you use a stand-alone Gnus distribution, you'd better add
+@code{(require 'gnus-load)} into your @file{~/.emacs} after adding the Gnus
+lisp directory into load-path.
+
+File @file{gnus-load.el} contains autoload commands, functions and variables,
+some of which may not be included in distributions of Emacsen.
+
+@item
+@code{gnus-slave-unplugged}
+
+A new command which starts Gnus offline in slave mode.
+
+@item
+@code{message-insinuate-rmail}
+
+Adding @code{(message-insinuate-rmail)} and @code{(setq
+mail-user-agent 'gnus-user-agent)} in @file{.emacs} convinces Rmail to
+compose, reply and forward messages in message-mode, where you can
+enjoy the power of @acronym{MML}.
+
+@item
+@code{message-minibuffer-local-map}
+
+The line below enables BBDB in resending a message:
+@lisp
+(define-key message-minibuffer-local-map [(tab)]
+ 'bbdb-complete-name)
+@end lisp
+
+@item
+Externalizing and deleting of attachments.
+
+If @code{gnus-gcc-externalize-attachments} or
+@code{message-fcc-externalize-attachments} is non-@code{nil}, attach
+local files as external parts.
+
+The command @code{gnus-mime-save-part-and-strip} (bound to @kbd{C-o}
+on @acronym{MIME} buttons) saves a part and replaces the part with an
+external one. @code{gnus-mime-delete-part} (bound to @kbd{d} on
+@acronym{MIME} buttons) removes a part. It works only on back ends
+that support editing.
+
+@item
+@code{gnus-default-charset}
+
+The default value is determined from the
+@code{current-language-environment} variable, instead of
+@code{iso-8859-1}. Also the @samp{.*} item in
+@code{gnus-group-charset-alist} is removed.
+
+@item
+@code{gnus-posting-styles}
+
+Add a new format of match like
+@lisp
+((header "to" "larsi.*org")
+ (Organization "Somewhere, Inc."))
+@end lisp
+The old format like the lines below is obsolete, but still accepted.
+@lisp
+(header "to" "larsi.*org"
+ (Organization "Somewhere, Inc."))
+@end lisp
+
+@item
+@code{message-ignored-news-headers} and @code{message-ignored-mail-headers}
+
+@samp{X-Draft-From} and @samp{X-Gnus-Agent-Meta-Information} have been
+added into these two variables. If you customized those, perhaps you
+need add those two headers too.
+
+@item
+Gnus reads the @acronym{NOV} and articles in the Agent if plugged.
+
+If one reads an article while plugged, and the article already exists
+in the Agent, it won't get downloaded once more. @code{(setq
+gnus-agent-cache nil)} reverts to the old behavior.
+
+@item
+Gnus supports the ``format=flowed'' (RFC 2646) parameter. On
+composing messages, it is enabled by @code{use-hard-newlines}.
+Decoding format=flowed was present but not documented in earlier
+versions.
+
+@item
+Gnus supports the generation of RFC 2298 Disposition Notification requests.
+
+This is invoked with the @kbd{C-c M-n} key binding from message mode.
+
+@item
+Gnus supports Maildir groups.
+
+Gnus includes a new back end @file{nnmaildir.el}. @xref{Maildir}.
+
+@item
+Printing capabilities are enhanced.
+
+Gnus supports Muttprint natively with @kbd{O P} from the Summary and
+Article buffers. Also, each individual @acronym{MIME} part can be
+printed using @kbd{p} on the @acronym{MIME} button.
+
+@item
+Message supports the Importance: (RFC 2156) header.
+
+In the message buffer, @kbd{C-c C-f C-i} or @kbd{C-c C-u} cycles through
+the valid values.
+
+@item
+Gnus supports Cancel Locks in News.
+
+This means a header @samp{Cancel-Lock} is inserted in news posting. It is
+used to determine if you wrote a article or not (for cancelling and
+superseding). Gnus generates a random password string the first time
+you post a message, and saves it in your @file{~/.emacs} using the Custom
+system. While the variable is called @code{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 behaviour can be changed by customizing @code{message-insert-canlock}.
+
+@item
+Gnus supports server-side mail filtering using Sieve.
+
+Sieve rules can be added as Group Parameters for groups, and the
+complete Sieve script is generated using @kbd{D g} from the Group
+buffer, and then uploaded to the server using @kbd{C-c C-l} in the
+generated Sieve buffer. @xref{Sieve Commands}, and the new Sieve
+manual @ref{Top, , Top, sieve, Emacs Sieve}.
+
+@item
+Extended format specs.
+
+Format spec @samp{%&user-date;} is added into
+@code{gnus-summary-line-format-alist}. Also, user defined extended
+format specs are supported. The extended format specs look like
+@samp{%u&foo;}, which invokes function
+@code{gnus-user-format-function-@var{foo}}. Because @samp{&} is used as the
+escape character, old user defined format @samp{%u&} is no longer supported.
+
+@item
+@kbd{/ *} (@code{gnus-summary-limit-include-cached}) is rewritten.
+
+It was aliased to @kbd{Y c}
+(@code{gnus-summary-insert-cached-articles}). The new function filters
+out other articles.
+
+@item Some limiting commands accept a @kbd{C-u} prefix to negate the match.
+
+If @kbd{C-u} is used on subject, author or extra headers, i.e., @kbd{/
+s'}, @kbd{/ a}, and @kbd{/ x}
+(@code{gnus-summary-limit-to-@{subject,author,extra@}}) respectively, the
+result will be to display all articles that do not match the expression.
+
+@item
+Group names are treated as UTF-8 by default.
+
+This is supposedly what USEFOR wanted to migrate to. See
+@code{gnus-group-name-charset-group-alist} and
+@code{gnus-group-name-charset-method-alist} for customization.
+
+@item
+The nnml and nnfolder backends store marks for each groups.
+
+This makes it possible to take backup of nnml/nnfolder servers/groups
+separately of @file{~/.newsrc.eld}, while preserving marks. It also
+makes it possible to share articles and marks between users (without
+sharing the @file{~/.newsrc.eld} file) within e.g. a department. It
+works by storing the marks stored in @file{~/.newsrc.eld} in a per-group
+file @file{.marks} (for nnml) and @file{@var{groupname}.mrk} (for
+nnfolder, named @var{groupname}). If the nnml/nnfolder is moved to
+another machine, Gnus will automatically use the @file{.marks} or
+@file{.mrk} file instead of the information in @file{~/.newsrc.eld}.
+The new server variables @code{nnml-marks-is-evil} and
+@code{nnfolder-marks-is-evil} can be used to disable this feature.
+
+@item
+The menu bar item (in Group and Summary buffer) named ``Misc'' has
+been renamed to ``Gnus''.
+
+@item
+The menu bar item (in Message mode) named ``@acronym{MML}'' has been
+renamed to ``Attachments''. Note that this menu also contains security
+related stuff, like signing and encryption (@pxref{Security, Security,,
+message, Message Manual}).
+
+@item
+@code{gnus-group-charset-alist} and
+@code{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:
+@lisp
+("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr)
+@end lisp
+
+@item
+Gnus supports @acronym{PGP} (RFC 1991/2440), @acronym{PGP/MIME} (RFC
+2015/3156) and @acronym{S/MIME} (RFC 2630-2633).
+
+It needs an external @acronym{S/MIME} and OpenPGP implementation, but no
+additional Lisp libraries. This add several menu items to the
+Attachments menu, and @kbd{C-c RET} key bindings, when composing
+messages. This also obsoletes @code{gnus-article-hide-pgp-hook}.
+
+@item
+Gnus inlines external parts (message/external).
+
+@item
+@acronym{MML} (Mime compose) prefix changed from @kbd{M-m} to @kbd{C-c
+C-m}.
+
+This change was made to avoid conflict with the standard binding of
+@code{back-to-indentation}, which is also useful in message mode.
+@end itemize
+
@iftex
@page
collection of @acronym{NOV} lines.
@item @acronym{NOV}
-@cindex nov
+@cindex @acronym{NOV}
When Gnus enters a group, it asks the back end 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
@cindex edebug
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
+edebug. Debugging Lisp code is documented in the Elisp manual
(@pxref{Debugging, , Debugging Lisp Programs, elisp, The GNU Emacs
Lisp Reference Manual}). To get you started with edebug, consider if
you discover some weird behaviour when pressing @kbd{c}, the first
manifests itself by causing Gnus to be very slow. In these cases, you
can use @kbd{M-x toggle-debug-on-quit} and press @kbd{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. @kbd{M-x elp-instrument-package RET
-gnus} or @kbd{M-x elp-instrument-package RET message}. Then perform
-the operation that is slow and press @kbd{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 @kbd{M-x
-elp-reset-all}. @kbd{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
-@samp{gnu.emacs.gnus}. I'm not very helpful.
+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. @kbd{M-x
+elp-instrument-package RET gnus} or @kbd{M-x elp-instrument-package
+RET message}. Then perform the operation that is slow and press
+@kbd{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 @kbd{M-x elp-reset-all}. @kbd{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.
@cindex gnu.emacs.gnus
@cindex ding mailing list
-You can also ask on the ding mailing list---@email{ding@@gnus.org}.
-Write to @email{ding-request@@gnus.org} to subscribe.
+If you just need help, you are better off asking on
+@samp{gnu.emacs.gnus}. I'm not very helpful. You can also ask on
+@email{ding@@gnus.org, the ding mailing list}. Write to
+@email{ding-request@@gnus.org} to subscribe.
@page
@findex gnus-group-foreign-p
Says whether @var{group} is foreign or not.
-@item group-group-find-parameter
-@findex group-group-find-parameter
+@item gnus-group-find-parameter
+@findex gnus-group-find-parameter
Returns the parameter list of @var{group}. If given a second parameter,
returns the value of that parameter for @var{group}.
@c mode: texinfo
@c coding: iso-8859-1
@c End:
-% LocalWords: BNF mucho detailmenu cindex kindex kbd
-% LocalWords: findex Gnusae vindex dfn dfn samp nntp setq nnspool nntpserver
-% LocalWords: nnmbox newusers Blllrph NEWGROUPS dingnusdingnusdingnus
-% LocalWords: pre fab rec comp nnslashdot regex ga ga sci nnml nnbabyl nnmh
-% LocalWords: nnfolder emph looong eld newsreaders defun init elc pxref
"summarycontents" "bye"
"top" "iftex" "cartouche"
"iflatex" "finalout" "vskip"
- "dircategory"))
+ "dircategory" "group" "syncodeindex"))
(latexi-strip-line))
((member command '("menu" "tex" "ifinfo" "ignore"
"ifnottex" "direntry"))
(if as-a-chapter
(latexi-switch-line "subsubsection*" arg)
(latexi-switch-line "subsection*" arg)))
+ ((member command '("subsubheading"))
+ (if as-a-chapter
+ (latexi-switch-line "subsubsubsection*" arg)
+ (latexi-switch-line "subsubsection*" arg)))
((member command '("chapter"))
(if (string-match "Index" arg)
(latexi-strip-line)
)
((member command '("titlepage"))
(latexi-begin-command command))
- ((member command '("lisp" "example"))
+ ((member command '("lisp" "example" "smallexample" "display"))
(latexi-strip-line)
(insert (format "\\begin{verbatim}\n"))
(setq verbatim (point)))
((equal arg "quotation")
(latexi-strip-line)
(insert (format "\\end{verse}\n")))
- ((member arg '("lisp" "example"))
+ ((member arg '("lisp" "example" "smallexample" "display"))
(latexi-strip-line)
(save-excursion
(save-restriction
(setq item-string (pop item-stack))
(latexi-strip-line)
(insert (format "\\end{%s}\n" arg)))
- ((member arg '("iflatex" "iftex" "cartouche"))
+ ((member arg '("iflatex" "iftex" "cartouche" "group"))
(latexi-strip-line))
((member arg '("deffn" "defvar" "defun"))
(latexi-strip-line))