From: yamaoka Date: Sat, 3 May 2003 11:32:48 +0000 (+0000) Subject: Import Oort Gnus v0.24. X-Git-Tag: ognus-0_24~1 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9ea9abe9f6b53f086a6f28239e5a995b9810c795;p=elisp%2Fgnus.git- Import Oort Gnus v0.24. --- diff --git a/ChangeLog b/ChangeLog index 08c671c..847593c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,30 @@ +2003-05-01 Jesper Harder + + * etc/gnus-tut.txt (http): Update. + +2003-05-01 Simon Josefsson + + * GNUS-NEWS: Add prefix limit feature. + +2003-04-30 Reiner Steib + + * 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 + + * GNUS-NEWS: Additions. + +2003-04-28 Reiner Steib + + * GNUS-NEWS: Fixed X-Draft-Headers entry. + +2003-04-27 Simon Josefsson + + * GNUS-NEWS: Fix PGP entry. Doc GCC variable change. + 2003-04-22 Reiner Steib * make.bat: Flag as binary to ensure DOS line terminators. Delete diff --git a/GNUS-NEWS b/GNUS-NEWS index e6cff79..79b7cf7 100644 --- a/GNUS-NEWS +++ b/GNUS-NEWS @@ -8,6 +8,102 @@ For older news, see Gnus info node "New Features". * 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 @@ -101,7 +197,7 @@ note in the body for cross-postings and followups (see the variables `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. @@ -192,7 +288,7 @@ A new command which starts gnus offline in slave mode. ** message-insinuate-rmail Adding (message-insinuate-rmail) and (setq mail-user-agent -'gnus-user-agent) in .emacs convinces RMAIL to compose, reply and +'gnus-user-agent) in .emacs convinces Rmail to compose, reply and forward messages in message-mode, where you can enjoy the power of MML. @@ -202,15 +298,16 @@ The line below enables BBDB in resending a message: (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 @@ -263,7 +360,8 @@ the MIME button. ** 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. @@ -298,6 +396,13 @@ longer supported. 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 @@ -307,13 +412,13 @@ 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. @@ -321,7 +426,8 @@ The new server variables `nnml-marks-is-evil' and 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. @@ -333,8 +439,10 @@ variables should change those regexps accordingly. For example: ** 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). diff --git a/contrib/ChangeLog b/contrib/ChangeLog index d18affe..e290ca9 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,8 @@ +2003-05-01 Vasily Korytov + + * gpg.el (gpg-passphrase-forget): Check that gpg-passphrase is + set. + 2003-04-17 Steve Youngs * hashcash.el (hashcash-point-at-bol): Move the fbound test diff --git a/contrib/gpg.el b/contrib/gpg.el index 1e5470f..31afab4 100644 --- a/contrib/gpg.el +++ b/contrib/gpg.el @@ -7,7 +7,7 @@ ;; 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. @@ -800,10 +800,11 @@ evaluates BODY, like `progn'. If BODY evaluates to `nil' (or (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. diff --git a/etc/gnus-tut.txt b/etc/gnus-tut.txt index 3e179e7..7eecfcd 100644 --- a/etc/gnus-tut.txt +++ b/etc/gnus-tut.txt @@ -195,7 +195,7 @@ which are both faster and more accurated. 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 @@ -569,7 +569,7 @@ Frequently Asked Questions with Answers 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? diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c711426..e979c6b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,271 @@ +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.24 is released. + +2003-05-01 Lars Magne Ingebrigtsen + + * dgnushack.el (when): Check whether defadvice is fbound. + +2003-05-01 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-unregistered-group-regex): new variable + (gnus-registry-register-message-ids): use it + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + + * gnus.el: Update copyright for several files. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.23 is released. + +2003-05-01 Lars Magne Ingebrigtsen + + * spam-stat.el (spam-stat-test-directory): Compare against zero. + +2003-05-01 Trey Jackson (tiny change) + + * spam-stat.el (spam-stat-test-directory): Skip 0 length files. + +2003-05-01 Lars Magne Ingebrigtsen + + * message.el (message-forward-subject-name-subject): Decode + string when forwarding. + +2003-05-01 Oystein Viggen + + * dgnushack.el (when): Add defadvice. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.22 is released. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.21 is released. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.20 is released. + +2003-05-01 Vasily Korytov + + * gnus-dired.el (gnus-dired-mode-map): Move to C-c C-l. + +2003-04-30 Mark A. Hershberger + + * 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 + + * 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 + + * nnrss.el (nnrss-find-rss-via-syndic8): Have an `error' branch + in condition-case. + +2003-05-01 Lars Magne Ingebrigtsen + + * message.el (message-required-headers): Remove In-Reply-To. + + * gnus-int.el (gnus-open-server): Revert changes. + +2003-04-30 Kai Gro,A_(Bjohann + + * gnus-int.el (gnus-open-server): Try to open unagentized servers + even when unplugged. + +2003-04-30 Reiner Steib + + * gnus-art.el (gnus-button-prefer-mid-or-mail): Fixed typo in + doc-string. + +2003-05-01 Steve Youngs + + * 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 + + * 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,A_(Bjohann + + * 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 + + * mm-util.el (mm-charset-to-coding-system): Use user specified + charset unless coding-system-get is fboundp. + +2003-04-30 Kevin Greiner + + * 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 + + * lpath.el: Fbind string-to-multibyte. + +2003-04-30 Steve Youngs + + * dgnushack.el: Add some missing autoloads for XEmacs 21.1. + +2003-04-29 Teodor Zlatanov + + * 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 + + * gnus-art.el (gnus-button-alist): Fixed CTAN regexp. + +2003-04-29 Teodor Zlatanov + + * spam-report.el (spam-report-gmane): gnus-summary-article-number + is not necessary, just use the function parameter + +2003-04-29 Karl Pflysterer + + * spam-stat.el (spam-stat-save): No longer font-locks the file + when saving + +2003-04-29 Katsumi Yamaoka + + * canlock.el: Bind mail-header-separator when compiling (XEmacs + provides it in mail-lib/auto-autoloads.el). + +2003-04-29 Simon Josefsson + + * 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 + + * gnus-sum.el (gnus-summary-display-while-building): Docstring fix. + + * mm-url.el (mm-url-use-external): do. + +2003-04-29 Simon Josefsson + + * 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 + + * 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 + + * 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 + + * Makefile.in (FLAGS): Use @FLAGS@. + +2003-04-27 Reiner Steib + + * 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 + + * dgnushack.el (dgnushack-compile-verbosely): New function. Not + currently called (See source for explanation). + +2003-04-27 Lars Magne Ingebrigtsen + + * 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 * gnus.el: Oort Gnus v0.19 is released. @@ -56,6 +324,10 @@ 2003-04-24 Dave Love + * 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. diff --git a/lisp/Makefile.in b/lisp/Makefile.in index 9db33b1..38099cb 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -6,7 +6,7 @@ subdir = lisp 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 diff --git a/lisp/canlock.el b/lisp/canlock.el index b52afed..ee97fd3 100644 --- a/lisp/canlock.el +++ b/lisp/canlock.el @@ -1,6 +1,6 @@ ;;; 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 ;; Keywords: news, cancel-lock, hmac, sha1, rfc2104 @@ -45,6 +45,8 @@ (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." diff --git a/lisp/dgnushack.el b/lisp/dgnushack.el index cb40ab9..327b02c 100644 --- a/lisp/dgnushack.el +++ b/lisp/dgnushack.el @@ -1,5 +1,5 @@ ;;; 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 @@ -127,6 +127,13 @@ (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") @@ -174,6 +181,13 @@ (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 diff --git a/lisp/dns.el b/lisp/dns.el index 7137ef7..f23e87a 100644 --- a/lisp/dns.el +++ b/lisp/dns.el @@ -25,6 +25,8 @@ ;;; Code: +(eval-when-compile (require 'cl)) + (require 'mm-util) (defvar dns-timeout 5 @@ -280,11 +282,14 @@ If TCP-P, the first two bytes of the package with be the length field." ;;; 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)) diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el index 5b3f965..d8591d9 100644 --- a/lisp/gnus-agent.el +++ b/lisp/gnus-agent.el @@ -284,36 +284,36 @@ node `(gnus)Server Buffer'.") (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) @@ -434,7 +434,8 @@ manipulated as follows: 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. @@ -608,14 +609,18 @@ minor mode in all Gnus buffers." 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 @@ -916,28 +921,28 @@ article's mark is toggled." (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)))))) @@ -1327,7 +1332,7 @@ This can be added to `gnus-select-article-hook' or (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 "")) @@ -1361,7 +1366,7 @@ This can be added to `gnus-select-article-hook' or (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 @@ -1429,7 +1434,7 @@ and that there are no duplicates." (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)) @@ -1437,7 +1442,7 @@ and that there are no duplicates." (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 @@ -1808,7 +1813,7 @@ FILE and places the combined headers into `nntp-server-buffer'." (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")))) @@ -2952,7 +2957,7 @@ articles in every agentized group.")) (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))) @@ -2980,14 +2985,14 @@ has been fetched." (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)) @@ -3208,7 +3213,7 @@ If REREAD is not nil, downloaded articles are marked as unread." (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\ @@ -3254,12 +3259,12 @@ If REREAD is not nil, downloaded articles are marked as unread." (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 @@ -3283,15 +3288,15 @@ If REREAD is not nil, downloaded articles are marked as unread." (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)) @@ -3443,7 +3448,7 @@ If CLEAN, don't read existing active files." (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 diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index b6b592c..2ebebb6 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -3226,9 +3226,17 @@ The directory to save in defaults to `gnus-article-save-directory'." (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)) @@ -4510,9 +4518,28 @@ If no internal viewer is available, use an external viewer." (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 @@ -4884,14 +4911,31 @@ If given a numerical ARG, move forward ARG pages." (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. @@ -5643,7 +5687,7 @@ It should match all directories in the top level of `gnus-ctan-url'." "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'." @@ -5951,7 +5995,9 @@ positives are possible." ("\\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 @@ -5991,9 +6037,9 @@ positives are possible." 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) diff --git a/lisp/gnus-delay.el b/lisp/gnus-delay.el index 4024a00..cc212fa 100644 --- a/lisp/gnus-delay.el +++ b/lisp/gnus-delay.el @@ -134,10 +134,7 @@ DELAY is a string, giving the length of the time. Possible values are: (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) diff --git a/lisp/gnus-demon.el b/lisp/gnus-demon.el index 2c73b37..3d943b6 100644 --- a/lisp/gnus-demon.el +++ b/lisp/gnus-demon.el @@ -1,6 +1,6 @@ ;;; 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 diff --git a/lisp/gnus-diary.el b/lisp/gnus-diary.el index c57c0f6..faf12a6 100644 --- a/lisp/gnus-diary.el +++ b/lisp/gnus-diary.el @@ -1,6 +1,6 @@ ;;; 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 diff --git a/lisp/gnus-dired.el b/lisp/gnus-dired.el index 22104f6..cf54427 100644 --- a/lisp/gnus-dired.el +++ b/lisp/gnus-dired.el @@ -1,6 +1,6 @@ ;;; 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 , @@ -59,9 +59,8 @@ (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. diff --git a/lisp/gnus-gl.el b/lisp/gnus-gl.el index 1df6838..08ce4d4 100644 --- a/lisp/gnus-gl.el +++ b/lisp/gnus-gl.el @@ -1,6 +1,6 @@ ;;; 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 diff --git a/lisp/gnus-kill.el b/lisp/gnus-kill.el index b7329bd..cf95f9f 100644 --- a/lisp/gnus-kill.el +++ b/lisp/gnus-kill.el @@ -1,5 +1,5 @@ ;;; 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 diff --git a/lisp/gnus-registry.el b/lisp/gnus-registry.el index 9d16500..324155d 100644 --- a/lisp/gnus-registry.el +++ b/lisp/gnus-registry.el @@ -41,7 +41,7 @@ "*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. @@ -49,6 +49,11 @@ The group names are matched, they don't have to be fully qualified." :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) @@ -57,14 +62,10 @@ The group names are matched, they don't have to be fully qualified." (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." @@ -90,30 +91,32 @@ The group names are matched, they don't have to be fully qualified." (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 @@ -145,27 +148,77 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." 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." @@ -183,6 +236,8 @@ Returns the first place where the trail finds a spool action." (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) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index b95fdfe..56f6188 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -9001,7 +9001,7 @@ If nil, use to the current newsgroup method." :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 @@ -10009,12 +10009,13 @@ The difference between N and the number of marks cleared is returned." (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'." @@ -10155,9 +10156,9 @@ The number of articles marked as read is returned." (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) diff --git a/lisp/gnus-undo.el b/lisp/gnus-undo.el index cbd506a..f022926 100644 --- a/lisp/gnus-undo.el +++ b/lisp/gnus-undo.el @@ -1,6 +1,6 @@ ;;; 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 diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index f2d399d..23c418e 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -36,7 +36,6 @@ (require 'cl) ;; Fixme: this should be a gnus variable, not nnmail-. (defvar nnmail-pathname-coding-system)) -(require 'nnheader) (require 'time-date) (require 'netrc) @@ -45,7 +44,9 @@ (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 @@ -233,7 +234,6 @@ (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)) @@ -1173,12 +1173,13 @@ If you find some problem with the directory separator character, try (+ 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) @@ -1223,12 +1224,22 @@ SPEC is a predicate specifier that contains stuff like `or', `and', (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 ": ")) diff --git a/lisp/gnus-uu.el b/lisp/gnus-uu.el index 69e9abd..0129ef0 100644 --- a/lisp/gnus-uu.el +++ b/lisp/gnus-uu.el @@ -1,6 +1,6 @@ ;;; 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 ;; Created: 2 Oct 1993 diff --git a/lisp/gnus-xmas.el b/lisp/gnus-xmas.el index 1806ceb..9225a5a 100644 --- a/lisp/gnus-xmas.el +++ b/lisp/gnus-xmas.el @@ -875,6 +875,16 @@ Warning: Don't insert text immediately after the image." 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 diff --git a/lisp/gnus.el b/lisp/gnus.el index 59d0c08..4a3ec87 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -286,7 +286,7 @@ is restarted, and sometimes reloaded." :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) diff --git a/lisp/ietf-drums.el b/lisp/ietf-drums.el index 4725651..aa48c3a 100644 --- a/lisp/ietf-drums.el +++ b/lisp/ietf-drums.el @@ -1,5 +1,5 @@ ;;; 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 diff --git a/lisp/lpath.el b/lisp/lpath.el index 97f9e2b..50f0ec4 100644 --- a/lisp/lpath.el +++ b/lisp/lpath.el @@ -17,7 +17,7 @@ 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)) @@ -71,6 +71,12 @@ 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) ) diff --git a/lisp/message.el b/lisp/message.el index 9924662..af5aed1 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -194,7 +194,7 @@ Checks include `subject-cmsg', `multiple-headers', `sendsys', :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'." @@ -4008,7 +4008,7 @@ Otherwise, generate and save a value for `canlock-password' first." 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 ", ")))) @@ -5858,7 +5858,9 @@ news, Source is the list of newsgroups is was posted to." (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 diff --git a/lisp/mm-extern.el b/lisp/mm-extern.el index 4a2b25c..0103050 100644 --- a/lisp/mm-extern.el +++ b/lisp/mm-extern.el @@ -1,5 +1,5 @@ ;;; 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 ;; Keywords: message external-body diff --git a/lisp/mm-url.el b/lisp/mm-url.el index c93c14d..5fb925e 100644 --- a/lisp/mm-url.el +++ b/lisp/mm-url.el @@ -37,6 +37,9 @@ (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) @@ -45,7 +48,7 @@ (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) @@ -276,6 +279,9 @@ This is taken from RFC 2396.") (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) diff --git a/lisp/mm-util.el b/lisp/mm-util.el index 9f579b3..c50c3b5 100644 --- a/lisp/mm-util.el +++ b/lisp/mm-util.el @@ -341,7 +341,8 @@ used as the line break code type of the coding system." ((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) diff --git a/lisp/mm-view.el b/lisp/mm-view.el index 05c4df8..9de2f94 100644 --- a/lisp/mm-view.el +++ b/lisp/mm-view.el @@ -1,5 +1,5 @@ ;;; 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 ;; This file is part of GNU Emacs. @@ -558,6 +558,8 @@ map."))) (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)) @@ -568,7 +570,7 @@ map."))) (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) ") ") "")) diff --git a/lisp/mml.el b/lisp/mml.el index 94f3712..77f49eb 100644 --- a/lisp/mml.el +++ b/lisp/mml.el @@ -541,8 +541,9 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." 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))))) diff --git a/lisp/mml2015.el b/lisp/mml2015.el index 60c9e94..e3e3c5a 100644 --- a/lisp/mml2015.el +++ b/lisp/mml2015.el @@ -807,7 +807,7 @@ (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) diff --git a/lisp/nndb.el b/lisp/nndb.el index 1a269f5..02152b0 100644 --- a/lisp/nndb.el +++ b/lisp/nndb.el @@ -1,6 +1,6 @@ ;;; 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 ;; Kai Grossjohann diff --git a/lisp/nndiary.el b/lisp/nndiary.el index cec8ee4..42cb838 100644 --- a/lisp/nndiary.el +++ b/lisp/nndiary.el @@ -1,6 +1,6 @@ ;;; 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 diff --git a/lisp/nndoc.el b/lisp/nndoc.el index 5688c92..00d799e 100644 --- a/lisp/nndoc.el +++ b/lisp/nndoc.el @@ -1,5 +1,5 @@ ;;; 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 diff --git a/lisp/nnkiboze.el b/lisp/nnkiboze.el index c6e3ed3..fc0ff51 100644 --- a/lisp/nnkiboze.el +++ b/lisp/nnkiboze.el @@ -1,6 +1,6 @@ ;;; 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 diff --git a/lisp/nnmbox.el b/lisp/nnmbox.el index e33843c..9b35048 100644 --- a/lisp/nnmbox.el +++ b/lisp/nnmbox.el @@ -1,6 +1,6 @@ ;;; 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 diff --git a/lisp/nnmh.el b/lisp/nnmh.el index 0832ae2..ee2dd79 100644 --- a/lisp/nnmh.el +++ b/lisp/nnmh.el @@ -1,6 +1,6 @@ ;;; 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 diff --git a/lisp/nnml.el b/lisp/nnml.el index e5dbd10..822ffd4 100644 --- a/lisp/nnml.el +++ b/lisp/nnml.el @@ -1,5 +1,5 @@ ;;; 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 (adding MARKS) diff --git a/lisp/nnrss.el b/lisp/nnrss.el index 9d8c90c..fa6232c 100644 --- a/lisp/nnrss.el +++ b/lisp/nnrss.el @@ -142,6 +142,7 @@ ARTICLE is the article number of the current headline.") (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 @@ -149,7 +150,7 @@ ARTICLE is the article number of the current headline.") (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) @@ -160,17 +161,32 @@ ARTICLE is the article number of the current headline.") (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 "

link

\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 "\n" text "\n") + (goto-char point) + (while (re-search-forward "\n" nil t) + (replace-match " ")) + (goto-char (point-max)) + (insert "\n\n"))) + (if link + (insert "

link

\n")))) (if nnrss-content-function (funcall nnrss-content-function e group article))))) (cond @@ -413,9 +429,11 @@ ARTICLE is the article number of the current headline.") (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)) @@ -519,7 +537,7 @@ It is useful when `(setq nnrss-use-local t)'." (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))) @@ -666,7 +684,7 @@ whether they are `offsite' or `onsite'." (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" @@ -707,7 +725,7 @@ whether they are `offsite' or `onsite'." "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 diff --git a/lisp/nnwarchive.el b/lisp/nnwarchive.el index 8802594..f20e5ac 100644 --- a/lisp/nnwarchive.el +++ b/lisp/nnwarchive.el @@ -1,5 +1,5 @@ ;;; 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 ;; Keywords: news egroups mail-archive diff --git a/lisp/pgg.el b/lisp/pgg.el index cce3c09..82a3805 100644 --- a/lisp/pgg.el +++ b/lisp/pgg.el @@ -29,6 +29,7 @@ (require 'pgg-def) (require 'pgg-parse) +(autoload 'run-at-time "timer") ;; Don't merge these two `eval-when-compile's. (eval-when-compile diff --git a/lisp/qp.el b/lisp/qp.el index 62d7562..149d30a 100644 --- a/lisp/qp.el +++ b/lisp/qp.el @@ -1,6 +1,6 @@ ;;; 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 ;; Keywords: mail, extensions diff --git a/lisp/rfc2047.el b/lisp/rfc2047.el index 924f7ab..df1fc9b 100644 --- a/lisp/rfc2047.el +++ b/lisp/rfc2047.el @@ -1,5 +1,5 @@ ;;; 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 ;; MORIOKA Tomohiko diff --git a/lisp/rfc2231.el b/lisp/rfc2231.el index 5aaa631..9240163 100644 --- a/lisp/rfc2231.el +++ b/lisp/rfc2231.el @@ -1,6 +1,6 @@ ;;; 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 ;; This file is part of GNU Emacs. diff --git a/lisp/sieve-mode.el b/lisp/sieve-mode.el index e804e96..e4945c9 100644 --- a/lisp/sieve-mode.el +++ b/lisp/sieve-mode.el @@ -49,6 +49,7 @@ (autoload 'sieve-manage "sieve") (autoload 'sieve-upload "sieve") +(autoload 'c-mode "cc-mode") (require 'easymenu) (eval-when-compile (require 'font-lock)) diff --git a/lisp/spam-report.el b/lisp/spam-report.el index fafb891..46884c4 100644 --- a/lisp/spam-report.el +++ b/lisp/spam-report.el @@ -62,7 +62,7 @@ This is probably handled better with group/topic parameters." (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)) diff --git a/lisp/spam-stat.el b/lisp/spam-stat.el index f4c5ec9..96df016 100644 --- a/lisp/spam-stat.el +++ b/lisp/spam-stat.el @@ -398,7 +398,8 @@ Use `spam-stat-ngood', `spam-stat-nbad', `spam-stat-good', "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 " @@ -409,8 +410,8 @@ Use `spam-stat-ngood', `spam-stat-nbad', `spam-stat-good', (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." @@ -503,7 +504,8 @@ check the variable `spam-stat-score-data'." (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) @@ -539,7 +541,8 @@ You can use this to determine error rates." (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)) diff --git a/lisp/spam.el b/lisp/spam.el index b6e25db..4a8fccb 100644 --- a/lisp/spam.el +++ b/lisp/spam.el @@ -34,6 +34,8 @@ ;;; Code: +(eval-when-compile (require 'cl)) + (require 'gnus-sum) (require 'gnus-uu) ; because of key prefix issues diff --git a/texi/ChangeLog b/texi/ChangeLog index 164a4a9..08041c4 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,5 +1,69 @@ +2003-05-01 Reiner Steib + + * gnus.texi (Oort Gnus): Add prefix limit feature. + (Oort Gnus): Fix last commit. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.texi (Emacsen): Update. + +2003-05-01 Simon Josefsson + + * gnus.texi (IMAP): Document nnimap-need-unselect-to-notice-new-mail. + +2003-05-01 Jesper Harder + + * 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 + + * 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 + + * 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 + + * gnus.texi (Oort Gnus): New features in Gnus 5.10 from GNUS-NEWS. + +2003-04-30 Jesper Harder + + * 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 + + * gnus.texi (Group Parameters): Fix markup. + (Web Archive): Ditto. + 2003-04-27 Jesper Harder + * 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. diff --git a/texi/gnus-faq.texi b/texi/gnus-faq.texi index 00dec35..f6841f0 100644 --- a/texi/gnus-faq.texi +++ b/texi/gnus-faq.texi @@ -10,6 +10,8 @@ @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) @@ -18,11 +20,13 @@ @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. @@ -39,13 +43,15 @@ Web browser, the official hypertext version is at 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 @@ -76,7 +82,7 @@ Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented 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 @@ -92,22 +98,22 @@ Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented @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? @@ -123,7 +129,7 @@ Answer: @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? @@ -144,17 +150,17 @@ Answer: 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. @@ -163,7 +169,7 @@ Answer: @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? @@ -180,7 +186,7 @@ Answer: @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? @@ -201,12 +207,10 @@ Answer: @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 @@ -217,19 +221,19 @@ Answer: @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? @@ -243,20 +247,24 @@ Answer: @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 @@ -279,7 +287,7 @@ Answer: @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? @@ -294,7 +302,7 @@ Answer: @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? @@ -316,7 +324,7 @@ Answer: @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 @@ -343,7 +351,7 @@ Answer: @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? @@ -359,26 +367,33 @@ Answer: @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} @@ -393,17 +408,15 @@ Answer: @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. @@ -446,7 +459,7 @@ SET HOME=C:\myhome @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? @@ -477,7 +490,7 @@ chmod 600 ~/.authinfo @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. @@ -497,7 +510,7 @@ Answer: @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? @@ -521,7 +534,7 @@ force yes @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? @@ -534,16 +547,16 @@ Answer: @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? @@ -555,9 +568,7 @@ Answer: @example - (add-to-list 'gnus-secondary-select-methods '(nnspool "")) - @end example @noindent @@ -565,9 +576,7 @@ Answer: @example - (setq gnus-select-method '(nnspool "")) - @end example @noindent @@ -576,10 +585,8 @@ Answer: @example - (add-to-list 'gnus-secondary-select-methods '(nnspool "" (nnspool-directory "/usr/local/myspoolddir"))) - @end example @noindent @@ -590,7 +597,7 @@ Answer: @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? @@ -620,9 +627,7 @@ Answer: @example - (add-to-list 'gnus-secondary-select-methods '(nnml "")) - @end example @noindent @@ -630,9 +635,7 @@ Answer: @example - (add-to-list 'gnus-secondary-select-methods '(nnfolder "")) - @end example @@ -641,12 +644,10 @@ Answer: @example - (eval-after-load "mail-source" '(add-to-list 'mail-sources '(pop :server "pop.YourProvider.net" :user "yourUserName" :password "yourPassword")) - @end example @noindent @@ -656,10 +657,8 @@ Answer: @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 @@ -668,11 +667,9 @@ Answer: @example - (eval-after-load "mail-source" '(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/" :subdirs ("cur" "new"))) - @end example @noindent @@ -682,11 +679,9 @@ Answer: @example - (eval-after-load "mail-source" '(add-to-list 'mail-sources '(directory :path "/path/to/procmail-dir/" :suffix ".prcml")) - @end example @noindent @@ -702,17 +697,15 @@ Answer: @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? @@ -727,7 +720,6 @@ Answer: @example - (add-to-list 'mail-sources '(imap :server "mail.mycorp.com" :user "username" :pass "password" @@ -735,7 +727,6 @@ Answer: :authentication login :mailbox "INBOX" :fetchflag "\\Seen")) - @end example @noindent @@ -751,13 +742,12 @@ Answer: @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 @@ -768,7 +758,7 @@ Answer: @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? @@ -783,7 +773,7 @@ Answer: @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? @@ -824,30 +814,41 @@ Answer: @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? @@ -866,9 +867,7 @@ Answer: @example - (setq gnus-fetch-old-headers 'some) - @end example @@ -890,7 +889,7 @@ Answer: @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? @@ -908,7 +907,7 @@ Answer: @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? @@ -923,7 +922,7 @@ Answer: @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? @@ -939,7 +938,7 @@ Answer: @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? @@ -953,18 +952,16 @@ Answer: 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? @@ -976,12 +973,10 @@ Answer: @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 @@ -989,9 +984,7 @@ Answer: @example - (setq mm-automatic-display (remove "text/html" mm-automatic-display)) - @end example @noindent @@ -1000,7 +993,7 @@ Answer: @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? @@ -1015,15 +1008,13 @@ Answer: @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? @@ -1047,7 +1038,7 @@ Answer: @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 @@ -1096,10 +1087,8 @@ Answer: @example - (("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s)) ("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s))) - @end example @noindent @@ -1118,9 +1107,7 @@ Answer: @example - (setq gnus-use-adaptive-scoring t) - @end example @noindent @@ -1129,7 +1116,7 @@ Answer: @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? @@ -1149,7 +1136,7 @@ Answer: @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? @@ -1168,7 +1155,7 @@ Answer: @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 @@ -1195,7 +1182,7 @@ Answer: @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? @@ -1215,9 +1202,10 @@ Answer: @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 @@ -1226,7 +1214,6 @@ Answer: @example - (gnus-add-configuration '(article (horizontal 1.0 @@ -1242,13 +1229,12 @@ Answer: (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? @@ -1273,17 +1259,15 @@ Answer: @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 @@ -1296,13 +1280,12 @@ Answer: :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? @@ -1329,9 +1312,7 @@ Answer: @example - (setq nnmail-crosspost nil) - @end example @noindent @@ -1349,58 +1330,71 @@ Answer: @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 $") ("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? @@ -1434,7 +1428,7 @@ Answer: @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? @@ -1445,12 +1439,10 @@ Answer: @example - (add-hook 'message-mode-hook (lambda () (setq fill-column 72) (turn-on-auto-fill))) - @end example @noindent @@ -1460,7 +1452,7 @@ Answer: @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...? @@ -1473,7 +1465,6 @@ Answer: @example - (setq gnus-posting-styles '((".*" (name "Frank Schmitt") @@ -1482,7 +1473,6 @@ Answer: (signature-file "~/.signature") ("X-SampleHeader" "foobar") (eval (setq some-variable "Foo bar"))))) - @end example @noindent @@ -1500,7 +1490,7 @@ Answer: @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? @@ -1535,48 +1525,54 @@ Answer: @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 @@ -1609,7 +1605,7 @@ Answer: @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? @@ -1620,7 +1616,6 @@ Answer: @example - (add-hook 'gnus-select-group-hook (lambda () (cond @@ -1629,7 +1624,6 @@ Answer: (ispell-change-dictionary "deutsch8")) (t (ispell-change-dictionary "english"))))) - @end example @@ -1640,7 +1634,7 @@ Answer: @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? @@ -1654,9 +1648,7 @@ Answer: @example - alias al "Al " - @end example @noindent @@ -1674,10 +1666,8 @@ alias al "Al " @example - (require 'bbdb) (bbdb-initialize 'gnus 'message) - @end example @noindent @@ -1686,7 +1676,6 @@ alias al "Al " @example - (require 'bbdb) ;;If you don't live in Northern America, you should disable the ;;syntax check for telephone numbers by saying @@ -1699,7 +1688,6 @@ alias al "Al " (setq bbdb-complete-name-allow-cycling t) ;;No popup-buffers (setq bbdb-use-pop-up nil) - @end example @noindent @@ -1717,7 +1705,7 @@ alias al "Al " @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 @@ -1739,28 +1727,25 @@ Answer: @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 @@ -1769,7 +1754,7 @@ cat ./file.face | sed 's/\\/\\\\/g' | sed 's/\"/\\\"/g' > ./file.face.quoted @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 @@ -1782,9 +1767,7 @@ Answer: @example - (setq gnus-confirm-mail-reply-to-news t) - @end example @noindent @@ -1793,19 +1776,17 @@ Answer: @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? @@ -1817,17 +1798,15 @@ Answer: @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? @@ -1843,19 +1822,17 @@ Answer: @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? @@ -1872,10 +1849,8 @@ Answer: @example - (defun message-make-message-id() (concat "<"(message-unique-id)"@@yourmachine.yourdomain.tld>")) - @end example @@ -1898,10 +1873,8 @@ Answer: @example - (setq message-required-news-headers (remove' Message-ID message-required-news-headers)) - @end example @noindent @@ -1909,10 +1882,8 @@ Answer: @example - (setq message-required-mail-headers (remove' Message-ID message-required-mail-headers)) - @end example @noindent @@ -1924,21 +1895,23 @@ Answer: @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? @@ -1969,7 +1942,7 @@ Answer: @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? @@ -1987,7 +1960,6 @@ Answer: @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 @@ -2003,7 +1975,6 @@ more then one article." (replace-in-string gnus-newsgroup-name "^.*:" "") (replace-regexp-in-string "^.*:" "" gnus-newsgroup-name))))) (gnus-summary-copy-article n archive-name))) - @end example @noindent @@ -2017,9 +1988,7 @@ more then one article." @example - (setq gnus-use-cache t) - @end example @noindent @@ -2030,7 +1999,7 @@ more then one article." @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? @@ -2077,7 +2046,7 @@ Answer: @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? @@ -2106,7 +2075,7 @@ Answer: @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? @@ -2148,7 +2117,7 @@ Answer: @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. @@ -2160,9 +2129,7 @@ Answer: @example - (setq nnmail-expiry-target "nnml:expired") - @end example @noindent @@ -2175,20 +2142,22 @@ Answer: @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? @@ -2210,23 +2179,25 @@ Answer: 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 @@ -2240,7 +2211,7 @@ Answer: @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? @@ -2256,9 +2227,7 @@ Answer: @example - (setq gnus-agent t) - @end example @@ -2278,7 +2247,7 @@ Answer: @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? @@ -2317,7 +2286,7 @@ Answer: @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? @@ -2338,21 +2307,22 @@ Answer: @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? @@ -2373,7 +2343,7 @@ Answer: @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? @@ -2391,7 +2361,7 @@ Answer: @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? @@ -2411,7 +2381,7 @@ Answer: @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? @@ -2434,23 +2404,21 @@ Answer: @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? @@ -2466,18 +2434,18 @@ Answer: @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? @@ -2497,10 +2465,8 @@ Answer: @example - (require 'message) (add-to-list 'message-syntax-checks '(sender . disabled)) - @end example @noindent @@ -2509,10 +2475,8 @@ Answer: @example - (eval-after-load "message" '(add-to-list 'message-syntax-checks '(sender . disabled))) - @end example @noindent @@ -2521,7 +2485,7 @@ Answer: @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? @@ -2535,9 +2499,7 @@ Answer: @example - (gnus-compile) - @end example @noindent @@ -2549,9 +2511,7 @@ Answer: @example - (setq gc-cons-threshold 3500000) - @end example @noindent @@ -2561,9 +2521,7 @@ Answer: @example - (setq gnus-use-correct-string-widths nil) - @end example @@ -2578,7 +2536,7 @@ Answer: @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? @@ -2595,7 +2553,7 @@ Answer: @ifnottex @node FAQ - Glossary, , FAQ 9 - Tuning Gnus, Frequently Asked Questions @end ifnottex -@section Glossary +@subsection Glossary @table @dfn diff --git a/texi/gnus.texi b/texi/gnus.texi index 0680001..5207e87 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -2,9 +2,9 @@ @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. @@ -33,7 +33,7 @@ \makeindex \begin{document} -\newcommand{\gnusversionname}{Oort Gnus v0.19} +\newcommand{\gnusversionname}{Oort Gnus v0.24} \newcommand{\gnuschaptername}{} \newcommand{\gnussectionname}{} @@ -389,7 +389,7 @@ can be gotten by any nefarious means you can think of---@acronym{NNTP}, local 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 @@ -487,7 +487,7 @@ Group Buffer 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 @@ -614,7 +614,7 @@ Article Treatment * 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 @@ -871,7 +871,7 @@ Appendices * 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 @@ -892,6 +892,7 @@ New Features * 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 @@ -1716,7 +1717,7 @@ long as Gnus is active. @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 @@ -1882,9 +1883,9 @@ if no info is available---for instance, if it is a non-activated foreign 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 @@ -1919,7 +1920,8 @@ background is dark: (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 @@ -2671,7 +2673,7 @@ the dot is the key, while the thing after the dot is the value. All the 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: @@ -2723,7 +2725,7 @@ If you do an @kbd{a} command in a mail group and you don't have a 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. @@ -2947,7 +2949,7 @@ if address \"sender\" \"sieve-admin@@extundo.com\" @{ @} @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}) @@ -2973,11 +2975,13 @@ parameters, then you may need the following statement elsewhere in your @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 @@ -3242,7 +3246,7 @@ Sort the group buffer by group rank @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 @@ -3295,7 +3299,7 @@ Sort the groups by group rank @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 @@ -3863,6 +3867,7 @@ sorting. So, let's have a look at an example group buffer: @example +@group Gnus Emacs -- I wuw it! 3: comp.emacs @@ -3873,6 +3878,7 @@ Gnus 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 @@ -4540,11 +4546,6 @@ instead. The default is @samp{> }. 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 @@ -6036,11 +6037,14 @@ altering the summary mode keymap. For instance, if you would like the 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 @@ -6310,7 +6314,7 @@ Include all the articles in the current thread in the limit. @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 @@ -6664,7 +6668,7 @@ generated. 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: @@ -6801,7 +6805,7 @@ Toggle threading (@code{gnus-summary-toggle-threads}). @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 @@ -7951,7 +7955,7 @@ these articles easier. * 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 @@ -8222,7 +8226,8 @@ banner something like @samp{Do You Yoo-hoo!?} in all articles he 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 @@ -8411,14 +8416,14 @@ unwrap lines, repair attribution and rearrange citation. 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 @@ -8713,13 +8718,15 @@ article head only, and that each entry has an additional element that is 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}. @@ -8749,7 +8756,7 @@ This variable determines what to do when the button on a string as @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 @@ -9080,8 +9087,8 @@ the regular expression @samp{^---*Forwarded article}, then it isn't a signature after all. -@node Article Miscellania -@subsection Article Miscellania +@node Article Miscellanea +@subsection Article Miscellanea @table @kbd @item A t @@ -9756,9 +9763,13 @@ Variables related to the display are: @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 @@ -9811,6 +9822,7 @@ Here's an example from a horizontal tree buffer: Here's the same thread displayed in a vertical tree buffer: @example +@group @{***@} |--------------------------\-----\-----\ (***) [Bjo] [Gun] [Gun] @@ -9820,6 +9832,7 @@ Here's the same thread displayed in a vertical tree buffer: [Gun] [Eri] [Eri] [odd] | [Paa] +@end group @end example If you're using horizontal trees, it might be nice to display the trees @@ -10015,6 +10028,11 @@ built. If @code{t}, update the buffer after every line is inserted. 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. @@ -10076,9 +10094,9 @@ other buffers. For example: @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 @@ -10506,7 +10524,7 @@ things to work: @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. @@ -10564,12 +10582,14 @@ Privacy Guard when you click on the @acronym{MIME} button @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 @@ -10647,7 +10667,7 @@ who wrote the article, the date it was written and the subject of the 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}. @@ -10790,7 +10810,7 @@ The following commands are available when you have placed point over a @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. @@ -11163,7 +11183,7 @@ article buffer. @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)} @@ -12529,7 +12549,7 @@ can be used. @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" @@ -12850,7 +12870,7 @@ Where @code{nnspool} looks for the articles. This is normally @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 @@ -13085,7 +13105,7 @@ links. If that's the case for you, set 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 @@ -13598,7 +13618,7 @@ variables. @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 @@ -13606,7 +13626,7 @@ File where mail will be stored while processing it. The default is 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. @@ -13705,8 +13725,8 @@ use this hook to notify any mail watch programs, if you want to. @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 @@ -13881,7 +13901,7 @@ field names or words. In other words, all @var{value}'s are wrapped in @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 @@ -14047,7 +14067,7 @@ splits like this: @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. @@ -14155,7 +14175,7 @@ Gnus will not delete your old, read mail. Unless you ask it to, of 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 @@ -14472,13 +14492,13 @@ methods: @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 @@ -14764,7 +14784,7 @@ stores extra information in the @file{.nnmaildir/} directory within a 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 @@ -14863,17 +14883,17 @@ supply a @code{create-directory} server parameter. 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.) @@ -14884,7 +14904,7 @@ An integer specifying the minimum age, in seconds, of an article before 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 @@ -14894,11 +14914,13 @@ delivery time, but editing an article makes it younger. Moving 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 @@ -15523,7 +15545,7 @@ Where @code{nnslashdot} will store its files. The default is @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 @@ -15574,7 +15596,7 @@ The following @code{nnultimate} variables can be altered: @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 @@ -15594,7 +15616,7 @@ groups updated. 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}. @@ -15604,7 +15626,7 @@ The following @code{nnwarchive} variables can be altered: @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 @@ -15921,7 +15943,7 @@ external library @code{digest-md5.el}. @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 @@ -15967,7 +15989,7 @@ clients. (In other words, Gnus has two ``Tick'' marks and @acronym{IMAP} 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) @@ -15980,7 +16002,7 @@ In this case, you would not want the per-user dormant flag showing up 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 @@ -16001,6 +16023,13 @@ A file containing credentials used to log in on servers. The format is 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 @@ -16057,7 +16086,7 @@ splitting is disabled! 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 @@ -16119,11 +16148,11 @@ the syntax of this variable have been extended along the lines of: @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 @@ -16254,8 +16283,8 @@ INBOX.mailbox). @subsection Expunging mailboxes @cindex expunging -@cindex Expunge -@cindex Manual expunging +@cindex expunge +@cindex manual expunging @kindex G x @findex gnus-group-nnimap-expunge @@ -16274,7 +16303,7 @@ delete them. 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 @@ -16288,7 +16317,7 @@ by the following text in the RFC: 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 @@ -17004,6 +17033,9 @@ Creates a @code{To} header that looks like @item nngateway-mail2news-header-transformation Creates a @code{To} header that looks like @code{nngateway-address}. +@end table + +@end table Here's an example: @@ -17015,11 +17047,6 @@ Here's an example: nngateway-mail2news-header-transformation))) @end lisp -@end table - - -@end table - So, to use this, simply say something like: @lisp @@ -17181,9 +17208,9 @@ their @acronym{NOV} lines removed from the @acronym{NOV} file. @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 @@ -17288,7 +17315,6 @@ all @code{nntp} and @code{nnimap} groups in @code{gnus-select-method} and @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 @@ -17299,7 +17325,7 @@ Both topic parameters (@pxref{Topic Parameters}) and agent categories 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 @@ -17880,7 +17906,7 @@ Remove the downloading mark from the article @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 @@ -17945,7 +17971,7 @@ If you so desire, you can configure the agent (see @code{gnus-agent-cache} @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 @@ -17955,12 +17981,12 @@ sense if you are using a nntp or nnimap backend. @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 @@ -17990,8 +18016,8 @@ commands, @code{gnus-agent-regenerate} and @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 @@ -18808,8 +18834,8 @@ Anyway, if you'd like to dig into it yourself, here's an example: 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: @@ -18963,7 +18989,7 @@ key will lead to creation of @file{ADAPT} files.) @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. @@ -19981,10 +20007,12 @@ Let's say you want to increase the score of articles written by Lars when he's talking about Gnus: @example +@group ((& ("from" "Lars Ingebrigtsen") ("subject" "Gnus")) 1000) +@end group @end example Quite simple, huh? @@ -20331,7 +20359,7 @@ case, they will be @code{eval}ed to insert the required lines. 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. @@ -20570,7 +20598,7 @@ This is the soft tabulator. @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. @@ -20688,6 +20716,7 @@ To be slightly more formal, here's a definition of what a valid split may look like: @example +@group split = frame | horizontal | vertical | buffer | form frame = "(frame " size *split ")" horizontal = "(horizontal " size *split ")" @@ -20695,6 +20724,7 @@ vertical = "(vertical " 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 @@ -21219,17 +21249,23 @@ by default. @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 @@ -21286,7 +21322,7 @@ This might be dangerous, though. @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 @@ -21427,8 +21463,9 @@ To use moderation mode in these two groups, say: @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. @@ -21511,7 +21548,7 @@ want to add @samp{"unknown"} to this list. @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 @@ -22029,9 +22066,9 @@ like: (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: @@ -22111,6 +22148,7 @@ Also, when you load @code{spam.el}, you will be able to customize its 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 @@ -22120,6 +22158,7 @@ that later similar mail will also be considered non-spam. Spam 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 @@ -22135,9 +22174,16 @@ groups are not classified by means of @code{spam-junk-mailgroups}, 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 @@ -22145,23 +22191,24 @@ spam-marked (@samp{$}) articles are sent to a spam processor which 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 @@ -22172,6 +22219,7 @@ explicit kill a lot, you might sometimes end up with articles marked 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 @@ -22182,11 +22230,14 @@ variable, which is a list of regular expressions matched with group 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 @@ -22212,22 +22263,71 @@ nnimap back ends to retrieve your mail. 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 @@ -22240,6 +22340,8 @@ The following are the methods you can use to control the behavior of @menu * Blacklists and Whitelists:: * BBDB Whitelists:: +* Gmane Spam Reporting:: +* Anti-spam Hashcash Payments:: * Blackholes:: * Regular Expressions Header Matching:: * Bogofilter:: @@ -22364,6 +22466,42 @@ or @emph{unclassified} groups. @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 @@ -22940,7 +23078,7 @@ following in your @file{~/.gnus.el} file: 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") @@ -22955,18 +23093,18 @@ File size: (nth 7 (file-attributes spam-stat-file)) 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 @@ -23039,8 +23177,10 @@ For instance, if @samp{:} is invalid as a file character in file names 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 @@ -23118,14 +23258,14 @@ but at the common table.@* * 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 @@ -23217,7 +23357,7 @@ released version of Gnus and snuggle up to that instead. 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. @@ -23368,7 +23508,7 @@ various changes to the format of news articles. The Gnus towers will 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 @@ -23420,10 +23560,10 @@ Gnus should work on : @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 @@ -23816,6 +23956,7 @@ actually are people who are using Gnus. Who'd'a thunk it! * 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 @@ -24489,8 +24630,7 @@ this now has changed to :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 @@ -24526,6 +24666,557 @@ Gnus can now read @acronym{IMAP} mail via @code{nnimap}. @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: )} 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 @@ -24718,7 +25409,7 @@ A collection of such lines, or a collection of heads. Or even a 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 @@ -25030,7 +25721,7 @@ improvements, please produce the patch using @samp{diff -u}. @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 @@ -25050,28 +25741,29 @@ Sometimes, a problem do not directly generate a elisp error but 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 @@ -25194,8 +25886,8 @@ Says whether @var{group} is secondary or not. @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}. @@ -26683,8 +27375,3 @@ former). The manual is unambiguous, but it can be confusing. @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 diff --git a/texi/texi2latex.el b/texi/texi2latex.el index 378752e..06c08ec 100644 --- a/texi/texi2latex.el +++ b/texi/texi2latex.el @@ -101,7 +101,7 @@ "summarycontents" "bye" "top" "iftex" "cartouche" "iflatex" "finalout" "vskip" - "dircategory")) + "dircategory" "group" "syncodeindex")) (latexi-strip-line)) ((member command '("menu" "tex" "ifinfo" "ignore" "ifnottex" "direntry")) @@ -118,6 +118,10 @@ (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) @@ -152,7 +156,7 @@ ) ((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))) @@ -168,7 +172,7 @@ ((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 @@ -189,7 +193,7 @@ (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))