\f
* Changes in Oort Gnus
-** Menu bar: "Misc" -> "Gnus".
+** Nnml stores marks in the file ".marks" for each groups.
+
+This makes it possible to take backup of nnml servers independently of
+.newsrc.eld. It also makes it possible to share articles and marks
+between users (without sharing .newsrc.eld) within e.g. a department.
+
+** The menu bar (in Group and Summary buffer) named "Misc" has been
+ renamed to "Gnus".
+
+** The menu bar (in Message mode) named "MML" has been renamed to
+ "Attachment".
** gnus-group-charset-alist and gnus-group-ignored-charsets-alist
+2001-08-20 16:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus-start.el (gnus-activate-group): If dont-check, don't update
+ active.
+
+2001-08-20 15:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * nnslashdot.el (nnslashdot-retrieve-headers-1): Replace
+ nnslashdot-*-retrieve-headers.
+ (nnslashdot-request-article): Fix for slashcode 2.2.
+ (nnslashdot-make-tuple): New.
+ (nnslashdot-read-groups): Use it.
+
+2001-08-20 01:34:03 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.el (gnus-expand-group-parameters): Don't alter the variable
+ list.
+
+ * gnus-sum.el (gnus-summary-move-article): Don't select article.
+
+2001-08-20 Simon Josefsson <jas@extundo.com>
+
+ * gnus-msg.el (gnus-inews-do-gcc): If archive server can't be
+ opened, error instead of continuing (and exploding later).
+
+2001-08-20 01:34:03 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.el (gnus-expand-group-parameters): Return the parameter
+ list.
+
+ * gnus-sum.el (gnus-summary-show-article): Doc fix.
+ (gnus-summary-show-article): Guess at charset if required.
+
+ * gnus-spec.el (gnus-correct-substring): Stopped one character
+ before we wanted.
+
+2001-08-19 Pavel Jan\e,Bm\e(Bk <Pavel@Janik.cz>
+
+ * earcon.el (earcon-auto-play): Remove unused option.
+
+2001-08-19 16:14:41 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-score.el (gnus-score-headers): Move the "Scoring..."
+ message down in levels, since it happens very fast.
+
+ * smiley-ems.el (smiley-update-cache): Respect the symbol version
+ of smiley-regexp-alist.
+
+ * mm-view.el (mm-inline-text): Ignore vcard errors.
+
+ * gnus-art.el (gnus-ignored-headers): Added more junk headers.
+
+ * gnus-score.el (gnus-all-score-files): Use append instead of
+ nconc.
+
+ * gnus.el (gnus-splash-face): Doc fix.
+
+ * mm-decode.el (mm-mailcap-command): Use
+ mm-path-name-rewrite-functions.
+ (mm-path-name-rewrite-functions): New variable.
+
+ * gnus-spec.el (gnus-parse-complex-format): React to ?=.
+ (gnus-complex-form-to-spec): Insert tab.
+ (gnus-spec-tab): New function.
+
+ * gnus-sum.el (gnus-select-newsgroup): Set the marks before
+ entering the group.
+
+ * gnus-spec.el (gnus-complex-form-to-spec): Insert Lisp to match
+ the positional spec.
+ (gnus-parse-complex-format): React to %C.
+
+ * gnus-ems.el (gnus-char-width): Moved here.
+
+ * gnus-sum.el (gnus-select-newsgroup): Set
+ gnus-newsgroup-articles.
+ (gnus-unseen-mark): New variable.
+ (gnus-newsgroup-unseen): Ditto.
+ (gnus-newsgroup-seen): Ditto.
+ (gnus-adjust-marked-articles): Use them.
+ (gnus-update-marks): Use them.
+ (gnus-summary-update-secondary-mark): Display.
+ (gnus-summary-prepare-threads): Display.
+
+ * gnus-msg.el (gnus-inews-group-method): Use and return the
+ method, not the server.
+
+2001-08-19 Simon Josefsson <jas@extundo.com>
+
+ * gnus-srvr.el (gnus-server-agent-face): New.
+ (gnus-server-agent-face): New.
+ (gnus-server-mode): Turn on font-lock-mode.
+
+ * gnus.el (gnus-server-visual): Add defgroup.
+
+2001-08-19 Simon Josefsson <jas@extundo.com>
+ From Joe Casadonte <jcasadonte@northbound-train.com>
+
+ * gnus-srvr.el (gnus-server-opened-face, gnus-server-closed-face,
+ gnus-server-denied-face): New.
+ (gnus-server-opened-face, gnus-server-closed-face,
+ gnus-server-denied-face): New.
+ (gnus-server-font-lock-keywords): Add.
+
+2001-08-19 Simon Josefsson <jas@extundo.com>
+
+ * nnml.el (nnml-request-set-mark): Return nil.
+ (nnml-save-marks): Use nnml-possibly-create-directory.
+ (nnml-open-marks): Only work in temp buffer when inserting/reading
+ .marks file.
+
+2001-08-18 19:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus.el (gnus-expand-group-parameters): Fix.
+
+ * gnus-spec.el (gnus-char-width): New.
+ (gnus-correct-substring, gnus-correct-length): Use it.
+
+ * message.el (message-required-mail-headers): Fix doc.
+
+2001-08-18 18:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus-sum.el (gnus-group-make-articles-read): gnus-request-set-mark.
+
+ * mm-decode.el (mm-save-part-to-file): Insert the handle.
+
+2001-08-18 13:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * nnslashdot.el (nnslashdot-threaded-retrieve-headers):
+ slashdot 2.2 (not fully fixed yet).
+ (nnslashdot-request-article): Ditto.
+
+2001-08-18 Simon Josefsson <jas@extundo.com>
+
+ * gnus-util.el (gnus-remassoc, gnus-update-alist-soft): Moved from
+ nnimap.
+
+ * nnimap.el (nnimap-remassoc, nnimap-update-alist-soft): Moved to
+ gnus-util.
+ (nnimap-request-update-info-internal): Use new functions.
+
+ * nnml.el (nnml-request-set-mark, nnml-request-update-info): Use
+ new functions.
+
+2001-08-18 Simon Josefsson <jas@extundo.com>
+
+ Make nnml groups self-contained as far as marks are concerned.
+
+ * nnml.el (nnml-request-delete-group): Delete marks file.
+ (nnml-request-rename-group): Move marks file.
+ (nnml-marks-file-name, nnml-marks-is-evil, nnml-marks): New server
+ variables.
+ (nnml-request-set-mark, nnml-request-update-info): New server
+ functions.
+ (nnml-save-marks, nnml-open-marks): New functions.
+
+2001-08-18 Simon Josefsson <jas@extundo.com>
+
+ * gnus-sum.el (gnus-summary-move-article): Use `add' instead of
+ `set' when setting marks.
+
+2001-08-17 22:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus.el (gnus-info-find-node): Take an argument.
+
+ * gnus-art.el (gnus-button-handle-info): New.
+ (gnus-url-unhex-string): Replace "+" with " ".
+
+2001-08-17 21:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * message.el (message-check-news-header-syntax): Check bad From.
+
+2001-08-18 00:14:45 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-spec.el (gnus-correct-length): New function.
+ (gnus-correct-substring): New function.
+ (gnus-tilde-max-form): Use it.
+
+2001-08-17 Nevin Kapur <nevin@jhu.edu>
+
+ * nnmh.el: Docstring changes as below.
+
+ * nnml.el: Docstring changes as below.
+
+ * nnbabyl.el: Docstring changes as below.
+
+ * nnmbox.el: Docstring changes as below.
+
+ * nnfolder.el: Added docstrings identifying each virtual server
+ parameter.
+
+2001-08-18 Simon Josefsson <jas@extundo.com>
+
+ * mml.el (mml-menu): Collapse Attach, Insert and Security submenu.
+
+2001-08-17 Bj\e,Av\e(Brn Torkelsson <torkel@acc.kth.se>
+
+ * message.el: rename "Abort Message" to "Postpone Message".
+ Remove "Attach file as MIME" from Message menu, it's already in
+ the MIME menu.
+
+2001-08-17 14:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * smime.el (smime-point-at-eol): eval-and-compile.
+ (smime-make-temp-file): New.
+ (smime-sign-region, smime-encrypt-region, smime-decrypt-region):
+ Use it.
+
+2001-08-17 10:41:14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-agent.el (gnus-agent-fetch-group): Go online if offline.
+ (gnus-agent-summary-fetch-group): New command and keystroke.
+
+ * gnus-art.el (gnus-insert-mime-button): Tiny clean-up.
+ (gnus-mime-display-security): Make it respect
+ gnus-unbuttonized-mime-type-p.
+
+ * gnus-sum.el (gnus-articles-to-read): Comments.
+ (gnus-article-marked-p): New function.
+ (gnus-summary-display-make-predicate): New function.
+ (gnus-select-newsgroup): Use them.
+
+ * mm-decode.el (mm-save-part-to-file): Made it not error.
+
+2001-08-17 Simon Josefsson <jas@extundo.com>
+
+ * imap.el (imap-wait-for-tag): If process-status isn't open or
+ run, return nil instead of sit-for looping.
+
+2001-08-17 10:41:14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * lpath.el (featurep): fbind xml-parse-region.
+
+ * gnus.el (gnus-message-archive-method): Default to "archive".
+ (gnus-message-archive-method): Doc fix.
+ (gnus-parameters-get-parameter): Cleaned up.
+ (gnus-expand-group-parameter): New function.
+
+ * gnus-start.el (gnus-setup-news): Push the archive server only
+ the server list.
+
+ * mml.el (mml-menu): Changed name to "Attachments".
+
+ * mm-decode.el (mm-destroy-postponed-undisplay-list): Only message
+ when there is something to detroy.
+
2001-05-21 17:11:46 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus-srvr.el (gnus-server-browse-in-group-buffer): Default to
"Turn ** sounds ** into noise."
:group 'gnus-visual)
-(defcustom earcon-auto-play nil
- "*When True, automatically play sounds as well as buttonize them."
- :type 'boolean
- :group 'earcon)
-
(defcustom earcon-prefix "**"
"*String denoting the start of an earcon."
:type 'string
(defvar gnus-agent-summary-mode-map (make-sparse-keymap))
(gnus-define-keys gnus-agent-summary-mode-map
"Jj" gnus-agent-toggle-plugged
+ "Ju" gnus-agent-summary-fetch-group
"J#" gnus-agent-mark-article
"J\M-#" gnus-agent-unmark-article
"@" gnus-agent-toggle-mark
["Mark as downloadable" gnus-agent-mark-article t]
["Unmark as downloadable" gnus-agent-unmark-article t]
["Toggle mark" gnus-agent-toggle-mark t]
+ ["Fetch downloadable" gnus-agent-summary-fetch-group t]
["Catchup undownloaded" gnus-agent-catchup t]))))
(defvar gnus-agent-server-mode-map (make-sparse-keymap))
(defun gnus-agent-fetch-group (group)
"Put all new articles in GROUP into the Agent."
(interactive (list (gnus-group-group-name)))
- (unless gnus-plugged
- (error "Groups can't be fetched when Gnus is unplugged"))
- (unless group
- (error "No group on the current line"))
- (let ((gnus-command-method (gnus-find-method-for-group group)))
- (gnus-agent-with-fetch
- (gnus-agent-fetch-group-1 group gnus-command-method)
- (gnus-message 5 "Fetching %s...done" group))))
+ (let ((state gnus-plugged))
+ (unwind-protect
+ (progn
+ (unless state
+ (gnus-agent-toggle-plugged gnus-plugged)
+ (unless group
+ (error "No group on the current line"))
+ (let ((gnus-command-method (gnus-find-method-for-group group)))
+ (gnus-agent-with-fetch
+ (gnus-agent-fetch-group-1 group gnus-command-method)
+ (gnus-message 5 "Fetching %s...done" group)))))
+ (when (and (not state)
+ gnus-plugged)
+ (gnus-agent-toggle-plugged gnus-plugged)))))
(defun gnus-agent-add-group (category arg)
"Add the current group to an agent category."
(pop gnus-newsgroup-undownloaded) gnus-catchup-mark)))
(gnus-summary-position-point))
+(defun gnus-agent-summary-fetch-group ()
+ "Fetch the downloadable articles in the group."
+ (interactive)
+ (let ((articles gnus-newsgroup-downloadable)
+ (gnus-command-method (gnus-find-method-for-group gnus-newsgroup-name))
+ (state gnus-plugged))
+ (unwind-protect
+ (progn
+ (unless state
+ (gnus-agent-toggle-plugged t))
+ (unless articles
+ (error "No articles to download"))
+ (gnus-agent-with-fetch
+ (gnus-agent-fetch-articles gnus-newsgroup-name articles))
+ (save-excursion
+ (dolist (article articles)
+ (setq gnus-newsgroup-downloadable
+ (delq article gnus-newsgroup-downloadable))
+ (gnus-summary-mark-article article gnus-unread-mark))))
+ (when (and (not state)
+ gnus-plugged)
+ (gnus-agent-toggle-plugged nil)))))
+
;;;
;;; Internal functions
;;;
(unless (gnus-check-group group)
(error "Can't open server for %s" group))
;; Fetch headers.
- (when (and (or (gnus-active group) (gnus-activate-group group))
+ (when (and (or (gnus-active group)
+ (gnus-activate-group group))
(setq articles (gnus-agent-fetch-headers group))
(let ((nntp-server-buffer gnus-agent-overview-buffer))
;; Parse them and see which articles we want to fetch.
(cadr category))))
(if (memq predicate '(gnus-agent-true gnus-agent-false))
;; Simple implementation
- (setq arts
- (and (eq predicate 'gnus-agent-true) articles))
+ (setq arts (and (eq predicate 'gnus-agent-true) articles))
(setq arts nil)
(setq score-param
(or (gnus-group-get-parameter group 'agent-score t)
"^X-Received:" "^Content-length:" "X-precedence:"
"^X-Authenticated-User:" "^X-Comment" "^X-Report:" "^X-Abuse-Info:"
"^X-HTTP-Proxy:" "^X-Mydeja-Info:" "^X-Copyright" "^X-No-Markup:"
- "^X-Abuse-Info:")
+ "^X-Abuse-Info:" "^X-From_:" "^X-Accept-Language:" "^Errors-To:"
+ "^X-BeenThere:" "^X-Mailman-Version:" "^List-Help:" "^List-Post:"
+ "^List-Subscribe:" "^List-Id:" "^List-Unsubscribe:" "^List-Archive:"
+ "^X-Content-length:" "^X-Posting-Agent:" "^Original-Received:")
"*All headers that start with this regexp will be hidden.
This variable can also be a list of regexps of headers to be ignored.
If `gnus-visible-headers' is non-nil, this variable will be ignored."
(defun gnus-insert-mime-button (handle gnus-tmp-id &optional displayed)
(let ((gnus-tmp-name
- (or (mail-content-type-get (mm-handle-type handle)
- 'name)
- (mail-content-type-get (mm-handle-disposition handle)
- 'filename)
- (mail-content-type-get (mm-handle-type handle)
- 'url)
+ (or (mail-content-type-get (mm-handle-type handle) 'name)
+ (mail-content-type-get (mm-handle-disposition handle) 'filename)
+ (mail-content-type-get (mm-handle-type handle) 'url)
""))
(gnus-tmp-type (mm-handle-media-type handle))
(gnus-tmp-description
(setq gnus-tmp-type-long (concat gnus-tmp-type
(and (not (equal gnus-tmp-name ""))
(concat "; " gnus-tmp-name))))
- (or (equal gnus-tmp-description "")
- (setq gnus-tmp-type-long (concat " --- " gnus-tmp-type-long)))
+ (unless (equal gnus-tmp-description "")
+ (setq gnus-tmp-type-long (concat " --- " gnus-tmp-type-long)))
(unless (bolp)
(insert "\n"))
(setq b (point))
;;; Internal Variables:
-(defcustom gnus-button-url-regexp "\\b\\(\\(www\\.\\|\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\)\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?\\([-a-zA-Z0-9_=!?#$@~`%&*+|\\/:;.,]\\|\\w\\)+\\([-a-zA-Z0-9_=#$@~`%&*+|\\/]\\|\\w\\)\\)"
+(defcustom gnus-button-url-regexp "\\b\\(\\(www\\.\\|\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\|info\\):\\)\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?\\([-a-zA-Z0-9_=!?#$@~`%&*+|\\/:;.,]\\|\\w\\)+\\([-a-zA-Z0-9_=#$@~`%&*+|\\/]\\|\\w\\)\\)"
"Regular expression that matches URLs."
:group 'gnus-article-buttons
:type 'regexp)
("\\(<URL: *\\)mailto: *\\([^> \n\t]+\\)>" 0 t gnus-url-mailto 2)
("mailto:\\([-a-zA-Z.@_+0-9%=?]+\\)" 0 t gnus-url-mailto 1)
("\\bmailto:\\([^ \n\t]+\\)" 0 t gnus-url-mailto 1)
+ ;; This is info
+ ("\\binfo:\\(//\\)?\\([^'\">\n\t ]+\\)" 0 t
+ gnus-button-handle-info 2)
;; This is how URLs _should_ be embedded in text...
("<URL: *\\([^<>]*\\)>" 0 t gnus-button-embedded-url 1)
;; Raw URLs.
(group
(gnus-button-fetch-group url)))))
+(defun gnus-button-handle-info (url)
+ "Fetch an info URL."
+ (if (string-match
+ "^\\([^:/]+\\)?/\\(.*\\)"
+ url)
+ (gnus-info-find-node
+ (concat "(" (or (gnus-url-unhex-string (match-string 1 url))
+ "Gnus")
+ ")"
+ (gnus-url-unhex-string (match-string 2 url))))
+ (error "Can't parse %s" url)))
+
(defun gnus-button-message-id (message-id)
"Fetch MESSAGE-ID."
(save-excursion
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 str ""))
+ (setq str (or (nnheader-replace-chars-in-string str ?+ ? ) ""))
(let ((tmp "")
(case-fold-search t))
(while (string-match "%[0-9a-f][0-9a-f]" str)
(defun gnus-mime-display-security (handle)
(save-restriction
(narrow-to-region (point) (point))
- (gnus-insert-mime-security-button handle)
+ (unless (gnus-unbuttonized-mime-type-p (car handle))
+ (gnus-insert-mime-security-button handle))
(gnus-mime-display-mixed (cdr handle))
(unless (bolp)
(insert "\n"))
- (let ((gnus-mime-security-button-line-format
- gnus-mime-security-button-end-line-format))
- (gnus-insert-mime-security-button handle))
+ (unless (gnus-unbuttonized-mime-type-p (car handle))
+ (let ((gnus-mime-security-button-line-format
+ gnus-mime-security-button-end-line-format))
+ (gnus-insert-mime-security-button handle)))
(mm-set-handle-multipart-parameter
handle 'gnus-region
(cons (set-marker (make-marker) (point-min))
;;; Mule functions.
(eval-and-compile
+ (defalias 'gnus-char-width
+ (if (fboundp 'char-width)
+ 'char-width
+ (lambda (ch) 1)))) ;; A simple hack.
+
+(eval-and-compile
(if (featurep 'xemacs)
(gnus-xmas-define)
(defvar gnus-mouse-face-prop 'mouse-face
;;; Gcc handling.
(defun gnus-inews-group-method (group)
- (cond ((and (null (gnus-get-info group))
- (eq (car gnus-message-archive-method)
- (car
- (gnus-server-to-method
- (gnus-group-method group)))))
- ;; If the group doesn't exist, we assume
- ;; it's an archive group...
- gnus-message-archive-method)
- ;; Use the method.
- ((gnus-info-method (gnus-get-info group))
- (gnus-info-method (gnus-get-info group)))
- ;; Find the method.
- (t (gnus-group-method group))))
+ (cond
+ ;; If the group doesn't exist, we assume
+ ;; it's an archive group...
+ ((and (null (gnus-get-info group))
+ (eq (car (gnus-server-to-method gnus-message-archive-method))
+ (car (gnus-server-to-method (gnus-group-method group)))))
+ gnus-message-archive-method)
+ ;; Use the method.
+ ((gnus-info-method (gnus-get-info group))
+ (gnus-info-method (gnus-get-info group)))
+ ;; Find the method.
+ (t (gnus-server-to-method (gnus-group-method group)))))
;; Do Gcc handling, which copied the message over to some group.
(defun gnus-inews-do-gcc (&optional gcc)
(message-tokenize-header gcc " ,")))
;; Copy the article over to some group(s).
(while (setq group (pop groups))
- (gnus-check-server
- (setq method (gnus-inews-group-method group)))
+ (unless (gnus-check-server
+ (setq method (gnus-inews-group-method group)))
+ (error "Can't open server %s" (if (stringp method) method
+ (car method))))
(unless (gnus-request-group group nil method)
(gnus-request-create-group group method))
(save-excursion
(headers gnus-newsgroup-headers)
(current-score-file gnus-current-score-file)
entry header new)
- (gnus-message 5 "Scoring...")
+ (gnus-message 7 "Scoring...")
;; Create articles, an alist of the form `(HEADER . SCORE)'.
(while (setq header (pop headers))
;; WARNING: The assq makes the function O(N*S) while it could
(gnus-score-advanced (car score) trace))
(pop score))))
- (gnus-message 5 "Scoring...done"))))))
+ (gnus-message 7 "Scoring...done"))))))
(defun gnus-score-lower-thread (thread score-adjust)
"Lower the score on THREAD with SCORE-ADJUST.
(while funcs
(when (gnus-functionp (car funcs))
(setq score-files
- (nconc score-files
- (nreverse (funcall (car funcs) group)))))
+ (append score-files
+ (nreverse (funcall (car funcs) group)))))
(setq funcs (cdr funcs)))
(when gnus-score-use-all-scores
;; Add any home score files.
(require 'alist)
(require 'gnus)
+(defcustom gnus-use-correct-string-widths t
+ "*If non-nil, use correct functions for dealing with wide characters."
+ :group 'gnus-format
+ :type 'boolean)
+
;;; Internal variables.
(defvar gnus-summary-mark-positions nil)
(defvar gnus-summary-mode-line-format-spec nil)
(defvar gnus-group-mode-line-format-spec nil)
-;;; Phew. All that gruft is over, fortunately.
+;;; Phew. All that gruft is over with, fortunately.
;;;###autoload
(defun gnus-update-format (var)
'balloon-help
,(intern (format "gnus-balloon-face-%d" type))))
+(defun gnus-spec-tab (column)
+ (if (> column 0)
+ `(insert (make-string (max (- ,column (current-column)) 0) ? ))
+ `(progn
+ (if (> (current-column) ,(abs column))
+ (delete-region (point)
+ (- (point) (- (current-column) ,(abs column))))
+ (insert (make-string (max (- ,(abs column) (current-column)) 0)
+ ? ))))))
+
+(defun gnus-correct-length (string)
+ "Return the correct width of STRING."
+ (let ((length 0))
+ (mapcar (lambda (char) (incf length (gnus-char-width char))) string)
+ length))
+
+(defun gnus-correct-substring (string start end)
+ (let ((wstart 0)
+ (wend 0)
+ (seek 0)
+ (length (length string)))
+ ;; Find the start position.
+ (while (and (< seek length)
+ (< wstart start))
+ (incf wstart (gnus-char-width (aref string seek)))
+ (incf seek))
+ (setq wend wstart
+ wstart seek)
+ ;; Find the end position.
+ (while (and (< seek length)
+ (<= wend end))
+ (incf wend (gnus-char-width (aref string seek)))
+ (incf seek))
+ (setq wend seek)
+ (substring string wstart (1- wend))))
+
(defun gnus-tilde-max-form (el max-width)
"Return a form that limits EL to MAX-WIDTH."
(let ((max (abs max-width)))
(if (symbolp el)
- `(if (> (length ,el) ,max)
+ `(if (> (,(if gnus-use-correct-string-widths
+ 'gnus-correct-length
+ 'length) ,el)
+ ,max)
,(if (< max-width 0)
- `(substring ,el (- (length el) ,max))
- `(substring ,el 0 ,max))
+ `(,(if gnus-use-correct-string-widths
+ 'gnus-correct-substring
+ 'substring)
+ ,el (- (,(if gnus-use-correct-string-widths
+ 'gnus-correct-length
+ 'length)
+ el) ,max))
+ `(,(if gnus-use-correct-string-widths
+ 'gnus-correct-substring
+ 'substring)
+ ,el 0 ,max))
,el)
`(let ((val (eval ,el)))
- (if (> (length val) ,max)
+ (if (> (,(if gnus-use-correct-string-widths
+ 'gnus-correct-length
+ 'length) val) ,max)
,(if (< max-width 0)
- `(substring val (- (length val) ,max))
- `(substring val 0 ,max))
+ `(,(if gnus-use-correct-string-widths
+ 'gnus-correct-substring
+ 'substring)
+ val (- (,(if gnus-use-correct-string-widths
+ 'gnus-correct-length
+ 'length) val) ,max))
+ `(,(if gnus-use-correct-string-widths
+ 'gnus-correct-substring
+ 'substring)
+ val 0 ,max))
val)))))
(defun gnus-tilde-cut-form (el cut-width)
"Return a form that cuts CUT-WIDTH off of EL."
(let ((cut (abs cut-width)))
(if (symbolp el)
- `(if (> (length ,el) ,cut)
+ `(if (> (,(if gnus-use-correct-string-widths
+ 'gnus-correct-length
+ 'length) ,el) ,cut)
,(if (< cut-width 0)
- `(substring ,el 0 (- (length el) ,cut))
- `(substring ,el ,cut))
+ `(,(if gnus-use-correct-string-widths
+ 'gnus-correct-substring
+ 'substring) ,el 0
+ (- (,(if gnus-use-correct-string-widths
+ 'gnus-correct-length
+ 'length) el) ,cut))
+ `(,(if gnus-use-correct-string-widths
+ 'gnus-correct-substring
+ 'substring) ,el ,cut))
,el)
`(let ((val (eval ,el)))
- (if (> (length val) ,cut)
+ (if (> (,(if gnus-use-correct-string-widths
+ 'gnus-correct-length
+ 'length) val) ,cut)
,(if (< cut-width 0)
- `(substring val 0 (- (length val) ,cut))
- `(substring val ,cut))
+ `(,(if gnus-use-correct-string-widths
+ 'gnus-correct-substring
+ 'substring) val 0
+ (- (,(if gnus-use-correct-string-widths
+ 'gnus-correct-length
+ 'length) val) ,cut))
+ `(,(if gnus-use-correct-string-widths
+ 'gnus-correct-substring
+ 'substring) val ,cut))
val)))))
(defun gnus-tilde-ignore-form (el ignore-value)
(replace-match "\\\"" nil t))
(goto-char (point-min))
(insert "(\"")
+ ;; Convert all font specs into font spec lists.
(while (re-search-forward "%\\([0-9]+\\)?\\([«»{}()]\\)" nil t)
(let ((number (if (match-beginning 1)
(match-string 1) "0"))
(cond ((= delim ?\() "mouse")
((= delim ?\{) "face")
(t "balloon"))
- " " number " \""))
+ " " number " \"")
+ t t)
(replace-match "\")\""))))
(goto-char (point-max))
(insert "\")")
+ ;; Convert point position commands.
+ (goto-char (point-min))
+ (while (re-search-forward "%\\([-0-9]+\\)?C" nil t)
+ (replace-match "\"(point)\"" t t))
+ ;; Convert TAB commands.
+ (goto-char (point-min))
+ (while (re-search-forward "%\\([-0-9]+\\)=" nil t)
+ (replace-match (format "\"(tab %s)\"" (match-string 1)) t t))
+ ;; Convert the buffer into the spec.
(goto-char (point-min))
(let ((form (read (current-buffer))))
(cons 'progn (gnus-complex-form-to-spec form spec-alist)))))
(delq nil
(mapcar
(lambda (sform)
- (if (stringp sform)
- (gnus-parse-simple-format sform spec-alist t)
+ (cond
+ ((stringp sform)
+ (gnus-parse-simple-format sform spec-alist t))
+ ((eq (car sform) 'point)
+ `(gnus-put-text-property (1- (point)) (point) 'gnus-position t))
+ ((eq (car sform) 'tab)
+ (gnus-spec-tab (cadr sform)))
+ (t
(funcall (intern (format "gnus-%s-face-function" (car sform)))
(gnus-complex-form-to-spec (cddr sform) spec-alist)
- (nth 1 sform))))
+ (nth 1 sform)))))
form)))
(defun gnus-parse-simple-format (format spec-alist &optional insert)
"\C-c\C-i" gnus-info-find-node
"\C-c\C-b" gnus-bug))
+(defface gnus-server-agent-face
+ '((((class color) (background light)) (:foreground "PaleTurquoise" :bold t))
+ (((class color) (background dark)) (:foreground "PaleTurquoise" :bold t))
+ (t (:bold t)))
+ "Face used for displaying AGENTIZED servers"
+ :group 'gnus-server-visual)
+
+(defface gnus-server-opened-face
+ '((((class color) (background light)) (:foreground "Green3" :bold t))
+ (((class color) (background dark)) (:foreground "Green1" :bold t))
+ (t (:bold t)))
+ "Face used for displaying OPENED servers"
+ :group 'gnus-server-visual)
+
+(defface gnus-server-closed-face
+ '((((class color) (background light)) (:foreground "Steel Blue" :italic t))
+ (((class color) (background dark))
+ (:foreground "Light Steel Blue" :italic t))
+ (t (:italic t)))
+ "Face used for displaying CLOSED servers"
+ :group 'gnus-server-visual)
+
+(defface gnus-server-denied-face
+ '((((class color) (background light)) (:foreground "Red" :bold t))
+ (((class color) (background dark)) (:foreground "Pink" :bold t))
+ (t (:inverse-video t :bold t)))
+ "Face used for displaying DENIED servers"
+ :group 'gnus-server-visual)
+
+(defcustom gnus-server-agent-face 'gnus-server-agent-face
+ "Face name to use on AGENTIZED servers."
+ :group 'gnus-server-visual
+ :type 'face)
+
+(defcustom gnus-server-opened-face 'gnus-server-opened-face
+ "Face name to use on OPENED servers."
+ :group 'gnus-server-visual
+ :type 'face)
+
+(defcustom gnus-server-closed-face 'gnus-server-closed-face
+ "Face name to use on CLOSED servers."
+ :group 'gnus-server-visual
+ :type 'face)
+
+(defcustom gnus-server-denied-face 'gnus-server-denied-face
+ "Face name to use on DENIED servers."
+ :group 'gnus-server-visual
+ :type 'face)
+
+(defvar gnus-server-font-lock-keywords
+ (list
+ '("(\\(agent\\))" 1 gnus-server-agent-face)
+ '("(\\(opened\\))" 1 gnus-server-opened-face)
+ '("(\\(closed\\))" 1 gnus-server-closed-face)
+ '("(\\(denied\\))" 1 gnus-server-denied-face)))
+
(defun gnus-server-mode ()
"Major mode for listing and editing servers.
(buffer-disable-undo)
(setq truncate-lines t)
(setq buffer-read-only t)
+ (if (featurep 'xemacs)
+ (put 'gnus-server-mode 'font-lock-defaults '(gnus-server-font-lock-keywords t))
+ (set (make-local-variable 'font-lock-defaults)
+ '(gnus-server-font-lock-keywords t)))
(gnus-run-hooks 'gnus-server-mode-hook))
(defun gnus-server-insert-server-line (gnus-tmp-name method)
;; Make sure the archive server is available to all and sundry.
(when gnus-message-archive-method
- (setq gnus-server-alist (delq (assoc "archive" gnus-server-alist)
- gnus-server-alist))
- (push (cons "archive" gnus-message-archive-method)
- gnus-server-alist))
+ (unless (assoc "archive" gnus-server-alist)
+ (push `("archive"
+ (nnfolder
+ "archive"
+ (nnfolder-directory
+ ,(nnheader-concat message-directory "archive"))
+ (nnfolder-active-file
+ ,(nnheader-concat message-directory "archive/active"))
+ (nnfolder-get-new-mail nil)
+ (nnfolder-inhibit-expiry t)))
+ gnus-server-alist)))
;; If we don't read the complete active file, we fill in the
;; hashtb here.
(quit
(message "Quit activating %s" group)
nil))
- (setq active (gnus-parse-active))
- ;; If there are no articles in the group, the GROUP
- ;; command may have responded with the `(0 . 0)'. We
- ;; ignore this if we already have an active entry
- ;; for the group.
- (if (and (zerop (car active))
- (zerop (cdr active))
- (gnus-active group))
- (gnus-active group)
- (gnus-set-active group active)
- ;; Return the new active info.
- active))))
+ (unless dont-check
+ (setq active (gnus-parse-active))
+ ;; If there are no articles in the group, the GROUP
+ ;; command may have responded with the `(0 . 0)'. We
+ ;; ignore this if we already have an active entry
+ ;; for the group.
+ (if (and (zerop (car active))
+ (zerop (cdr active))
+ (gnus-active group))
+ (gnus-active group)
+ (gnus-set-active group active)
+ ;; Return the new active info.
+ active)))))
(defun gnus-get-unread-articles-in-group (info active &optional update)
(when active
:group 'gnus-summary-marks
:type 'character)
-(defcustom gnus-forwarded-mark ?O
+(defcustom gnus-forwarded-mark ?F
"*Mark used for articles that have been forwarded."
:group 'gnus-summary-marks
:type 'character)
:type 'character)
(defcustom gnus-saved-mark ?S
- "*Mark used for articles that have been saved to."
+ "*Mark used for articles that have been saved."
+ :group 'gnus-summary-marks
+ :type 'character)
+
+(defcustom gnus-unseen-mark ?.
+ "*Mark used for articles that haven't been seen."
:group 'gnus-summary-marks
:type 'character)
;;; Internal variables
+(defvar gnus-summary-display-cache nil)
(defvar gnus-article-mime-handles nil)
(defvar gnus-article-decoded-p nil)
(defvar gnus-article-charset nil)
(defvar gnus-current-move-group nil)
(defvar gnus-current-copy-group nil)
(defvar gnus-current-crosspost-group nil)
+(defvar gnus-newsgroup-display nil)
(defvar gnus-newsgroup-dependencies nil)
(defvar gnus-newsgroup-adaptive nil)
(defvar gnus-newsgroup-dormant nil
"List of dormant articles in the current newsgroup.")
+(defvar gnus-newsgroup-unseen nil
+ "List of unseen articles in the current newsgroup.")
+
+(defvar gnus-newsgroup-seen nil
+ "Range of seen articles in the current newsgroup.")
+
+(defvar gnus-newsgroup-articles nil
+ "List of articles in the current newsgroup.")
+
(defvar gnus-newsgroup-scored nil
"List of scored articles in the current newsgroup.")
gnus-newsgroup-expirable
gnus-newsgroup-processable gnus-newsgroup-killed
gnus-newsgroup-downloadable gnus-newsgroup-undownloaded
- gnus-newsgroup-unsendable
+ gnus-newsgroup-unsendable gnus-newsgroup-unseen
+ gnus-newsgroup-seen gnus-newsgroup-articles
gnus-newsgroup-bookmarks gnus-newsgroup-dormant
gnus-newsgroup-headers gnus-newsgroup-threads
gnus-newsgroup-prepared gnus-summary-highlight-line-function
gnus-cache-removable-articles gnus-newsgroup-cached
gnus-newsgroup-data gnus-newsgroup-data-reverse
gnus-newsgroup-limit gnus-newsgroup-limits
- gnus-newsgroup-charset
+ gnus-newsgroup-charset gnus-newsgroup-display
gnus-newsgroup-incorporated)
"Variables that are buffer-local to the summary buffers.")
gnus-saved-mark)
((memq number gnus-newsgroup-recent)
gnus-recent-mark)
+ ((memq number gnus-newsgroup-unseen)
+ gnus-unseen-mark)
(t gnus-no-mark))
gnus-tmp-from (mail-header-from gnus-tmp-header)
gnus-tmp-name
(error "Couldn't request group %s: %s"
group (gnus-status-message group)))
- (setq gnus-newsgroup-name group)
- (setq gnus-newsgroup-unselected nil)
- (setq gnus-newsgroup-unreads (gnus-list-of-unread-articles group))
- (gnus-summary-setup-default-charset)
+ (setq gnus-newsgroup-name group
+ gnus-newsgroup-unselected nil
+ gnus-newsgroup-unreads (gnus-list-of-unread-articles group))
- ;; Adjust and set lists of article marks.
- (when info
- (gnus-adjust-marked-articles info))
+ (setq gnus-newsgroup-display (gnus-group-find-parameter group 'display))
+ (setq gnus-newsgroup-display
+ (cond
+ ((eq gnus-newsgroup-display 'all)
+ (setq gnus-newsgroup-display 'identity))
+ ((arrayp gnus-newsgroup-display)
+ (gnus-summary-display-make-predicate
+ (mapcar 'identity gnus-newsgroup-display)))
+ (t
+ nil)))
+
+ (gnus-summary-setup-default-charset)
;; Kludge to avoid having cached articles nixed out in virtual groups.
(when (gnus-virtual-group-p group)
(gnus-update-read-articles group gnus-newsgroup-unreads)
+ ;; Adjust and set lists of article marks.
+ (when info
+ (gnus-adjust-marked-articles info))
+
(if (setq articles select-articles)
(setq gnus-newsgroup-unselected
(gnus-sorted-intersection
;; Set the initial limit.
(setq gnus-newsgroup-limit (copy-sequence articles))
;; Remove canceled articles from the list of unread articles.
+ (setq fetched-articles
+ (mapcar (lambda (headers) (mail-header-number headers))
+ gnus-newsgroup-headers))
+ (setq gnus-newsgroup-articles fetched-articles)
(setq gnus-newsgroup-unreads
(gnus-set-sorted-intersection
- gnus-newsgroup-unreads
- (setq fetched-articles
- (mapcar (lambda (headers) (mail-header-number headers))
- gnus-newsgroup-headers))))
+ gnus-newsgroup-unreads fetched-articles))
+
+ (let ((marks (assq 'seen (gnus-info-marks info))))
+ ;; The `seen' marks are treated specially.
+ (when (setq gnus-newsgroup-seen (cdr marks))
+ (dolist (article gnus-newsgroup-articles)
+ (unless (gnus-member-of-range
+ article gnus-newsgroup-seen)
+ (push article gnus-newsgroup-unseen)))))
+
;; Removed marked articles that do not exist.
(gnus-update-missing-marks
(gnus-sorted-complement fetched-articles articles))
;; GROUP is successfully selected.
(or gnus-newsgroup-headers t)))))
+(defun gnus-summary-display-make-predicate (display)
+ (require 'gnus-agent)
+ (when (= (length display) 1)
+ (setq display (car display)))
+ (unless gnus-summary-display-cache
+ (dolist (elem gnus-article-mark-lists)
+ (push (cons (cdr elem)
+ (gnus-byte-compile
+ `(lambda () (gnus-article-marked-p ',(cdr elem)))))
+ gnus-summary-display-cache)))
+ (let ((gnus-category-predicate-alist gnus-summary-display-cache))
+ (gnus-get-predicate display)))
+
+;; Uses the dynamically bound `number' variable.
+(defvar number)
+(defun gnus-article-marked-p (type &optional article)
+ (let ((article (or article number)))
+ (cond
+ ((eq type 'tick)
+ (memq article gnus-newsgroup-marked))
+ ((eq type 'unsend)
+ (memq article gnus-newsgroup-unsendable))
+ ((eq type 'undownload)
+ (memq article gnus-newsgroup-undownloaded))
+ ((eq type 'download)
+ (memq article gnus-newsgroup-downloadable))
+ ((eq type 'unread)
+ (memq article gnus-newsgroup-unreads))
+ ((eq type 'read)
+ (memq article gnus-newsgroup-reads))
+ ((eq type 'dormant)
+ (memq article gnus-newsgroup-dormant) )
+ ((eq type 'expire)
+ (memq article gnus-newsgroup-expirable))
+ ((eq type 'reply)
+ (memq article gnus-newsgroup-replied))
+ ((eq type 'killed)
+ (memq article gnus-newsgroup-killed))
+ ((eq type 'bookmark)
+ (assq article gnus-newsgroup-bookmarks))
+ ((eq type 'score)
+ (assq article gnus-newsgroup-scored))
+ ((eq type 'save)
+ (memq article gnus-newsgroup-saved))
+ ((eq type 'cache)
+ (memq article gnus-newsgroup-cached))
+ ((eq type 'forward)
+ (memq article gnus-newsgroup-forwarded))
+ ((eq type 'recent)
+ (memq article gnus-newsgroup-recent))
+ (t t))))
+
(defun gnus-articles-to-read (group &optional read-all)
"Find out what articles the user wants to read."
(let* ((articles
(if (or read-all
(and (zerop (length gnus-newsgroup-marked))
(zerop (length gnus-newsgroup-unreads)))
- (eq (gnus-group-find-parameter group 'display)
- 'all))
+ gnus-newsgroup-display)
+ ;; We want to select the headers for all the articles in
+ ;; the group, so we select either all the active
+ ;; articles in the group, or (if that's nil), the
+ ;; articles in the cache.
(or
(gnus-uncompress-range (gnus-active group))
(gnus-cache-articles-in-group group))
+ ;; Select only the "normal" subset of articles.
(sort (append gnus-newsgroup-dormant gnus-newsgroup-marked
(copy-sequence gnus-newsgroup-unreads))
'<)))
(uncompressed '(score bookmark killed))
marks var articles article mark)
- (while marked-lists
- (setq marks (pop marked-lists))
- (set (setq var (intern (format "gnus-newsgroup-%s"
- (car (rassq (setq mark (car marks))
- types)))))
- (if (memq (car marks) uncompressed) (cdr marks)
- (gnus-uncompress-range (cdr marks))))
+ (dolist (marks marked-lists)
+ (setq mark (car marks))
+ (unless (eq mark 'seen)
+ ;; Do the rest of the marks.
+ (set (setq var (intern (format "gnus-newsgroup-%s"
+ (car (rassq mark types)))))
+ (cond
+ ((memq mark uncompressed)
+ (cdr marks))
+ (t
+ (gnus-uncompress-range (cdr marks)))))
- (setq articles (symbol-value var))
+ (setq articles (symbol-value var))
- ;; All articles have to be subsets of the active articles.
- (cond
- ;; Adjust "simple" lists.
- ((memq mark '(tick dormant expire reply save))
- (while articles
- (when (or (< (setq article (pop articles)) min) (> article max))
- (set var (delq article (symbol-value var))))))
- ;; Adjust assocs.
- ((memq mark uncompressed)
- (when (not (listp (cdr (symbol-value var))))
- (set var (list (symbol-value var))))
- (when (not (listp (cdr articles)))
- (setq articles (list articles)))
- (while articles
- (when (or (not (consp (setq article (pop articles))))
- (< (car article) min)
- (> (car article) max))
- (set var (delq article (symbol-value var))))))))))
+ ;; All articles have to be subsets of the active articles.
+ (cond
+ ;; Adjust "simple" lists.
+ ((memq mark '(tick dormant expire reply save))
+ (while articles
+ (when (or (< (setq article (pop articles)) min) (> article max))
+ (set var (delq article (symbol-value var))))))
+ ;; Adjust assocs.
+ ((memq mark uncompressed)
+ (when (not (listp (cdr (symbol-value var))))
+ (set var (list (symbol-value var))))
+ (when (not (listp (cdr articles)))
+ (setq articles (list articles)))
+ (while articles
+ (when (or (not (consp (setq article (pop articles))))
+ (< (car article) min)
+ (> (car article) max))
+ (set var (delq article (symbol-value var)))))))))))
(defun gnus-update-missing-marks (missing)
"Go through the list of MISSING articles and remove them from the mark lists."
"Enter the various lists of marked articles into the newsgroup info list."
(let ((types gnus-article-mark-lists)
(info (gnus-get-info gnus-newsgroup-name))
- (uncompressed '(score bookmark killed))
+ (uncompressed '(score bookmark killed seen))
type list newmarked symbol delta-marks)
(when info
;; Add all marks lists to the list of marks lists.
(while (setq type (pop types))
(setq list (symbol-value
(setq symbol
- (intern (format "gnus-newsgroup-%s"
- (car type))))))
+ (intern (format "gnus-newsgroup-%s" (car type))))))
(when list
;; Get rid of the entries of the articles that have the
(setq arts (cdr arts)))
(setq list (cdr all)))))
+ (when (eq (cdr type) 'seen)
+ (setq list
+ (if list
+ (gnus-add-to-range list gnus-newsgroup-unseen)
+ (gnus-compress-sequence gnus-newsgroup-articles))))
+
(unless (memq (cdr type) uncompressed)
(setq list (gnus-compress-sequence (set symbol (sort list '<)) t)))
(gnus-group-update-group ,group t))))
;; Add the read articles to the range.
(gnus-info-set-read info range)
+ (gnus-request-set-mark group (list (list range 'add '(read))))
;; Then we have to re-compute how many unread
;; articles there are in this group.
(when active
;; Most groups have nothing to remove.
(if (or gnus-inhibit-limiting
(and (null gnus-newsgroup-dormant)
+ (eq gnus-newsgroup-display 'identity)
(not (eq gnus-fetch-old-headers 'some))
(not (numberp gnus-fetch-old-headers))
(not (eq gnus-fetch-old-headers 'invisible))
(push (cons number gnus-low-score-mark)
gnus-newsgroup-reads)))
t)
+ ;; Do the `display' group parameter.
+ (and gnus-newsgroup-display
+ (not (funcall gnus-newsgroup-display)))
;; Check NoCeM things.
(if (and gnus-use-nocem
(gnus-nocem-unwanted-article-p
"Force re-fetching of the current article.
If ARG (the prefix) is a number, show the article with the charset
defined in `gnus-summary-show-article-charset-alist', or the charset
-inputed.
+input.
If ARG (the prefix) is non-nil and not a number, show the raw article
without any article massaging functions being run."
(interactive "P")
(cond
((numberp arg)
+ (gnus-summary-show-article t)
(let ((gnus-newsgroup-charset
(or (cdr (assq arg gnus-summary-show-article-charset-alist))
- (mm-read-coding-system "Charset: ")))
+ (mm-read-coding-system
+ "View as charset: "
+ (save-excursion
+ (set-buffer gnus-article-buffer)
+ (detect-coding-region (point) (point-max) t)))))
(gnus-newsgroup-ignored-charsets 'gnus-all))
(gnus-summary-select-article nil 'force)
(let ((deps gnus-newsgroup-dependencies)
header)
(gnus-summary-update-article-line
(cdr gnus-article-current) header)
- (if (gnus-summary-goto-subject (cdr gnus-article-current) nil t)
- (gnus-summary-update-secondary-mark
- (cdr gnus-article-current))))))
+ (when (gnus-summary-goto-subject (cdr gnus-article-current) nil t)
+ (gnus-summary-update-secondary-mark (cdr gnus-article-current))))))
((not arg)
;; Select the article the normal way.
(gnus-summary-select-article nil 'force))
(interactive "P")
(unless action
(setq action 'move))
- ;; Disable marking as read.
- (let (gnus-mark-article-hook)
- (save-window-excursion
- (gnus-summary-select-article)))
;; Check whether the source group supports the required functions.
(cond ((and (eq action 'move)
(not (gnus-check-backend-function
(setq marks (cdr marks)))
(gnus-request-set-mark to-group (list (list (list to-article)
- 'set
+ 'add
to-marks))))
(gnus-dribble-enter
gnus-saved-mark)
((memq article gnus-newsgroup-recent)
gnus-recent-mark)
+ ((memq article gnus-newsgroup-unseen)
+ gnus-unseen-mark)
(t gnus-no-mark))
'replied)
(when (gnus-visual-p 'summary-highlight 'highlight)
(defun gnus-goto-colon ()
(beginning-of-line)
- (search-forward ":" (gnus-point-at-eol) t))
+ (let ((eol (gnus-point-at-eol)))
+ (goto-char (or (text-property-any (point) eol 'gnus-position t)
+ (search-forward ":" eol t)
+ (point)))))
(defun gnus-remove-text-with-property (prop)
"Delete all text in the current buffer with text property PROP."
(byte-compile form))
form))
+(defun gnus-remassoc (key alist)
+ "Delete by side effect any elements of LIST whose car is `equal' to KEY.
+The modified LIST is returned. If the first member
+of LIST has a car that is `equal' to KEY, there is no way to remove it
+by side effect; therefore, write `(setq foo (remassoc key foo))' to be
+sure of changing the value of `foo'."
+ (when alist
+ (if (equal key (caar alist))
+ (cdr alist)
+ (setcdr alist (gnus-remassoc key (cdr alist)))
+ alist)))
+
+(defun gnus-update-alist-soft (key value alist)
+ (if value
+ (cons (cons key value) (gnus-remassoc key alist))
+ (gnus-remassoc key alist)))
+
(provide 'gnus-util)
;;; gnus-util.el ends here
:group 'news
:group 'mail)
+(defgroup gnus-format nil
+ "Dealing with formatting issues."
+ :group 'news
+ :group 'mail)
+
(defgroup gnus-charset nil
"Group character set issues."
:link '(custom-manual "(gnus)Charsets")
"Options related to newsservers and other servers used by Gnus."
:group 'gnus)
+(defgroup gnus-server-visual nil
+ "Highlighting and menus in the server buffer."
+ :group 'gnus-visual
+ :group 'gnus-server)
+
(defgroup gnus-message '((message custom-group))
"Composing replies and followups in Gnus."
:group 'gnus)
(:foreground "Brown"))
(t
()))
- "Face of the splash screen.")
+ "Face for the splash screen.")
(defun gnus-splash ()
(save-excursion
:group 'gnus-server
:type 'gnus-select-method)
-(defcustom gnus-message-archive-method
- (progn
- ;; Don't require it at top level to avoid circularity.
- (require 'message)
- `(nnfolder
- "archive"
- (nnfolder-directory ,(nnheader-concat message-directory "archive"))
- (nnfolder-active-file
- ,(nnheader-concat message-directory "archive/active"))
- (nnfolder-get-new-mail nil)
- (nnfolder-inhibit-expiry t)))
+(defcustom gnus-message-archive-method "archive"
"*Method used for archiving messages you've sent.
-This should be a mail method.
-
-It's probably not very effective to change this variable once you've
-run Gnus once. After doing that, you must edit this server from the
-server buffer."
+This should be a mail method."
:group 'gnus-server
:group 'gnus-message
:type 'gnus-select-method)
(scored . score) (saved . save)
(cached . cache) (downloadable . download)
(unsendable . unsend) (forwarded . forward)
- (recent . recent)))
+ (recent . recent) (seen . seen)))
(defvar gnus-headers-retrieved-by nil)
(defvar gnus-article-reply nil)
(setq strings nil)))
string))
-(defun gnus-info-find-node ()
+(defun gnus-info-find-node (&optional nodename)
"Find Info documentation of Gnus."
(interactive)
;; Enlarge info window if needed.
(or gnus-info-filename
(get-language-info current-language-environment 'gnus-info)
"gnus")
- (or (cadr (assq major-mode gnus-info-nodes))
+ (or nodename
+ (cadr (assq major-mode gnus-info-nodes))
(and (eq (current-buffer) (get-buffer gnus-article-buffer))
(cadr (assq 'gnus-article-mode gnus-info-nodes))))))
(setq gnus-info-buffer (current-buffer))
(defun gnus-parameters-get-parameter (group)
"Return the group parameters for GROUP from `gnus-parameters'."
- (let ((alist gnus-parameters)
- params-list)
- (while alist
- (when (string-match (caar alist) group)
+ (let (params-list)
+ (dolist (elem gnus-parameters)
+ (when (string-match (car elem) group)
(setq params-list
- (nconc (copy-sequence (cdar alist))
- params-list)))
- (pop alist))
+ (nconc (gnus-expand-group-parameters
+ (car elem) (cdr elem) group)
+ params-list))))
params-list))
+(defun gnus-expand-group-parameters (match parameters group)
+ "Go through PARAMETERS and expand them according to the match data."
+ (let (new)
+ (dolist (elem parameters)
+ (if (and (stringp (cdr elem))
+ (string-match "\\\\" (cdr elem)))
+ (push (cons (car elem)
+ (with-temp-buffer
+ (insert group)
+ (goto-char (point-min))
+ (while (re-search-forward match nil t)
+ (replace-match (cdr elem)))
+ (buffer-string)))
+ new)
+ (push elem new)))
+ new))
+
(defun gnus-group-find-parameter (group &optional symbol allow-list)
"Return the group parameters for GROUP.
If SYMBOL, return the value of that symbol in the group parameters."
(defun imap-wait-for-tag (tag &optional buffer)
(with-current-buffer (or buffer (current-buffer))
(while (and (null imap-continuation)
+ (memq (process-status imap-process) '(open run))
(< imap-reached-tag tag))
- (or (and (not (memq (process-status imap-process) '(open run)))
- (sit-for 1))
- (let ((len (/ (point-max) 1024))
- message-log-max)
- (unless (< len 10)
- (message "imap read: %dk" len))
- (accept-process-output imap-process 1))))
+ (let ((len (/ (point-max) 1024))
+ message-log-max)
+ (unless (< len 10)
+ (message "imap read: %dk" len))
+ (accept-process-output imap-process 1)))
(message "")
- (or (assq tag imap-failed-tags)
- (if imap-continuation
- 'INCOMPLETE
- 'OK))))
+ (and (memq (process-status imap-process) '(open run))
+ (or (assq tag imap-failed-tags)
+ (if imap-continuation
+ 'INCOMPLETE
+ 'OK)))))
(defun imap-sentinel (process string)
(delete-process process))
set-face-stipple set-frame-face-alist track-mouse
url-retrieve w3-form-encode-xwfu window-at
window-edges x-color-values x-popup-menu browse-url
- frame-char-height frame-char-width))
+ frame-char-height frame-char-width
+ xml-parse-region))
(maybe-bind '(buffer-display-table
buffer-file-coding-system font-lock-defaults
global-face-data gnus-article-x-face-too-ugly
set-face-doc-string set-glyph-image set-glyph-property
specifier-instance url-generic-parse-url
valid-image-instantiator-format-p w3-do-setup
- window-pixel-height window-pixel-width)))
+ window-pixel-height window-pixel-width
+ xml-parse-region)))
;; T-gnus.
(let ((functions-variables
(cond
((featurep 'xemacs)
- '((xml-parse-region)))
+ nil)
((>= emacs-major-version 21)
'((function-max-args smiley-encode-buffer)))
((boundp 'MULE)
'((coding-system-get
compose-mail file-name-extension find-coding-systems-region
function-max-args get-charset-property shell-command-to-string
- smiley-encode-buffer xml-parse-region)))
+ smiley-encode-buffer)))
(t
- '((function-max-args smiley-encode-buffer xml-parse-region))))))
+ '((function-max-args smiley-encode-buffer))))))
(maybe-fbind (car functions-variables))
(maybe-bind (car (cdr functions-variables))))
(require 'mail-parse)
(require 'mml))
+(require 'rfc822)
+
(defgroup message '((user-mail-address custom-variable)
(user-full-name custom-variable))
"Mail and news message composing."
'(From Subject Date (optional . In-Reply-To) Message-ID Lines
(optional . User-Agent))
"*Headers to be generated or prompted for when mailing a message.
-RFC822 required that From, Date, To, Subject and Message-ID be
+It is recommended that From, Date, To, Subject and Message-ID be
included. Organization, Lines and User-Agent are optional."
:group 'message-mail
:group 'message-headers
["Send Message" message-send-and-exit
,@(if (featurep 'xemacs) '(t)
'(:help "Send this message"))]
- ["Abort Message" message-dont-send
+ ["Postpone Message" message-dont-send
,@(if (featurep 'xemacs) '(t)
'(:help "File this draft message and exit"))]
["Kill Message" message-kill-buffer
(message
"Denied posting -- the From looks strange: \"%s\"." from)
nil)
+ ((let ((addresses (rfc822-addresses from)))
+ (while (and addresses
+ (not (eq (string-to-char (car addresses)) ?\()))
+ (setq addresses (cdr addresses)))
+ addresses)
+ (message
+ "Denied posting -- bad From address: \"%s\"." from)
+ nil)
(t t))))
;; Check the Reply-To header.
(message-check 'reply-to
`capitalize', `downcase', `upcase', and
`upcase-initials'.")
+(defvar mm-path-name-rewrite-functions nil
+ "*List of functions used for rewriting path names of MIME parts.
+This is used when viewing parts externally , and is meant for
+transforming the path name so that non-compliant programs can
+find the file where it's saved.
+
+Each function takes a file name as input and returns a file name.")
+
(defvar mm-file-name-replace-whitespace nil
"String used for replacing whitespace characters; default is `\"_\"'.")
(mm-handle-set-undisplayer handle function)))
(defun mm-destroy-postponed-undisplay-list ()
- (message "Destroying external MIME viewers")
- (mm-destroy-parts mm-postponed-undisplay-list))
+ (when mm-postponed-undisplay-list
+ (message "Destroying external MIME viewers")
+ (mm-destroy-parts mm-postponed-undisplay-list)))
(defun mm-dissect-buffer (&optional no-strict-mime)
"Dissect the current buffer and return a list of MIME handles."
(mm-handle-set-undisplayer handle mm)))))
;; The function is a string to be executed.
(mm-insert-part handle)
- (let* ((dir (make-temp-name (expand-file-name "emm." mm-tmp-directory)))
+ (let* ((dir (make-temp-name
+ (expand-file-name "emm." mm-tmp-directory)))
(filename (mail-content-type-get
(mm-handle-disposition handle) 'filename))
(mime-info (mailcap-mime-info
(let ((coding-system-for-write mm-binary-coding-system))
(write-region (point-min) (point-max) file nil 'nomesg))
(message "Viewing with %s" method)
- (cond (needsterm
- (unwind-protect
- (if window-system
- (start-process "*display*" nil
- mm-external-terminal-program
- "-e" shell-file-name
- shell-command-switch
- (mm-mailcap-command
- method file (mm-handle-type handle)))
- (require 'term)
- (require 'gnus-win)
- (set-buffer
- (setq buffer
- (make-term "display"
- shell-file-name
- nil
- shell-command-switch
- (mm-mailcap-command
- method file
- (mm-handle-type handle)))))
- (term-mode)
- (term-char-mode)
- (set-process-sentinel
- (get-buffer-process buffer)
- `(lambda (process state)
- (if (eq 'exit (process-status process))
- (gnus-configure-windows
- ',gnus-current-window-configuration))))
- (gnus-configure-windows 'display-term))
- (mm-handle-set-external-undisplayer handle (cons file buffer)))
- (message "Displaying %s..." (format method file))
- 'external)
- (copiousoutput
- (with-current-buffer outbuf
- (forward-line 1)
- (mm-insert-inline
- handle
- (unwind-protect
- (progn
- (call-process shell-file-name nil
- (setq buffer
- (generate-new-buffer " *mm*"))
- nil
- shell-command-switch
- (mm-mailcap-command
- method file (mm-handle-type handle)))
- (if (buffer-live-p buffer)
- (save-excursion
- (set-buffer buffer)
- (buffer-string))))
- (progn
- (ignore-errors (delete-file file))
- (ignore-errors (delete-directory
- (file-name-directory file)))
- (ignore-errors (kill-buffer buffer))))))
- 'inline)
- (t
- (unwind-protect
- (start-process "*display*"
- (setq buffer
- (generate-new-buffer " *mm*"))
+ (cond
+ (needsterm
+ (unwind-protect
+ (if window-system
+ (start-process "*display*" nil
+ mm-external-terminal-program
+ "-e" shell-file-name
+ shell-command-switch
+ (mm-mailcap-command
+ method file (mm-handle-type handle)))
+ (require 'term)
+ (require 'gnus-win)
+ (set-buffer
+ (setq buffer
+ (make-term "display"
shell-file-name
+ nil
shell-command-switch
(mm-mailcap-command
- method file (mm-handle-type handle)))
- (mm-handle-set-external-undisplayer handle (cons file buffer)))
- (message "Displaying %s..." (format method file))
- 'external)))))))
+ method file
+ (mm-handle-type handle)))))
+ (term-mode)
+ (term-char-mode)
+ (set-process-sentinel
+ (get-buffer-process buffer)
+ `(lambda (process state)
+ (if (eq 'exit (process-status process))
+ (gnus-configure-windows
+ ',gnus-current-window-configuration))))
+ (gnus-configure-windows 'display-term))
+ (mm-handle-set-external-undisplayer handle (cons file buffer)))
+ (message "Displaying %s..." (format method file))
+ 'external)
+ (copiousoutput
+ (with-current-buffer outbuf
+ (forward-line 1)
+ (mm-insert-inline
+ handle
+ (unwind-protect
+ (progn
+ (call-process shell-file-name nil
+ (setq buffer
+ (generate-new-buffer " *mm*"))
+ nil
+ shell-command-switch
+ (mm-mailcap-command
+ method file (mm-handle-type handle)))
+ (if (buffer-live-p buffer)
+ (save-excursion
+ (set-buffer buffer)
+ (buffer-string))))
+ (progn
+ (ignore-errors (delete-file file))
+ (ignore-errors (delete-directory
+ (file-name-directory file)))
+ (ignore-errors (kill-buffer buffer))))))
+ 'inline)
+ (t
+ (unwind-protect
+ (start-process "*display*"
+ (setq buffer
+ (generate-new-buffer " *mm*"))
+ shell-file-name
+ shell-command-switch
+ (mm-mailcap-command
+ method file (mm-handle-type handle)))
+ (mm-handle-set-external-undisplayer
+ handle (cons file buffer)))
+ (message "Displaying %s..." (format method file))
+ 'external)))))))
(defun mm-mailcap-command (method file type-list)
(let ((ctl (cdr type-list))
(push "%" out))
((string= total "%s")
(setq uses-stdin nil)
- (push (mm-quote-arg file) out))
+ (push (mm-quote-arg
+ (gnus-map-function mm-path-name-rewrite-functions file)) out))
((string= total "%t")
(push (mm-quote-arg (car type-list)) out))
(t
(push (mm-quote-arg (or (cdr (assq (intern sub) ctl)) "")) out))))
(push (substring method beg (length method)) out)
- (if uses-stdin
- (progn
- (push "<" out)
- (push (mm-quote-arg file) out)))
+ (when uses-stdin
+ (push "<" out)
+ (push (mm-quote-arg
+ (gnus-map-function mm-path-name-rewrite-functions file))
+ out))
(mapconcat 'identity (nreverse out) "")))
(defun mm-remove-parts (handles)
(defun mm-save-part-to-file (handle file)
(mm-with-unibyte-buffer
- (or (mm-insert-part handle)
- (error "Error with message"))
+ (mm-insert-part handle)
(let ((coding-system-for-write 'binary)
;; Don't re-compress .gz & al. Arguably we should make
;; `file-name-handler-alist' nil, but that would chop
(mm-insert-inline
handle
(concat "\n-- \n"
- (if (fboundp 'vcard-pretty-print)
- (vcard-pretty-print (mm-get-part handle))
- (vcard-format-string
- (vcard-parse-string (mm-get-part handle)
- 'vcard-standard-filter))))))
+ (ignore-errors
+ (if (fboundp 'vcard-pretty-print)
+ (vcard-pretty-print (mm-get-part handle))
+ (vcard-format-string
+ (vcard-parse-string (mm-get-part handle)
+ 'vcard-standard-filter)))))))
(t
(let ((b (point))
(charset (mail-content-type-get
(easy-menu-define
mml-menu mml-mode-map ""
- '("Mime"
- ("Attach"
- ["File" mml-attach-file t]
- ["Buffer" mml-attach-buffer t]
- ["External" mml-attach-external t])
- ("Insert"
- ["Multipart" mml-insert-multipart t]
- ["Part" mml-insert-part t])
- ("Security"
- ["Sign PGP/MIME" mml-secure-sign-pgpmime t]
- ["Sign S/MIME" mml-secure-sign-smime t]
- ["Encrypt PGP/MIME" mml-secure-encrypt-pgpmime t]
- ["Encrypt S/MIME" mml-secure-encrypt-smime t])
+ '("Attachments"
+ ["Attach File" mml-attach-file t]
+ ["Attach Buffer" mml-attach-buffer t]
+ ["Attach External" mml-attach-external t]
+ ["Insert Part" mml-insert-part t]
+ ["Insert Multipart" mml-insert-multipart t]
+ ["PGP/MIME Sign" mml-secure-sign-pgpmime t]
+ ["PGP/MIME Encrypt" mml-secure-encrypt-pgpmime t]
+ ["S/MIME Sign" mml-secure-sign-smime t]
+ ["S/MIME Encrypt" mml-secure-encrypt-smime t]
;;["Narrow" mml-narrow-to-part t]
- ["Quote" mml-quote-region t]
- ["Validate" mml-validate t]
+ ["Quote MML" mml-quote-region t]
+ ["Validate MML" mml-validate t]
["Preview" mml-preview t]))
(defvar mml-mode nil
(nnoo-declare nnbabyl)
(defvoo nnbabyl-mbox-file (expand-file-name "~/RMAIL")
- "The name of the rmail box file in the users home directory.")
+ "The name of the rmail box file in the users home directory.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnbabyl-active-file (expand-file-name "~/.rmail-active")
- "The name of the active file for the rmail box.")
+ "The name of the active file for the rmail box.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnbabyl-get-new-mail t
- "If non-nil, nnbabyl will check the incoming mail file and split the mail.")
+ "If non-nil, nnbabyl will check the incoming mail file and split the mail.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
+
(defvoo nnbabyl-prepare-save-mail-hook nil
- "Hook run narrowed to an article before saving.")
+ "Hook run narrowed to an article before saving.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
\f
(nnoo-declare nnfolder)
(defvoo nnfolder-directory (expand-file-name message-directory)
- "The name of the nnfolder directory.")
+ "The name of the nnfolder directory.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnfolder-nov-directory nil
"The name of the nnfolder NOV directory.
(defvoo nnfolder-active-file
(nnheader-concat nnfolder-directory "active")
- "The name of the active file.")
+ "The name of the active file.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
;; I renamed this variable to something more in keeping with the general GNU
;; style. -SLB
(defvoo nnfolder-newsgroups-file
(concat (file-name-as-directory nnfolder-directory) "newsgroups")
- "Mail newsgroups description file.")
+ "Mail newsgroups description file.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnfolder-get-new-mail t
- "If non-nil, nnfolder will check the incoming mail file and split the mail.")
+ "If non-nil, nnfolder will check the incoming mail file and split the mail.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnfolder-prepare-save-mail-hook nil
"Hook run narrowed to an article before saving.")
(defvoo nnfolder-save-buffer-hook nil
- "Hook run before saving the nnfolder mbox buffer.")
+ "Hook run before saving the nnfolder mbox buffer.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
+
(defvoo nnfolder-inhibit-expiry nil
- "If non-nil, inhibit expiry.")
+ "If non-nil, inhibit expiry.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
\f
set this to t, and want to set it to nil again, you should always run
the `nnfolder-generate-active-file' command. The function will go
through all nnfolder directories and generate nov databases for them
-all. This may very well take some time.")
+all. This may very well take some time.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnfolder-nov-file-suffix ".nov")
(imap-mailbox-get 'flags))))
(gnus-info-set-marks
info
- (nnimap-update-alist-soft
+ (gnus-update-alist-soft
(cdr pred)
(gnus-compress-sequence
(imap-search (nnimap-mark-to-predicate (cdr pred))))
;; so we remove that mark for gnus since we support dormant
(gnus-info-set-marks
info
- (nnimap-update-alist-soft
+ (gnus-update-alist-soft
'tick
(gnus-remove-from-range
(cdr-safe (assoc 'tick (gnus-info-marks info)))
"Return t iff MARK can be permanently (between IMAP sessions) saved on articles, in GROUP."
(imap-message-flag-permanent-p (nnimap-mark-to-flag mark)))
-(defun nnimap-remassoc (key alist)
- "Delete by side effect any elements of LIST whose car is `equal' to KEY.
-The modified LIST is returned. If the first member
-of LIST has a car that is `equal' to KEY, there is no way to remove it
-by side effect; therefore, write `(setq foo (remassoc key foo))' to be
-sure of changing the value of `foo'."
- (when alist
- (if (equal key (caar alist))
- (cdr alist)
- (setcdr alist (nnimap-remassoc key (cdr alist)))
- alist)))
-
-(defun nnimap-update-alist-soft (key value alist)
- (if value
- (cons (cons key value) (nnimap-remassoc key alist))
- (nnimap-remassoc key alist)))
-
(when nnimap-debug
(require 'trace)
(buffer-disable-undo (get-buffer-create nnimap-debug))
nnimap-mark-to-flag-1
nnimap-mark-to-flag
nnimap-mark-permanent-p
- nnimap-remassoc
- nnimap-update-alist-soft
)))
(provide 'nnimap)
(nnoo-declare nnmbox)
(defvoo nnmbox-mbox-file (expand-file-name "~/mbox")
- "The name of the mail box file in the user's home directory.")
+ "The name of the mail box file in the user's home directory.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnmbox-active-file (expand-file-name "~/.mbox-active")
- "The name of the active file for the mail box.")
+ "The name of the active file for the mail box.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnmbox-get-new-mail t
- "If non-nil, nnmbox will check the incoming mail file and split the mail.")
+ "If non-nil, nnmbox will check the incoming mail file and split the mail.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnmbox-prepare-save-mail-hook nil
- "Hook run narrowed to an article before saving.")
+ "Hook run narrowed to an article before saving.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
\f
(nnoo-declare nnmh)
(defvoo nnmh-directory message-directory
- "*Mail spool directory.")
+ "*Mail spool directory.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnmh-get-new-mail t
- "*If non-nil, nnmh will check the incoming mail file and split the mail.")
+ "*If non-nil, nnmh will check the incoming mail file and split the mail.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnmh-prepare-save-mail-hook nil
- "*Hook run narrowed to an article before saving.")
+ "*Hook run narrowed to an article before saving.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnmh-be-safe nil
"*If non-nil, nnmh will check all articles to make sure whether they are new or not.
Go through the .nnmh-articles file and compare with the actual
articles in this folder. The articles that are \"new\" will be marked
-as unread by Gnus.")
+as unread by Gnus.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
\f
(nnoo-declare nnml)
(defvoo nnml-directory message-directory
- "Spool directory for the nnml mail backend.")
+ "Spool directory for the nnml mail backend.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnml-active-file
(expand-file-name "active" nnml-directory)
- "Mail active file.")
+ "Mail active file.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnml-newsgroups-file
(expand-file-name "newsgroups" nnml-directory)
- "Mail newsgroups description file.")
+ "Mail newsgroups description file.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnml-get-new-mail t
- "If non-nil, nnml will check the incoming mail file and split the mail.")
+ "If non-nil, nnml will check the incoming mail file and split the mail.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnml-nov-is-evil nil
"If non-nil, Gnus will never generate and use nov databases for mail groups.
set this to t, and want to set it to nil again, you should always run
the `nnml-generate-nov-databases' command. The function will go
through all nnml directories and generate nov databases for them
-all. This may very well take some time.")
+all. This may very well take some time.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnml-prepare-save-mail-hook nil
- "Hook run narrowed to an article before saving.")
+ "Hook run narrowed to an article before saving.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
(defvoo nnml-inhibit-expiry nil
- "If non-nil, inhibit expiry.")
+ "If non-nil, inhibit expiry.
+
+This variable is a virtual server slot. See the Gnus manual for details.")
\f
(directory-files
nnml-current-directory t
(concat nnheader-numerical-short-files
- "\\|" (regexp-quote nnml-nov-file-name) "$")))
+ "\\|" (regexp-quote nnml-nov-file-name) "$"
+ "\\|" (regexp-quote nnml-marks-file-name) "$")))
article)
(while articles
(setq article (pop articles))
(let ((overview (concat old-dir nnml-nov-file-name)))
(when (file-exists-p overview)
(rename-file overview (concat new-dir nnml-nov-file-name))))
+ ;; Move .marks file.
+ (let ((marks (concat old-dir nnml-marks-file-name)))
+ (when (file-exists-p marks)
+ (rename-file marks (concat new-dir nnml-marks-file-name))))
(when (<= (length (directory-files old-dir)) 2)
(ignore-errors (delete-directory old-dir)))
;; That went ok, so we change the internal structures.
(setq nnml-article-file-alist
(nnheader-article-to-file-alist nnml-current-directory))))
+(defvoo nnml-marks-file-name ".marks")
+(defvoo nnml-marks-is-evil nil)
+(defvoo nnml-marks nil)
+
+(deffoo nnml-request-set-mark (group actions &optional server)
+ (nnml-possibly-change-directory group server)
+ (unless nnml-marks-is-evil
+ (nnml-open-marks group server)
+ (dolist (action actions)
+ (let ((range (nth 0 action))
+ (what (nth 1 action))
+ (marks (nth 2 action)))
+ (assert (or (eq what 'add) (eq what 'del)) t
+ "Unknown request-set-mark action: %s" what)
+ (dolist (mark marks)
+ (setq nnml-marks (gnus-update-alist-soft
+ mark
+ (funcall (if (eq what 'add) 'gnus-range-add
+ 'gnus-remove-from-range)
+ (cdr (assoc mark nnml-marks)) range)
+ nnml-marks)))))
+ (nnml-save-marks group server))
+ nil)
+
+(deffoo nnml-request-update-info (group info &optional server)
+ (nnml-possibly-change-directory group server)
+ (unless nnml-marks-is-evil
+ (nnml-open-marks group server)
+ ;; Update info using `nnml-marks'.
+ (mapcar (lambda (pred)
+ (gnus-info-set-marks
+ info
+ (gnus-update-alist-soft
+ (cdr pred)
+ (cdr (assq (cdr pred) nnml-marks))
+ (gnus-info-marks info))
+ t))
+ gnus-article-mark-lists)
+ (let ((seen (cdr (assq 'read nnml-marks))))
+ (gnus-info-set-read info
+ (if (and (integerp (car seen))
+ (null (cdr seen)))
+ (list (cons (car seen) (car seen)))
+ seen))))
+ info)
+
+(defun nnml-save-marks (group server)
+ (let ((file-name-coding-system nnmail-pathname-coding-system)
+ (file (expand-file-name nnml-marks-file-name
+ (nnmail-group-pathname group nnml-directory))))
+ (nnml-possibly-create-directory group)
+ (with-temp-file file
+ (erase-buffer)
+ (princ nnml-marks (current-buffer))
+ (insert "\n"))))
+
+(defun nnml-open-marks (group server)
+ (let ((file (expand-file-name
+ nnml-marks-file-name
+ (nnmail-group-pathname group nnml-directory))))
+ (if (file-exists-p file)
+ (setq nnml-marks (condition-case err
+ (with-temp-buffer
+ (nnheader-insert-file-contents file)
+ (read (current-buffer)))
+ (error (or (gnus-yes-or-no-p
+ (format "Error reading nnml marks file %s (%s). Continuing will use marks from .newsrc.eld. Continue? " file err))
+ (error "Cannot read nnml marks file %s (%s)" file err)))))
+ ;; User didn't have a .marks file. Probably first time
+ ;; user of the .marks stuff. Bootstrap it from .newsrc.eld.
+ (let ((info (gnus-get-info
+ (gnus-group-prefixed-name
+ group
+ (gnus-server-to-method (format "nnml:%s" server))))))
+ (nnheader-message 6 "Boostrapping nnml marks...")
+ (setq nnml-marks (gnus-info-marks info))
+ (push (cons 'read (gnus-info-read info)) nnml-marks)
+ (nnml-save-marks group server)))))
+
(provide 'nnml)
;;; nnml.el ends here
(nnslashdot-possibly-change-server group server)
(condition-case why
(unless gnus-nov-is-evil
- (if nnslashdot-threaded
- (nnslashdot-threaded-retrieve-headers articles group)
- (nnslashdot-sane-retrieve-headers articles group)))
+ (nnslashdot-retrieve-headers-1 articles group))
(search-failed (nnslashdot-lose why))))
-(deffoo nnslashdot-threaded-retrieve-headers (articles group)
- (let ((last (car (last articles)))
- (did nil)
- (start 1)
- (sid (caddr (assoc group nnslashdot-groups)))
- (first-comments t)
- (startats '(1))
- headers article subject score from date lines parent point s)
+(deffoo nnslashdot-retrieve-headers-1 (articles group)
+ (let* ((last (car (last articles)))
+ (start (if nnslashdot-threaded 1 (pop articles)))
+ (entry (assoc group nnslashdot-groups))
+ (sid (nth 2 entry))
+ (first-comments t)
+ headers article subject score from date lines parent point cid
+ s startats changed)
(save-excursion
(set-buffer nnslashdot-buffer)
(let ((case-fold-search t))
(nnweb-insert (format nnslashdot-article-url
(nnslashdot-sid-strip sid)) t)
(goto-char (point-min))
- (search-forward "Posted by ")
- (when (looking-at "<a[^>]+>\\([^<]+\\)")
- (setq from (nnweb-decode-entities-string (match-string 1))))
- (search-forward " on ")
+ (re-search-forward "Posted by[ \t\r\n]+")
+ (when (looking-at "\\(<a[^>]+>\\)?[ \t\r\n]*\\([^<\r\n]+\\)")
+ (setq from (nnweb-decode-entities-string (match-string 2))))
+ (search-forward "on ")
(setq date (nnslashdot-date-to-date
(buffer-substring (point) (1- (search-forward "<")))))
(setq lines (/ (- (point)
1 group from date
(concat "<" (nnslashdot-sid-strip sid) "%1@slashdot>")
"" 0 lines nil nil))
- headers))
- (while (and (setq start (pop startats))
- (< start last))
+ headers)
+ (setq start (if nnslashdot-threaded 2 (pop articles))))
+ (while (and start (<= start last))
(setq point (goto-char (point-max)))
(nnweb-insert
(format nnslashdot-comments-url
(nnslashdot-sid-strip sid)
- nnslashdot-threshold 0 start)
+ nnslashdot-threshold 0 (- start 2))
t)
- (when first-comments
+ (when (and nnslashdot-threaded first-comments)
(setq first-comments nil)
(goto-char (point-max))
(while (re-search-backward "startat=\\([0-9]+\\)" nil t)
(unless (memq s startats)
(push s startats)))
(setq startats (sort startats '<)))
+ (setq article (if (and article (< start article)) article start))
(goto-char point)
(while (re-search-forward
"<a name=\"\\([0-9]+\\)\"><\\(b\\|H4\\)>\\([^<]+\\)</\\(b\\|H4\\)>.*score:\\([^)]+\\))"
nil t)
- (setq article (string-to-number (match-string 1))
+ (setq cid (match-string 1)
subject (match-string 3)
score (match-string 5))
+ (unless (assq article (nth 4 entry))
+ (setcar (nthcdr 4 entry) (cons (cons article cid) (nth 4 entry)))
+ (setq changed t))
(when (string-match "^Re: *" subject)
(setq subject (concat "Re: " (substring subject (match-end 0)))))
(setq subject (nnweb-decode-entities-string subject))
- (forward-line 1)
+ (search-forward "<BR>")
(if (looking-at
- "by <a[^>]+>\\([^<]+\\)</a>[ \t\n]*.*(\\([^)]+\\))")
+ "by[ \t\n]+<a[^>]+>\\([^<]+\\)</a>[ \t\n]*(\\(<[^>]+>\\)*\\([^<>)]+\\))")
(progn
(goto-char (- (match-end 0) 5))
(setq from (concat
(nnweb-decode-entities-string (match-string 1))
- " <" (match-string 2) ">")))
+ " <" (match-string 3) ">")))
(setq from "")
- (when (looking-at "by \\(.+\\) on ")
+ (when (looking-at "by \\([^<>]*\\) on ")
(goto-char (- (match-end 0) 5))
(setq from (nnweb-decode-entities-string (match-string 1)))))
(search-forward " on ")
(setq date
(nnslashdot-date-to-date
- (buffer-substring (point) (progn (end-of-line) (point)))))
+ (buffer-substring (point) (progn (skip-chars-forward "^()<>\n\r") (point)))))
(setq lines (/ (abs (- (search-forward "<td ")
(search-forward "</td>")))
70))
(if (looking-at ".*cid=\\([0-9]+\\)")
(match-string 1)
nil))
- (setq did t)
(push
(cons
- (1+ article)
+ article
(make-full-mail-header
- (1+ article)
+ article
(concat subject " (" score ")")
from date
- (concat "<" (nnslashdot-sid-strip sid) "%"
- (number-to-string (1+ article))
- "@slashdot>")
+ (concat "<" (nnslashdot-sid-strip sid) "%" cid "@slashdot>")
(if parent
- (concat "<" (nnslashdot-sid-strip sid) "%"
- (number-to-string (1+ (string-to-number parent)))
- "@slashdot>")
+ (concat "<" (nnslashdot-sid-strip sid) "%"
+ parent "@slashdot>")
"")
0 lines nil nil))
- headers)))))
- (setq nnslashdot-headers (sort headers 'car-less-than-car))
- (save-excursion
- (set-buffer nntp-server-buffer)
- (erase-buffer)
- (mm-with-unibyte-current-buffer
- (dolist (header nnslashdot-headers)
- (nnheader-insert-nov (cdr header)))))
- 'nov))
-
-(deffoo nnslashdot-sane-retrieve-headers (articles group)
- (let ((last (car (last articles)))
- (did nil)
- (start (max (1- (car articles)) 1))
- (sid (caddr (assoc group nnslashdot-groups)))
- headers article subject score from date lines parent point)
- (save-excursion
- (set-buffer nnslashdot-buffer)
- (erase-buffer)
- (when (= start 1)
- (nnweb-insert (format nnslashdot-article-url
- (nnslashdot-sid-strip sid)) t)
- (goto-char (point-min))
- (search-forward "Posted by ")
- (when (looking-at "<a[^>]+>\\([^<]+\\)")
- (setq from (nnweb-decode-entities-string (match-string 1))))
- (search-forward " on ")
- (setq date (nnslashdot-date-to-date
- (buffer-substring (point) (1- (search-forward "<")))))
- (forward-line 2)
- (setq lines (count-lines (point)
- (re-search-forward
- "A href=\"\\(http://slashdot.org\\)?/article")))
- (push
- (cons
- 1
- (make-full-mail-header
- 1 group from date (concat "<" (nnslashdot-sid-strip sid)
- "%1@slashdot>")
- "" 0 lines nil nil))
- headers))
- (while (or (not article)
- (and did
- (< article last)))
- (when article
- (setq start (1+ article)))
- (setq point (goto-char (point-max)))
- (nnweb-insert
- (format nnslashdot-comments-url (nnslashdot-sid-strip sid)
- nnslashdot-threshold 4 start)
- t)
- (goto-char point)
- (while (re-search-forward
- "<a name=\"\\([0-9]+\\)\"><\\(b\\|H4\\)>\\([^<]+\\)</\\(b\\|H4\\)>.*score:\\([^)]+\\))"
- nil t)
- (setq article (string-to-number (match-string 1))
- subject (match-string 3)
- score (match-string 5))
- (when (string-match "^Re: *" subject)
- (setq subject (concat "Re: " (substring subject (match-end 0)))))
- (setq subject (nnweb-decode-entities-string subject))
- (forward-line 1)
- (if (looking-at
- "by <a[^>]+>\\([^<]+\\)</a>[ \t\n]*.*(\\([^)]+\\))")
+ headers)
+ (while (and articles (<= (car articles) article))
+ (pop articles))
+ (setq article (1+ article)))
+ (if nnslashdot-threaded
(progn
- (goto-char (- (match-end 0) 5))
- (setq from (concat
- (nnweb-decode-entities-string (match-string 1))
- " <" (match-string 2) ">")))
- (setq from "")
- (when (looking-at "by \\(.+\\) on ")
- (goto-char (- (match-end 0) 5))
- (setq from (nnweb-decode-entities-string (match-string 1)))))
- (search-forward " on ")
- (setq date
- (nnslashdot-date-to-date
- (buffer-substring (point) (progn (end-of-line) (point)))))
- (setq lines (/ (abs (- (search-forward "<td ")
- (search-forward "</td>")))
- 70))
- (forward-line 2)
- (setq parent
- (if (looking-at ".*cid=\\([0-9]+\\)")
- (match-string 1)
- nil))
- (setq did t)
- (push
- (cons
- (1+ article)
- (make-full-mail-header
- (1+ article) (concat subject " (" score ")")
- from date
- (concat "<" (nnslashdot-sid-strip sid) "%"
- (number-to-string (1+ article))
- "@slashdot>")
- (if parent
- (concat "<" (nnslashdot-sid-strip sid) "%"
- (number-to-string (1+ (string-to-number parent)))
- "@slashdot>")
- "")
- 0 lines nil nil))
- headers))))
- (setq nnslashdot-headers
- (sort headers (lambda (s1 s2) (< (car s1) (car s2)))))
+ (setq start (pop startats))
+ (if start (setq start (+ start 2))))
+ (setq start (pop articles))))))
+ (if changed (nnslashdot-write-groups))
+ (setq nnslashdot-headers (sort headers 'car-less-than-car))
(save-excursion
(set-buffer nntp-server-buffer)
(erase-buffer)
(deffoo nnslashdot-request-article (article &optional group server buffer)
(nnslashdot-possibly-change-server group server)
- (let (contents)
+ (let (contents cid)
(condition-case why
(save-excursion
(set-buffer nnslashdot-buffer)
(goto-char (point-min))
(when (and (stringp article)
(string-match "%\\([0-9]+\\)@" article))
- (setq article (string-to-number (match-string 1 article))))
+ (setq cid (match-string 1 article))
+ (let ((map (nth 4 (assoc group nnslashdot-groups))))
+ (while map
+ (if (equal (cdar map) cid)
+ (setq article (caar map)
+ map nil)
+ (setq map (cdr map))))))
(when (numberp article)
(if (= article 1)
(progn
- (re-search-forward "Posted by *<[^>]+>[^>]*<[^>]+> *on ")
+ (re-search-forward
+ "Posted by")
(search-forward "<BR>")
(setq contents
(buffer-substring
(point)
(progn
(re-search-forward
- "<p>.*A href=\"\\(http://slashdot.org\\)?/article")
+ "< [ \t\r\n]*<A HREF=\"\\(\\(http:\\)?//slashdot\\.org\\)?/article")
(match-beginning 0)))))
- (search-forward (format "<a name=\"%d\">" (1- article)))
+ (setq cid (cdr (assq article
+ (nth 4 (assoc group nnslashdot-groups)))))
+ (search-forward (format "<a name=\"%s\">" cid))
(setq contents
(buffer-substring
- (re-search-forward "<td[^>]+>")
+ (re-search-forward "<td[^>]*>")
(search-forward "</td>")))))))
(search-failed (nnslashdot-lose why)))
(setq gname (concat description " (" sid ")"))
(if (setq elem (assoc gname nnslashdot-groups))
(setcar (cdr elem) articles)
- (push (list gname articles sid (current-time))
+ (push (list gname articles sid (current-time) nil)
nnslashdot-groups))
(goto-char (point-max))
(widen)))
(setq gname (concat description " (" sid ")"))
(if (setq elem (assoc gname nnslashdot-groups))
(setcar (cdr elem) articles)
- (push (list gname articles sid (current-time))
+ (push (list gname articles sid (current-time) nil)
nnslashdot-groups)))))
(incf number 30)))
(search-failed (nnslashdot-lose why)))
(unless nnslashdot-groups
(nnslashdot-read-groups)))
+(defun nnslashdot-make-tuple (tuple n)
+ (prog1
+ tuple
+ (while (> n 1)
+ (unless (cdr tuple)
+ (setcdr tuple (list nil)))
+ (setq tuple (cdr tuple)
+ n (1- n)))))
+
(defun nnslashdot-read-groups ()
(let ((file (expand-file-name "groups" nnslashdot-directory)))
(when (file-exists-p file)
(mm-with-unibyte-buffer
(insert-file-contents file)
(goto-char (point-min))
- (setq nnslashdot-groups (read (current-buffer)))))))
+ (setq nnslashdot-groups (read (current-buffer))))
+ (if (and nnslashdot-groups (< (length (car nnslashdot-groups)) 5))
+ (let ((groups nnslashdot-groups))
+ (while groups
+ (nnslashdot-make-tuple (car groups) 5)
+ (setq groups (cdr groups))))))))
(defun nnslashdot-write-groups ()
(with-temp-file (expand-file-name "groups" nnslashdot-directory)
(defvar smiley-cached-regexp-alist nil)
(defun smiley-update-cache ()
- (dolist (elt smiley-regexp-alist)
+ (dolist (elt (if (symbolp smiley-regexp-alist)
+ (symbol-value smiley-regexp-alist)
+ smiley-regexp-alist))
(let* ((data-directory smiley-data-directory)
(image (find-image (list (list :type 'pbm
:file (nth 2 elt)
(defvar smime-details-buffer "*OpenSSL output*")
+(eval-and-compile
+ (defalias 'smime-make-temp-file
+ (if (fboundp 'make-temp-file)
+ 'make-temp-file
+ (lambda (prefix &optional dir-flag) ;; Simple implementation
+ (expand-file-name
+ (make-temp-name prefix)
+ temporary-file-directory)))))
+
;; Password dialog function
(defun smime-ask-passphrase ()
(certfiles (and (cdr keyfiles) (cadr keyfiles)))
(buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))
(passphrase (smime-ask-passphrase))
- (tmpfile (make-temp-file "smime")))
+ (tmpfile (smime-make-temp-file "smime")))
(if passphrase
(setenv "GNUS_SMIME_PASSPHRASE" passphrase))
(prog1
is expected to contain of a PEM encoded certificate."
(smime-new-details-buffer)
(let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))
- (tmpfile (make-temp-file "smime")))
+ (tmpfile (smime-make-temp-file "smime")))
(prog1
(when (prog1
(apply 'smime-call-openssl-region b e (list buffer tmpfile)
(smime-new-details-buffer)
(let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))
CAs (passphrase (smime-ask-passphrase))
- (tmpfile (make-temp-file "smime")))
+ (tmpfile (smime-make-temp-file "smime")))
(if passphrase
(setenv "GNUS_SMIME_PASSPHRASE" passphrase))
(if (prog1
(caddr curkey)
(smime-get-certfiles keyfile otherkeys)))))
-(defalias 'smime-point-at-eol
- (if (fboundp 'point-at-eol)
- 'point-at-eol
- 'line-end-position))
+(eval-and-compile
+ (defalias 'smime-point-at-eol
+ (if (fboundp 'point-at-eol)
+ 'point-at-eol
+ 'line-end-position)))
(defun smime-buffer-as-string-region (b e)
"Return each line in region between B and E as a list of strings."
+2001-08-20 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+ * gnus.texi (Delayed Articles): New section. Documents
+ gnus-delay.el.
+ (Fancy Mail Splitting): Say that nnmail-cache-accepted-message-ids
+ must be non-nil for splitting with parents to work.
+
+2001-08-19 17:31:15 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Other Marks): Addition.
+ (Positioning Point): New.
+ (Tabulation): New.
+
+2001-08-19 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+ * gnus.texi (Getting Started Reading Mail): Use (nnml "") rather
+ than (nnml "private") as the example server specification. This
+ way, the example group names a few paragraphs further down are
+ correct, and I expect that most people are going to use the empty
+ string as name, anyway. Please holler if that is wrong.
+
+2001-08-18 Simon Josefsson <jas@extundo.com>
+
+ * gnus.texi (Optional Backend Functions): Remove `set'
+ request-set-mark action.
+
+2001-08-18 00:40:10 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Wide Characters): New section.
+
+2001-08-17 Simon Josefsson <jas@extundo.com>
+
+ * gnus.texi: Replace 20,20 with 23,23 for
+ gnus-summary-line-format.
+
+2001-08-17 14:24:14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Group Parameters): Document regexp substitution.
+ (Group Parameters): Addition.
+
2001-08-11 23:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
From Nevin Kapur <nevin@jhu.edu>
@end iftex
@menu
-* Starting Up:: \e$B%K%e!<%9$r8+$D$1$k$N$K$O6lO+$,H<$&$+$bCN$l$J$$\e(B
-* Group Buffer:: \e$B%0%k!<%W$rA*Br$7!"9XFI$7!":o=|$9$k\e(B
-* Summary Buffer:: \e$B5-;v$rFI$_!"J]B8$7!"Ej9F$9$k\e(B
-* Article Buffer:: \e$B5-;v$rI=<($7!"07$&\e(B
-* Composing Messages:: \e$B%a!<%k$H%K%e!<%9$rAw$k$?$a$N>pJs\e(B
-* Select Methods:: Gnus \e$B$OA4$F$N%a%C%;!<%8$r$$$m$$$m$JA*BrJ}K!$GFI$`\e(B
-* Scoring:: \e$B5-;v$KCM$r$D$1$k\e(B
-* Various:: \e$B0lHLE*$J@_Dj\e(B
-* The End:: \e$B$5$i$P!"$=$7$F$5$h$&$J$i\e(B
-* Appendices:: \e$BMQ8l!"\e(BEmacs \e$BF~Lg!"\e(BFAQ\e$B!"Nr;K!"FbIt9=B$\e(B
-* Index:: \e$BJQ?t!"4X?t!"35G0$N:w0z\e(B
-* Key Index:: \e$B%-!<:w0z\e(B
+* Starting Up:: \e$B%K%e!<%9$r8+$D$1$k$N$K$O6lO+$,H<$&$+$bCN\e(B
+ \e$B$l$J$$\e(B
+* Group Buffer:: \e$B%0%k!<%W$rA*Br$7!"9XFI$7!":o=|$9$k\e(B
+* Summary Buffer:: \e$B5-;v$rFI$_!"J]B8$7!"Ej9F$9$k\e(B
+* Article Buffer:: \e$B5-;v$rI=<($7!"07$&\e(B
+* Composing Messages:: \e$B%a!<%k$H%K%e!<%9$rAw$k$?$a$N>pJs\e(B
+* Select Methods:: Gnus \e$B$OA4$F$N%a%C%;!<%8$r$$$m$$$m$JA*Br\e(B
+ \e$BJ}K!$GFI$`\e(B
+* Scoring:: \e$B5-;v$KCM$r$D$1$k\e(B
+* Various:: \e$B0lHLE*$J@_Dj\e(B
+* The End:: \e$B$5$i$P!"$=$7$F$5$h$&$J$i\e(B
+* Appendices:: \e$BMQ8l!"\e(BEmacs \e$BF~Lg!"\e(BFAQ\e$B!"Nr;K!"FbIt9=B$\e(B
+* Index:: \e$BJQ?t!"4X?t!"35G0$N:w0z\e(B
+* Key Index:: \e$B%-!<:w0z\e(B
@detailmenu
--- The Detailed Node Listing ---
Starting Gnus
-* Finding the News:: \e$B%K%e!<%9$r<hF@$9$kJ}K!$rA*$V\e(B
-* The First Time:: \e$B:G=i$K5/F0$7$?$H$-$K\e(B gnus \e$B$O2?$r$9$k$+\e(B
-* The Server is Down:: \e$B$I$&$9$l$P$=$N$h$&$J$H$-$K%a!<%k$r<j$KF~$l$k$3$H\e(B
- \e$B$,$G$-$k$+\e(B
-* Slave Gnusae:: \e$BF1;~$K0l$D0J>e$N\e(B gnus \e$B$r:nF0$5$;$k$3$H$,$G$-$k\e(B
-* Fetching a Group:: \e$B%0%k!<%W$rFI$`$?$a$@$1$K\e(B gnus \e$B$r5/F0$9$k\e(B
-* New Groups:: Gnus \e$B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+\e(B
-* Startup Files:: \e$B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k\e(B--@file{.newsrc}
-* Auto Save:: \e$B%/%i%C%7%e$+$i$N2sI|\e(B
-* The Active File:: \e$BCY$$2s@~$+$i$N%U%!%$%k$N<hF@$K$O;~4V$,$+$+$k\e(B
-* Changing Servers:: \e$B$"$k%5!<%P$+$iJL$N%5!<%P$X0\$j$?$$$+$b$7$l$J$$\e(B
-* Startup Variables:: \e$BJQ99$7$?$$$H;W$&$+$b$7$l$J$$JQ?t\e(B
+* Finding the News:: \e$B%K%e!<%9$r<hF@$9$kJ}K!$rA*$V\e(B
+* The First Time:: \e$B:G=i$K5/F0$7$?$H$-$K\e(B gnus \e$B$O2?$r$9$k$+\e(B
+* The Server is Down:: \e$B$I$&$9$l$P$=$N$h$&$J$H$-$K%a!<%k$r<j$KF~\e(B
+ \e$B$l$k$3$H$,$G$-$k$+\e(B
+* Slave Gnusae:: \e$BF1;~$K0l$D0J>e$N\e(B gnus \e$B$r:nF0$5$;$k$3$H$,\e(B
+ \e$B$G$-$k\e(B
+* Fetching a Group:: \e$B%0%k!<%W$rFI$`$?$a$@$1$K\e(B gnus \e$B$r5/F0$9$k\e(B
+* New Groups:: Gnus \e$B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+\e(B
+* Changing Servers:: \e$B$"$k%5!<%P$+$iJL$N%5!<%P$X0\$j$?$$$+$b$7\e(B
+ \e$B$l$J$$\e(B
+* Startup Files:: \e$B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k\e(B --
+ @file{.newsrc}
+* Auto Save:: \e$B%/%i%C%7%e$+$i$N2sI|\e(B
+* The Active File:: \e$BCY$$2s@~$+$i$N%U%!%$%k$N<hF@$K$O;~4V$,$+\e(B
+ \e$B$+$k\e(B
+* Startup Variables:: \e$BJQ99$7$?$$$H;W$&$+$b$7$l$J$$JQ?t\e(B
New Groups
-* Checking New Groups:: \e$B$I$N%0%k!<%W$,?7$7$$$+$r7hDj$9$k\e(B
-* Subscription Methods:: \e$B?7$7$$%0%k!<%W$KBP$7$F\e(B gnus \e$B$O2?$r$9$Y$-$+\e(B
-* Filtering New Groups:: Gnus \e$B$KFCDj$N?7$7$$%0%k!<%W$rL5;k$5$;$k\e(B
+* Checking New Groups:: \e$B$I$N%0%k!<%W$,?7$7$$$+$r7hDj$9$k\e(B
+* Subscription Methods:: \e$B?7$7$$%0%k!<%W$KBP$7$F\e(B gnus \e$B$O2?$r$9$Y$-\e(B
+ \e$B$+\e(B
+* Filtering New Groups:: Gnus \e$B$KFCDj$N?7$7$$%0%k!<%W$rL5;k$5$;$k\e(B
Group Buffer
-* Group Buffer Format:: \e$BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!\e(B
-* Group Maneuvering:: \e$B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I\e(B
-* Selecting a Group:: \e$B<B:]$K%K%e!<%9$rFI$`\e(B
-* Group Data:: \e$B%0%k!<%W$N>pJs$rJQ99$9$k\e(B
-* Subscription Commands:: \e$B9XFI!"9XFICf;_!">C5n\e(B
-* Group Levels:: \e$B%l%Y%k\e(B? \e$B$=$l$C$F2?\e(B?
-* Group Score:: \e$B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!\e(B
-* Marking Groups:: \e$B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-$^$9\e(B
-* Foreign Groups:: \e$B%0%k!<%W$N:n@.$H=$@5\e(B
-* Group Parameters:: \e$B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l$^$9\e(B
-* Listing Groups:: Gnus \e$B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<($G$-$^$9\e(B
-* Sorting Groups:: \e$B%0%k!<%W$N=gHV$NG[CVBX$(\e(B
-* Group Maintenance:: \e$B$-$l$$$J\e(B @file{.newsrc} \e$B$NJ]$AJ}\e(B
-* Browse Foreign Server:: \e$B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_$h$&\e(B
-* Exiting Gnus:: \e$B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&\e(B
-* Group Topics:: \e$B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d$9$k\e(B
-* Misc Group Stuff:: \e$BB>$K$G$-$k$3$H\e(B
+* Group Buffer Format:: \e$BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!\e(B
+* Group Maneuvering:: \e$B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I\e(B
+* Selecting a Group:: \e$B<B:]$K%K%e!<%9$rFI$`\e(B
+* Subscription Commands:: \e$B9XFI!"9XFICf;_!">C5n\e(B
+* Group Data:: \e$B%0%k!<%W$N>pJs$rJQ99$9$k\e(B
+* Group Levels:: \e$B%l%Y%k\e(B? \e$B$=$l$C$F2?\e(B?
+* Group Score:: \e$B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!\e(B
+* Marking Groups:: \e$B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-\e(B
+ \e$B$^$9\e(B
+* Foreign Groups:: \e$B%0%k!<%W$N:n@.$H=$@5\e(B
+* Group Parameters:: \e$B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l\e(B
+ \e$B$^$9\e(B
+* Listing Groups:: Gnus \e$B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<(\e(B
+ \e$B$G$-$^$9\e(B
+* Sorting Groups:: \e$B%0%k!<%W$N=gHV$NG[CVBX$(\e(B
+* Group Maintenance:: \e$B$-$l$$$J\e(B @file{.newsrc} \e$B$NJ]$AJ}\e(B
+* Browse Foreign Server:: \e$B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_\e(B
+ \e$B$h$&\e(B
+* Exiting Gnus:: \e$B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&\e(B
+* Group Topics:: \e$B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d\e(B
+ \e$B$9$k\e(B
+* Misc Group Stuff:: \e$BB>$K$G$-$k$3$H\e(B
Group Buffer Format
-* Group Line Specification:: \e$B%0%k!<%W%P%C%U%!$N8+$(J}$r7h$a$k\e(B
-* Group Modeline Specification:: \e$B%0%k!<%W%P%C%U%!$N%b!<%I9T\e(B
-* Group Highlighting:: \e$B%0%k!<%W%P%C%U%!$K$-$l$$$K?'$r$D$1$k\e(B
+* Group Line Specification:: \e$B%0%k!<%W%P%C%U%!$N8+$(J}$r7h$a$k\e(B
+* Group Modeline Specification:: \e$B%0%k!<%W%P%C%U%!$N%b!<%I9T\e(B
+* Group Highlighting:: \e$B%0%k!<%W%P%C%U%!$K$-$l$$$K?'$r$D$1$k\e(B
Group Topics
-* Topic Variables:: Lisp \e$B$G%H%T%C%/$r%+%9%?%^%$%:$9$kJ}K!\e(B
-* Topic Commands:: \e$BD64JC1BPOC7?L?Na\e(B
-* Topic Sorting:: \e$B%H%T%C%/KhJL!9$KJB$YBX$($k\e(B
-* Topic Topology:: \e$BA4@$3&$NCO?^\e(B
-* Topic Parameters:: \e$B$"$k%H%T%C%/$NA4$F$N%0%k!<%W$KE,MQ$5$l$k%Q%i%a!<%?\e(B
+* Topic Variables:: Lisp \e$B$G%H%T%C%/$r%+%9%?%^%$%:$9$kJ}K!\e(B
+* Topic Commands:: \e$BD64JC1BPOC7?L?Na\e(B
+* Topic Sorting:: \e$B%H%T%C%/KhJL!9$KJB$YBX$($k\e(B
+* Topic Topology:: \e$BA4@$3&$NCO?^\e(B
+* Topic Parameters:: \e$B$"$k%H%T%C%/$NA4$F$N%0%k!<%W$KE,MQ$5$l$k\e(B
+ \e$B%Q%i%a!<%?\e(B
Misc Group Stuff
-* Scanning New Messages:: Gnus \e$B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&$+$rJ9$/\e(B
-* Group Information:: \e$B%0%k!<%W$H\e(B gnus \e$B$K4X$9$k>pJs$H%X%k%W\e(B
-* Group Timestamp:: Gnus \e$B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k\e(B
-* File Commands:: Gnus \e$B$N%U%!%$%k$NFI$_=q$-\e(B
+* Scanning New Messages:: Gnus \e$B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&\e(B
+ \e$B$+$rJ9$/\e(B
+* Group Information:: \e$B%0%k!<%W$H\e(B gnus \e$B$K4X$9$k>pJs$H%X%k%W\e(B
+* Group Timestamp:: Gnus \e$B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-\e(B
+ \e$BO?$5$;$k\e(B
+* File Commands:: Gnus \e$B$N%U%!%$%k$NFI$_=q$-\e(B
Summary Buffer
-* Summary Buffer Format:: \e$B35N,%P%C%U%!$N304Q$r7hDj$9$k\e(B
-* Summary Maneuvering:: \e$B35N,%P%C%U%!$rF0$-2s$k\e(B
-* Choosing Articles:: \e$B5-;v$rFI$`\e(B
-* Paging the Article:: \e$BFI$s$G$$$k5-;v$r%9%/%m!<%k$9$k\e(B
-* Reply Followup and Post:: \e$B5-;v$rEj9F$9$k\e(B
-* Marking Articles:: \e$B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1$k\e(B
-* Limiting:: \e$B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k\e(B
-* Threading:: \e$B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+\e(B
-* Sorting the Summary Buffer:: \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k$+\e(B
-* Asynchronous Fetching:: Gnus \e$B$O5-;v$r@h$K<hF@$9$k$3$H$,$G$-$k\e(B
-* Article Caching:: \e$B%-%c%C%7%e$K5-;v$rCy$a$F$*$1$k\e(B
-* Persistent Articles:: \e$B5-;v$r4|8B@Z$l>C5n$7$J$/$5$;$k\e(B
-* Article Backlog:: \e$B4{$KFI$s$@5-;v$r;D$7$F$*$/\e(B
-* Saving Articles:: \e$B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!\e(B
-* Decoding Articles:: Gnus \e$B$O0lO"$N\e(B (uu)encode \e$B$5$l$?5-;v$r07$($k\e(B
-* Article Treatment:: \e$B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G$-$k\e(B
-@c * MIME Commands:: Doing MIMEy things with the articles.
-@c * Charsets:: Character set issues.
-* Article Commands:: \e$B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k\e(B
-* Summary Sorting:: \e$B$$$m$$$m$JJ}K!$G35N,%P%C%U%!$rJB$YBX$($k\e(B
-* Finding the Parent:: \e$B;R5-;v$K1g=u$,L5$$$C$F\e(B? \e$B?F5-;v$r<hF@$7$J$5$$\e(B
-* Alternative Approaches:: \e$B=i4|@_Dj$G$J$$35N,$r;H$C$FFI$`\e(B
-* Tree Display:: \e$B$b$C$H;k3PE*$J%9%l%C%I$NI=<(\e(B
-* Mail Group Commands:: \e$B$$$/$D$+$NL?Na$O%a!<%k%0%k!<%W$@$1$G;H$&\e(B
- \e$B$3$H$,$G$-$k\e(B
-* Various Summary Stuff:: \e$BB>$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N\e(B
-* Exiting the Summary Buffer:: \e$B%0%k!<%W%P%C%U%!$KLa$k!"\e(B
- \e$B$^$?$O8=:_$N%0%k!<%W$r:F$SA*Br$9$k\e(B
-* Crosspost Handling:: \e$B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l$k$+\e(B
-* Duplicate Suppression:: \e$B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBX<jCJ\e(B
+* Summary Buffer Format:: \e$B35N,%P%C%U%!$N304Q$r7hDj$9$k\e(B
+* Summary Maneuvering:: \e$B35N,%P%C%U%!$rF0$-2s$k\e(B
+* Choosing Articles:: \e$B5-;v$rFI$`\e(B
+* Paging the Article:: \e$BFI$s$G$$$k5-;v$r%9%/%m!<%k$9$k\e(B
+* Reply Followup and Post:: \e$B5-;v$rEj9F$9$k\e(B
+* Delayed Articles::
+* Marking Articles:: \e$B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1\e(B
+ \e$B$k\e(B
+* Limiting:: \e$B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k\e(B
+* Threading:: \e$B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+\e(B
+* Sorting the Summary Buffer:: \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k\e(B
+ \e$B$+\e(B
+* Asynchronous Fetching:: Gnus \e$B$O5-;v$r@h$K<hF@$9$k$3$H$,$G$-$k\e(B
+* Article Caching:: \e$B%-%c%C%7%e$K5-;v$rCy$a$F$*$1$k\e(B
+* Persistent Articles:: \e$B5-;v$r4|8B@Z$l>C5n$7$J$/$5$;$k\e(B
+* Article Backlog:: \e$B4{$KFI$s$@5-;v$r;D$7$F$*$/\e(B
+* Saving Articles:: \e$B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!\e(B
+* Decoding Articles:: Gnus \e$B$O0lO"$N\e(B (uu)encode \e$B$5$l$?5-;v$r07\e(B
+ \e$B$($k\e(B
+* Article Treatment:: \e$B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G\e(B
+ \e$B$-$k\e(B
+@c * MIME Commands:: Doing MIMEy things with the articles.
+@c * Charsets:: Character set issues.
+* Article Commands:: \e$B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k\e(B
+* Summary Sorting:: \e$B$$$m$$$m$JJ}K!$G35N,%P%C%U%!$rJB$YBX$($k\e(B
+* Finding the Parent:: \e$B;R5-;v$K1g=u$,L5$$$C$F\e(B? \e$B?F5-;v$r<hF@$7$J\e(B
+ \e$B$5$$\e(B
+* Alternative Approaches:: \e$B=i4|@_Dj$G$J$$35N,$r;H$C$FFI$`\e(B
+* Tree Display:: \e$B$b$C$H;k3PE*$J%9%l%C%I$NI=<(\e(B
+* Mail Group Commands:: \e$B$$$/$D$+$NL?Na$O%a!<%k%0%k!<%W$@$1$G;H$&\e(B
+ \e$B$3$H$,$G$-$k\e(B
+* Various Summary Stuff:: \e$BB>$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N\e(B
+* Exiting the Summary Buffer:: \e$B%0%k!<%W%P%C%U%!$KLa$k!"\e(B
+ \e$B$^$?$O8=:_$N%0%k!<%W$r:F$SA*Br$9$k\e(B
+* Crosspost Handling:: \e$B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l\e(B
+ \e$B$k$+\e(B
+* Duplicate Suppression:: \e$B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBX<j\e(B
+ \e$BCJ\e(B
@c * Security:: Decrypt and Verify.
-* Mailing List:: \e$B%a!<%j%s%0%j%9%H%^%$%J!<%b!<%I\e(B
+* Mailing List:: \e$B%a!<%j%s%0%j%9%H%^%$%J!<%b!<%I\e(B
Summary Buffer Format
-* Summary Buffer Lines:: \e$B35N,%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$G$-$k\e(B
-* To From Newsgroups:: \e$B<+J,<+?H$NL>A0$rI=<($7$J$$J}K!\e(B
-* Summary Buffer Mode Line:: \e$B%b!<%I9T$N8+$(J}$r7h$a$i$l$k\e(B
-* Summary Highlighting:: \e$B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k\e(B
+* Summary Buffer Lines:: \e$B35N,%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;X\e(B
+ \e$BDj$G$-$k\e(B
+* To From Newsgroups:: \e$B<+J,<+?H$NL>A0$rI=<($7$J$$J}K!\e(B
+* Summary Buffer Mode Line:: \e$B%b!<%I9T$N8+$(J}$r7h$a$i$l$k\e(B
+* Summary Highlighting:: \e$B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k\e(B
Choosing Articles
-* Choosing Commands:: \e$B5-;v$rA*Br$9$k$?$a$NL?Na\e(B
-* Choosing Variables:: \e$B$3$l$i$NL?Na$K1F6A$r5Z$\$9JQ?t\e(B
+* Choosing Commands:: \e$B5-;v$rA*Br$9$k$?$a$NL?Na\e(B
+* Choosing Variables:: \e$B$3$l$i$NL?Na$K1F6A$r5Z$\$9JQ?t\e(B
Reply, Followup and Post
-* Summary Mail Commands:: \e$B%a!<%k$rAw$k\e(B
-* Summary Post Commands:: \e$B%K%e!<%9$rAw$k\e(B
-* Summary Message Commands:: \e$BB>$N%a%C%;!<%84XO"$NL?Na\e(B
-* Canceling and Superseding:: \e$B!X$"$!!"$"$s$J$U$&$K8@$&$s$8$c$J$+$C$?!Y\e(B
+* Summary Mail Commands:: \e$B%a!<%k$rAw$k\e(B
+* Summary Post Commands:: \e$B%K%e!<%9$rAw$k\e(B
+* Summary Message Commands:: \e$BB>$N%a%C%;!<%84XO"$NL?Na\e(B
+* Canceling and Superseding::
Marking Articles
-* Unread Articles:: \e$BL$FI5-;v$X$N0u\e(B
-* Read Articles:: \e$B4{FI5-;v$X$N0u\e(B
-* Other Marks:: \e$B9XFIEY$K1F6A$7$J$$0u\e(B
-* Setting Marks:: \e$B0u$NIU$1J}$H>C$7J}\e(B
-* Generic Mark Commands:: \e$B0u$r$I$N$h$&$K%+%9%?%^%$%:$9$k$+\e(B
-* Setting Process Marks:: \e$B8e$N<B9T$N$?$a$N5-;v$N0u$NIU$1J}\e(B
+* Unread Articles:: \e$BL$FI5-;v$X$N0u\e(B
+* Read Articles:: \e$B4{FI5-;v$X$N0u\e(B
+* Other Marks:: \e$B9XFIEY$K1F6A$7$J$$0u\e(B
+
+Marking Articles
+
+* Setting Marks:: \e$B0u$NIU$1J}$H>C$7J}\e(B
+* Generic Mark Commands:: \e$B0u$r$I$N$h$&$K%+%9%?%^%$%:$9$k$+\e(B
+* Setting Process Marks:: \e$B8e$N<B9T$N$?$a$N5-;v$N0u$NIU$1J}\e(B
Threading
-* Customizing Threading:: \e$BJQ992DG=$J%9%l%C%I$K1F6A$9$kJQ?t\e(B
-* Thread Commands:: \e$B35N,%P%C%U%!$G$N%9%l%C%I$K4p$E$$$?L?Na\e(B
+* Customizing Threading:: \e$BJQ992DG=$J%9%l%C%I$K1F6A$9$kJQ?t\e(B
+* Thread Commands:: \e$B35N,%P%C%U%!$G$N%9%l%C%I$K4p$E$$$?L?Na\e(B
Customizing Threading
-* Loose Threads:: Gnus \e$B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C%I$K$9$kJ}K!\e(B
-* Filling In Threads:: \e$B%9%l%C%I$rKd$a$k\e(B
-* More Threading:: \e$B%9%l%C%I$r$$$8$/$k$5$i$KB?$/$NJQ?t\e(B
-* Low-Level Threading:: \e$B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&\e(B... \e$B$G$b$"$J$?$O4V\e(B
- \e$B0c$C$F$$$?\e(B!
+* Loose Threads:: Gnus \e$B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C\e(B
+ \e$B%I$K$9$kJ}K!\e(B
+* Filling In Threads:: \e$B%9%l%C%I$rKd$a$k\e(B
+* More Threading:: \e$B%9%l%C%I$r$$$8$/$k$5$i$KB?$/$NJQ?t\e(B
+* Low-Level Threading:: \e$B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&\e(B... \e$B$G$b$"\e(B
+ \e$B$J$?$O4V0c$C$F$$$?\e(B!
Decoding Articles
-* Uuencoded Articles:: \e$B5-;v$r\e(B uuencode \e$B$9$k\e(B
-* Shell Archives:: shar \e$B5-;v$r2rE`$9$k\e(B
-* PostScript Files:: \e$B%]%9%H%9%/%j%W%H$rJ,3d$9$k\e(B
-* Other Files:: \e$BIaDL$NJ]B8$H\e(B binhex.
-* Decoding Variables:: \e$B9,$;$JI|9f2=$N$?$a$NJQ?t\e(B
-* Viewing Files:: \e$BI|9f2=$N7k2L$r8+$?$$\e(B?
+* Uuencoded Articles:: \e$B5-;v$r\e(B uuencode \e$B$9$k\e(B
+* Shell Archives:: shar \e$B5-;v$r2rE`$9$k\e(B
+* PostScript Files:: \e$B%]%9%H%9%/%j%W%H$rJ,3d$9$k\e(B
+* Other Files:: \e$BIaDL$NJ]B8$H\e(B binhex.
+* Decoding Variables:: \e$B9,$;$JI|9f2=$N$?$a$NJQ?t\e(B
+* Viewing Files:: \e$BI|9f2=$N7k2L$r8+$?$$\e(B?
Decoding Variables
-* Rule Variables:: \e$B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$kJQ?t\e(B
-* Other Decode Variables:: \e$BB>$NI|9f2=$NJQ?t\e(B
-* Uuencoding and Posting:: uuencode \e$B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t\e(B
+* Rule Variables:: \e$B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$k\e(B
+ \e$BJQ?t\e(B
+* Other Decode Variables:: \e$BB>$NI|9f2=$NJQ?t\e(B
+* Uuencoding and Posting:: uuencode \e$B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t\e(B
Article Treatment
-* Article Highlighting:: \e$B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?$$\e(B
-* Article Fontisizing:: \e$B6/D4$5$l$?J8$rAGE($K$9$k\e(B
-* Article Hiding:: \e$BFCDj$N>pJs$O>C$75n$j$?$$$H$b;W$&\e(B
-* Article Washing:: \e$B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?4X?t\e(B
-* Article Buttons:: URL \e$B$d\e(B Message-ID \e$B$d\e(B \e$B%"%I%l%9$J$I$r%/%j%C%/$9$k\e(B
-* Article Date:: \e$B$0$:$0$:8@$&$J!"@$3&;~$@\e(B!
-* Article Signature:: \e$B=pL>$C$F2?\e(B?
-* Article Miscellania:: \e$BB>$N$$$m$$$m$J$b$N\e(B
+* Article Highlighting:: \e$B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?\e(B
+ \e$B$$\e(B
+* Article Fontisizing:: \e$B6/D4$5$l$?J8$rAGE($K$9$k\e(B
+* Article Hiding:: \e$BFCDj$N>pJs$O>C$75n$j$?$$$H$b;W$&\e(B
+* Article Washing:: \e$B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?\e(B
+ \e$B4X?t\e(B
+* Article Buttons:: URL \e$B$d\e(B Message-ID \e$B$d\e(B \e$B%"%I%l%9$J$I$r%/%j%C\e(B
+ \e$B%/$9$k\e(B
+* Article Date:: \e$B$0$:$0$:8@$&$J!"@$3&;~$@\e(B!
+* Article Signature:: \e$B=pL>$C$F2?\e(B?
+* Article Miscellania:: \e$BB>$N$$$m$$$m$J$b$N\e(B
Alternative Approaches
-* Pick and Read:: \e$B$^$:!"5-;v$K0u$rIU$1$F!"$=$l$+$iFI$`\e(B
-* Binary Groups:: \e$B$9$Y$F$N5-;v$r<+F0\e(B-\e$BI|9f2=$9$k\e(B
+* Pick and Read:: \e$B$^$:!"5-;v$K0u$rIU$1$F!"$=$l$+$iFI$`\e(B
+* Binary Groups:: \e$B$9$Y$F$N5-;v$r<+F0\e(B-\e$BI|9f2=$9$k\e(B
Various Summary Stuff
-* Summary Group Information:: \e$B>pJs;X8~$NL?Na\e(B
-* Searching for Articles:: \e$BJ#?t5-;vL?Na\e(B
-* Summary Generation Commands:: \e$B35N,%P%C%U%!$N\e(B (\e$B:F\e(B) \e$B:n@.\e(B
-* Really Various Summary Commands:: \e$B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na\e(B
+* Summary Group Information:: \e$B>pJs;X8~$NL?Na\e(B
+* Searching for Articles:: \e$BJ#?t5-;vL?Na\e(B
+* Summary Generation Commands::
+* Really Various Summary Commands:: \e$B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na\e(B
Article Buffer
-* Hiding Headers:: \e$B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k\e(B
-* Using MIME:: @sc{mime} \e$B5-;v$H$7$F8+$;$k\e(B
-* Customizing Articles:: \e$B5-;v$N8+1I$($r;EN)$F$k\e(B
-* Article Keymap:: \e$B5-;v%P%C%U%!$G;H$($k%-!<A`:n\e(B
-* Misc Article:: \e$B$=$NB>\e(B
+* Hiding Headers:: \e$B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k\e(B
+* Using MIME:: @sc{mime} \e$B5-;v$H$7$F8+$;$k\e(B
+* Customizing Articles:: \e$B5-;v$N8+1I$($r;EN)$F$k\e(B
+* Article Keymap:: \e$B5-;v%P%C%U%!$G;H$($k%-!<A`:n\e(B
+* Misc Article:: \e$B$=$NB>\e(B
Composing Messages
-* Mail:: \e$B%a!<%k$HJVEz\e(B
-* Posting Server:: \e$B$I$N%5!<%P!<$rDL$7$FEj9F$9$k$Y$-$+\e(B?
-* Mail and Post:: \e$BF1;~$K%a!<%k$r=P$7JVEz$9$k\e(B
-* Archived Messages:: \e$BAw$C$?%a%C%;!<%8$r\e(B gnus \e$B$,Cy$a$F$*$/$H$3$m\e(B
-* Posting Styles:: \e$B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}K!\e(B
-* Drafts:: \e$B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8\e(B
-* Rejected Articles:: \e$B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K2?$,5/$3$k\e(B?
-@c * Using GPG:: How to use GPG and MML to sign and encrypt messages
+* Mail:: \e$B%a!<%k$HJVEz\e(B
+* Posting Server:: \e$B$I$N%5!<%P!<$rDL$7$FEj9F$9$k$Y$-$+\e(B?
+* Mail and Post:: \e$BF1;~$K%a!<%k$r=P$7JVEz$9$k\e(B
+* Archived Messages:: \e$BAw$C$?%a%C%;!<%8$r\e(B gnus \e$B$,Cy$a$F$*$/$H$3\e(B
+ \e$B$m\e(B
+* Posting Styles:: \e$B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}\e(B
+ \e$BK!\e(B
+* Drafts:: \e$B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8\e(B
+* Rejected Articles:: \e$B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K\e(B
+ \e$B2?$,5/$3$k\e(B?
+@c * Using GPG:: How to use GPG and MML to sign and encrypt messages
Select Methods
-* Server Buffer:: \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\e(B
-* Getting News:: USENET \e$B%K%e!<%9$r\e(B gnus \e$B$GFI$`\e(B
-* Getting Mail:: \e$B8D?ME*$J%a!<%k$r\e(B gnus \e$B$GFI$`\e(B
-* Browsing the Web:: \e$B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r<hF@$9$k\e(B
-* Other Sources:: \e$B%G%#%l%/%H%j!<!"%U%!%$%k!"\e(BSOUP \e$B%Q%1%C%H$rFI$`\e(B
-* Combined Groups:: \e$BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k\e(B
-* Gnus Unplugged:: \e$B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`\e(B
+* Server Buffer:: \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\e(B
+* Getting News:: USENET \e$B%K%e!<%9$r\e(B gnus \e$B$GFI$`\e(B
+* Getting Mail:: \e$B8D?ME*$J%a!<%k$r\e(B gnus \e$B$GFI$`\e(B
+* Browsing the Web:: \e$B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r<hF@$9\e(B
+ \e$B$k\e(B
+* Other Sources:: \e$B%G%#%l%/%H%j!<!"%U%!%$%k!"\e(BSOUP \e$B%Q%1%C%H\e(B
+ \e$B$rFI$`\e(B
+* Combined Groups:: \e$BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k\e(B
+* Gnus Unplugged:: \e$B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`\e(B
Server Buffer
-* Server Buffer Format:: \e$B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k\e(B
-* Server Commands:: \e$B%5!<%P!<$rA`$kL?Na\e(B
-* Example Methods:: \e$B%5!<%P!<;XDj$NNc\e(B
-* Creating a Virtual Server:: \e$B%;%C%7%g%s$NNc\e(B
-* Server Variables:: \e$B$I$NJQ?t$r@_Dj$9$k$+\e(B
-* Servers and Methods:: \e$B%5!<%P!<L>$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k\e(B
-* Unavailable Servers:: \e$B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn$A\e(B
- \e$B$F$$$k$+$b$7$l$J$$\e(B
+* Server Buffer Format:: \e$B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k\e(B
+* Server Commands:: \e$B%5!<%P!<$rA`$kL?Na\e(B
+* Example Methods:: \e$B%5!<%P!<;XDj$NNc\e(B
+* Creating a Virtual Server:: \e$B%;%C%7%g%s$NNc\e(B
+* Server Variables:: \e$B$I$NJQ?t$r@_Dj$9$k$+\e(B
+* Servers and Methods:: \e$B%5!<%P!<L>$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k\e(B
+* Unavailable Servers:: \e$B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn\e(B
+ \e$B$A$F$$$k$+$b$7$l$J$$\e(B
Getting News
-* NNTP:: @sc{nntp} \e$B%5!<%P!<$+$i%K%e!<%9$rFI$`\e(B
-* News Spool:: \e$B%m!<%+%k%9%W!<%k$+$i%K%e!<%9$rFI$`\e(B
+* NNTP:: @sc{nntp} \e$B%5!<%P!<$+$i%K%e!<%9$rFI$`\e(B
+* News Spool:: \e$B%m!<%+%k%9%W!<%k$+$i%K%e!<%9$rFI$`\e(B
+
+@sc{nntp}
+
+* Direct Functions:: \e$B%5!<%P!<$KD>@\@\B3$9$k\e(B
+* Indirect Functions:: \e$B%5!<%P!<$K4V@\E*$K@\B3$9$k\e(B
+* Common Variables:: \e$B$$$/$D$+$N@\B3MQ$N4X?t$,;2>H$9$kJQ?t\e(B
Getting Mail
-* Mail in a Newsreader:: \e$B%K%e!<%9%j!<%@$G%a!<%k\e(B (\e$BBg;v$JA0CV$-\e(B)
-* Getting Started Reading Mail:: \e$B4JC1$JNAM}K\$N$h$&$JNc\e(B
-* Splitting Mail:: \e$B$I$N$h$&$K%a!<%k%0%k!<%W$r:n@.$9$k$+\e(B
-* Mail Sources:: Gnus \e$B$K$I$3$+$i%a!<%k$r<h$C$F$/$k$+$rCN\e(B
- \e$B$i$;$k\e(B
-* Mail Backend Variables:: \e$B%a!<%k$N07$$$r%+%9%?%^%$%:$9$k$?$a$NJQ?t\e(B
-* Fancy Mail Splitting:: Gnus \e$B$OF~$C$FMh$?%a!<%k$NLS$N$h$&$JJ,N%\e(B
- \e$B$r$9$k$3$H$,$G$-$k\e(B
-* Group Mail Splitting:: \e$B%a!<%kJ,3d$r6nF0$9$k$?$a$K%0%k!<%W\e(B
- \e$B%+%9%?%^%$%:$r;H$&!#\e(B
-* Incorporating Old Mail:: \e$B$"$J$?$,;}$C$F$$$k8E$$%a!<%k$r$I$&$9$k$+\e(B?
-* Expiring Mail:: \e$BM_$7$/$J$$%a!<%k$r<h$j=|$/\e(B
-* Washing Mail:: \e$B<hF@$7$?%a!<%k$+$i7y$J$b$N$r<h$j=|$/\e(B
-* Duplicates:: \e$B=EJ#$7$?%a!<%k$r07$&\e(B
-* Not Reading Mail:: \e$BB>$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%(\e(B
- \e$B%s%I$r;H$&\e(B
-* Choosing a Mail Backend:: Gnus \e$B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k\e(B
+* Mail in a Newsreader:: \e$B%K%e!<%9%j!<%@$G%a!<%k\e(B (\e$BBg;v$JA0CV$-\e(B)
+* Getting Started Reading Mail:: \e$B4JC1$JNAM}K\$N$h$&$JNc\e(B
+* Splitting Mail:: \e$B$I$N$h$&$K%a!<%k%0%k!<%W$r:n@.$9$k$+\e(B
+* Mail Sources:: Gnus \e$B$K$I$3$+$i%a!<%k$r<h$C$F$/$k$+$rCN\e(B
+ \e$B$i$;$k\e(B
+* Mail Backend Variables:: \e$B%a!<%k$N07$$$r%+%9%?%^%$%:$9$k$?$a$NJQ?t\e(B
+* Fancy Mail Splitting:: Gnus \e$B$OF~$C$FMh$?%a!<%k$NLS$N$h$&$JJ,N%\e(B
+ \e$B$r$9$k$3$H$,$G$-$k\e(B
+* Group Mail Splitting:: \e$B%a!<%kJ,3d$r6nF0$9$k$?$a$K%0%k!<%W%+%9%?\e(B
+ \e$B%^%$%:$r;H$&\e(B
+* Incorporating Old Mail:: \e$B$"$J$?$,;}$C$F$$$k8E$$%a!<%k$r$I$&$9$k$+\e(B?
+* Expiring Mail:: \e$BM_$7$/$J$$%a!<%k$r<h$j=|$/\e(B
+* Washing Mail:: \e$B<hF@$7$?%a!<%k$+$i7y$J$b$N$r<h$j=|$/\e(B
+* Duplicates:: \e$B=EJ#$7$?%a!<%k$r07$&\e(B
+* Not Reading Mail:: \e$BB>$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%(\e(B
+ \e$B%s%I$r;H$&\e(B
+* Choosing a Mail Backend:: Gnus \e$B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k\e(B
Mail Sources
-* Mail Source Specifiers:: \e$B%a!<%k$N85$,$I$3$+$r;XDj$9$k\e(B
-* Mail Source Customization:: \e$B@$$NCf$K1F6A$9$k$$$/$D$+$NJQ?t\e(B
-* Fetching Mail:: \e$B%a!<%k%=!<%9;X<(;R$r;HMQ$9$k\e(B
+* Mail Source Specifiers:: \e$B%a!<%k$N85$,$I$3$+$r;XDj$9$k\e(B
+* Mail Source Customization:: \e$B@$$NCf$K1F6A$9$k$$$/$D$+$NJQ?t\e(B
+* Fetching Mail:: \e$B%a!<%k%=!<%9;X<(;R$r;HMQ$9$k\e(B
Choosing a Mail Backend
-* Unix Mail Box:: (\e$B$H$F$b\e(B) \e$BI8=`E*$J\e(B Un*x mbox \e$B$r;H$&\e(B
-* Rmail Babyl:: Emacs \e$B$N%W%m%0%i%`$O\e(B rmail \e$B$N\e(B babyl format \e$B$r;H$&\e(B
-* Mail Spool:: \e$B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k\e(B?
-* MH Spool:: mhspool \e$B$N$h$&$J%P%C%/%(%s%I\e(B
-* Mail Folders:: \e$B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k$r;}$D\e(B
-* Comparing Mail Backends:: \e$BF@<:$N?<$$F6;!\e(B
+* Unix Mail Box:: (\e$B$H$F$b\e(B) \e$BI8=`E*$J\e(B Un*x mbox \e$B$r;H$&\e(B
+* Rmail Babyl:: Emacs \e$B$N%W%m%0%i%`$O\e(B rmail \e$B$N\e(B babyl \e$B%U%)!<\e(B
+ \e$B%^%C%H$r;H$&\e(B
+* Mail Spool:: \e$B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k\e(B?
+* MH Spool:: mhspool \e$B$N$h$&$J%P%C%/%(%s%I\e(B
+* Mail Folders:: \e$B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k\e(B
+ \e$B$r;}$D\e(B
+* Comparing Mail Backends:: \e$BF@<:$N?<$$F6;!\e(B
Browsing the Web
-* Web Searches:: \e$BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k\e(B
-* Slashdot:: Slashdot \e$B$N%3%a%s%H$rFI$`\e(B
-* Ultimate:: Ultimate Bulletin Board \e$B%7%9%F%`\e(B
-* Web Archive:: \e$B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`\e(B
-* Web Newspaper:: \e$B%&%'%V$KJ]4I$5$l$??7J9$rFI$`\e(B
-* RSS:: RDF Site Summary \e$B$rFI$`\e(B
-* Customizing w3:: Gnus \e$B$+$i\e(B Emacs/w3 \e$B$rA`:n$9$k\e(B
+* Web Searches:: \e$BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k\e(B
+* Slashdot:: Slashdot \e$B$N%3%a%s%H$rFI$`\e(B
+* Ultimate:: Ultimate Bulletin Board \e$B%7%9%F%`\e(B
+* Web Archive:: \e$B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`\e(B
+* Web Newspaper:: \e$B%&%'%V$KJ]4I$5$l$??7J9$rFI$`\e(B
+* RSS:: RDF Site Summary \e$B$rFI$`\e(B
+* Customizing w3:: Gnus \e$B$+$i\e(B Emacs/w3 \e$B$rA`:n$9$k\e(B
Other Sources
-* Directory Groups:: \e$B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$KFI$`\e(B
-* Anything Groups:: Dired? \e$BC/$,\e(B dired \e$B$J$s$F;H$&$N\e(B?
-* Document Groups:: \e$B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG\e(B
-* SOUP:: @sc{soup} \e$B%Q%1%C%H$r\e(B ``\e$B%*%U%i%$%s\e(B''\e$B$GFI$`\e(B
-* Mail-To-News Gateways:: \e$B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7$F5-;v\e(B
- \e$B$rEj9F$9$k\e(B
-* IMAP:: Gnus \e$B$r\e(B IMAP \e$B$N%/%i%$%"%s%H$H$7$F;H$&\e(B
+* Directory Groups:: \e$B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$K\e(B
+ \e$BFI$`\e(B
+* Anything Groups:: Dired? \e$BC/$,\e(B dired \e$B$J$s$F;H$&$N\e(B?
+* Document Groups:: \e$B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG\e(B
+* SOUP:: @sc{soup} \e$B%Q%1%C%H$r\e(B ``\e$B%*%U%i%$%s\e(B'' \e$B$GFI$`\e(B
+* Mail-To-News Gateways:: \e$B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7\e(B
+ \e$B$F5-;v$rEj9F$9$k\e(B
+* IMAP:: Gnus \e$B$r\e(B IMAP \e$B$N%/%i%$%"%s%H$H$7$F;H$&\e(B
Document Groups
-* Document Server Internals:: \e$B$"$J$?FH<+$NJ8=q<oJL$rDI2C$9$kJ}K!\e(B
+* Document Server Internals:: \e$B$"$J$?FH<+$NJ8=q<oJL$rDI2C$9$kJ}K!\e(B
SOUP
-* SOUP Commands:: @sc{soup} \e$B%Q%1%C%H$r:n@.!"Aw=P$9$kL?Na\e(B
-* SOUP Groups:: @sc{soup} \e$B%Q%1%C%H$rFI$`%P%C%/%(%s%I\e(B
-* SOUP Replies:: @code{nnsoup} \e$B$K%a!<%k$H%K%e!<%9$r0z$-7Q$,$;$kJ}K!\e(B
+* SOUP Commands:: @sc{soup} \e$B%Q%1%C%H$r:n@.!"Aw=P$9$kL?Na\e(B
+* SOUP Groups:: @sc{soup} \e$B%Q%1%C%H$rFI$`%P%C%/%(%s%I\e(B
+* SOUP Replies:: @code{nnsoup} \e$B$K%a!<%k$H%K%e!<%9$r0z$-7Q$,$;\e(B
+ \e$B$kJ}K!\e(B
IMAP
-* Splitting in IMAP:: nnimap \e$B$G%a!<%k$rJ,3d$9$k\e(B
-* Editing IMAP ACLs:: \e$B%a!<%k%\%C%/%9$X$NB>$NMxMQ<T$N;HMQ$r@)8B\e(B/\e$B5v2D$9$k\e(B
-* Expunging mailboxes:: "\e$B%a!<%k%\%C%/%905=L\e(B" \e$B%\%?%s$HEy2A$J$b$N\e(B
+* Splitting in IMAP:: nnimap \e$B$G%a!<%k$rJ,3d$9$k\e(B
+* Editing IMAP ACLs:: \e$B%a!<%k%\%C%/%9$X$NB>$NMxMQ<T$N;HMQ$r@)8B\e(B
+ /\e$B5v2D$9$k\e(B
+* Expunging mailboxes:: "\e$B%a!<%k%\%C%/%905=L\e(B" \e$B%\%?%s$HEy2A$J$b$N\e(B
Combined Groups
-* Virtual Groups:: \e$B$?$/$5$s$N%0%k!<%W$N5-;v$r7k9g$9$k\e(B
-* Kibozed Groups:: \e$B%K%e!<%9%9%W!<%k$NCf$+$i$N5-;v$r8!:w$9$k\e(B
+* Virtual Groups:: \e$B$?$/$5$s$N%0%k!<%W$N5-;v$r7k9g$9$k\e(B
+* Kibozed Groups:: \e$B%K%e!<%9%9%W!<%k$NCf$+$i$N5-;v$r8!:w$9$k\e(B
Gnus Unplugged
-* Agent Basics:: \e$B$3$l$i$O$I$&F0$/$N$+\e(B
-* Agent Categories:: \e$B2?$r%@%&%s%m!<%I$9$k$+$r\e(B gnus \e$B%(!<%8%'%s%H$K65$($kJ}K!\e(B
-* Agent Commands:: \e$B3F%P%C%U%!!<$G$N?7$7$$L?Na\e(B
-* Agent Expiry:: \e$B8E$$5-;v$r>C$9J}K!\e(B
-* Agent and IMAP:: \e$B%(!<%8%'%s%H$r\e(B IMAP \e$B$G;H$&J}K!\e(B
-* Outgoing Messages:: \e$BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+\e(B?
-* Agent Variables:: \e$B%+%9%?%^%$%:$O3Z$7\e(B
-* Example Setup:: \e$B%*%U%i%$%s?M4V$N$?$a$N\e(B @file{.gnus.el} \e$B$NNc\e(B
-* Batching Agents:: @code{cron} \e$B%8%g%V$K$h$k%K%e!<%9<hF@J}K!\e(B
-* Agent Caveats:: \e$B$"$J$?$,M=A[$9$k$3$H$H!"$=$l$,<B:]$K$9$k$3$H\e(B
-* Control Agents:: Offline \e$B$r%3%s%H%m!<%k$9$k\e(B gnus-offline
+* Agent Basics:: \e$B$3$l$i$O$I$&F0$/$N$+\e(B
+* Agent Categories:: \e$B2?$r%@%&%s%m!<%I$9$k$+$r\e(B gnus \e$B%(!<%8%'%s\e(B
+ \e$B%H$K65$($kJ}K!\e(B
+* Agent Commands:: \e$B3F%P%C%U%!!<$G$N?7$7$$L?Na\e(B
+* Agent Expiry:: \e$B8E$$5-;v$r>C$9J}K!\e(B
+* Agent and IMAP:: \e$B%(!<%8%'%s%H$r\e(B IMAP \e$B$G;H$&J}K!\e(B
+* Outgoing Messages:: \e$BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+\e(B?
+* Agent Variables:: \e$B%+%9%?%^%$%:$O3Z$7\e(B
+* Example Setup:: \e$B%*%U%i%$%s?M4V$N$?$a$N\e(B @file{.gnus.el} \e$B$NNc\e(B
+* Batching Agents:: @code{cron} \e$B%8%g%V$K$h$k%K%e!<%9<hF@J}K!\e(B
+* Agent Caveats:: \e$B$"$J$?$,M=A[$9$k$3$H$H!"$=$l$,<B:]$K$9$k\e(B
+ \e$B$3$H\e(B
+* Control Agents:: Offline \e$B$r%3%s%H%m!<%k$9$k\e(B gnus-offline
Agent Categories
-* Category Syntax:: \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
-* Category Buffer:: \e$BJ,N`$r4IM}$9$k%P%C%U%!!<\e(B
-* Category Variables:: \e$B%+%9%?%^%$%6\e(B"\e$B$i\e(B"\e$B%9\e(B
+* Category Syntax:: \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
+* Category Buffer:: \e$BJ,N`$r4IM}$9$k%P%C%U%!!<\e(B
+* Category Variables:: \e$B%+%9%?%^%$%6\e(B"\e$B$i\e(B"\e$B%9\e(B
Agent Commands
-* Group Agent Commands::
-* Summary Agent Commands::
-* Server Agent Commands::
+* Group Agent Commands::
+* Summary Agent Commands::
+* Server Agent Commands::
Scoring
-* Summary Score Commands:: \e$B8=:_$N%0%k!<%W$N$?$a$N%9%3%"EPO?$rDI2C$9$k\e(B
-* Group Score Commands:: \e$B0lHLE*$J%9%3%"L?Na\e(B
-* Score Variables:: \e$B$"$J$?$N%9%3%"$r%+%9%?%^%$%:$9$k\e(B
- (\e$B$^$!!"$J$s$FMQ8l$G$7$g$&\e(B)
-* Score File Format:: \e$B%9%3%"%U%!%$%k$K2?$rF~$l$k$+\e(B
-* Score File Editing:: \e$B<j$G%9%3%"%U%!%$%k$rJT=8$9$k;v$b$G$-$k\e(B
-* Adaptive Scoring:: \e$BBg;P\e(B gnus \e$B$O$"$J$?$,2?$rFI$s$@$+CN$C$F$$$k\e(B
-* Home Score File:: \e$B?7$7$$%9%3%"EPO?$,$I$3$X9T$/$+$r$I$N$h$&$K;X\e(B
- \e$BDj$9$k$+\e(B
-* Followups To Yourself:: \e$B?M$,$"$J$?$KJVEz$7$?$H$-$K\e(B gnus \e$B$K5$IU$+$;$k\e(B
-* Scoring Tips:: \e$B$I$&$d$C$F8z2LE*$K%9%3%"$rIU$1$k$+\e(B
-* Reverse Scoring:: \e$B8E$$$b$N$N;R$G$"$k$H$$$&LdBj$OLdBj$G$O$J$$\e(B
-* Global Score Files:: \e$BCO$r$D$+$_!"<*$r@Z$jNv$/%9%3%"%U%!%$%k\e(B
-* Kill Files:: \e$B$=$l$i$O$^$@$3$3$K$"$j$^$9$,!"L5;k$9$k;v$,$G$-$k\e(B
-* Converting Kill Files:: \e$B>C5n%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k\e(B
-* GroupLens:: \e$B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k\e(B
-* Advanced Scoring:: \e$B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&\e(B
-* Score Decays:: \e$B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"$k\e(B
+* Summary Score Commands:: \e$B8=:_$N%0%k!<%W$N$?$a$N%9%3%"EPO?$rDI2C$9\e(B
+ \e$B$k\e(B
+* Group Score Commands:: \e$B0lHLE*$J%9%3%"L?Na\e(B
+* Score Variables:: \e$B$"$J$?$N%9%3%"$r%+%9%?%^%$%:$9$k\e(B
+ (\e$B$^$!!"$J$s$FMQ8l$G$7$g$&\e(B)
+* Score File Format:: \e$B%9%3%"%U%!%$%k$K2?$rF~$l$k$+\e(B
+* Score File Editing:: \e$B<j$G%9%3%"%U%!%$%k$rJT=8$9$k;v$b$G$-$k\e(B
+* Adaptive Scoring:: \e$BBg;P\e(B (Big Sister) Gnus \e$B$O$"$J$?$,2?$rFI\e(B
+ \e$B$s$@$+CN$C$F$$$k\e(B
+* Home Score File:: \e$B?7$7$$%9%3%"EPO?$,$I$3$X9T$/$+$r$I$N$h$&\e(B
+ \e$B$K;XDj$9$k$+\e(B
+* Followups To Yourself:: \e$B?M$,$"$J$?$KJVEz$7$?$H$-$K\e(B gnus \e$B$K5$IU$+\e(B
+ \e$B$;$k\e(B
+* Scoring On Other Headers:: \e$BI8=`$G$O$J$$%X%C%@!<$G%9%3%"$rIU$1$k\e(B
+* Scoring Tips:: \e$B$I$&$d$C$F8z2LE*$K%9%3%"$rIU$1$k$+\e(B
+* Reverse Scoring:: \e$B8E$$$b$N$N;R$G$"$k$H$$$&LdBj$OLdBj$G$O$J\e(B
+ \e$B$$\e(B
+* Global Score Files:: \e$BCO$r$D$+$_!"<*$r@Z$jNv$/%9%3%"%U%!%$%k\e(B
+* Kill Files:: \e$B$=$l$i$O$^$@$3$3$K$"$j$^$9$,!"L5;k$9$k;v\e(B
+ \e$B$,$G$-$k\e(B
+* Converting Kill Files:: \e$B>C5n%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k\e(B
+* GroupLens:: \e$B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k\e(B
+* Advanced Scoring:: \e$B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&\e(B
+* Score Decays:: \e$B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"\e(B
+ \e$B$k\e(B
GroupLens
-* Using GroupLens:: \e$B$I$N$h$&$K\e(B gnus \e$B$K\e(B GroupLens \e$B$r;H$o$;$k$h$&$K\e(B
- \e$B$9$k$+\e(B
-* Rating Articles:: GropLens \e$B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k$+$rCN\e(B
- \e$B$i$;$k\e(B
-* Displaying Predictions:: GropuLens \e$B$K$h$C$FM?$($i$l$?M=8@$rI=<($9$k\e(B
-* GroupLens Variables:: GoupLens \e$B$r%+%9%?%^%$%:$9$k\e(B
+* Using GroupLens:: \e$B$I$N$h$&$K\e(B gnus \e$B$K\e(B GroupLens \e$B$r;H$o$;$k\e(B
+ \e$B$h$&$K$9$k$+\e(B
+* Rating Articles:: GropLens \e$B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k\e(B
+ \e$B$+$rCN$i$;$k\e(B
+* Displaying Predictions:: GropuLens \e$B$K$h$C$FM?$($i$l$?M=8@$rI=<($9\e(B
+ \e$B$k\e(B
+* GroupLens Variables:: GoupLens \e$B$r%+%9%?%^%$%:$9$k\e(B
Advanced Scoring
-* Advanced Scoring Syntax:: \e$BDj5A\e(B
-* Advanced Scoring Examples:: \e$B$I$N$h$&$K8+$($k$+\e(B
-* Advanced Scoring Tips:: \e$B$=$l$r:GBg8BMxMQ$9$k\e(B
+* Advanced Scoring Syntax:: \e$BDj5A\e(B
+* Advanced Scoring Examples:: \e$B$I$N$h$&$K8+$($k$+\e(B
+* Advanced Scoring Tips:: \e$B$=$l$r:GBg8BMxMQ$9$k\e(B
Various
-* Process/Prefix:: \e$BB?$/$N07$$L?Na$G;H$o$l$k=,47\e(B
-* Interactive:: Gnus \e$B$KB?$/$N<ALd$r?R$M$5$;$k\e(B
-* Symbolic Prefixes:: \e$B$$$/$D$+$N\e(B gnus \e$B$N4X?t$KA*Br8"$rDs6!$9$kJ}K!\e(B
-* Formatting Variables:: \e$B%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$9$k;v\e(B
- \e$B$,$G$-$k\e(B
-* Window Layout:: Gnus \e$B%P%C%U%!%&%#%s%I%&$r@_Dj$9$k\e(B
-* Faces and Fonts:: \e$B%U%'%$%9$,$I$N$h$&$K8+$($k$+$rJQ99$9$k\e(B
-* Compilation:: \e$B$I$N$h$&$K$7$F\e(B gnus \e$B$NB.EY$r>e$2$k$+\e(B
-* Mode Lines:: \e$B%b!<%I9T$K>pJs$rI=<($9$k\e(B
-* Highlighting and Menus:: \e$B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k\e(B
-* Buttons:: \e$B4JC1$J==Jb$G%"%-%l%9g'$rF@$k\e(B
-* Daemons:: Gnus \e$B$O$"$J$?$NN"$GJ*;v$r<B9T$9$k;v$,$G$-$k\e(B
-* NoCeM:: Spam \e$B$dB>$NB@$j$d$9$$?);v$rHr$1$kJ}K!\e(B
-* Undo:: \e$B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k\e(B
-* Moderation:: \e$B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+\e(B
-* XEmacs Enhancements:: XEmacs \e$B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_$9$k\e(B
-* Fuzzy Matching:: \e$BBg$-$JLJLS$C$F2?\e(B?
-* Thwarting Email Spam:: \e$BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!\e(B
-* Various Various:: \e$BK\Ev$K$$$m$$$m$J$b$N\e(B
+* Process/Prefix:: \e$BB?$/$N07$$L?Na$G;H$o$l$k=,47\e(B
+* Interactive:: Gnus \e$B$KB?$/$N<ALd$r?R$M$5$;$k\e(B
+* Symbolic Prefixes:: \e$B$$$/$D$+$N\e(B gnus \e$B$N4X?t$KA*Br8"$rDs6!$9$k\e(B
+ \e$BJ}K!\e(B
+* Formatting Variables:: \e$B%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$9\e(B
+ \e$B$k;v$,$G$-$k\e(B
+* Window Layout:: Gnus \e$B%P%C%U%!%&%#%s%I%&$r@_Dj$9$k\e(B
+* Faces and Fonts:: \e$B%U%'%$%9$,$I$N$h$&$K8+$($k$+$rJQ99$9$k\e(B
+* Compilation:: \e$B$I$N$h$&$K$7$F\e(B gnus \e$B$NB.EY$r>e$2$k$+\e(B
+* Mode Lines:: \e$B%b!<%I9T$K>pJs$rI=<($9$k\e(B
+* Highlighting and Menus:: \e$B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k\e(B
+* Buttons:: \e$B4JC1$J==Jb$G%"%-%l%9g'$rF@$k\e(B
+* Daemons:: Gnus \e$B$O$"$J$?$NN"$GJ*;v$r<B9T$9$k;v$,$G\e(B
+ \e$B$-$k\e(B
+* NoCeM:: Spam \e$B$dB>$NB@$j$d$9$$?);v$rHr$1$kJ}K!\e(B
+* Undo:: \e$B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k\e(B
+* Moderation:: \e$B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+\e(B
+* XEmacs Enhancements:: XEmacs \e$B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_\e(B
+ \e$B$9$k\e(B
+* Fuzzy Matching:: \e$BBg$-$JLJLS$C$F2?\e(B?
+* Thwarting Email Spam:: \e$BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!\e(B
+* Various Various:: \e$BK\Ev$K$$$m$$$m$J$b$N\e(B
Formatting Variables
-* Formatting Basics:: \e$B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"$k\e(B
-* Mode Line Formatting:: \e$B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N5,B'\e(B
-* Advanced Formatting:: \e$B?'!9$JJ}K!$G=PNO$r=$@5$9$k\e(B
-* User-Defined Specs:: Gnus \e$B$K$"$J$?<+?H$N4X?t$r8F$P$;$k\e(B
-* Formatting Fonts:: \e$B;EMM$rB?:L$GAGE($K8+$;$k\e(B
+* Formatting Basics:: \e$B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"\e(B
+ \e$B$k\e(B
+* Mode Line Formatting:: \e$B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N\e(B
+ \e$B5,B'\e(B
+* Advanced Formatting:: \e$B?'!9$JJ}K!$G=PNO$r=$@5$9$k\e(B
+* User-Defined Specs:: Gnus \e$B$K$"$J$?<+?H$N4X?t$r8F$P$;$k\e(B
+* Formatting Fonts:: \e$B;EMM$rB?:L$GAGE($K8+$;$k\e(B
+* Positioning Point:: \e$BA`:n$N8e$G%]%$%s%H$r0\F0$9$k\e(B
+* Tabulation:: \e$BI=$r:n$k\e(B
+* Wide Characters:: \e$BI}$,9-$$J8;z$r07$&\e(B
XEmacs Enhancements
-* Picons:: \e$B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!\e(B
-* Smileys:: \e$BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<($9$kJ}K!\e(B
-* Toolbar:: \e$B%/%j%C%/1n\e(B
-* XVarious:: \e$B$=$NB>$N\e(B XEmacs \e$B$G\e(B Gnus \e$B$JJQ?t\e(B
+* Picons:: \e$B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!\e(B
+* Smileys:: \e$BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<(\e(B
+ \e$B$9$kJ}K!\e(B
+* Toolbar:: \e$B%/%j%C%/1n\e(B
+* XVarious:: \e$B$=$NB>$N\e(B XEmacs \e$B$G\e(B Gnus \e$B$JJQ?t\e(B
Picons
* Picon Basics:: picon \e$B$H$O2?$G!"$I$&$d$C$F<j$KF~$l$k$N$+\e(B
-* Picon Requirements:: XEmacs \e$B$r;H$C$F$J$1$l$P$3$3$+$i$OFI$^$J$$$G\e(B
+* Picon Requirements:: XEmacs \e$B$r;H$C$F$J$1$l$P$3$3$+$i$OFI$^$J\e(B
+ \e$B$$$G\e(B
* Easy Picons:: picon \e$B$NI=<(\e(B --- \e$B3Z$JJ}K!\e(B
-* Hard Picons:: \e$BK\Mh$9$Y$-$3$H!#2?$+$r3X$V$3$H$,$G$-$k$@$m$&\e(B
-* Picon Useless Configuration:: \e$B$=$NB>$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?$j\e(B
- \e$BM7$s$@$j$9$kJQ?t\e(B
+* Hard Picons:: \e$BK\Mh$9$Y$-$3$H!#2?$+$r3X$V$3$H$,$G$-$k$@\e(B
+ \e$B$m$&\e(B
+* Picon Useless Configuration:: \e$B$=$NB>$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?\e(B
+ \e$B$jM7$s$@$j$9$kJQ?t\e(B
Appendices
-* History:: \e$B$I$&$d$C$F\e(B gnus \e$B$,:#F|$N$h$&$K$J$C$?$+\e(B
-* On Writing Manuals:: \e$B$J$<$3$l$,=i?4<TMQ$N0FFb$G$J$$$+\e(B
-* Terminology:: \e$B2f!9$OK\Ev$KFq$7$$!"8l$N$h$&$J8l$r;H$&\e(B
-* Customization:: \e$B$"$J$?$NMW5a$K1h$C$F\e(B gnus \e$B$r;EN)$F$k\e(B
-* Troubleshooting:: \e$B>e<j$/9T$+$J$+$C$?$H$-$K;n$9$+$b$7$l$J$$;v\e(B
-* Gnus Reference Guide:: \e$B?'!9$J5;=QE*$J$b$N\e(B
-* Emacs for Heathens:: Emacs \e$B$NMQ8l$N<jC;$JF3F~\e(B
-* Frequently Asked Questions:: \e$B<ALd$HEz\e(B
+* History:: \e$B$I$&$d$C$F\e(B gnus \e$B$,:#F|$N$h$&$K$J$C$?$+\e(B
+* On Writing Manuals:: \e$B$J$<$3$l$,=i?4<TMQ$N0FFb$G$J$$$+\e(B
+* Terminology:: \e$B2f!9$OK\Ev$KFq$7$$!"8l$N$h$&$J8l$r;H$&\e(B
+* Customization:: \e$B$"$J$?$NMW5a$K1h$C$F\e(B gnus \e$B$r;EN)$F$k\e(B
+* Troubleshooting:: \e$B>e<j$/9T$+$J$+$C$?$H$-$K;n$9$+$b$7$l$J$$\e(B
+ \e$B$3$H\e(B
+* Gnus Reference Guide:: \e$B?'!9$J5;=QE*$J$b$N\e(B
+* Emacs for Heathens:: Emacs \e$B$NMQ8l$N<jC;$JF3F~\e(B
+* Frequently Asked Questions::
History
-* Gnus Versions:: What Gnus versions have been released.
-* Other Gnus Versions:: Other Gnus versions that also have been released.
-* Why?:: Gnus \e$B$NL\E*$O2?\e(B?
-* Compatibility:: Gnus \e$B$O\e(B @sc{gnus} \e$B$H$I$l$/$i$$8_49@-$,$"$k$N\e(B?
-* Conformity:: Gnus \e$B$OA4$F$NI8=`$rK~$?$=$&$H$9$k\e(B
-* Emacsen:: Gnus \e$B$O$$$/$D$+$N8=BeE*$J\e(B Emacs \e$B4D6-$G<B9T$G$-$k\e(B
-* Gnus Development:: Gnus \e$B$,3+H/$5$l$F$$$kJ}K!\e(B
-* Contributors:: \e$BBgNL$N?M!9\e(B
-* New Features:: Gnus \e$B$N?7$7$$;v$K4X$9$k<j$,$+$j\e(B
+* Gnus Versions:: \e$B$I$s$J%P!<%8%g%s$N\e(B Gnus \e$B$,%j%j!<%9$5$l$F\e(B
+ \e$B$$$k$+\e(B
+* Other Gnus Versions:: \e$B%j%j!<%9$5$l$F$$$kB>$N%P!<%8%g%s$N\e(B Gnus
+* Why?:: Gnus \e$B$NL\E*$O2?\e(B?
+* Compatibility:: Gnus \e$B$O\e(B @sc{gnus} \e$B$H$I$l$/$i$$8_49@-$,$"$k\e(B
+ \e$B$N\e(B?
+* Conformity:: Gnus \e$B$OA4$F$NI8=`$rK~$?$=$&$H$9$k\e(B
+* Emacsen:: Gnus \e$B$O$$$/$D$+$N8=BeE*$J\e(B Emacs \e$B4D6-$G<B\e(B
+ \e$B9T$G$-$k\e(B
+* Gnus Development:: Gnus \e$B$,3+H/$5$l$F$$$kJ}K!\e(B
+* Contributors:: \e$BBgNL$N?M!9\e(B
+* New Features:: Gnus \e$B$N?7$7$$;v$K4X$9$k<j$,$+$j\e(B
New Features
-* ding Gnus:: \e$B:G=i$N?7$7$$\e(B Gnus \e$B$G$"$k\e(B Gnus 5.0/5.1 \e$B$N?7$7$$;v\e(B
-* September Gnus:: \e$B8x<0$K\e(B Gnus 5.2/5.3 \e$B$H$7$FCN$i$l$F$$$k$b$N\e(B
-* Red Gnus:: \e$B;0HVL\$N:G>e$N$b$N\e(B---Gnus 5.4/5.5
-* Quassia Gnus:: 2 \e$B$+$1$k\e(B 2 \e$B$O\e(B 4\e$B!"$b$7$/$O\e(B Gnus 5.6/5.7
-* Pterodactyl Gnus:: \e$B8^HVL\!"\e(BP \e$B$G;O$^$k!"$b$7$/$O\e(B Gnus 5.8/5.9 \e$B$H$7$F\e(B
- \e$BCN$i$l$F$$$k$b$N\e(B
+* ding Gnus:: \e$B:G=i$N?7$7$$\e(B Gnus \e$B$G$"$k\e(B Gnus 5.0/5.1 \e$B$N\e(B
+ \e$B?7$7$$;v\e(B
+* September Gnus:: \e$B8x<0$K\e(B Gnus 5.2/5.3 \e$B$H$7$FCN$i$l$F$$$k$b\e(B
+ \e$B$N\e(B
+* Red Gnus:: \e$B;0HVL\$N:G>e$N$b$N\e(B---Gnus 5.4/5.5
+* Quassia Gnus:: 2 \e$B$+$1$k\e(B 2 \e$B$O\e(B 4\e$B!"$b$7$/$O\e(B Gnus 5.6/5.7
+* Pterodactyl Gnus:: \e$B8^HVL\!"\e(BP \e$B$G;O$^$k!"$b$7$/$O\e(B Gnus 5.8
+ /5.9 \e$B$H$7$FCN$i$l$F$$$k$b$N\e(B
Customization
-* Slow/Expensive Connection:: \e$B%m!<%+%k$N\e(B Emacs \e$B$rN)$A>e$2$F!"\e(B
- \e$BB>$N$H$3$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k!#\e(B
-* Slow Terminal Connection:: \e$B1s3V\e(B Emacs \e$B$r<B9T$9$k\e(B
-* Little Disk Space:: \e$BBg$-$J5/F0%U%!%$%k$r;}$D;v$O$^$:$$\e(B
-* Slow Machine:: \e$BB.$$5!3#$rGc$*$&$H46$8$k$G$"$m$&\e(B
+* Slow/Expensive Connection:: \e$B%m!<%+%k$N\e(B Emacs \e$B$rN)$A>e$2$F!"B>$N$H$3\e(B
+ \e$B$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k\e(B
+* Slow Terminal Connection:: \e$B1s3V\e(B Emacs \e$B$r<B9T$9$k\e(B
+* Little Disk Space:: \e$BBg$-$J5/F0%U%!%$%k$r;}$D;v$O$^$:$$\e(B
+* Slow Machine:: \e$BB.$$5!3#$rGc$*$&$H46$8$k$G$"$m$&\e(B
Gnus Reference Guide
-* Gnus Utility Functions:: \e$B;HMQ$G$-$k6&DL$N4X?t$HJQ?t\e(B
-* Backend Interface:: Gnus \e$B$O$I$&$d$C$F%5!<%P!<$HDL?.$9$k$N$+\e(B
-* Score File Syntax:: \e$B%9%3%"%U%!%$%k5,3J$N\e(B BNF \e$BDj5A\e(B
-* Headers:: Gnus \e$B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<$9$k$+\e(B
-* Ranges:: \e$B$?$/$5$s$N?t$r3JG<$9$kJXMx$J7A<0\e(B
-* Group Info:: \e$B%0%k!<%W>pJs7A<0\e(B
-* Extended Interactive:: \e$B5-9f@\F,<-$J$I\e(B
-* Emacs/XEmacs Code:: Gnus \e$B$OA4$F$N6aBe\e(B Emacsen \e$B$GF0:n$9$k\e(B
-* Various File Formats:: Gnus \e$B$N;HMQ$9$k%U%!%$%k$N7A<0\e(B
+* Gnus Utility Functions:: \e$B;HMQ$G$-$k6&DL$N4X?t$HJQ?t\e(B
+* Backend Interface:: Gnus \e$B$O$I$&$d$C$F%5!<%P!<$HDL?.$9$k$N$+\e(B
+* Score File Syntax:: \e$B%9%3%"%U%!%$%k5,3J$N\e(B BNF \e$BDj5A\e(B
+* Headers:: Gnus \e$B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<\e(B
+ \e$B$9$k$+\e(B
+* Ranges:: \e$B$?$/$5$s$N?t$r3JG<$9$kJXMx$J7A<0\e(B
+* Group Info:: \e$B%0%k!<%W>pJs7A<0\e(B
+* Extended Interactive:: \e$B5-9f@\F,<-$J$I\e(B
+* Emacs/XEmacs Code:: Gnus \e$B$OA4$F$N6aBe\e(B Emacsen \e$B$GF0:n$9$k\e(B
+* Various File Formats:: Gnus \e$B$N;HMQ$9$k%U%!%$%k$N7A<0\e(B
Backend Interface
-* Required Backend Functions:: \e$B<BAu$7$J$1$l$P$J$i$J$$4X?t\e(B
-* Optional Backend Functions:: \e$B<BAu$7$J$/$F$b$h$$4X?t\e(B
-* Error Messaging:: \e$B%a%C%;!<%8$d%(%i!<Js9p$rF@$kJ}K!\e(B
-* Writing New Backends:: \e$B8E$$%P%C%/%(%s%I$N3HD%\e(B
-* Hooking New Backends Into Gnus:: Gnus \e$BB&$G$7$J$1$l$P$J$i$J$$$3$H\e(B
-* Mail-like Backends:: \e$B%a!<%kIw%P%C%/%(%s%I$N$?$a$N=u8@\e(B
+* Required Backend Functions:: \e$B<BAu$7$J$1$l$P$J$i$J$$4X?t\e(B
+* Optional Backend Functions:: \e$B<BAu$7$J$/$F$b$h$$4X?t\e(B
+* Error Messaging:: \e$B%a%C%;!<%8$d%(%i!<Js9p$rF@$kJ}K!\e(B
+* Writing New Backends:: \e$B8E$$%P%C%/%(%s%I$N3HD%\e(B
+* Hooking New Backends Into Gnus:: Gnus \e$BB&$G$7$J$1$l$P$J$i$J$$$3$H\e(B
+* Mail-like Backends:: \e$B%a!<%kIw%P%C%/%(%s%I$N$?$a$N=u8@\e(B
Various File Formats
-* Active File Format:: \e$B;HMQ2DG=$J5-;v%0%k!<%W$N>pJs\e(B
-* Newsgroups File Format:: \e$B%0%k!<%W$N5-=R\e(B
+* Active File Format:: \e$B;HMQ2DG=$J5-;v%0%k!<%W$N>pJs\e(B
+* Newsgroups File Format:: \e$B%0%k!<%W$N5-=R\e(B
Emacs for Heathens
-* Keystrokes:: \e$BJ8>O$rF~NO$7$FL?Na$r<B9T$9$k\e(B
-* Emacs Lisp:: \e$BHw$(IU$1$N\e(B Emacs \e$B%W%m%0%i%_%s%08@8l\e(B
+* Keystrokes:: \e$BJ8>O$rF~NO$7$FL?Na$r<B9T$9$k\e(B
+* Emacs Lisp:: \e$BHw$(IU$1$N\e(B Emacs \e$B%W%m%0%i%_%s%08@8l\e(B
@end detailmenu
@end menu
\e$B9`\e(B (@pxref{Terminology}) \e$B$r;2>H$7$F$/$@$5$$!#\e(B
@menu
-* Finding the News:: \e$B%K%e!<%9$r<hF@$9$kJ}K!$rA*$V\e(B
-* The First Time:: \e$B:G=i$K5/F0$7$?$H$-$K\e(B gnus \e$B$O2?$r$9$k$+\e(B
-* The Server is Down:: \e$B$I$&$9$l$P$=$N$h$&$J$H$-$K%a!<%k$r<j$KF~$l$k$3$H\e(B
- \e$B$,$G$-$k$+\e(B
-* Slave Gnusae:: \e$BF1;~$K0l$D0J>e$N\e(B gnus \e$B$r:nF0$5$;$k$3$H$,$G$-$k\e(B
-* Fetching a Group:: \e$B%0%k!<%W$rFI$`$?$a$@$1$K\e(B gnus \e$B$r5/F0$9$k\e(B
-* New Groups:: Gnus \e$B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+\e(B
-* Startup Files:: \e$B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k\e(B--@file{.newsrc}
-* Auto Save:: \e$B%/%i%C%7%e$+$i$N2sI|\e(B
-* The Active File:: \e$BCY$$2s@~$+$i$N%U%!%$%k$N<hF@$K$O;~4V$,$+$+$k\e(B
-* Changing Servers:: \e$B$"$k%5!<%P$+$iJL$N%5!<%P$X0\$j$?$$$+$b$7$l$J$$\e(B
-* Startup Variables:: \e$BJQ99$7$?$$$H;W$&$+$b$7$l$J$$JQ?t\e(B
+* Finding the News:: \e$B%K%e!<%9$r<hF@$9$kJ}K!$rA*$V\e(B
+* The First Time:: \e$B:G=i$K5/F0$7$?$H$-$K\e(B gnus \e$B$O2?$r$9$k$+\e(B
+* The Server is Down:: \e$B$I$&$9$l$P$=$N$h$&$J$H$-$K%a!<%k$r<j$KF~\e(B
+ \e$B$l$k$3$H$,$G$-$k$+\e(B
+* Slave Gnusae:: \e$BF1;~$K0l$D0J>e$N\e(B gnus \e$B$r:nF0$5$;$k$3$H$,\e(B
+ \e$B$G$-$k\e(B
+* Fetching a Group:: \e$B%0%k!<%W$rFI$`$?$a$@$1$K\e(B gnus \e$B$r5/F0$9$k\e(B
+* New Groups:: Gnus \e$B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+\e(B
+* Changing Servers:: \e$B$"$k%5!<%P$+$iJL$N%5!<%P$X0\$j$?$$$+$b$7\e(B
+ \e$B$l$J$$\e(B
+* Startup Files:: \e$B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k\e(B --
+ @file{.newsrc}
+* Auto Save:: \e$B%/%i%C%7%e$+$i$N2sI|\e(B
+* The Active File:: \e$BCY$$2s@~$+$i$N%U%!%$%k$N<hF@$K$O;~4V$,$+\e(B
+ \e$B$+$k\e(B
+* Startup Variables:: \e$BJQ99$7$?$$$H;W$&$+$b$7$l$J$$JQ?t\e(B
@end menu
@node Finding the News
\e$B$9\e(B (@pxref{Scanning New Messages})\e$B!#\e(B
@menu
-* Checking New Groups:: \e$B$I$N%0%k!<%W$,?7$7$$$+$r7hDj$9$k\e(B
-* Subscription Methods:: \e$B?7$7$$%0%k!<%W$KBP$7$F\e(B gnus \e$B$O2?$r$9$Y$-$+\e(B
-* Filtering New Groups:: Gnus \e$B$KFCDj$N?7$7$$%0%k!<%W$rL5;k$5$;$k\e(B
+* Checking New Groups:: \e$B$I$N%0%k!<%W$,?7$7$$$+$r7hDj$9$k\e(B
+* Subscription Methods:: \e$B?7$7$$%0%k!<%W$KBP$7$F\e(B gnus \e$B$O2?$r$9$Y$-\e(B
+ \e$B$+\e(B
+* Filtering New Groups:: Gnus \e$B$KFCDj$N?7$7$$%0%k!<%W$rL5;k$5$;$k\e(B
@end menu
@node Checking New Groups
@end iftex
@menu
-* Group Buffer Format:: \e$BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!\e(B
-* Group Maneuvering:: \e$B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I\e(B
-* Selecting a Group:: \e$B<B:]$K%K%e!<%9$rFI$`\e(B
-* Group Data:: \e$B%0%k!<%W$N>pJs$rJQ99$9$k\e(B
-* Subscription Commands:: \e$B9XFI!"9XFICf;_!">C5n\e(B
-* Group Levels:: \e$B%l%Y%k\e(B? \e$B$=$l$C$F2?\e(B?
-* Group Score:: \e$B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!\e(B
-* Marking Groups:: \e$B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-$^$9\e(B
-* Foreign Groups:: \e$B%0%k!<%W$N:n@.$H=$@5\e(B
-* Group Parameters:: \e$B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l$^$9\e(B
-* Listing Groups:: Gnus \e$B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<($G$-$^$9\e(B
-* Sorting Groups:: \e$B%0%k!<%W$N=gHV$NG[CVBX$(\e(B
-* Group Maintenance:: \e$B$-$l$$$J\e(B @file{.newsrc} \e$B$NJ]$AJ}\e(B
-* Browse Foreign Server:: \e$B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_$h$&\e(B
-* Exiting Gnus:: \e$B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&\e(B
-* Group Topics:: \e$B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d$9$k\e(B
-* Misc Group Stuff:: \e$BB>$K$G$-$k$3$H\e(B
+* Group Buffer Format:: \e$BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!\e(B
+* Group Maneuvering:: \e$B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I\e(B
+* Selecting a Group:: \e$B<B:]$K%K%e!<%9$rFI$`\e(B
+* Subscription Commands:: \e$B9XFI!"9XFICf;_!">C5n\e(B
+* Group Data:: \e$B%0%k!<%W$N>pJs$rJQ99$9$k\e(B
+* Group Levels:: \e$B%l%Y%k\e(B? \e$B$=$l$C$F2?\e(B?
+* Group Score:: \e$B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!\e(B
+* Marking Groups:: \e$B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-\e(B
+ \e$B$^$9\e(B
+* Foreign Groups:: \e$B%0%k!<%W$N:n@.$H=$@5\e(B
+* Group Parameters:: \e$B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l\e(B
+ \e$B$^$9\e(B
+* Listing Groups:: Gnus \e$B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<(\e(B
+ \e$B$G$-$^$9\e(B
+* Sorting Groups:: \e$B%0%k!<%W$N=gHV$NG[CVBX$(\e(B
+* Group Maintenance:: \e$B$-$l$$$J\e(B @file{.newsrc} \e$B$NJ]$AJ}\e(B
+* Browse Foreign Server:: \e$B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_\e(B
+ \e$B$h$&\e(B
+* Exiting Gnus:: \e$B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&\e(B
+* Group Topics:: \e$B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d\e(B
+ \e$B$9$k\e(B
+* Misc Group Stuff:: \e$BB>$K$G$-$k$3$H\e(B
@end menu
@node Group Buffer Format
@section \e$B%0%k!<%W%P%C%U%!$N7A<0\e(B
@menu
-* Group Line Specification:: \e$B%0%k!<%W%P%C%U%!$N8+$(J}$r7h$a$k\e(B
-* Group Modeline Specification:: \e$B%0%k!<%W%P%C%U%!$N%b!<%I9T\e(B
-* Group Highlighting:: \e$B%0%k!<%W%P%C%U%!$K$-$l$$$K?'$r$D$1$k\e(B
+* Group Line Specification:: \e$B%0%k!<%W%P%C%U%!$N8+$(J}$r7h$a$k\e(B
+* Group Modeline Specification:: \e$B%0%k!<%W%P%C%U%!$N%b!<%I9T\e(B
+* Group Highlighting:: \e$B%0%k!<%W%P%C%U%!$K$-$l$$$K?'$r$D$1$k\e(B
@end menu
@node Group Line Specification
\e$B$b$7\e(B @kbd{a} \e$B%3%^%s%I$r%a!<%k%0%k!<%W$G<B9T$7$?$H$-!"\e(B@code{to-list} \e$B%0%k!<\e(B
\e$B%W%Q%i%a!<%?$,$J$1$l$P!"Aw?.;~$K<+F0E*$KIU2C$5$l$^$9!#\e(B
+@findex gnus-mailing-list-mode
+@cindex Mail List Groups
\e$B$b$7$3$N%0%k!<%W%Q%i%a!<%?$,@_Dj$5$l$F$$$k$H!"35N,%P%C%U%!$KF~$C$?$H$-\e(B
\e$B$K\e(B @code{gnus-mailing-list-mode} \e$B$,M-8z$K$J$j$^$9!#\e(B
@item default
\e$B=i4|@_Dj$G$NI=<(5-;v$rI=<($7$^$9!#$3$l$ODL>o$OL$FI5-;v$H0uIU$-5-;v$G$9!#\e(B
+
+@item \e$BG[Ns\e(B
+\e$B=R8l$rK~B-$9$k$h$&$K5-;v$rI=<($7$^$9!#\e(B
+
+\e$B$$$/$D$+Nc$r5s$2$^$9\e(B:
+
+@table @code
+@item [unread]
+\e$BL$FI$N5-;v$@$1$rI=<($7$^$9!#\e(B
+
+@item [not expire]
+\e$B4|8B@Z$l>C5n2DG=$J5-;v0J30$N$9$Y$F$rI=<($7$^$9!#\e(B
+
+@item [and (not reply) (not expirable)]
+\e$B4|8B@Z$l>C5n2DG=$H$9$G$KJV?.$7$?5-;v0J30$N$9$Y$F$rI=<($7$^$9!#\e(B
+@end table
+
+\e$BMxMQ$G$-$k1i;;;R$O\e(B @code{not}\e$B!"\e(B@code{and} \e$B$*$h$S\e(B @code{or} \e$B$G$9!#=R8l\e(B
+\e$B$O\e(B @code{tick}\e$B!"\e(B@code{unsend}\e$B!"\e(B@code{undownload}\e$B!"\e(B@code{unread}\e$B!"\e(B
+@code{read}\e$B!"\e(B@code{dormant}\e$B!"\e(B@code{}\e$B!"\e(B@code{}\e$B!"\e(B@code{}\e$B!"\e(B@code{expire}\e$B!"\e(B
+@code{reply}\e$B!"\e(B@code{killed}\e$B!"\e(B@code{bookmark}\e$B!"\e(B@code{score}\e$B!"\e(B@code{save}\e$B!"\e(B
+@code{cache}\e$B!"\e(B@code{forward} \e$B$*$h$S\e(B @code{recent} \e$B$r4^$_$^$9!#\e(B
@end table
@item comment
\e$B%9$rDs6!$7$^$9\e(B)\e$B!#%H%T%C%/%Q%i%a!<%?$K$D$$$FFI$s$G$_$k$3$H$bLLGr$$$G$7$g\e(B
\e$B$&\e(B (@pxref{Topic Parameters})\e$B!#\e(B
-\e$B%0%k!<%W%Q%i%a!<%?$O\e(B @code{gnus-parameters} \e$B$K@_Dj$9$k$3$H$b$G$-$^$9!#$G\e(B
-\e$B$b$$$/$D$+$N%Q%i%a!<%?!"Nc$($P\e(B @code{visible} \e$B$O8zNO$rH/4x$7$^$;$s!#Nc$G\e(B
-\e$B$9!#\e(B
+\e$B%0%k!<%W%Q%i%a!<%?$O\e(B @code{gnus-parameters} \e$BJQ?t$r2p:_$7$F@_Dj$9$k$3$H$b\e(B
+\e$B$G$-$^$9!#$G$b$$$/$D$+$N%Q%i%a!<%?!"Nc$($P\e(B @code{visible} \e$B$O8zNO$rH/4x$7\e(B
+\e$B$^$;$s!#Nc$G$9!#\e(B
@example
(setq gnus-parameters
- '(("mail\\..*" (gnus-show-threads nil)
- (gnus-use-scoring nil)
- (gnus-summary-line-format
- "%U%R%z%I%(%[%d:%ub%-20,20f%]%) %s\n")
- (gcc-self . t)
- (display . all))
- ("mail\\.me" (gnus-use-scoring t))
- ("list\\..*" (total-expire . t)
- (broken-reply-to . t)))
+ '(("mail\\..*"
+ (gnus-show-threads nil)
+ (gnus-use-scoring nil)
+ (gnus-summary-line-format
+ "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n")
+ (gcc-self . t)
+ (display . all))
+
+ ("^nnimap:\\(foo.bar\\)$"
+ (to-group . "\\1"))
+
+ ("mail\\.me"
+ (gnus-use-scoring t))
+
+ ("list\\..*"
+ (total-expire . t)
+ (broken-reply-to . t))))
@end example
+\e$BJ8;zNs$NCM$O!"\e(B@code{to-group} \e$B$NNc$,<($9$h$&$K!"@55,I=8=$K$h$kCV$-49$($r\e(B
+\e$B<u$1$k$3$H$,$"$j$^$9!#\e(B
+
@node Listing Groups
@section \e$B%0%k!<%W$N0lMwI=<(\e(B
@cindex group listing
@end lisp
@menu
-* Topic Variables:: Lisp \e$B$G%H%T%C%/$r%+%9%?%^%$%:$9$kJ}K!\e(B
-* Topic Commands:: \e$BD64JC1BPOC7?L?Na\e(B
-* Topic Sorting:: \e$B%H%T%C%/KhJL!9$KJB$YBX$($k\e(B
-* Topic Topology:: \e$BA4@$3&$NCO?^\e(B
-* Topic Parameters:: \e$B$"$k%H%T%C%/$NA4$F$N%0%k!<%W$KE,MQ$5$l$k%Q%i%a!<%?\e(B
+* Topic Variables:: Lisp \e$B$G%H%T%C%/$r%+%9%?%^%$%:$9$kJ}K!\e(B
+* Topic Commands:: \e$BD64JC1BPOC7?L?Na\e(B
+* Topic Sorting:: \e$B%H%T%C%/KhJL!9$KJB$YBX$($k\e(B
+* Topic Topology:: \e$BA4@$3&$NCO?^\e(B
+* Topic Parameters:: \e$B$"$k%H%T%C%/$NA4$F$N%0%k!<%W$KE,MQ$5$l$k\e(B
+ \e$B%Q%i%a!<%?\e(B
@end menu
@node Topic Variables
@section \e$B$=$NB>$N%0%k!<%W4XO"\e(B
@menu
-* Scanning New Messages:: Gnus \e$B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&$+$rJ9$/\e(B
-* Group Information:: \e$B%0%k!<%W$H\e(B gnus \e$B$K4X$9$k>pJs$H%X%k%W\e(B
-* Group Timestamp:: Gnus \e$B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k\e(B
-* File Commands:: Gnus \e$B$N%U%!%$%k$NFI$_=q$-\e(B
+* Scanning New Messages:: Gnus \e$B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&\e(B
+ \e$B$+$rJ9$/\e(B
+* Group Information:: \e$B%0%k!<%W$H\e(B gnus \e$B$K4X$9$k>pJs$H%X%k%W\e(B
+* Group Timestamp:: Gnus \e$B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-\e(B
+ \e$BO?$5$;$k\e(B
+* File Commands:: Gnus \e$B$N%U%!%$%k$NFI$_=q$-\e(B
@end menu
@table @kbd
\e$B35N,%P%C%U%!$OK>$`$@$1$?$/$5$s3+$$$?>uBV$K$7$F$*$/$3$H$,$G$-$^$9!#\e(B
@menu
-* Summary Buffer Format:: \e$B35N,%P%C%U%!$N304Q$r7hDj$9$k\e(B
-* Summary Maneuvering:: \e$B35N,%P%C%U%!$rF0$-2s$k\e(B
-* Choosing Articles:: \e$B5-;v$rFI$`\e(B
-* Paging the Article:: \e$BFI$s$G$$$k5-;v$r%9%/%m!<%k$9$k\e(B
-* Reply Followup and Post:: \e$B5-;v$rEj9F$9$k\e(B
-* Marking Articles:: \e$B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1$k\e(B
-* Limiting:: \e$B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k\e(B
-* Threading:: \e$B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+\e(B
-* Sorting the Summary Buffer:: \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k$+\e(B
-* Asynchronous Fetching:: Gnus \e$B$O5-;v$r@h$K<hF@$9$k$3$H$,$G$-$k\e(B
-* Article Caching:: \e$B%-%c%C%7%e$K5-;v$rCy$a$F$*$1$k\e(B
-* Persistent Articles:: \e$B5-;v$r4|8B@Z$l>C5n$7$J$/$5$;$k\e(B
-* Article Backlog:: \e$B4{$KFI$s$@5-;v$r;D$7$F$*$/\e(B
-* Saving Articles:: \e$B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!\e(B
-* Decoding Articles:: Gnus \e$B$O0lO"$N\e(B (uu)encode \e$B$5$l$?5-;v$r07$($k\e(B
-* Article Treatment:: \e$B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G$-$k\e(B
-@c * MIME Commands:: Doing MIMEy things with the articles.
-@c * Charsets:: Character set issues.
-* Article Commands:: \e$B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k\e(B
-* Summary Sorting:: \e$B$$$m$$$m$JJ}K!$G35N,%P%C%U%!$rJB$YBX$($k\e(B
-* Finding the Parent:: \e$B;R5-;v$K1g=u$,L5$$$C$F\e(B? \e$B?F5-;v$r<hF@$7$J$5$$\e(B
-* Alternative Approaches:: \e$B=i4|@_Dj$G$J$$35N,$r;H$C$FFI$`\e(B
-* Tree Display:: \e$B$b$C$H;k3PE*$J%9%l%C%I$NI=<(\e(B
-* Mail Group Commands:: \e$B$$$/$D$+$NL?Na$O%a!<%k%0%k!<%W$@$1$G;H$&\e(B
- \e$B$3$H$,$G$-$k\e(B
-* Various Summary Stuff:: \e$BB>$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N\e(B
-* Exiting the Summary Buffer:: \e$B%0%k!<%W%P%C%U%!$KLa$k\e(B
-* Crosspost Handling:: \e$B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l$k$+\e(B
-* Duplicate Suppression:: \e$B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBX<jCJ\e(B
+* Summary Buffer Format:: \e$B35N,%P%C%U%!$N304Q$r7hDj$9$k\e(B
+* Summary Maneuvering:: \e$B35N,%P%C%U%!$rF0$-2s$k\e(B
+* Choosing Articles:: \e$B5-;v$rFI$`\e(B
+* Paging the Article:: \e$BFI$s$G$$$k5-;v$r%9%/%m!<%k$9$k\e(B
+* Reply Followup and Post:: \e$B5-;v$rEj9F$9$k\e(B
+* Delayed Articles::
+* Marking Articles:: \e$B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1\e(B
+ \e$B$k\e(B
+* Limiting:: \e$B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k\e(B
+* Threading:: \e$B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+\e(B
+* Sorting the Summary Buffer:: \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k\e(B
+ \e$B$+\e(B
+* Asynchronous Fetching:: Gnus \e$B$O5-;v$r@h$K<hF@$9$k$3$H$,$G$-$k\e(B
+* Article Caching:: \e$B%-%c%C%7%e$K5-;v$rCy$a$F$*$1$k\e(B
+* Persistent Articles:: \e$B5-;v$r4|8B@Z$l>C5n$7$J$/$5$;$k\e(B
+* Article Backlog:: \e$B4{$KFI$s$@5-;v$r;D$7$F$*$/\e(B
+* Saving Articles:: \e$B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!\e(B
+* Decoding Articles:: Gnus \e$B$O0lO"$N\e(B (uu)encode \e$B$5$l$?5-;v$r07\e(B
+ \e$B$($k\e(B
+* Article Treatment:: \e$B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G\e(B
+ \e$B$-$k\e(B
+@c * MIME Commands:: Doing MIMEy things with the articles.
+@c * Charsets:: Character set issues.
+* Article Commands:: \e$B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k\e(B
+* Summary Sorting:: \e$B$$$m$$$m$JJ}K!$G35N,%P%C%U%!$rJB$YBX$($k\e(B
+* Finding the Parent:: \e$B;R5-;v$K1g=u$,L5$$$C$F\e(B? \e$B?F5-;v$r<hF@$7$J\e(B
+ \e$B$5$$\e(B
+* Alternative Approaches:: \e$B=i4|@_Dj$G$J$$35N,$r;H$C$FFI$`\e(B
+* Tree Display:: \e$B$b$C$H;k3PE*$J%9%l%C%I$NI=<(\e(B
+* Mail Group Commands:: \e$B$$$/$D$+$NL?Na$O%a!<%k%0%k!<%W$@$1$G;H$&\e(B
+ \e$B$3$H$,$G$-$k\e(B
+* Various Summary Stuff:: \e$BB>$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N\e(B
+* Exiting the Summary Buffer:: \e$B%0%k!<%W%P%C%U%!$KLa$k!"\e(B
+ \e$B$^$?$O8=:_$N%0%k!<%W$r:F$SA*Br$9$k\e(B
+* Crosspost Handling:: \e$B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l\e(B
+ \e$B$k$+\e(B
+* Duplicate Suppression:: \e$B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBX<j\e(B
+ \e$BCJ\e(B
@c * Security:: Decrypt and Verify.
-* Mailing List:: \e$B%a!<%j%s%0%j%9%H%^%$%J!<%b!<%I\e(B
+* Mailing List:: \e$B%a!<%j%s%0%j%9%H%^%$%J!<%b!<%I\e(B
@end menu
@node Summary Buffer Format
@end iftex
@menu
-* Summary Buffer Lines:: \e$B35N,%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$G$-$k\e(B
-* To From Newsgroups:: \e$B<+J,<+?H$NL>A0$rI=<($7$J$$J}K!\e(B
-* Summary Buffer Mode Line:: \e$B%b!<%I9T$N8+$(J}$r7h$a$i$l$k\e(B
-* Summary Highlighting:: \e$B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k\e(B
+* Summary Buffer Lines:: \e$B35N,%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;X\e(B
+ \e$BDj$G$-$k\e(B
+* To From Newsgroups:: \e$B<+J,<+?H$NL>A0$rI=<($7$J$$J}K!\e(B
+* Summary Buffer Mode Line:: \e$B%b!<%I9T$N8+$(J}$r7h$a$i$l$k\e(B
+* Summary Highlighting:: \e$B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k\e(B
@end menu
@findex std11-extract-address-components
\e$BD%\e(B (@pxref{Formatting Variables}) \e$B$r=|$$$F!"IaDL$N\e(B @code{format} \e$BJ8;zNs\e(B
\e$B$HF1$8$h$&$KF0:n$7$^$9!#\e(B
-\e$B9T$K$O>o$K%3%m%s$,B8:_$7$F$$$J$1$l$P$J$j$^$;$s!#A`:n$7$?8e$K!"%+!<%=%k$O\e(B
-\e$B$$$D$b%3%m%s$N>l=j$K0\F0$7$^$9!#\e(B(\e$B$b$A$m$s!"$3$NF0:n$rJQ$($k$3$H$,$G$-$J\e(B
-\e$B$$$H$7$?$i\e(B Gnus \e$B$K$O$"$k$^$8$-$3$H$G$9!#4X?t\e(B @code{gnus-goto-colon} \e$B$r!"\e(B
-\e$B$"$J$?$,9%$-$J%+!<%=%k$NF0$-$K$J$k$h$&$K!"?7$?$K=q$1$PNI$$$N$G$9!#\e(B)
+\e$B9T$K$O>o$K%3%m%s$+%]%$%s%H0LCV$N%^!<%+!<$,B8:_$7$F$$$J$1$l$P$J$j$^$;$s!#\e(B
+\e$BA`:n$7$?8e$K!"%+!<%=%k$O$$$D$b%3%m%s$+%]%$%s%H0LCV$N%^!<%+!<$N>l=j$K0\F0\e(B
+\e$B$7$^$9!#\e(B(\e$B$b$A$m$s!"$3$NF0:n$rJQ$($k$3$H$,$G$-$J$$$H$7$?$i\e(B Gnus \e$B$K$O$"$k\e(B
+\e$B$^$8$-$3$H$G$9!#4X?t\e(B @code{gnus-goto-colon} \e$B$r!"$"$J$?$,9%$-$J%+!<%=%k$N\e(B
+\e$BF0$-$K$J$k$h$&$K!"?7$?$K=q$1$PNI$$$N$G$9!#\e(B)
-\e$B=i4|CM$NJ8;zNs$O\e(B @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n} \e$B$G$9!#\e(B
+\e$B=i4|CM$NJ8;zNs$O\e(B @samp{%U%R%z%I%(%[%4L: %-23,23n%]%) %s\n} \e$B$G$9!#\e(B
\e$B0J2<$NMM<0;X<(J8;z$r;H$&$3$H$,$G$-$^$9\e(B:
'(To Newsgroups))
(setq nnmail-extra-headers gnus-extra-headers)
(setq gnus-summary-line-format
- "%U%R%z%I%(%[%4L: %-20,20f%]%) %s\n")
+ "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
(setq gnus-ignored-from-addresses
"Your Name Here")
@end lisp
@cindex selecting articles
@menu
-* Choosing Commands:: \e$B5-;v$rA*Br$9$k$?$a$NL?Na\e(B
-* Choosing Variables:: \e$B$3$l$i$NL?Na$K1F6A$r5Z$\$9JQ?t\e(B
+* Choosing Commands:: \e$B5-;v$rA*Br$9$k$?$a$NL?Na\e(B
+* Choosing Variables:: \e$B$3$l$i$NL?Na$K1F6A$r5Z$\$9JQ?t\e(B
@end menu
@node Choosing Commands
@section \e$BJVEz!"%U%)%m!<%"%C%W!"Ej9F\e(B
@menu
-* Summary Mail Commands:: \e$B%a!<%k$rAw$k\e(B
-* Summary Post Commands:: \e$B%K%e!<%9$rAw$k\e(B
-* Summary Message Commands:: \e$BB>$N%a%C%;!<%84XO"$NL?Na\e(B
-* Canceling and Superseding:: \e$B!X$"$!!"$"$s$J$U$&$K8@$&$s$8$c$J$+$C$?!Y\e(B
+* Summary Mail Commands:: \e$B%a!<%k$rAw$k\e(B
+* Summary Post Commands:: \e$B%K%e!<%9$rAw$k\e(B
+* Summary Message Commands:: \e$BB>$N%a%C%;!<%84XO"$NL?Na\e(B
+* Canceling and Superseding::
@end menu
@node Summary Mail Commands
\e$B$A$g$C$H3P$($F$*$$$F$/$@$5$$\e(B: 'supersede' (\e$BBeBX\e(B) \e$B$H$$$&8l$NCf$K\e(B 'c' \e$B$OL5\e(B
\e$B$$$H$$$&$3$H$r!#\e(B
+@c TRANSLATEME
+@node Delayed Articles
+@section Delayed Articles
+@cindex delayed sending
+@cindex send delayed
+
+Sometimes, you might wish to delay the sending of a message. For
+example, you might wish to arrange for a message to turn up just in time
+to remind your about the birthday of your Significant Other. For this,
+there is the @code{gnus-delay} package. Setup is simple:
+
+@lisp
+(gnus-delay-initialize)
+@end lisp
+
+@findex gnus-delay-article
+Normally, to send a message you use the @kbd{C-c C-c} command from
+Message mode. To delay a message, use @kbd{C-c C-j}
+(@code{gnus-delay-article}) instead. This will ask you for how long the
+message should be delayed. Possible answers are:
+
+@itemize
+@item
+A time span. Consists of an integer and a letter. For example,
+@code{42d} means to delay for 42 days. Available letters are @code{m}
+(minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M}
+(months) and @code{Y} (years).
+
+@item
+A specific date. Looks like @code{YYYYY-MM-DD}. The message will be
+delayed until that day, at a specific time (eight o'clock by default).
+See also @code{gnus-delay-default-hour}.
+
+@item
+A specific time of day. Given in @code{hh:mm} format, 24h, no am/pm
+stuff. The deadline will be at that time today, except if that time has
+already passed, then it's at the given time tomorrow. So if it's ten
+o'clock in the morning and you specify @code{11:15}, then the deadline
+is one hour and fifteen minutes hence. But if you specify @code{9:20},
+that means a time tomorrow.
+@end itemize
+
+The action of the @code{gnus-delay-article} command is influenced by a
+couple of variables:
+
+@table @code
+@item gnus-delay-default-hour
+@vindex gnus-delay-default-hour
+When you specify a specific date, the message will be due on that hour
+on the given date. Possible values are integers 0 through 23.
+
+@item gnus-delay-default-delay
+@vindex gnus-delay-default-delay
+This is a string and gives the default delay. It can be of any of the
+formats described above.
+
+@item gnus-delay-group
+@vindex gnus-delay-group
+Delayed articles will be kept in this group on the drafts server until
+they are due. You probably don't need to change this. The default
+value is @code{"delayed"}.
+
+@item gnus-delay-header
+@vindex gnus-delay-header
+The deadline for each article will be stored in a header. This variable
+is a string and gives the header name. You probably don't need to
+change this. The default value is @code{"X-Gnus-Delayed"}.
+@end table
+
+The way delaying works is like this: when you use the
+@code{gnus-delay-article} command, you give a certain delay. Gnus
+calculates the deadline of the message and stores it in the
+@code{X-Gnus-Delayed} header and puts the message in the
+@code{nndraft:delayed} group.
+
+And whenever you get new news, Gnus looks through the group for articles
+which are due and sends them. It uses the @code{gnus-delay-send-drafts}
+function for this. By default, this function is added to the hook
+@code{gnus-get-new-news-hook}. But of course, you can change this.
+Maybe you want to use the demon to send drafts? Just tell the demon to
+execute the @code{gnus-delay-send-drafts} function.
+
+@table @code
+@item gnus-delay-initialize
+@findex gnus-delay-initialize
+By default, this function installs the @kbd{C-c C-j} key binding in
+Message mode and @code{gnus-delay-send-drafts} in
+@code{gnus-get-new-news-hook}. But it accepts two optional arguments,
+@code{no-keymap} and @code{no-check}. If @code{no-keymap} is non-nil,
+the @kbd{C-c C-j} binding is not intalled. If @code{no-check} is
+non-nil, @code{gnus-get-new-news-hook} is not changed.
+
+For example, @code{(gnus-delay-initialize nil t)} means to change the
+keymap but not to change @code{gnus-get-new-news-hook}. Presumably, you
+want to use the demon for sending due delayed articles. Just don't
+forget to set that up :-)
+@end table
+
@node Marking Articles
@section \e$B5-;v$K0u$rIU$1$k\e(B
@cindex article marking
\e$B2C$($F!"9XFIEY$K1F6A$7$J$$0u$b$"$j$^$9!#\e(B
@menu
-* Unread Articles:: \e$BL$FI5-;v$X$N0u\e(B
-* Read Articles:: \e$B4{FI5-;v$X$N0u\e(B
-* Other Marks:: \e$B9XFIEY$K1F6A$7$J$$0u\e(B
+* Unread Articles:: \e$BL$FI5-;v$X$N0u\e(B
+* Read Articles:: \e$B4{FI5-;v$X$N0u\e(B
+* Other Marks:: \e$B9XFIEY$K1F6A$7$J$$0u\e(B
@end menu
@ifinfo
@end ifinfo
@menu
-* Setting Marks:: \e$B0u$NIU$1J}$H>C$7J}\e(B
-* Generic Mark Commands:: \e$B0u$r$I$N$h$&$K%+%9%?%^%$%:$9$k$+\e(B
-* Setting Process Marks:: \e$B8e$N<B9T$N$?$a$N5-;v$N0u$NIU$1J}\e(B
+* Setting Marks:: \e$B0u$NIU$1J}$H>C$7J}\e(B
+* Generic Mark Commands:: \e$B0u$r$I$N$h$&$K%+%9%?%^%$%:$9$k$+\e(B
+* Setting Process Marks:: \e$B8e$N<B9T$N$?$a$N5-;v$N0u$NIU$1J}\e(B
@end menu
@node Unread Articles
\e$B$K\e(B @samp{A} \e$B$N0u$,$D$-$^$9\e(B (@code{gnus-replied-mark})\e$B!#\e(B
@vindex gnus-forwarded-mark
-\e$BE>Aw$7$?5-;v$O$9$Y$FFs7eL\$K\e(B @samp{O} \e$B$N0u$,$D$-$^\e(B
+\e$BE>Aw$7$?5-;v$O$9$Y$FFs7eL\$K\e(B @samp{F} \e$B$N0u$,$D$-$^\e(B
\e$B$9\e(B (@code{gnus-forwarded-mark})\e$B!#\e(B
@vindex gnus-recent-mark
\e$B5-;v$OFs7eL\$K\e(B @samp{S} \e$B$N0u$,$D$-$^$9\e(B (@code{gnus-saved-mark})\e$B!#\e(B
@item
+@vindex gnus-unseen-mark
+\e$B$^$@FI$^$l$?$3$H$,$J$$5-;v$OFs7eL\$K\e(B @samp{.} \e$B$N0u$,$D$-$^\e(B
+\e$B$9\e(B (@code{gnus-unseen-mark})\e$B!#\e(B
+
+@item
@vindex gnus-not-empty-thread-mark
@vindex gnus-empty-thread-mark
\e$B$b$7\e(B @samp{%e} \e$B$N;EMM$,;H$o$l$k$H!"%9%l%C%I$,$"$k$+$I$&$+$O!";07eL\\e(B
@end table
@menu
-* Customizing Threading:: \e$BJQ992DG=$J%9%l%C%I$K1F6A$9$kJQ?t\e(B
-* Thread Commands:: \e$B35N,%P%C%U%!$G$N%9%l%C%I$K4p$E$$$?L?Na\e(B
+* Customizing Threading:: \e$BJQ992DG=$J%9%l%C%I$K1F6A$9$kJQ?t\e(B
+* Thread Commands:: \e$B35N,%P%C%U%!$G$N%9%l%C%I$K4p$E$$$?L?Na\e(B
@end menu
@node Customizing Threading
@cindex customizing threading
@menu
-* Loose Threads:: Gnus \e$B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C%I$K$9$kJ}K!\e(B
-* Filling In Threads:: \e$B%9%l%C%I$rKd$a$k\e(B
-* More Threading:: \e$B%9%l%C%I$r$$$8$/$k$5$i$KB?$/$NJQ?t\e(B
-* Low-Level Threading:: \e$B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&\e(B... \e$B$G$b$"$J$?$O4V\e(B
- \e$B0c$C$F$$$?\e(B!
+* Loose Threads:: Gnus \e$B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C\e(B
+ \e$B%I$K$9$kJ}K!\e(B
+* Filling In Threads:: \e$B%9%l%C%I$rKd$a$k\e(B
+* More Threading:: \e$B%9%l%C%I$r$$$8$/$k$5$i$KB?$/$NJQ?t\e(B
+* Low-Level Threading:: \e$B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&\e(B... \e$B$G$b$"\e(B
+ \e$B$J$?$O4V0c$C$F$$$?\e(B!
@end menu
@node Loose Threads
\e$B$^$9!#\e(BGnus \e$B$O$"$J$?$N$?$a$K$=$l$i$rI|9f2=$9$k;v$,$G$-$^$9!#\e(B
@menu
-* Uuencoded Articles:: \e$B5-;v$r\e(B uuencode \e$B$9$k\e(B
-* Shell Archives:: shar \e$B5-;v$r2rE`$9$k\e(B
-* PostScript Files:: \e$B%]%9%H%9%/%j%W%H$rJ,3d$9$k\e(B
-* Other Files:: \e$BIaDL$NJ]B8$H\e(B binhex.
-* Decoding Variables:: \e$B9,$;$JI|9f2=$N$?$a$NJQ?t\e(B
-* Viewing Files:: \e$BI|9f2=$N7k2L$r8+$?$$\e(B?
+* Uuencoded Articles:: \e$B5-;v$r\e(B uuencode \e$B$9$k\e(B
+* Shell Archives:: shar \e$B5-;v$r2rE`$9$k\e(B
+* PostScript Files:: \e$B%]%9%H%9%/%j%W%H$rJ,3d$9$k\e(B
+* Other Files:: \e$BIaDL$NJ]B8$H\e(B binhex.
+* Decoding Variables:: \e$B9,$;$JI|9f2=$N$?$a$NJQ?t\e(B
+* Viewing Files:: \e$BI|9f2=$N7k2L$r8+$?$$\e(B?
@end menu
@cindex series
\e$B7AMF;l$G$9!#F0;l$G$O$"$j$^$;$s!#\e(B
@menu
-* Rule Variables:: \e$B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$kJQ?t\e(B
-* Other Decode Variables:: \e$BB>$NI|9f2=$NJQ?t\e(B
-* Uuencoding and Posting:: uuencode \e$B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t\e(B
+* Rule Variables:: \e$B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$k\e(B
+ \e$BJQ?t\e(B
+* Other Decode Variables:: \e$BB>$NI|9f2=$NJQ?t\e(B
+* Uuencoding and Posting:: uuencode \e$B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t\e(B
@end menu
@node Rule Variables
\e$B$9$/$9$k$?$a$N4X?t$HJQ?t$,;3$N$h$&$K$"$j$^$9!#\e(B
@menu
-* Article Highlighting:: \e$B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?$$\e(B
-* Article Fontisizing:: \e$B6/D4$5$l$?J8$rAGE($K$9$k\e(B
-* Article Hiding:: \e$BFCDj$N>pJs$O>C$75n$j$?$$$H$b;W$&\e(B
-* Article Washing:: \e$B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?4X?t\e(B
-* Article Buttons:: URL \e$B$d\e(B Message-ID \e$B$d\e(B \e$B%"%I%l%9$J$I$r%/%j%C%/$9$k\e(B
-* Article Date:: \e$B$0$:$0$:8@$&$J!"@$3&;~$@\e(B!
-* Article Signature:: \e$B=pL>$C$F2?\e(B?
-* Article Miscellania:: \e$BB>$N$$$m$$$m$J$b$N\e(B
+* Article Highlighting:: \e$B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?\e(B
+ \e$B$$\e(B
+* Article Fontisizing:: \e$B6/D4$5$l$?J8$rAGE($K$9$k\e(B
+* Article Hiding:: \e$BFCDj$N>pJs$O>C$75n$j$?$$$H$b;W$&\e(B
+* Article Washing:: \e$B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?\e(B
+ \e$B4X?t\e(B
+* Article Buttons:: URL \e$B$d\e(B Message-ID \e$B$d\e(B \e$B%"%I%l%9$J$I$r%/%j%C\e(B
+ \e$B%/$9$k\e(B
+* Article Date:: \e$B$0$:$0$:8@$&$J!"@$3&;~$@\e(B!
+* Article Signature:: \e$B=pL>$C$F2?\e(B?
+* Article Miscellania:: \e$BB>$N$$$m$$$m$J$b$N\e(B
@end menu
@node Article Highlighting
\e$B>/$7$NA*Br;h$rM?$($F$"$j$^$9!#\e(B
@menu
-* Pick and Read:: \e$B$^$:!"5-;v$K0u$rIU$1$F!"$=$l$+$iFI$`\e(B
-* Binary Groups:: \e$B$9$Y$F$N5-;v$r<+F0\e(B-\e$BI|9f2=$9$k\e(B
+* Pick and Read:: \e$B$^$:!"5-;v$K0u$rIU$1$F!"$=$l$+$iFI$`\e(B
+* Binary Groups:: \e$B$9$Y$F$N5-;v$r<+F0\e(B-\e$BI|9f2=$9$k\e(B
@end menu
@node Pick and Read
@section \e$B$$$m$$$m$J35N,$NJ*7o\e(B
@menu
-* Summary Group Information:: \e$B>pJs;X8~$NL?Na\e(B
-* Searching for Articles:: \e$BJ#?t5-;vL?Na\e(B
-* Summary Generation Commands:: \e$B35N,%P%C%U%!$N\e(B (\e$B:F\e(B) \e$B:n@.\e(B
-* Really Various Summary Commands:: \e$B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na\e(B
+* Summary Group Information:: \e$B>pJs;X8~$NL?Na\e(B
+* Searching for Articles:: \e$BJ#?t5-;vL?Na\e(B
+* Summary Generation Commands::
+* Really Various Summary Commands:: \e$B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na\e(B
@end menu
@table @code
\e$B$O\e(B (gnus \e$B$K6&M-$7$J$$$h$&$K;X<($7$J$$8B$j\e(B) \e$BF1$85-;v%P%C%U%!$r6&M-$7$^$9!#\e(B
@menu
-* Hiding Headers:: \e$B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k\e(B
-* Using MIME:: @sc{mime} \e$B5-;v$H$7$F8+$;$k\e(B
-* Customizing Articles:: \e$B5-;v$N8+1I$($r;EN)$F$k\e(B
-* Article Keymap:: \e$B5-;v%P%C%U%!$G;H$($k%-!<A`:n\e(B
-* Misc Article:: \e$B$=$NB>\e(B
+* Hiding Headers:: \e$B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k\e(B
+* Using MIME:: @sc{mime} \e$B5-;v$H$7$F8+$;$k\e(B
+* Customizing Articles:: \e$B5-;v$N8+1I$($r;EN)$F$k\e(B
+* Article Keymap:: \e$B5-;v%P%C%U%!$G;H$($k%-!<A`:n\e(B
+* Misc Article:: \e$B$=$NB>\e(B
@end menu
@node Hiding Headers
\e$B4p$E$$$FAw?.$5$l$^$9\e(B (@pxref{Posting Server})\e$B!#\e(B
@menu
-* Mail:: \e$B%a!<%k$HJVEz\e(B
-* Posting Server:: \e$B$I$N%5!<%P!<$rDL$7$FEj9F$9$k$Y$-$+\e(B?
-* Mail and Post:: \e$BF1;~$K%a!<%k$r=P$7JVEz$9$k\e(B
-* Archived Messages:: \e$BAw$C$?%a%C%;!<%8$r\e(B gnus \e$B$,Cy$a$F$*$/$H$3$m\e(B
-* Posting Styles:: \e$B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}K!\e(B
-* Drafts:: \e$B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8\e(B
-* Rejected Articles:: \e$B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K2?$,5/$3$k\e(B?
-@c * Using GPG:: How to use GPG and MML to sign and encrypt messages
+* Mail:: \e$B%a!<%k$HJVEz\e(B
+* Posting Server:: \e$B$I$N%5!<%P!<$rDL$7$FEj9F$9$k$Y$-$+\e(B?
+* Mail and Post:: \e$BF1;~$K%a!<%k$r=P$7JVEz$9$k\e(B
+* Archived Messages:: \e$BAw$C$?%a%C%;!<%8$r\e(B gnus \e$B$,Cy$a$F$*$/$H$3\e(B
+ \e$B$m\e(B
+* Posting Styles:: \e$B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}\e(B
+ \e$BK!\e(B
+* Drafts:: \e$B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8\e(B
+* Rejected Articles:: \e$B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K\e(B
+ \e$B2?$,5/$3$k\e(B?
+@c * Using GPG:: How to use GPG and MML to sign and encrypt messages
@end menu
\e$BEj9F$9$k$Y$-$G$J$+$C$?5-;v$r:o=|$9$k$?$a$N>pJs$O\e(B @pxref{Canceling and
\e$B$b$A$m$s!"0c$C$?J}K!$OA4$F$=$lFCM-$N$b$N$,$"$j$^$9!#\e(B
@menu
-* Server Buffer:: \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\e(B
-* Getting News:: USENET \e$B%K%e!<%9$r\e(B gnus \e$B$GFI$`\e(B
-* Getting Mail:: \e$B8D?ME*$J%a!<%k$r\e(B gnus \e$B$GFI$`\e(B
-* Browsing the Web:: \e$B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r<hF@$9$k\e(B
-* Other Sources:: \e$B%G%#%l%/%H%j!<!"%U%!%$%k!"\e(BSOUP \e$B%Q%1%C%H$rFI$`\e(B
-* Combined Groups:: \e$BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k\e(B
-* Gnus Unplugged:: \e$B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`\e(B
+* Server Buffer:: \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\e(B
+* Getting News:: USENET \e$B%K%e!<%9$r\e(B gnus \e$B$GFI$`\e(B
+* Getting Mail:: \e$B8D?ME*$J%a!<%k$r\e(B gnus \e$B$GFI$`\e(B
+* Browsing the Web:: \e$B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r<hF@$9\e(B
+ \e$B$k\e(B
+* Other Sources:: \e$B%G%#%l%/%H%j!<!"%U%!%$%k!"\e(BSOUP \e$B%Q%1%C%H\e(B
+ \e$B$rFI$`\e(B
+* Combined Groups:: \e$BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k\e(B
+* Gnus Unplugged:: \e$B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`\e(B
@end menu
@node Server Buffer
\e$B$G\e(B @kbd{^} (@code{gnus-group-enter-server-mode}) \e$B%3%^%s%I$r;H$C$F2<$5$$!#\e(B
@menu
-* Server Buffer Format:: \e$B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k\e(B
-* Server Commands:: \e$B%5!<%P!<$rA`$kL?Na\e(B
-* Example Methods:: \e$B%5!<%P!<;XDj$NNc\e(B
-* Creating a Virtual Server:: \e$B%;%C%7%g%s$NNc\e(B
-* Server Variables:: \e$B$I$NJQ?t$r@_Dj$9$k$+\e(B
-* Servers and Methods:: \e$B%5!<%P!<L>$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k\e(B
-* Unavailable Servers:: \e$B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn$A\e(B
- \e$B$F$$$k$+$b$7$l$J$$\e(B
+* Server Buffer Format:: \e$B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k\e(B
+* Server Commands:: \e$B%5!<%P!<$rA`$kL?Na\e(B
+* Example Methods:: \e$B%5!<%P!<;XDj$NNc\e(B
+* Creating a Virtual Server:: \e$B%;%C%7%g%s$NNc\e(B
+* Server Variables:: \e$B$I$NJQ?t$r@_Dj$9$k$+\e(B
+* Servers and Methods:: \e$B%5!<%P!<L>$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k\e(B
+* Unavailable Servers:: \e$B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn\e(B
+ \e$B$A$F$$$k$+$b$7$l$J$$\e(B
@end menu
@vindex gnus-server-mode-hook
\e$B%m!<%+%k%9%W!<%k$+$iFI$`;v$,$G$-$^$9!#\e(B
@menu
-* NNTP:: @sc{nntp} \e$B%5!<%P!<$+$i%K%e!<%9$rFI$`\e(B
-* News Spool:: \e$B%m!<%+%k%9%W!<%k$+$i%K%e!<%9$rFI$`\e(B
+* NNTP:: @sc{nntp} \e$B%5!<%P!<$+$i%K%e!<%9$rFI$`\e(B
+* News Spool:: \e$B%m!<%+%k%9%W!<%k$+$i%K%e!<%9$rFI$`\e(B
@end menu
@node NNTP
@end table
@menu
-* Direct Functions:: \e$B%5!<%P!<$KD>@\@\B3$9$k\e(B
-* Indirect Functions:: \e$B%5!<%P!<$K4V@\E*$K@\B3$9$k\e(B
-* Common Variables:: \e$B@\B3$N$?$a$N4X?t$,;2>H$9$kJQ?t\e(B
+* Direct Functions:: \e$B%5!<%P!<$KD>@\@\B3$9$k\e(B
+* Indirect Functions:: \e$B%5!<%P!<$K4V@\E*$K@\B3$9$k\e(B
+* Common Variables:: \e$B$$$/$D$+$N@\B3MQ$N4X?t$,;2>H$9$kJQ?t\e(B
@end menu
@node Direct Functions
\e$B$+\e(B? \e$B$$$d!"$b$A$m$s$G$-$^$9!#\e(B
@menu
-* Mail in a Newsreader:: \e$B%K%e!<%9%j!<%@$G%a!<%k\e(B (\e$BBg;v$JA0CV$-\e(B)
-* Getting Started Reading Mail:: \e$B4JC1$JNAM}K\$N$h$&$JNc\e(B
-* Splitting Mail:: \e$B$I$N$h$&$K%a!<%k%0%k!<%W$r:n@.$9$k$+\e(B
-* Mail Sources:: Gnus \e$B$K$I$3$+$i%a!<%k$r<h$C$F$/$k$+$rCN\e(B
- \e$B$i$;$k\e(B
-* Mail Backend Variables:: \e$B%a!<%k$N07$$$r%+%9%?%^%$%:$9$k$?$a$NJQ?t\e(B
-* Fancy Mail Splitting:: Gnus \e$B$OF~$C$FMh$?%a!<%k$NLS$N$h$&$JJ,N%\e(B
- \e$B$r$9$k$3$H$,$G$-$k\e(B
-* Group Mail Splitting:: \e$B%a!<%kJ,3d$r6nF0$9$k$?$a$K%0%k!<%W\e(B
- \e$B%+%9%?%^%$%:$r;H$&!#\e(B
-* Incorporating Old Mail:: \e$B$"$J$?$,;}$C$F$$$k8E$$%a!<%k$r$I$&$9$k$+\e(B?
-* Expiring Mail:: \e$BM_$7$/$J$$%a!<%k$r<h$j=|$/\e(B
-* Washing Mail:: \e$B<hF@$7$?%a!<%k$+$i7y$J$b$N$r<h$j=|$/\e(B
-* Duplicates:: \e$B=EJ#$7$?%a!<%k$r07$&\e(B
-* Not Reading Mail:: \e$BB>$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%(\e(B
- \e$B%s%I$r;H$&\e(B
-* Choosing a Mail Backend:: Gnus \e$B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k\e(B
+* Mail in a Newsreader:: \e$B%K%e!<%9%j!<%@$G%a!<%k\e(B (\e$BBg;v$JA0CV$-\e(B)
+* Getting Started Reading Mail:: \e$B4JC1$JNAM}K\$N$h$&$JNc\e(B
+* Splitting Mail:: \e$B$I$N$h$&$K%a!<%k%0%k!<%W$r:n@.$9$k$+\e(B
+* Mail Sources:: Gnus \e$B$K$I$3$+$i%a!<%k$r<h$C$F$/$k$+$rCN\e(B
+ \e$B$i$;$k\e(B
+* Mail Backend Variables:: \e$B%a!<%k$N07$$$r%+%9%?%^%$%:$9$k$?$a$NJQ?t\e(B
+* Fancy Mail Splitting:: Gnus \e$B$OF~$C$FMh$?%a!<%k$NLS$N$h$&$JJ,N%\e(B
+ \e$B$r$9$k$3$H$,$G$-$k\e(B
+* Group Mail Splitting:: \e$B%a!<%kJ,3d$r6nF0$9$k$?$a$K%0%k!<%W%+%9%?\e(B
+ \e$B%^%$%:$r;H$&\e(B
+* Incorporating Old Mail:: \e$B$"$J$?$,;}$C$F$$$k8E$$%a!<%k$r$I$&$9$k$+\e(B?
+* Expiring Mail:: \e$BM_$7$/$J$$%a!<%k$r<h$j=|$/\e(B
+* Washing Mail:: \e$B<hF@$7$?%a!<%k$+$i7y$J$b$N$r<h$j=|$/\e(B
+* Duplicates:: \e$B=EJ#$7$?%a!<%k$r07$&\e(B
+* Not Reading Mail:: \e$BB>$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%(\e(B
+ \e$B%s%I$r;H$&\e(B
+* Choosing a Mail Backend:: Gnus \e$B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k\e(B
@end menu
@node Mail in a Newsreader
\e$B$$$?$$$J$i!"<!$N$b$N$r$"$J$?$N\e(B @file{.gnus} \e$B%U%!%$%k$KF~$l$k;v$,$G$-$^$9!#\e(B
@lisp
-(setq gnus-secondary-select-methods
- '((nnml "private")))
+(setq gnus-secondary-select-methods '((nnml "")))
@end lisp
\e$B:#$d!"<!$K\e(B gnus \e$B$r5/F0$7$?$H$-$K$O!"$3$N%P%C%/%(%s%I$O?7$7$$5-;v$r5a$a!"\e(B
\e$B$^$9!#\e(B
@menu
-* Mail Source Specifiers:: \e$B%a!<%k$N85$,$I$3$+$r;XDj$9$k\e(B
-* Mail Source Customization:: \e$B@$$NCf$K1F6A$9$k$$$/$D$+$NJQ?t\e(B
-* Fetching Mail:: \e$B%a!<%k%=!<%9;X<(;R$r;HMQ$9$k\e(B
+* Mail Source Specifiers:: \e$B%a!<%k$N85$,$I$3$+$r;XDj$9$k\e(B
+* Mail Source Customization:: \e$B@$$NCf$K1F6A$9$k$$$/$D$+$NJQ?t\e(B
+* Fetching Mail:: \e$B%a!<%k%=!<%9;X<(;R$r;HMQ$9$k\e(B
@end menu
@node Mail Source Specifiers
\e$B$H$-$K$3$N4X?t$r;H$&$H!"$3$NLLE]$J:n6H$r\e(B 1 \e$B%9%l%C%I$K$D$-\e(B 1 \e$B2s$-$j$G:Q$^\e(B
\e$B$9$3$H$,$G$-$^$9!#\e(B
-\e$B$3$N5!G=$rMxMQ$9$k$?$a$K$O!"$^$:JQ?t\e(B @code{nnmail-treat-duplicates} \e$B$NCM\e(B
+\e$B$3$N5!G=$rMxMQ$9$k$?$a$K$O!"$^$:JQ\e(B
+\e$B?t\e(B @code{nnmail-treat-duplicates} \e$B$H\e(B @code{nnmail-cache-accepted-message-ids} \e$B$NCM\e(B
\e$B$rHs\e(B nil \e$B$K@_Dj$9$kI,MW$,$"$j$^$9\e(B (\e$B4{DjCM$N$^$^$J$iLdBj$"$j$^$;$s\e(B)\e$B!#$=$l\e(B
\e$B$,$G$-$?$i\e(B @code{nnmail-split-fancy-with-parent} \e$B$r;H$C$F$_$F$/$@$5$$!#\e(B
\e$B%3%m%s$r;H$C$F$3$s$JIw$K=q$-$^$9\e(B:
\e$B$O:GB.$G=@Fp$@$+$i\e(B) @code{nnml} \e$B$G$9\e(B (@pxref{Mail Spool})\e$B!#\e(B
@menu
-* Unix Mail Box:: (\e$B$H$F$b\e(B) \e$BI8=`E*$J\e(B Un*x mbox \e$B$r;H$&\e(B
-* Rmail Babyl:: Emacs \e$B$N%W%m%0%i%`$O\e(B rmail \e$B$N\e(B babyl format \e$B$r;H$&\e(B
-* Mail Spool:: \e$B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k\e(B?
-* MH Spool:: mhspool \e$B$N$h$&$J%P%C%/%(%s%I\e(B
-* Mail Folders:: \e$B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k$r;}$D\e(B
-* Comparing Mail Backends:: \e$BF@<:$N?<$$F6;!\e(B
+* Unix Mail Box:: (\e$B$H$F$b\e(B) \e$BI8=`E*$J\e(B Un*x mbox \e$B$r;H$&\e(B
+* Rmail Babyl:: Emacs \e$B$N%W%m%0%i%`$O\e(B rmail \e$B$N\e(B babyl \e$B%U%)!<\e(B
+ \e$B%^%C%H$r;H$&\e(B
+* Mail Spool:: \e$B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k\e(B?
+* MH Spool:: mhspool \e$B$N$h$&$J%P%C%/%(%s%I\e(B
+* Mail Folders:: \e$B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k\e(B
+ \e$B$r;}$D\e(B
+* Comparing Mail Backends:: \e$BF@<:$N?<$$F6;!\e(B
@end menu
@node Unix Mail Box
\e$B$^$9!#\e(B
@menu
-* Web Searches:: \e$BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k\e(B
-* Slashdot:: Slashdot \e$B$N%3%a%s%H$rFI$`\e(B
-* Ultimate:: Ultimate Bulletin Board \e$B%7%9%F%`\e(B
-* Web Archive:: \e$B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`\e(B
-* Web Newspaper:: \e$B%&%'%V$KJ]4I$5$l$??7J9$rFI$`\e(B
-* RSS:: RDF Site Summary \e$B$rFI$`\e(B
-* Customizing w3:: Gnus \e$B$+$i\e(B Emacs/w3 \e$B$rA`:n$9$k\e(B
+* Web Searches:: \e$BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k\e(B
+* Slashdot:: Slashdot \e$B$N%3%a%s%H$rFI$`\e(B
+* Ultimate:: Ultimate Bulletin Board \e$B%7%9%F%`\e(B
+* Web Archive:: \e$B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`\e(B
+* Web Newspaper:: \e$B%&%'%V$KJ]4I$5$l$??7J9$rFI$`\e(B
+* RSS:: RDF Site Summary \e$B$rFI$`\e(B
+* Customizing w3:: Gnus \e$B$+$i\e(B Emacs/w3 \e$B$rA`:n$9$k\e(B
@end menu
@samp{Web Newspaper} \e$B$r=|$/$9$Y$F$N%&%'%V%=!<%9$O!"F0:n$5$;$k$?$a\e(B
\e$B$9!#\e(B
@menu
-* Directory Groups:: \e$B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$KFI$`\e(B
-* Anything Groups:: Dired? \e$BC/$,\e(B dired \e$B$J$s$F;H$&$N\e(B?
-* Document Groups:: \e$B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG\e(B
-* SOUP:: @sc{soup} \e$B%Q%1%C%H$r\e(B ``\e$B%*%U%i%$%s\e(B''\e$B$GFI$`\e(B
-* Mail-To-News Gateways:: \e$B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7$F5-;v\e(B
- \e$B$rEj9F$9$k\e(B
-* IMAP:: Gnus \e$B$r\e(B IMAP \e$B$N%/%i%$%"%s%H$H$7$F;H$&\e(B
+* Directory Groups:: \e$B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$K\e(B
+ \e$BFI$`\e(B
+* Anything Groups:: Dired? \e$BC/$,\e(B dired \e$B$J$s$F;H$&$N\e(B?
+* Document Groups:: \e$B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG\e(B
+* SOUP:: @sc{soup} \e$B%Q%1%C%H$r\e(B ``\e$B%*%U%i%$%s\e(B'' \e$B$GFI$`\e(B
+* Mail-To-News Gateways:: \e$B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7\e(B
+ \e$B$F5-;v$rEj9F$9$k\e(B
+* IMAP:: Gnus \e$B$r\e(B IMAP \e$B$N%/%i%$%"%s%H$H$7$F;H$&\e(B
@end menu
@node Directory Groups
@end table
@menu
-* Document Server Internals:: \e$B$"$J$?FH<+$NJ8=q<oJL$rDI2C$9$kJ}K!\e(B
+* Document Server Internals:: \e$B$"$J$?FH<+$NJ8=q<oJL$rDI2C$9$kJ}K!\e(B
@end menu
@node Document Server Internals
\e$B=P$K;H$$$^$9!#\e(B
@menu
-* SOUP Commands:: @sc{soup} \e$B%Q%1%C%H$r:n@.!"Aw=P$9$kL?Na\e(B
-* SOUP Groups:: @sc{soup} \e$B%Q%1%C%H$rFI$`%P%C%/%(%s%I\e(B
-* SOUP Replies:: @code{nnsoup} \e$B$K%a!<%k$H%K%e!<%9$r0z$-7Q$,$;$kJ}K!\e(B
+* SOUP Commands:: @sc{soup} \e$B%Q%1%C%H$r:n@.!"Aw=P$9$kL?Na\e(B
+* SOUP Groups:: @sc{soup} \e$B%Q%1%C%H$rFI$`%P%C%/%(%s%I\e(B
+* SOUP Replies:: @code{nnsoup} \e$B$K%a!<%k$H%K%e!<%9$r0z$-7Q$,$;\e(B
+ \e$B$kJ}K!\e(B
@end menu
@node SOUP Commands
@end table
@menu
-* Splitting in IMAP:: nnimap \e$B$G%a!<%k$rJ,3d$9$k\e(B
-* Editing IMAP ACLs:: \e$B%a!<%k%\%C%/%9$X$NB>$NMxMQ<T$N;HMQ$r@)8B\e(B/\e$B5v2D$9$k\e(B
-* Expunging mailboxes:: "\e$B%a!<%k%\%C%/%905=L\e(B" \e$B%\%?%s$HEy2A$J$b$N\e(B
+* Splitting in IMAP:: nnimap \e$B$G%a!<%k$rJ,3d$9$k\e(B
+* Editing IMAP ACLs:: \e$B%a!<%k%\%C%/%9$X$NB>$NMxMQ<T$N;HMQ$r@)8B\e(B
+ /\e$B5v2D$9$k\e(B
+* Expunging mailboxes:: "\e$B%a!<%k%\%C%/%905=L\e(B" \e$B%\%?%s$HEy2A$J$b$N\e(B
@end menu
@node Splitting in IMAP
\e$B$G$-$^$9!#\e(B
@menu
-* Virtual Groups:: \e$B$?$/$5$s$N%0%k!<%W$N5-;v$r7k9g$9$k\e(B
-* Kibozed Groups:: \e$B%K%e!<%9%9%W!<%k$NCf$+$i$N5-;v$r8!:w$9$k\e(B
+* Virtual Groups:: \e$B$?$/$5$s$N%0%k!<%W$N5-;v$r7k9g$9$k\e(B
+* Kibozed Groups:: \e$B%K%e!<%9%9%W!<%k$NCf$+$i$N5-;v$r8!:w$9$k\e(B
@end menu
@node Virtual Groups
\e$BL?Na$r3P$($J$/$F$O$J$j$^$;$s!#\e(B
@menu
-* Agent Basics:: \e$B$3$l$i$O$I$&F0$/$N$+\e(B
-* Agent Categories:: \e$B2?$r%@%&%s%m!<%I$9$k$+$r\e(B gnus \e$B%(!<%8%'%s%H$K65$($kJ}K!\e(B
-* Agent Commands:: \e$B3F%P%C%U%!!<$G$N?7$7$$L?Na\e(B
-* Agent Expiry:: \e$B8E$$5-;v$r>C$9J}K!\e(B
-* Agent and IMAP:: \e$B%(!<%8%'%s%H$r\e(B IMAP \e$B$G;H$&J}K!\e(B
-* Outgoing Messages:: \e$BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+\e(B?
-* Agent Variables:: \e$B%+%9%?%^%$%:$O3Z$7\e(B
-* Example Setup:: \e$B%*%U%i%$%s?M4V$N$?$a$N\e(B @file{.gnus.el} \e$B$NNc\e(B
-* Batching Agents:: @code{cron} \e$B%8%g%V$K$h$k%K%e!<%9<hF@J}K!\e(B
-* Agent Caveats:: \e$B$"$J$?$,M=A[$9$k$3$H$H!"$=$l$,<B:]$K$9$k$3$H\e(B
-* Control Agents:: Offline \e$B$r%3%s%H%m!<%k$9$k\e(B gnus-offline
+* Agent Basics:: \e$B$3$l$i$O$I$&F0$/$N$+\e(B
+* Agent Categories:: \e$B2?$r%@%&%s%m!<%I$9$k$+$r\e(B gnus \e$B%(!<%8%'%s\e(B
+ \e$B%H$K65$($kJ}K!\e(B
+* Agent Commands:: \e$B3F%P%C%U%!!<$G$N?7$7$$L?Na\e(B
+* Agent Expiry:: \e$B8E$$5-;v$r>C$9J}K!\e(B
+* Agent and IMAP:: \e$B%(!<%8%'%s%H$r\e(B IMAP \e$B$G;H$&J}K!\e(B
+* Outgoing Messages:: \e$BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+\e(B?
+* Agent Variables:: \e$B%+%9%?%^%$%:$O3Z$7\e(B
+* Example Setup:: \e$B%*%U%i%$%s?M4V$N$?$a$N\e(B @file{.gnus.el} \e$B$NNc\e(B
+* Batching Agents:: @code{cron} \e$B%8%g%V$K$h$k%K%e!<%9<hF@J}K!\e(B
+* Agent Caveats:: \e$B$"$J$?$,M=A[$9$k$3$H$H!"$=$l$,<B:]$K$9$k\e(B
+ \e$B$3$H\e(B
+* Control Agents:: Offline \e$B$r%3%s%H%m!<%k$9$k\e(B gnus-offline
@end menu
@node Agent Basics
\e$B@.$H4IM}$N$?$a$NFH<+$N%P%C%U%!!<$r;}$C$F$$$^$9!#\e(B
@menu
-* Category Syntax:: \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
-* Category Buffer:: \e$BJ,N`$r4IM}$9$k%P%C%U%!!<\e(B
-* Category Variables:: \e$B%+%9%?%^%$%6\e(B"\e$B$i\e(B"\e$B%9\e(B
+* Category Syntax:: \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
+* Category Buffer:: \e$BJ,N`$r4IM}$9$k%P%C%U%!!<\e(B
+* Category Variables:: \e$B%+%9%?%^%$%6\e(B"\e$B$i\e(B"\e$B%9\e(B
@end menu
@node Category Syntax
\e$B$GF0:n$7!"\e(Bgnus \e$B%(!<%8%'%s%H$N@Z$jN%$7\e(B/\e$B:9$79~$_>uBV$r@Z$jBX$($^$9!#\e(B
@menu
-* Group Agent Commands::
-* Summary Agent Commands::
-* Server Agent Commands::
+* Group Agent Commands::
+* Summary Agent Commands::
+* Server Agent Commands::
@end menu
\e$B40A4$J0l3g<hF@$r9T$&$K$O!"%3%^%s%I9T$+$i0J2<$N$*$^$8$J$$$r\e(B
@kindex J c (Agent Summary)
@findex gnus-agent-catchup
\e$B%@%&%s%m!<%I0u$NL5$$5-;v$rA4$F4{FI$K$9$k\e(B (@code{gnus-agent-catchup})\e$B!#\e(B
+
+@item J u
+@kindex J u (Agent Summary)
+@findex gnus-agent-summary-fetch-group
+\e$B8=:_$N%0%k!<%W$N%@%&%s%m!<%I2DG=$J5-;v$r!"$9$Y$F%@%&%s%m!<%I$7$^\e(B
+\e$B$9\e(B (@code{gnus-agent-summary-fetch-group})\e$B!#\e(B
@end table
@node Server Agent Commands
\e$BEPO?$b!"%9%3%"%U%!%$%k$NBg$-$5$r>.$5$/$9$k$?$a$K!"@E$+$K:o=|$5$l$^$9!#\e(B
@menu
-* Summary Score Commands:: \e$B8=:_$N%0%k!<%W$N$?$a$N%9%3%"EPO?$rDI2C$9$k\e(B
-* Group Score Commands:: \e$B0lHLE*$J%9%3%"L?Na\e(B
-* Score Variables:: \e$B$"$J$?$N%9%3%"$r%+%9%?%^%$%:$9$k\e(B
- (\e$B$^$!!"$J$s$FMQ8l$G$7$g$&\e(B)\e$B!#\e(B
-* Score File Format:: \e$B%9%3%"%U%!%$%k$K2?$rF~$l$k$+\e(B
-* Score File Editing:: \e$B<j$G%9%3%"%U%!%$%k$rJT=8$9$k;v$b$G$-$k\e(B
-* Adaptive Scoring:: \e$BBg;P\e(B gnus \e$B$O$"$J$?$,2?$rFI$s$@$+CN$C$F$$$k\e(B
-* Home Score File:: \e$B?7$7$$%9%3%"EPO?$,$I$3$X9T$/$+$r$I$N$h$&$K;X\e(B
- \e$BDj$9$k$+\e(B
-* Followups To Yourself:: \e$B?M$,$"$J$?$KJVEz$7$?$H$-$K\e(B gnus \e$B$K5$IU$+$;$k\e(B
-* Scoring Tips:: \e$B$I$&$d$C$F8z2LE*$K%9%3%"$rIU$1$k$+\e(B
-* Reverse Scoring:: \e$B8E$$$b$N$N;R$G$"$k$H$$$&LdBj$OLdBj$G$O$J$$\e(B
-* Global Score Files:: \e$BCO$r$D$+$_!"<*$r@Z$jNv$/%9%3%"%U%!%$%k\e(B
-* Kill Files:: \e$B$=$l$i$O$^$@$3$3$K$"$j$^$9$,!"L5;k$9$k;v$,$G$-$k\e(B
-* Converting Kill Files:: \e$B>C5n%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k\e(B
-* GroupLens:: \e$B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k\e(B
-* Advanced Scoring:: \e$B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&\e(B
-* Score Decays:: \e$B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"$k\e(B
+* Summary Score Commands:: \e$B8=:_$N%0%k!<%W$N$?$a$N%9%3%"EPO?$rDI2C$9\e(B
+ \e$B$k\e(B
+* Group Score Commands:: \e$B0lHLE*$J%9%3%"L?Na\e(B
+* Score Variables:: \e$B$"$J$?$N%9%3%"$r%+%9%?%^%$%:$9$k\e(B
+ (\e$B$^$!!"$J$s$FMQ8l$G$7$g$&\e(B)
+* Score File Format:: \e$B%9%3%"%U%!%$%k$K2?$rF~$l$k$+\e(B
+* Score File Editing:: \e$B<j$G%9%3%"%U%!%$%k$rJT=8$9$k;v$b$G$-$k\e(B
+* Adaptive Scoring:: \e$BBg;P\e(B (Big Sister) Gnus \e$B$O$"$J$?$,2?$rFI\e(B
+ \e$B$s$@$+CN$C$F$$$k\e(B
+* Home Score File:: \e$B?7$7$$%9%3%"EPO?$,$I$3$X9T$/$+$r$I$N$h$&\e(B
+ \e$B$K;XDj$9$k$+\e(B
+* Followups To Yourself:: \e$B?M$,$"$J$?$KJVEz$7$?$H$-$K\e(B gnus \e$B$K5$IU$+\e(B
+ \e$B$;$k\e(B
+* Scoring On Other Headers:: \e$BI8=`$G$O$J$$%X%C%@!<$G%9%3%"$rIU$1$k\e(B
+* Scoring Tips:: \e$B$I$&$d$C$F8z2LE*$K%9%3%"$rIU$1$k$+\e(B
+* Reverse Scoring:: \e$B8E$$$b$N$N;R$G$"$k$H$$$&LdBj$OLdBj$G$O$J\e(B
+ \e$B$$\e(B
+* Global Score Files:: \e$BCO$r$D$+$_!"<*$r@Z$jNv$/%9%3%"%U%!%$%k\e(B
+* Kill Files:: \e$B$=$l$i$O$^$@$3$3$K$"$j$^$9$,!"L5;k$9$k;v\e(B
+ \e$B$,$G$-$k\e(B
+* Converting Kill Files:: \e$B>C5n%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k\e(B
+* GroupLens:: \e$B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k\e(B
+* Advanced Scoring:: \e$B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&\e(B
+* Score Decays:: \e$B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"\e(B
+ \e$B$k\e(B
@end menu
@node Summary Score Commands
``\e$B$"$J$?$N\e(B'' \e$B$,:G=i$NFsJ8;z$K$J$k$+:G=i$N;0J8;z$K$J$k$+$O%7%9%F%`$K0MB8\e(B
\e$B$7$^$9!#\e(B
+@c TRANSLATEME
+@node Scoring On Other Headers
+@section Scoring On Other Headers
+@cindex scoring on other headers
+
+Gnus is quite fast when scoring the ``traditional''
+headers---@samp{From}, @samp{Subject} and so on. However, scoring
+other headers requires writing a @code{head} scoring rule, which means
+that Gnus has to request every single article from the backend to find
+matches. This takes a long time in big groups.
+
+Now, there's not much you can do about this for news groups, but for
+mail groups, you have greater control. In the @pxref{To From
+Newsgroups} section of the manual, it's explained in greater detail what
+this mechanism does, but here's a cookbook example for @code{nnml} on
+how to allow scoring on the @samp{To} and @samp{Cc} headers.
+
+Put the following in your @file{.gnus.el} file.
+
+@lisp
+(setq gnus-extra-headers '(To Cc Newsgroups Keywords)
+ nnmail-extra-headers gnus-extra-headers)
+@end lisp
+
+Restart Gnus and rebuild your @code{nnml} overview files with the
+@kbd{M-x nnml-generate-nov-databases} command. This will take a long
+time if you have much mail.
+
+Now you can score on @samp{To} and @samp{Cc} as ``extra headers'' like
+so: @kbd{I e s p To RET <your name> RET}.
+
+See? Simple.
+
@node Scoring Tips
@section \e$B%9%3%"IU$1$N1|5A\e(B
@cindex scoring tips
\e$B$O$3$NM=8@$r5-;v$rFI$_$?$$$+$I$&$+$r7hDj$9$k$N$KLrN)$F$k;v$,$G$-$^$9!#\e(B
@menu
-* Using GroupLens:: \e$B$I$N$h$&$K\e(B gnus \e$B$K\e(B GroupLens \e$B$r;H$o$;$k$h$&$K\e(B
- \e$B$9$k$+!#\e(B
-* Rating Articles:: GropLens \e$B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k$+$rCN\e(B
- \e$B$i$;$k!#\e(B
-* Displaying Predictions:: GropuLens \e$B$K$h$C$FM?$($i$l$?M=8@$rI=<($9$k\e(B
-* GroupLens Variables:: GoupLens \e$B$r%+%9%?%^%$%:$9$k\e(B
+* Using GroupLens:: \e$B$I$N$h$&$K\e(B gnus \e$B$K\e(B GroupLens \e$B$r;H$o$;$k\e(B
+ \e$B$h$&$K$9$k$+\e(B
+* Rating Articles:: GropLens \e$B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k\e(B
+ \e$B$+$rCN$i$;$k\e(B
+* Displaying Predictions:: GropuLens \e$B$K$h$C$FM?$($i$l$?M=8@$rI=<($9\e(B
+ \e$B$k\e(B
+* GroupLens Variables:: GoupLens \e$B$r%+%9%?%^%$%:$9$k\e(B
@end menu
@node Using GroupLens
@item gnus-summary-grouplens-line-format
GropuLens \e$B3HD%$N35N,%P%C%U%!$G;H$o$l$k35N,9TMM<0$G$9!#IaDL$N35N,9TMM<0$,\e(B
\e$B<u$1IU$1$k$b$N$HF1$8;XDj$r<u$1IU$1$^$9\e(B (@pxref{Summary Buffer Lines})\e$B!#\e(B
-\e$B=i4|@_Dj$O\e(B@samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n} \e$B$G$9!#\e(B
+\e$B=i4|@_Dj$O\e(B@samp{%U%R%z%l%I%(%[%4L: %-23,23n%]%) %s\n} \e$B$G$9!#\e(B
@item grouplens-bbb-host
bbbd \e$B%5!<%P!<$,<B9T$5$l$F$$$k%[%9%H$G$9!#\e(B@samp{goruplens.cs.umn.edu} \e$B$,\e(B
\e$B$9!#\e(B
@menu
-* Advanced Scoring Syntax:: \e$BDj5A\e(B
-* Advanced Scoring Examples:: \e$B$I$N$h$&$K8+$($k$+\e(B
-* Advanced Scoring Tips:: \e$B$=$l$r:GBg8BMxMQ$9$k\e(B
+* Advanced Scoring Syntax:: \e$BDj5A\e(B
+* Advanced Scoring Examples:: \e$B$I$N$h$&$K8+$($k$+\e(B
+* Advanced Scoring Tips:: \e$B$=$l$r:GBg8BMxMQ$9$k\e(B
@end menu
@node Advanced Scoring Syntax
@chapter \e$B$$$m$$$m\e(B
@menu
-* Process/Prefix:: \e$BB?$/$N07$$L?Na$G;H$o$l$k=,47\e(B
-* Interactive:: Gnus \e$B$KB?$/$N<ALd$r?R$M$5$;$k\e(B
-* Symbolic Prefixes:: \e$B$$$/$D$+$N\e(B gnus \e$B$N4X?t$KA*Br8"$rDs6!$9$kJ}K!\e(B
-* Formatting Variables:: \e$B%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$9$k;v\e(B
- \e$B$,$G$-$k\e(B
-* Window Layout:: Gnus \e$B%P%C%U%!%&%#%s%I%&$r@_Dj$9$k\e(B
-* Faces and Fonts:: \e$B%U%'%$%9$,$I$N$h$&$K8+$($k$+$rJQ99$9$k\e(B
-* Compilation:: \e$B$I$N$h$&$K$7$F\e(B gnus \e$B$NB.EY$r>e$2$k$+\e(B
-* Mode Lines:: \e$B%b!<%I9T$K>pJs$rI=<($9$k\e(B
-* Highlighting and Menus:: \e$B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k\e(B
-* Buttons:: \e$B4JC1$J==Jb$G%"%-%l%9g'$rF@$k\e(B
-* Daemons:: Gnus \e$B$O$"$J$?$NN"$GJ*;v$r<B9T$9$k;v$,$G$-$k\e(B
-* NoCeM:: Spam \e$B$dB>$NB@$j$d$9$$?);v$rHr$1$kJ}K!\e(B
-* Undo:: \e$B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k\e(B
-* Moderation:: \e$B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+\e(B
-* XEmacs Enhancements:: XEmacs \e$B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_$9$k\e(B
-* Fuzzy Matching:: \e$BBg$-$JLJLS$C$F2?\e(B?
-* Thwarting Email Spam:: \e$BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!\e(B
-* Various Various:: \e$BK\Ev$K$$$m$$$m$J$b$N\e(B
+* Process/Prefix:: \e$BB?$/$N07$$L?Na$G;H$o$l$k=,47\e(B
+* Interactive:: Gnus \e$B$KB?$/$N<ALd$r?R$M$5$;$k\e(B
+* Symbolic Prefixes:: \e$B$$$/$D$+$N\e(B gnus \e$B$N4X?t$KA*Br8"$rDs6!$9$k\e(B
+ \e$BJ}K!\e(B
+* Formatting Variables:: \e$B%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$9\e(B
+ \e$B$k;v$,$G$-$k\e(B
+* Window Layout:: Gnus \e$B%P%C%U%!%&%#%s%I%&$r@_Dj$9$k\e(B
+* Faces and Fonts:: \e$B%U%'%$%9$,$I$N$h$&$K8+$($k$+$rJQ99$9$k\e(B
+* Compilation:: \e$B$I$N$h$&$K$7$F\e(B gnus \e$B$NB.EY$r>e$2$k$+\e(B
+* Mode Lines:: \e$B%b!<%I9T$K>pJs$rI=<($9$k\e(B
+* Highlighting and Menus:: \e$B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k\e(B
+* Buttons:: \e$B4JC1$J==Jb$G%"%-%l%9g'$rF@$k\e(B
+* Daemons:: Gnus \e$B$O$"$J$?$NN"$GJ*;v$r<B9T$9$k;v$,$G\e(B
+ \e$B$-$k\e(B
+* NoCeM:: Spam \e$B$dB>$NB@$j$d$9$$?);v$rHr$1$kJ}K!\e(B
+* Undo:: \e$B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k\e(B
+* Moderation:: \e$B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+\e(B
+* XEmacs Enhancements:: XEmacs \e$B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_\e(B
+ \e$B$9$k\e(B
+* Fuzzy Matching:: \e$BBg$-$JLJLS$C$F2?\e(B?
+* Thwarting Email Spam:: \e$BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!\e(B
+* Various Various:: \e$BK\Ev$K$$$m$$$m$J$b$N\e(B
@end menu
@node Process/Prefix
\e$B9f$,$I$3$K$G$b$"$j$^$9!#\e(B
@menu
-* Formatting Basics:: \e$B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"$k\e(B
-* Mode Line Formatting:: \e$B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N5,B'\e(B
-* Advanced Formatting:: \e$B?'!9$JJ}K!$G=PNO$r=$@5$9$k\e(B
-* User-Defined Specs:: Gnus \e$B$K$"$J$?<+?H$N4X?t$r8F$P$;$k\e(B
-* Formatting Fonts:: \e$B;EMM$rB?:L$GAGE($K8+$;$k\e(B
+* Formatting Basics:: \e$B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"\e(B
+ \e$B$k\e(B
+* Mode Line Formatting:: \e$B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N\e(B
+ \e$B5,B'\e(B
+* Advanced Formatting:: \e$B?'!9$JJ}K!$G=PNO$r=$@5$9$k\e(B
+* User-Defined Specs:: Gnus \e$B$K$"$J$?<+?H$N4X?t$r8F$P$;$k\e(B
+* Formatting Fonts:: \e$B;EMM$rB?:L$GAGE($K8+$;$k\e(B
+* Positioning Point:: \e$BA`:n$N8e$G%]%$%s%H$r0\F0$9$k\e(B
+* Tabulation:: \e$BI=$r:n$k\e(B
+* Wide Characters:: \e$BI}$,9-$$J8;z$r07$&\e(B
@end menu
\e$B8=:_$N$H$3$m!"\e(Bgnus \e$B$O0J2<$N=qK!;EMMJQ?t$r;H$$$^$9\e(B:
@samp{%(} \e$B;XDj\e(B (\e$B$d$=$NN`$N$b$N\e(B) \e$B$O%b!<%I9TJQ?t$G$OA4$/0UL#$r$J$5$J$$;v$K\e(B
\e$BCm0U$7$F$/$@$5$$!#\e(B
+@c TRANSLATEME
+@node Positioning Point
+@subsection Positioning Point
+
+Gnus usually moves point to a pre-defined place on each line in most
+buffers. By default, point move to the first colon character on the
+line. You can customize this behaviour in three different ways.
+
+You can move the colon character to somewhere else on the line.
+
+@findex gnus-goto-colon
+You can redefine the function that moves the point to the colon. The
+function is called @code{gnus-goto-colon}.
+
+But perhaps the most convenient way to deal with this, if you don't want
+to have a colon in your line, is to use the @samp{%C} specifier. If you
+put a @samp{%C} somewhere in your format line definition, Gnus will
+place point there.
+
+@node Tabulation
+@subsection Tabulation
+
+You can usually line up your displays by padding and cutting your
+strings. However, when combining various strings of different size, it
+can often be more convenient to just output the strings, and then worry
+about lining up the following text afterwards.
+
+To do that, Gnus supplies tabulator specs--@samp{%=}. There are two
+different types---@dfn{hard tabulators} and @dfn{soft tabulators}.
+
+@samp{%50=} will insert space characters to pad the line up to column
+50. If the text is already past column 50, nothing will be inserted.
+This is the soft tabulator.
+
+@samp{%-50=} will insert space characters to pad the line up to column
+50. If the text is already past column 50, the excess text past column
+50 will be removed. This is the hard tabulator.
+
+@node Wide Characters
+@subsection Wide Characters
+
+Proportional 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.
+
+The problem is that when formatting, Gnus assumes that if a string is 10
+characters wide, it'll be 10 Latin characters wide on the screen. In
+these coutries, that's not true.
+
+@vindex gnus-use-correct-string-widths
+To help fix this, you can set @code{gnus-use-correct-string-widths} to
+@code{t}. This makes buffer generation slower, but the results will be
+prettieer. The default value is @code{nil}.
+
@node Window Layout
@section \e$B%&%#%s%I%&$NG[CV\e(B
@cindex window layout
\e$B$k$3$H$K$7$^$9!#\e(B
@menu
-* Picons:: \e$B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!\e(B
-* Smileys:: \e$BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<($9$kJ}K!\e(B
-* Toolbar:: \e$B%/%j%C%/1n\e(B
-* XVarious:: \e$B$=$NB>$N\e(B XEmacs \e$B$G\e(B Gnus \e$B$JJQ?t\e(B
+* Picons:: \e$B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!\e(B
+* Smileys:: \e$BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<(\e(B
+ \e$B$9$kJ}K!\e(B
+* Toolbar:: \e$B%/%j%C%/1n\e(B
+* XVarious:: \e$B$=$NB>$N\e(B XEmacs \e$B$G\e(B Gnus \e$B$JJQ?t\e(B
@end menu
@node Picons
@menu
* Picon Basics:: picon \e$B$H$O2?$G!"$I$&$d$C$F<j$KF~$l$k$N$+\e(B
-* Picon Requirements:: XEmacs \e$B$r;H$C$F$J$1$l$P$3$3$+$i$OFI$^$J$$$G\e(B
+* Picon Requirements:: XEmacs \e$B$r;H$C$F$J$1$l$P$3$3$+$i$OFI$^$J\e(B
+ \e$B$$$G\e(B
* Easy Picons:: picon \e$B$NI=<(\e(B --- \e$B3Z$JJ}K!\e(B
-* Hard Picons:: \e$BK\Mh$9$Y$-$3$H!#2?$+$r3X$V$3$H$,$G$-$k$@$m$&\e(B
-* Picon Useless Configuration:: \e$B$=$NB>$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?$j\e(B
- \e$BM7$s$@$j$9$kJQ?t\e(B
+* Hard Picons:: \e$BK\Mh$9$Y$-$3$H!#2?$+$r3X$V$3$H$,$G$-$k$@\e(B
+ \e$B$m$&\e(B
+* Picon Useless Configuration:: \e$B$=$NB>$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?\e(B
+ \e$B$jM7$s$@$j$9$kJQ?t\e(B
@end menu
@node Picon Basics
@chapter \e$BIUO?\e(B
@menu
-* History:: \e$B$I$&$d$C$F\e(B gnus \e$B$,:#F|$N$h$&$K$J$C$?$+\e(B
-* On Writing Manuals:: \e$B$J$<$3$l$,=i?4<TMQ$N0FFb$G$J$$$+\e(B
-* Terminology:: \e$B2f!9$OK\Ev$KFq$7$$!"8l$N$h$&$J8l$r;H$&\e(B
-* Customization:: \e$B$"$J$?$NMW5a$K1h$C$F\e(B gnus \e$B$r;EN)$F$k\e(B
-* Troubleshooting:: \e$B>e<j$/9T$+$J$+$C$?$H$-$K;n$9$+$b$7$l$J$$;v\e(B
-* Gnus Reference Guide:: \e$B?'!9$J5;=QE*$J$b$N\e(B
-* Emacs for Heathens:: Emacs \e$B$NMQ8l$N<jC;$JF3F~\e(B
-* Frequently Asked Questions:: \e$B<ALd$HEz\e(B
+* History:: \e$B$I$&$d$C$F\e(B gnus \e$B$,:#F|$N$h$&$K$J$C$?$+\e(B
+* On Writing Manuals:: \e$B$J$<$3$l$,=i?4<TMQ$N0FFb$G$J$$$+\e(B
+* Terminology:: \e$B2f!9$OK\Ev$KFq$7$$!"8l$N$h$&$J8l$r;H$&\e(B
+* Customization:: \e$B$"$J$?$NMW5a$K1h$C$F\e(B gnus \e$B$r;EN)$F$k\e(B
+* Troubleshooting:: \e$B>e<j$/9T$+$J$+$C$?$H$-$K;n$9$+$b$7$l$J$$\e(B
+ \e$B$3$H\e(B
+* Gnus Reference Guide:: \e$B?'!9$J5;=QE*$J$b$N\e(B
+* Emacs for Heathens:: Emacs \e$B$NMQ8l$N<jC;$JF3F~\e(B
+* Frequently Asked Questions::
@end menu
@node History
``Gnus'' \e$B$H\e(B ``@sc{gnus}'' \e$B$G$9!#?7$7$$$b$N\e(B \e$B$H\e(B \e$B8E$$$b$N!#\e(B
@menu
-* Gnus Versions:: What Gnus versions have been released.
-* Other Gnus Versions:: Other Gnus versions that also have been released.
-* Why?:: Gnus \e$B$NL\E*$O2?\e(B?
-* Compatibility:: Gnus \e$B$O\e(B @sc{gnus} \e$B$H$I$l$/$i$$8_49@-$,$"$k$N\e(B?
-* Conformity:: Gnus \e$B$OA4$F$NI8=`$rK~$?$=$&$H$9$k\e(B
-* Emacsen:: Gnus \e$B$O$$$/$D$+$N8=BeE*$J\e(B Emacs \e$B4D6-$G<B9T$G$-$k\e(B
-* Gnus Development:: Gnus \e$B$,3+H/$5$l$F$$$kJ}K!\e(B
-* Contributors:: \e$BBgNL$N?M!9\e(B
-* New Features:: Gnus \e$B$N?7$7$$;v$K4X$9$k<j$,$+$j\e(B
+* Gnus Versions:: \e$B$I$s$J%P!<%8%g%s$N\e(B Gnus \e$B$,%j%j!<%9$5$l$F\e(B
+ \e$B$$$k$+\e(B
+* Other Gnus Versions:: \e$B%j%j!<%9$5$l$F$$$kB>$N%P!<%8%g%s$N\e(B Gnus
+* Why?:: Gnus \e$B$NL\E*$O2?\e(B?
+* Compatibility:: Gnus \e$B$O\e(B @sc{gnus} \e$B$H$I$l$/$i$$8_49@-$,$"$k\e(B
+ \e$B$N\e(B?
+* Conformity:: Gnus \e$B$OA4$F$NI8=`$rK~$?$=$&$H$9$k\e(B
+* Emacsen:: Gnus \e$B$O$$$/$D$+$N8=BeE*$J\e(B Emacs \e$B4D6-$G<B\e(B
+ \e$B9T$G$-$k\e(B
+* Gnus Development:: Gnus \e$B$,3+H/$5$l$F$$$kJ}K!\e(B
+* Contributors:: \e$BBgNL$N?M!9\e(B
+* New Features:: Gnus \e$B$N?7$7$$;v$K4X$9$k<j$,$+$j\e(B
@end menu
@node Gnus Versions
@cindex new features
@menu
-* ding Gnus:: \e$B:G=i$N?7$7$$\e(B Gnus \e$B$G$"$k\e(B Gnus 5.0/5.1 \e$B$N?7$7$$;v\e(B
-* September Gnus:: \e$B8x<0$K\e(B Gnus 5.2/5.3 \e$B$H$7$FCN$i$l$F$$$k$b$N\e(B
-* Red Gnus:: 3 \e$BHVL\$N:G>e$N$b$N\e(B---Gnus 5.4/5.5
-* Quassia Gnus:: 2 \e$B$+$1$k\e(B 2 \e$B$O\e(B 4\e$B!"$b$7$/$O\e(B Gnus 5.6/5.7
-* Pterodactyl Gnus:: \e$B8^HVL\!"\e(BP \e$B$G;O$^$k!"$b$7$/$O\e(B Gnus 5.8/5.9 \e$B$H$7$F\e(B
- \e$BCN$i$l$F$$$k$b$N\e(B
+* ding Gnus:: \e$B:G=i$N?7$7$$\e(B Gnus \e$B$G$"$k\e(B Gnus 5.0/5.1 \e$B$N\e(B
+ \e$B?7$7$$;v\e(B
+* September Gnus:: \e$B8x<0$K\e(B Gnus 5.2/5.3 \e$B$H$7$FCN$i$l$F$$$k$b\e(B
+ \e$B$N\e(B
+* Red Gnus:: \e$B;0HVL\$N:G>e$N$b$N\e(B---Gnus 5.4/5.5
+* Quassia Gnus:: 2 \e$B$+$1$k\e(B 2 \e$B$O\e(B 4\e$B!"$b$7$/$O\e(B Gnus 5.6/5.7
+* Pterodactyl Gnus:: \e$B8^HVL\!"\e(BP \e$B$G;O$^$k!"$b$7$/$O\e(B Gnus 5.8
+ /5.9 \e$B$H$7$FCN$i$l$F$$$k$b$N\e(B
@end menu
\e$B$3$N%j%9%H$O!"$b$A$m$s!"\e(B@emph{\e$B$?$$$F$$$N\e(B} \e$B=EMW$J?7$7$$5!G=$K4X$9\e(B
@iftex
@page
-@node The Manual
+@node History
@section \e$B%^%K%e%"%k\e(B
@cindex colophon
@cindex manual
\e$BAm9gE,;X<(@h$rM?$($k$?$a$K9M0F$5$l$F$$$^$9!#\e(B
@menu
-* Slow/Expensive Connection:: \e$B%m!<%+%k$N\e(B Emacs \e$B$rN)$A>e$2$F!"\e(B
- \e$BB>$N$H$3$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k!#\e(B
-* Slow Terminal Connection:: \e$B1s3V\e(B Emacs \e$B$r<B9T$9$k\e(B
-* Little Disk Space:: \e$BBg$-$J5/F0%U%!%$%k$r;}$D;v$O$^$:$$\e(B
-* Slow Machine:: \e$BB.$$5!3#$rGc$*$&$H46$8$k$G$"$m$&\e(B
+* Slow/Expensive Connection:: \e$B%m!<%+%k$N\e(B Emacs \e$B$rN)$A>e$2$F!"B>$N$H$3\e(B
+ \e$B$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k!#\e(B
+* Slow Terminal Connection:: \e$B1s3V\e(B Emacs \e$B$r<B9T$9$k\e(B
+* Little Disk Space:: \e$BBg$-$J5/F0%U%!%$%k$r;}$D;v$O$^$:$$\e(B
+* Slow Machine:: \e$BB.$$5!3#$rGc$*$&$H46$8$k$G$"$m$&\e(B
@end menu
@node Slow/Expensive Connection
\e$B5A$7$F$$$-$^$9!#\e(B
@menu
-* Gnus Utility Functions:: \e$B;HMQ$G$-$k6&DL$N4X?t$HJQ?t\e(B
-* Backend Interface:: Gnus \e$B$O$I$&$d$C$F%5!<%P!<$HDL?.$9$k$N$+\e(B
-* Score File Syntax:: \e$B%9%3%"%U%!%$%k5,3J$N\e(B BNF \e$BDj5A\e(B
-* Headers:: Gnus \e$B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<$9$k$+\e(B
-* Ranges:: \e$B$?$/$5$s$N?t$r3JG<$9$kJXMx$J7A<0\e(B
-* Group Info:: \e$B%0%k!<%W>pJs7A<0\e(B
-* Extended Interactive:: \e$B5-9f@\F,<-$J$I\e(B
-* Emacs/XEmacs Code:: Gnus \e$B$OA4$F$N6aBe\e(B Emacsen \e$B$GF0:n$9$k\e(B
-* Various File Formats:: Gnus \e$B$N;HMQ$9$k%U%!%$%k$N7A<0\e(B
+* Gnus Utility Functions:: \e$B;HMQ$G$-$k6&DL$N4X?t$HJQ?t\e(B
+* Backend Interface:: Gnus \e$B$O$I$&$d$C$F%5!<%P!<$HDL?.$9$k$N$+\e(B
+* Score File Syntax:: \e$B%9%3%"%U%!%$%k5,3J$N\e(B BNF \e$BDj5A\e(B
+* Headers:: Gnus \e$B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<\e(B
+ \e$B$9$k$+\e(B
+* Ranges:: \e$B$?$/$5$s$N?t$r3JG<$9$kJXMx$J7A<0\e(B
+* Group Info:: \e$B%0%k!<%W>pJs7A<0\e(B
+* Extended Interactive:: \e$B5-9f@\F,<-$J$I\e(B
+* Emacs/XEmacs Code:: Gnus \e$B$OA4$F$N6aBe\e(B Emacsen \e$B$GF0:n$9$k\e(B
+* Various File Formats:: Gnus \e$B$N;HMQ$9$k%U%!%$%k$N7A<0\e(B
@end menu
@node Gnus Utility Functions
@cindex @code{nnchoke}
@menu
-* Required Backend Functions:: \e$B<BAu$7$J$1$l$P$J$i$J$$4X?t\e(B
-* Optional Backend Functions:: \e$B<BAu$7$J$/$F$b$h$$4X?t\e(B
-* Error Messaging:: \e$B%a%C%;!<%8$d%(%i!<Js9p$rF@$kJ}K!\e(B
-* Writing New Backends:: \e$B8E$$%P%C%/%(%s%I$N3HD%\e(B
-* Hooking New Backends Into Gnus:: Gnus \e$BB&$G$7$J$1$l$P$J$i$J$$$3$H\e(B
-* Mail-like Backends:: \e$B%a!<%kIw%P%C%/%(%s%I$N$?$a$N=u8@\e(B
+* Required Backend Functions:: \e$B<BAu$7$J$1$l$P$J$i$J$$4X?t\e(B
+* Optional Backend Functions:: \e$B<BAu$7$J$/$F$b$h$$4X?t\e(B
+* Error Messaging:: \e$B%a%C%;!<%8$d%(%i!<Js9p$rF@$kJ}K!\e(B
+* Writing New Backends:: \e$B8E$$%P%C%/%(%s%I$N3HD%\e(B
+* Hooking New Backends Into Gnus:: Gnus \e$BB&$G$7$J$1$l$P$J$i$J$$$3$H\e(B
+* Mail-like Backends:: \e$B%a!<%kIw%P%C%/%(%s%I$N$?$a$N=u8@\e(B
@end menu
@node Required Backend Functions
(RANGE ACTION MARK)
@end example
-RANGE \e$B$O0u$rIU$1$?$$5-;v$NHO0O$G$9!#\e(B
-ACTION \e$B$O\e(B @code{set}, @code{add}, @code{del} \e$B$N$I$l$+$G!"$=$l$>$lA4$F$N\e(B
-\e$BB8:_$9$k0u$r>C5n$7$F!";XDj$5$l$?$h$&$K@_Dj!"0u$NDI2C\e(B (\e$B8@5Z$5$l$F$$$J$$0u\e(B
-\e$B$OJ]B8$7$^$9\e(B)\e$B!"0u$N>C5n\e(B (\e$B8@5Z$5$l$F$$$J$$0u$OJ]B8$7$^$9\e(B) \e$B$G$9!#\e(BMARK \e$B$O0u\e(B
+RANGE \e$B$O0u$rIU$1$?$$5-;v$NHO0O$G$9!#\e(BACTION \e$B$O\e(B @code{add} \e$B$^$?\e(B
+\e$B$O\e(B @code{del} \e$B$G!"0u$rDI2C$7$?$j>C$7$^$9\e(B (\e$B8@5Z$5$l$F$$$J$$$9$Y$F$N0u$OJ]\e(B
+\e$BB8$7$^$9\e(B)\e$B!"0u$N>C5n\e(B (\e$B8@5Z$5$l$F$$$J$$0u$OJ]B8$7$^$9\e(B) \e$B$G$9!#\e(BMARK \e$B$O0u\e(B
\e$B$N%j%9%H$G$9!#$=$l$>$l$N0u$O%7%s%\%k$G$9!#8=:_;H$o$l$F$$$k0u\e(B
\e$B$O\e(B @code{read}, @code{tick}, @code{reply}, @code{expire}, @code{killed},
@code{dormant}, @code{save}, @code{download}, @code{unsend},
@subsection \e$B$$$m$$$m$J%U%!%$%kMM<0\e(B
@menu
-* Active File Format:: \e$B;HMQ2DG=$J5-;v%0%k!<%W$N>pJs\e(B
-* Newsgroups File Format:: \e$B%0%k!<%W$N5-=R\e(B
+* Active File Format:: \e$B;HMQ2DG=$J5-;v%0%k!<%W$N>pJs\e(B
+* Newsgroups File Format:: \e$B%0%k!<%W$N5-=R\e(B
@end menu
@node Active File Format
\e$B$,$j$K9T$C$F2<$5$$!#\e(B
@menu
-* Keystrokes:: \e$BJ8>O$rF~NO$7$FL?Na$r<B9T$9$k\e(B
-* Emacs Lisp:: \e$BHw$(IU$1$N\e(B Emacs \e$B%W%m%0%i%_%s%08@8l\e(B
+* Keystrokes:: \e$BJ8>O$rF~NO$7$FL?Na$r<B9T$9$k\e(B
+* Emacs Lisp:: \e$BHw$(IU$1$N\e(B Emacs \e$B%W%m%0%i%_%s%08@8l\e(B
@end menu
@node Keystrokes
@end iftex
@menu
-* Starting Up:: Finding news can be a pain.
-* Group Buffer:: Selecting, subscribing and killing groups.
-* Summary Buffer:: Reading, saving and posting articles.
-* Article Buffer:: Displaying and handling articles.
-* Composing Messages:: Information on sending mail and news.
-* Select Methods:: Gnus reads all messages from various select methods.
-* Scoring:: Assigning values to articles.
-* Various:: General purpose settings.
-* The End:: Farewell and goodbye.
-* Appendices:: Terminology, Emacs intro, FAQ, History, Internals.
-* Index:: Variable, function and concept index.
-* Key Index:: Key Index.
+* Starting Up:: Finding news can be a pain.
+* Group Buffer:: Selecting, subscribing and killing groups.
+* Summary Buffer:: Reading, saving and posting articles.
+* Article Buffer:: Displaying and handling articles.
+* Composing Messages:: Information on sending mail and news.
+* Select Methods:: Gnus reads all messages from various select methods.
+* Scoring:: Assigning values to articles.
+* Various:: General purpose settings.
+* The End:: Farewell and goodbye.
+* Appendices:: Terminology, Emacs intro, FAQ, History, Internals.
+* Index:: Variable, function and concept index.
+* Key Index:: Key Index.
@detailmenu
--- The Detailed Node Listing ---
Starting Gnus
-* Finding the News:: Choosing a method for getting news.
-* The First Time:: What does Gnus do the first time you start it?
-* The Server is Down:: How can I read my mail then?
-* Slave Gnusae:: You can have more than one Gnus active at a time.
-* Fetching a Group:: Starting Gnus just to read a group.
-* New Groups:: What is Gnus supposed to do with new groups?
-* Startup Files:: Those pesky startup files---@file{.newsrc}.
-* Auto Save:: Recovering from a crash.
-* The Active File:: Reading the active file over a slow line Takes Time.
-* Changing Servers:: You may want to move from one server to another.
-* Startup Variables:: Other variables you might change.
+* Finding the News:: Choosing a method for getting news.
+* The First Time:: What does Gnus do the first time you start it?
+* The Server is Down:: How can I read my mail then?
+* Slave Gnusae:: You can have more than one Gnus active at a time.
+* Fetching a Group:: Starting Gnus just to read a group.
+* New Groups:: What is Gnus supposed to do with new groups?
+* Changing Servers:: You may want to move from one server to another.
+* Startup Files:: Those pesky startup files---@file{.newsrc}.
+* Auto Save:: Recovering from a crash.
+* The Active File:: Reading the active file over a slow line Takes Time.
+* Startup Variables:: Other variables you might change.
New Groups
-* Checking New Groups:: Determining what groups are new.
-* Subscription Methods:: What Gnus should do with new groups.
-* Filtering New Groups:: Making Gnus ignore certain new groups.
+* Checking New Groups:: Determining what groups are new.
+* Subscription Methods:: What Gnus should do with new groups.
+* Filtering New Groups:: Making Gnus ignore certain new groups.
Group Buffer
-* Group Buffer Format:: Information listed and how you can change it.
-* Group Maneuvering:: Commands for moving in the group buffer.
-* Selecting a Group:: Actually reading news.
-* Group Data:: Changing the info for a group.
-* Subscription Commands:: Unsubscribing, killing, subscribing.
-* Group Levels:: Levels? What are those, then?
-* Group Score:: A mechanism for finding out what groups you like.
-* Marking Groups:: You can mark groups for later processing.
-* Foreign Groups:: Creating and editing groups.
-* Group Parameters:: Each group may have different parameters set.
-* Listing Groups:: Gnus can list various subsets of the groups.
-* Sorting Groups:: Re-arrange the group order.
-* Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
-* Browse Foreign Server:: You can browse a server. See what it has to offer.
-* Exiting Gnus:: Stop reading news and get some work done.
-* Group Topics:: A folding group mode divided into topics.
-* Misc Group Stuff:: Other stuff that you can to do.
+* Group Buffer Format:: Information listed and how you can change it.
+* Group Maneuvering:: Commands for moving in the group buffer.
+* Selecting a Group:: Actually reading news.
+* Subscription Commands:: Unsubscribing, killing, subscribing.
+* Group Data:: Changing the info for a group.
+* Group Levels:: Levels? What are those, then?
+* Group Score:: A mechanism for finding out what groups you like.
+* Marking Groups:: You can mark groups for later processing.
+* Foreign Groups:: Creating and editing groups.
+* Group Parameters:: Each group may have different parameters set.
+* Listing Groups:: Gnus can list various subsets of the groups.
+* Sorting Groups:: Re-arrange the group order.
+* Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
+* Browse Foreign Server:: You can browse a server. See what it has to offer.
+* Exiting Gnus:: Stop reading news and get some work done.
+* Group Topics:: A folding group mode divided into topics.
+* Misc Group Stuff:: Other stuff that you can to do.
Group Buffer Format
-* Group Line Specification:: Deciding how the group buffer is to look.
-* Group Modeline Specification:: The group buffer modeline.
-* Group Highlighting:: Having nice colors in the group buffer.
+* Group Line Specification:: Deciding how the group buffer is to look.
+* Group Modeline Specification:: The group buffer modeline.
+* Group Highlighting:: Having nice colors in the group buffer.
Group Topics
-* Topic Variables:: How to customize the topics the Lisp Way.
-* Topic Commands:: Interactive E-Z commands.
-* Topic Sorting:: Sorting each topic individually.
-* Topic Topology:: A map of the world.
-* Topic Parameters:: Parameters that apply to all groups in a topic.
+* Topic Variables:: How to customize the topics the Lisp Way.
+* Topic Commands:: Interactive E-Z commands.
+* Topic Sorting:: Sorting each topic individually.
+* Topic Topology:: A map of the world.
+* Topic Parameters:: Parameters that apply to all groups in a topic.
Misc Group Stuff
-* Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
-* Group Information:: Information and help on groups and Gnus.
-* Group Timestamp:: Making Gnus keep track of when you last read a group.
-* File Commands:: Reading and writing the Gnus files.
+* Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
+* Group Information:: Information and help on groups and Gnus.
+* Group Timestamp:: Making Gnus keep track of when you last read a group.
+* File Commands:: Reading and writing the Gnus files.
Summary Buffer
* Choosing Articles:: Reading articles.
* Paging the Article:: Scrolling the current article.
* Reply Followup and Post:: Posting articles.
+* Delayed Articles::
* Marking Articles:: Marking articles as read, expirable, etc.
* Limiting:: You can limit the summary buffer.
* Threading:: How threads are made.
* Tree Display:: A more visual display of threads.
* Mail Group Commands:: Some commands can only be used in mail groups.
* Various Summary Stuff:: What didn't fit anywhere else.
-* Exiting the Summary Buffer:: Returning to the Group buffer.
+* Exiting the Summary Buffer:: Returning to the Group buffer,
+ or reselecting the current group.
* Crosspost Handling:: How crossposted articles are dealt with.
* Duplicate Suppression:: An alternative when crosspost handling fails.
* Security:: Decrypt and Verify.
Summary Buffer Format
-* Summary Buffer Lines:: You can specify how summary lines should look.
-* To From Newsgroups:: How to not display your own name.
-* Summary Buffer Mode Line:: You can say how the mode line should look.
-* Summary Highlighting:: Making the summary buffer all pretty and nice.
+* Summary Buffer Lines:: You can specify how summary lines should look.
+* To From Newsgroups:: How to not display your own name.
+* Summary Buffer Mode Line:: You can say how the mode line should look.
+* Summary Highlighting:: Making the summary buffer all pretty and nice.
Choosing Articles
-* Choosing Commands:: Commands for choosing articles.
-* Choosing Variables:: Variables that influence these commands.
+* Choosing Commands:: Commands for choosing articles.
+* Choosing Variables:: Variables that influence these commands.
Reply, Followup and Post
-* Summary Mail Commands:: Sending mail.
-* Summary Post Commands:: Sending news.
-* Summary Message Commands:: Other Message-related commands.
-* Canceling and Superseding:: ``Whoops, I shouldn't have called him that.''
+* Summary Mail Commands:: Sending mail.
+* Summary Post Commands:: Sending news.
+* Summary Message Commands:: Other Message-related commands.
+* Canceling and Superseding::
+
+Marking Articles
+
+* Unread Articles:: Marks for unread articles.
+* Read Articles:: Marks for read articles.
+* Other Marks:: Marks that do not affect readedness.
+* Setting Marks::
+* Generic Marking Commands::
+* Setting Process Marks::
Marking Articles
-* Unread Articles:: Marks for unread articles.
-* Read Articles:: Marks for read articles.
-* Other Marks:: Marks that do not affect readedness.
-* Setting Marks:: How to set and remove marks.
-* Generic Marking Commands:: How to customize the marking.
-* Setting Process Marks:: How to mark articles for later processing.
+* Setting Marks:: How to set and remove marks.
+* Generic Marking Commands:: How to customize the marking.
+* Setting Process Marks:: How to mark articles for later processing.
Threading
-* Customizing Threading:: Variables you can change to affect the threading.
-* Thread Commands:: Thread based commands in the summary buffer.
+* Customizing Threading:: Variables you can change to affect the threading.
+* Thread Commands:: Thread based commands in the summary buffer.
Customizing Threading
-* Loose Threads:: How Gnus gathers loose threads into bigger threads.
-* Filling In Threads:: Making the threads displayed look fuller.
-* More Threading:: Even more variables for fiddling with threads.
-* Low-Level Threading:: You thought it was over... but you were wrong!
+* Loose Threads:: How Gnus gathers loose threads into bigger threads.
+* Filling In Threads:: Making the threads displayed look fuller.
+* More Threading:: Even more variables for fiddling with threads.
+* Low-Level Threading:: You thought it was over... but you were wrong!
Decoding Articles
-* Uuencoded Articles:: Uudecode articles.
-* Shell Archives:: Unshar articles.
-* PostScript Files:: Split PostScript.
-* Other Files:: Plain save and binhex.
-* Decoding Variables:: Variables for a happy decoding.
-* Viewing Files:: You want to look at the result of the decoding?
+* Uuencoded Articles:: Uudecode articles.
+* Shell Archives:: Unshar articles.
+* PostScript Files:: Split PostScript.
+* Other Files:: Plain save and binhex.
+* Decoding Variables:: Variables for a happy decoding.
+* Viewing Files:: You want to look at the result of the decoding?
Decoding Variables
-* Rule Variables:: Variables that say how a file is to be viewed.
-* Other Decode Variables:: Other decode variables.
-* Uuencoding and Posting:: Variables for customizing uuencoding.
+* Rule Variables:: Variables that say how a file is to be viewed.
+* Other Decode Variables:: Other decode variables.
+* Uuencoding and Posting:: Variables for customizing uuencoding.
Article Treatment
Various Summary Stuff
-* Summary Group Information:: Information oriented commands.
-* Searching for Articles:: Multiple article commands.
-* Summary Generation Commands:: (Re)generating the summary buffer.
-* Really Various Summary Commands:: Those pesky non-conformant commands.
+* Summary Group Information:: Information oriented commands.
+* Searching for Articles:: Multiple article commands.
+* Summary Generation Commands::
+* Really Various Summary Commands:: Those pesky non-conformant commands.
Article Buffer
-* Hiding Headers:: Deciding what headers should be displayed.
-* Using MIME:: Pushing articles through @sc{mime} before reading them.
-* Customizing Articles:: Tailoring the look of the articles.
-* Article Keymap:: Keystrokes available in the article buffer.
-* Misc Article:: Other stuff.
+* Hiding Headers:: Deciding what headers should be displayed.
+* Using MIME:: Pushing articles through @sc{mime} before reading them.
+* Customizing Articles:: Tailoring the look of the articles.
+* Article Keymap:: Keystrokes available in the article buffer.
+* Misc Article:: Other stuff.
Composing Messages
-* Mail:: Mailing and replying.
-* Posting Server:: What server should you post via?
-* Mail and Post:: Mailing and posting at the same time.
-* Archived Messages:: Where Gnus stores the messages you've sent.
-* Posting Styles:: An easier way to specify who you are.
-* Drafts:: Postponing messages and rejected messages.
-* Rejected Articles:: What happens if the server doesn't like your article?
-* Using GPG:: How to use GPG and MML to sign and encrypt messages
+* Mail:: Mailing and replying.
+* Posting Server:: What server should you post via?
+* Mail and Post:: Mailing and posting at the same time.
+* Archived Messages:: Where Gnus stores the messages you've sent.
+* Posting Styles:: An easier way to specify who you are.
+* Drafts:: Postponing messages and rejected messages.
+* Rejected Articles:: What happens if the server doesn't like your article?
+* Using GPG:: How to use GPG and MML to sign and encrypt messages
Select Methods
-* Server Buffer:: Making and editing virtual servers.
-* Getting News:: Reading USENET news with Gnus.
-* Getting Mail:: Reading your personal mail with Gnus.
-* Browsing the Web:: Getting messages from a plethora of Web sources.
-* Other Sources:: Reading directories, files, SOUP packets.
-* Combined Groups:: Combining groups into one group.
-* Gnus Unplugged:: Reading news and mail offline.
+* Server Buffer:: Making and editing virtual servers.
+* Getting News:: Reading USENET news with Gnus.
+* Getting Mail:: Reading your personal mail with Gnus.
+* Browsing the Web:: Getting messages from a plethora of Web sources.
+* Other Sources:: Reading directories, files, SOUP packets.
+* Combined Groups:: Combining groups into one group.
+* Gnus Unplugged:: Reading news and mail offline.
Server Buffer
-* Server Buffer Format:: You can customize the look of this buffer.
-* Server Commands:: Commands to manipulate servers.
-* Example Methods:: Examples server specifications.
-* Creating a Virtual Server:: An example session.
-* Server Variables:: Which variables to set.
-* Servers and Methods:: You can use server names as select methods.
-* Unavailable Servers:: Some servers you try to contact may be down.
+* Server Buffer Format:: You can customize the look of this buffer.
+* Server Commands:: Commands to manipulate servers.
+* Example Methods:: Examples server specifications.
+* Creating a Virtual Server:: An example session.
+* Server Variables:: Which variables to set.
+* Servers and Methods:: You can use server names as select methods.
+* Unavailable Servers:: Some servers you try to contact may be down.
Getting News
-* NNTP:: Reading news from an @sc{nntp} server.
-* News Spool:: Reading news from the local spool.
+* NNTP:: Reading news from an @sc{nntp} server.
+* News Spool:: Reading news from the local spool.
+
+@sc{nntp}
+
+* Direct Functions:: Connecting directly to the server.
+* Indirect Functions:: Connecting indirectly to the server.
+* Common Variables:: Understood by several connection functions.
Getting Mail
-* Mail in a Newsreader:: Important introductory notes.
-* Getting Started Reading Mail:: A simple cookbook example.
-* Splitting Mail:: How to create mail groups.
-* Mail Sources:: How to tell Gnus where to get mail from.
-* Mail Backend Variables:: Variables for customizing mail handling.
-* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
-* Group Mail Splitting:: Use group customize to drive mail splitting.
-* Incorporating Old Mail:: What about the old mail you have?
-* Expiring Mail:: Getting rid of unwanted mail.
-* Washing Mail:: Removing cruft from the mail you get.
-* Duplicates:: Dealing with duplicated mail.
-* Not Reading Mail:: Using mail backends for reading other files.
-* Choosing a Mail Backend:: Gnus can read a variety of mail formats.
+* Mail in a Newsreader:: Important introductory notes.
+* Getting Started Reading Mail:: A simple cookbook example.
+* Splitting Mail:: How to create mail groups.
+* Mail Sources:: How to tell Gnus where to get mail from.
+* Mail Backend Variables:: Variables for customizing mail handling.
+* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
+* Group Mail Splitting:: Use group customize to drive mail splitting.
+* Incorporating Old Mail:: What about the old mail you have?
+* Expiring Mail:: Getting rid of unwanted mail.
+* Washing Mail:: Removing gruft from the mail you get.
+* Duplicates:: Dealing with duplicated mail.
+* Not Reading Mail:: Using mail backends for reading other files.
+* Choosing a Mail Backend:: Gnus can read a variety of mail formats.
Mail Sources
-* Mail Source Specifiers:: How to specify what a mail source is.
-* Mail Source Customization:: Some variables that influence things.
-* Fetching Mail:: Using the mail source specifiers.
+* Mail Source Specifiers:: How to specify what a mail source is.
+* Mail Source Customization:: Some variables that influence things.
+* Fetching Mail:: Using the mail source specifiers.
Choosing a Mail Backend
Browsing the Web
-* Web Searches:: Creating groups from articles that match a string.
-* Slashdot:: Reading the Slashdot comments.
-* Ultimate:: The Ultimate Bulletin Board systems.
-* Web Archive:: Reading mailing list archived on web.
-* RSS:: Reading RDF site summary.
-* Customizing w3:: Doing stuff to Emacs/w3 from Gnus.
+* Web Searches:: Creating groups from articles that match a string.
+* Slashdot:: Reading the Slashdot comments.
+* Ultimate:: The Ultimate Bulletin Board systems.
+* Web Archive:: Reading mailing list archived on web.
+* RSS:: Reading RDF site summary.
+* Customizing w3:: Doing stuff to Emacs/w3 from Gnus.
Other Sources
-* Directory Groups:: You can read a directory as if it was a newsgroup.
-* Anything Groups:: Dired? Who needs dired?
-* Document Groups:: Single files can be the basis of a group.
-* SOUP:: Reading @sc{soup} packets ``offline''.
-* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
-* IMAP:: Using Gnus as a @sc{imap} client.
+* Directory Groups:: You can read a directory as if it was a newsgroup.
+* Anything Groups:: Dired? Who needs dired?
+* Document Groups:: Single files can be the basis of a group.
+* SOUP:: Reading @sc{soup} packets ``offline''.
+* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
+* IMAP:: Using Gnus as a @sc{imap} client.
Document Groups
SOUP
-* SOUP Commands:: Commands for creating and sending @sc{soup} packets
-* SOUP Groups:: A backend for reading @sc{soup} packets.
-* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
+* SOUP Commands:: Commands for creating and sending @sc{soup} packets
+* SOUP Groups:: A backend for reading @sc{soup} packets.
+* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
@sc{imap}
-* Splitting in IMAP:: Splitting mail with nnimap.
-* Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox.
-* Expunging mailboxes:: Equivalent of a "compress mailbox" button.
+* Splitting in IMAP:: Splitting mail with nnimap.
+* Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox.
+* Expunging mailboxes:: Equivalent of a "compress mailbox" button.
Combined Groups
-* Virtual Groups:: Combining articles from many groups.
-* Kibozed Groups:: Looking through parts of the newsfeed for articles.
+* Virtual Groups:: Combining articles from many groups.
+* Kibozed Groups:: Looking through parts of the newsfeed for articles.
Gnus Unplugged
-* Agent Basics:: How it all is supposed to work.
-* Agent Categories:: How to tell the Gnus Agent what to download.
-* Agent Commands:: New commands for all the buffers.
-* Agent Expiry:: How to make old articles go away.
-* Agent and IMAP:: How to use the Agent with IMAP.
-* Outgoing Messages:: What happens when you post/mail something?
-* Agent Variables:: Customizing is fun.
-* Example Setup:: An example @file{.gnus.el} file for offline people.
-* Batching Agents:: How to fetch news from a @code{cron} job.
-* Agent Caveats:: What you think it'll do and what it does.
+* Agent Basics:: How it all is supposed to work.
+* Agent Categories:: How to tell the Gnus Agent what to download.
+* Agent Commands:: New commands for all the buffers.
+* Agent Expiry:: How to make old articles go away.
+* Agent and IMAP:: How to use the Agent with IMAP.
+* Outgoing Messages:: What happens when you post/mail something?
+* Agent Variables:: Customizing is fun.
+* Example Setup:: An example @file{.gnus.el} file for offline people.
+* Batching Agents:: How to fetch news from a @code{cron} job.
+* Agent Caveats:: What you think it'll do and what it does.
Agent Categories
-* Category Syntax:: What a category looks like.
-* Category Buffer:: A buffer for maintaining categories.
-* Category Variables:: Customize'r'Us.
+* Category Syntax:: What a category looks like.
+* Category Buffer:: A buffer for maintaining categories.
+* Category Variables:: Customize'r'Us.
Agent Commands
-* Group Agent Commands::
-* Summary Agent Commands::
-* Server Agent Commands::
+* Group Agent Commands::
+* Summary Agent Commands::
+* Server Agent Commands::
Scoring
-* Summary Score Commands:: Adding score entries for the current group.
-* Group Score Commands:: General score commands.
-* Score Variables:: Customize your scoring. (My, what terminology).
-* Score File Format:: What a score file may contain.
-* Score File Editing:: You can edit score files by hand as well.
-* Adaptive Scoring:: Big Sister Gnus knows what you read.
-* Home Score File:: How to say where new score entries are to go.
-* Followups To Yourself:: Having Gnus notice when people answer you.
-* Scoring Tips:: How to score effectively.
-* Reverse Scoring:: That problem child of old is not problem.
-* Global Score Files:: Earth-spanning, ear-splitting score files.
-* Kill Files:: They are still here, but they can be ignored.
-* Converting Kill Files:: Translating kill files to score files.
-* GroupLens:: Getting predictions on what you like to read.
-* Advanced Scoring:: Using logical expressions to build score rules.
-* Score Decays:: It can be useful to let scores wither away.
+* Summary Score Commands:: Adding score entries for the current group.
+* Group Score Commands:: General score commands.
+* Score Variables:: Customize your scoring. (My, what terminology).
+* Score File Format:: What a score file may contain.
+* Score File Editing:: You can edit score files by hand as well.
+* Adaptive Scoring:: Big Sister Gnus knows what you read.
+* Home Score File:: How to say where new score entries are to go.
+* Followups To Yourself:: Having Gnus notice when people answer you.
+* Scoring On Other Headers:: Scoring on non-standard headers.
+* Scoring Tips:: How to score effectively.
+* Reverse Scoring:: That problem child of old is not problem.
+* Global Score Files:: Earth-spanning, ear-splitting score files.
+* Kill Files:: They are still here, but they can be ignored.
+* Converting Kill Files:: Translating kill files to score files.
+* GroupLens:: Getting predictions on what you like to read.
+* Advanced Scoring:: Using logical expressions to build score rules.
+* Score Decays:: It can be useful to let scores wither away.
GroupLens
-* Using GroupLens:: How to make Gnus use GroupLens.
-* Rating Articles:: Letting GroupLens know how you rate articles.
-* Displaying Predictions:: Displaying predictions given by GroupLens.
-* GroupLens Variables:: Customizing GroupLens.
+* Using GroupLens:: How to make Gnus use GroupLens.
+* Rating Articles:: Letting GroupLens know how you rate articles.
+* Displaying Predictions:: Displaying predictions given by GroupLens.
+* GroupLens Variables:: Customizing GroupLens.
Advanced Scoring
Various
-* Process/Prefix:: A convention used by many treatment commands.
-* Interactive:: Making Gnus ask you many questions.
-* Symbolic Prefixes:: How to supply some Gnus functions with options.
-* Formatting Variables:: You can specify what buffers should look like.
-* Window Layout:: Configuring the Gnus buffer windows.
-* Faces and Fonts:: How to change how faces look.
-* Compilation:: How to speed Gnus up.
-* Mode Lines:: Displaying information in the mode lines.
-* Highlighting and Menus:: Making buffers look all nice and cozy.
-* Buttons:: Get tendinitis in ten easy steps!
-* Daemons:: Gnus can do things behind your back.
-* NoCeM:: How to avoid spam and other fatty foods.
-* Undo:: Some actions can be undone.
-* Moderation:: What to do if you're a moderator.
-* XEmacs Enhancements:: There are more pictures and stuff under XEmacs.
-* Fuzzy Matching:: What's the big fuzz?
-* Thwarting Email Spam:: A how-to on avoiding unsolicited commercial email.
-* Various Various:: Things that are really various.
+* Process/Prefix:: A convention used by many treatment commands.
+* Interactive:: Making Gnus ask you many questions.
+* Symbolic Prefixes:: How to supply some Gnus functions with options.
+* Formatting Variables:: You can specify what buffers should look like.
+* Window Layout:: Configuring the Gnus buffer windows.
+* Faces and Fonts:: How to change how faces look.
+* Compilation:: How to speed Gnus up.
+* Mode Lines:: Displaying information in the mode lines.
+* Highlighting and Menus:: Making buffers look all nice and cozy.
+* Buttons:: Get tendinitis in ten easy steps!
+* Daemons:: Gnus can do things behind your back.
+* NoCeM:: How to avoid spam and other fatty foods.
+* Undo:: Some actions can be undone.
+* Moderation:: What to do if you're a moderator.
+* XEmacs Enhancements:: There are more pictures and stuff under XEmacs.
+* Fuzzy Matching:: What's the big fuzz?
+* Thwarting Email Spam:: A how-to on avoiding unsolicited commercial email.
+* Various Various:: Things that are really various.
Formatting Variables
-* Formatting Basics:: A formatting variable is basically a format string.
-* Mode Line Formatting:: Some rules about mode line formatting variables.
-* Advanced Formatting:: Modifying output in various ways.
-* User-Defined Specs:: Having Gnus call your own functions.
-* Formatting Fonts:: Making the formatting look colorful and nice.
+* Formatting Basics:: A formatting variable is basically a format string.
+* Mode Line Formatting:: Some rules about mode line formatting variables.
+* Advanced Formatting:: Modifying output in various ways.
+* User-Defined Specs:: Having Gnus call your own functions.
+* Formatting Fonts:: Making the formatting look colorful and nice.
+* Positioning Point:: Moving point to a position after an operation.
+* Tabulation:: Tabulating your output.
+* Wide Characters:: Dealing with wide characters.
XEmacs Enhancements
-* Picons:: How to display pictures of what your reading.
-* Smileys:: Show all those happy faces the way they were meant to be shown.
-* Toolbar:: Click'n'drool.
-* XVarious:: Other XEmacsy Gnusey variables.
+* Picons:: How to display pictures of what your reading.
+* Smileys:: Show all those happy faces the way they were meant to be shown.
+* Toolbar:: Click'n'drool.
+* XVarious:: Other XEmacsy Gnusey variables.
Picons
-* Picon Basics:: What are picons and How do I get them.
-* Picon Requirements:: Don't go further if you aren't using XEmacs.
-* Easy Picons:: Displaying Picons---the easy way.
-* Hard Picons:: The way you should do it. You'll learn something.
-* Picon Useless Configuration:: Other variables you can trash/tweak/munge/play with.
+* Picon Basics:: What are picons and How do I get them.
+* Picon Requirements:: Don't go further if you aren't using XEmacs.
+* Easy Picons:: Displaying Picons---the easy way.
+* Hard Picons:: The way you should do it. You'll learn something.
+* Picon Useless Configuration:: Other variables you can trash/tweak/munge/play with.
Appendices
-* History:: How Gnus got where it is today.
-* On Writing Manuals:: Why this is not a beginner's guide.
-* Terminology:: We use really difficult, like, words here.
-* Customization:: Tailoring Gnus to your needs.
-* 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:: A question-and-answer session.
+* History:: How Gnus got where it is today.
+* On Writing Manuals:: Why this is not a beginner's guide.
+* Terminology:: We use really difficult, like, words here.
+* Customization:: Tailoring Gnus to your needs.
+* 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.
History
-* Gnus Versions:: What Gnus versions have been released.
-* Other Gnus Versions:: Other Gnus versions that also have been released.
-* Why?:: What's the point of Gnus?
-* Compatibility:: Just how compatible is Gnus with @sc{gnus}?
-* Conformity:: Gnus tries to conform to all standards.
-* Emacsen:: Gnus can be run on a few modern Emacsen.
-* Gnus Development:: How Gnus is developed.
-* Contributors:: Oodles of people.
-* New Features:: Pointers to some of the new stuff in Gnus.
+* Gnus Versions:: What Gnus versions have been released.
+* Other Gnus Versions:: Other Gnus versions that also have been released.
+* Why?:: What's the point of Gnus?
+* Compatibility:: Just how compatible is Gnus with @sc{gnus}?
+* Conformity:: Gnus tries to conform to all standards.
+* Emacsen:: Gnus can be run on a few modern Emacsen.
+* Gnus Development:: How Gnus is developed.
+* Contributors:: Oodles of people.
+* New Features:: Pointers to some of the new stuff in Gnus.
New Features
-* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
-* September Gnus:: The Thing Formally Known As Gnus 5.2/5.3.
-* 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.
+* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
+* September Gnus:: The Thing Formally Known As Gnus 5.2/5.3.
+* 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.
Customization
-* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
-* Slow Terminal Connection:: You run a remote Emacs.
-* Little Disk Space:: You feel that having large setup files is icky.
-* Slow Machine:: You feel like buying a faster machine.
+* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
+* Slow Terminal Connection:: You run a remote Emacs.
+* Little Disk Space:: You feel that having large setup files is icky.
+* Slow Machine:: You feel like buying a faster machine.
Gnus Reference Guide
-* Gnus Utility Functions:: Common functions and variable to use.
-* Backend Interface:: How Gnus communicates with the servers.
-* Score File Syntax:: A BNF definition of the score file standard.
-* Headers:: How Gnus stores headers internally.
-* Ranges:: A handy format for storing mucho numbers.
-* Group Info:: The group info format.
-* Extended Interactive:: Symbolic prefixes and stuff.
-* Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen.
-* Various File Formats:: Formats of files that Gnus use.
+* Gnus Utility Functions:: Common functions and variable to use.
+* Backend Interface:: How Gnus communicates with the servers.
+* Score File Syntax:: A BNF definition of the score file standard.
+* Headers:: How Gnus stores headers internally.
+* Ranges:: A handy format for storing mucho numbers.
+* Group Info:: The group info format.
+* Extended Interactive:: Symbolic prefixes and stuff.
+* Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen.
+* Various File Formats:: Formats of files that Gnus use.
Backend Interface
-* Required Backend Functions:: Functions that must be implemented.
-* Optional Backend Functions:: Functions that need not be implemented.
-* Error Messaging:: How to get messages and report errors.
-* Writing New Backends:: Extending old backends.
-* Hooking New Backends Into Gnus:: What has to be done on the Gnus end.
-* Mail-like Backends:: Some tips on mail backends.
+* Required Backend Functions:: Functions that must be implemented.
+* Optional Backend Functions:: Functions that need not be implemented.
+* Error Messaging:: How to get messages and report errors.
+* Writing New Backends:: Extending old backends.
+* Hooking New Backends Into Gnus:: What has to be done on the Gnus end.
+* Mail-like Backends:: Some tips on mail backends.
Various File Formats
-* Active File Format:: Information on articles and groups available.
-* Newsgroups File Format:: Group descriptions.
+* Active File Format:: Information on articles and groups available.
+* Newsgroups File Format:: Group descriptions.
Emacs for Heathens
-* Keystrokes:: Entering text and executing commands.
-* Emacs Lisp:: The built-in Emacs programming language.
+* Keystrokes:: Entering text and executing commands.
+* Emacs Lisp:: The built-in Emacs programming language.
@end detailmenu
@end menu
terminology section (@pxref{Terminology}).
@menu
-* Finding the News:: Choosing a method for getting news.
-* The First Time:: What does gnus do the first time you start it?
-* The Server is Down:: How can I read my mail then?
-* Slave Gnusae:: You can have more than one gnus active at a time.
-* Fetching a Group:: Starting gnus just to read a group.
-* New Groups:: What is gnus supposed to do with new groups?
-* Startup Files:: Those pesky startup files---@file{.newsrc}.
-* Auto Save:: Recovering from a crash.
-* The Active File:: Reading the active file over a slow line Takes Time.
-* Changing Servers:: You may want to move from one server to another.
-* Startup Variables:: Other variables you might change.
+* Finding the News:: Choosing a method for getting news.
+* The First Time:: What does Gnus do the first time you start it?
+* The Server is Down:: How can I read my mail then?
+* Slave Gnusae:: You can have more than one Gnus active at a time.
+* Fetching a Group:: Starting Gnus just to read a group.
+* New Groups:: What is Gnus supposed to do with new groups?
+* Changing Servers:: You may want to move from one server to another.
+* Startup Files:: Those pesky startup files---@file{.newsrc}.
+* Auto Save:: Recovering from a crash.
+* The Active File:: Reading the active file over a slow line Takes Time.
+* Startup Variables:: Other variables you might change.
@end menu
when you do the @kbd{g} command (@pxref{Scanning New Messages}).
@menu
-* Checking New Groups:: Determining what groups are new.
-* Subscription Methods:: What gnus should do with new groups.
-* Filtering New Groups:: Making gnus ignore certain new groups.
+* Checking New Groups:: Determining what groups are new.
+* Subscription Methods:: What Gnus should do with new groups.
+* Filtering New Groups:: Making Gnus ignore certain new groups.
@end menu
@end iftex
@menu
-* Group Buffer Format:: Information listed and how you can change it.
-* Group Maneuvering:: Commands for moving in the group buffer.
-* Selecting a Group:: Actually reading news.
-* Group Data:: Changing the info for a group.
-* Subscription Commands:: Unsubscribing, killing, subscribing.
-* Group Levels:: Levels? What are those, then?
-* Group Score:: A mechanism for finding out what groups you like.
-* Marking Groups:: You can mark groups for later processing.
-* Foreign Groups:: Creating and editing groups.
-* Group Parameters:: Each group may have different parameters set.
-* Listing Groups:: Gnus can list various subsets of the groups.
-* Sorting Groups:: Re-arrange the group order.
-* Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
-* Browse Foreign Server:: You can browse a server. See what it has to offer.
-* Exiting Gnus:: Stop reading news and get some work done.
-* Group Topics:: A folding group mode divided into topics.
-* Misc Group Stuff:: Other stuff that you can to do.
+* Group Buffer Format:: Information listed and how you can change it.
+* Group Maneuvering:: Commands for moving in the group buffer.
+* Selecting a Group:: Actually reading news.
+* Subscription Commands:: Unsubscribing, killing, subscribing.
+* Group Data:: Changing the info for a group.
+* Group Levels:: Levels? What are those, then?
+* Group Score:: A mechanism for finding out what groups you like.
+* Marking Groups:: You can mark groups for later processing.
+* Foreign Groups:: Creating and editing groups.
+* Group Parameters:: Each group may have different parameters set.
+* Listing Groups:: Gnus can list various subsets of the groups.
+* Sorting Groups:: Re-arrange the group order.
+* Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
+* Browse Foreign Server:: You can browse a server. See what it has to offer.
+* Exiting Gnus:: Stop reading news and get some work done.
+* Group Topics:: A folding group mode divided into topics.
+* Misc Group Stuff:: Other stuff that you can to do.
@end menu
@section Group Buffer Format
@menu
-* Group Line Specification:: Deciding how the group buffer is to look.
-* Group Modeline Specification:: The group buffer modeline.
-* Group Highlighting:: Having nice colors in the group buffer.
+* Group Line Specification:: Deciding how the group buffer is to look.
+* Group Modeline Specification:: The group buffer modeline.
+* Group Highlighting:: Having nice colors in the group buffer.
@end menu
@code{to-list} group parameter, one will be added automatically upon
sending the message.
+@findex gnus-mailing-list-mode
+@cindex Mail List Groups
If this variable is set, @code{gnus-mailing-list-mode} is turned on when
entering summary buffer.
@item default
Display the default visible articles, which normally includes unread and
ticked articles.
+
+@item an array
+Display articles that satisfy a predicate.
+
+Here are some examples:
+
+@table @code
+@item [unread]
+Display only unread articles.
+
+@item [not expire]
+Display everything except expirable articles.
+
+@item [and (not reply) (not expirable)]
+Display everything except expirable and articles you've already
+responded to.
@end table
+The available operators are @code{not}, @code{and} and @code{or}.
+Predicates include @code{tick}, @code{unsend}, @code{undownload},
+@code{unread}, @code{read}, @code{dormant}, @code{}, @code{}, @code{},
+@code{expire}, @code{reply}, @code{killed}, @code{bookmark},
+@code{score}, @code{save}, @code{cache}, @code{forward}, and
+@code{recent}.
+
+@end table
+
+
@item comment
Elements that look like @code{(comment . "This is a comment")}
are arbitrary comments on the group. They are currently ignored by
silly Lisp errors.) You might also be interested in reading about topic
parameters (@pxref{Topic Parameters}).
-Group parameters can be set in @code{gnus-parameters} too. But some
-variables, such as @code{visible}, have no effect. For example,
+Group parameters can be set via the @code{gnus-parameters} variable too.
+But some variables, such as @code{visible}, have no effect. For
+example:
@example
(setq gnus-parameters
- '(("mail\\..*" (gnus-show-threads nil)
- (gnus-use-scoring nil)
- (gnus-summary-line-format
- "%U%R%z%I%(%[%d:%ub%-20,20f%]%) %s\n")
- (gcc-self . t)
- (display . all))
- ("mail\\.me" (gnus-use-scoring t))
- ("list\\..*" (total-expire . t)
- (broken-reply-to . t)))
+ '(("mail\\..*"
+ (gnus-show-threads nil)
+ (gnus-use-scoring nil)
+ (gnus-summary-line-format
+ "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n")
+ (gcc-self . t)
+ (display . all))
+
+ ("^nnimap:\\(foo.bar\\)$"
+ (to-group . "\\1"))
+
+ ("mail\\.me"
+ (gnus-use-scoring t))
+
+ ("list\\..*"
+ (total-expire . t)
+ (broken-reply-to . t))))
@end example
+String value of parameters will be subjected to regexp substitution, as
+the @code{to-group} example shows.
+
+
@node Listing Groups
@section Listing Groups
@cindex group listing
@end lisp
@menu
-* Topic Variables:: How to customize the topics the Lisp Way.
-* Topic Commands:: Interactive E-Z commands.
-* Topic Sorting:: Sorting each topic individually.
-* Topic Topology:: A map of the world.
-* Topic Parameters:: Parameters that apply to all groups in a topic.
+* Topic Variables:: How to customize the topics the Lisp Way.
+* Topic Commands:: Interactive E-Z commands.
+* Topic Sorting:: Sorting each topic individually.
+* Topic Topology:: A map of the world.
+* Topic Parameters:: Parameters that apply to all groups in a topic.
@end menu
@section Misc Group Stuff
@menu
-* Scanning New Messages:: Asking gnus to see whether new messages have arrived.
-* Group Information:: Information and help on groups and gnus.
-* Group Timestamp:: Making gnus keep track of when you last read a group.
-* File Commands:: Reading and writing the gnus files.
+* Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
+* Group Information:: Information and help on groups and Gnus.
+* Group Timestamp:: Making Gnus keep track of when you last read a group.
+* File Commands:: Reading and writing the Gnus files.
@end menu
@table @kbd
* Choosing Articles:: Reading articles.
* Paging the Article:: Scrolling the current article.
* Reply Followup and Post:: Posting articles.
+* Delayed Articles::
* Marking Articles:: Marking articles as read, expirable, etc.
* Limiting:: You can limit the summary buffer.
* Threading:: How threads are made.
@end iftex
@menu
-* Summary Buffer Lines:: You can specify how summary lines should look.
-* To From Newsgroups:: How to not display your own name.
-* Summary Buffer Mode Line:: You can say how the mode line should look.
-* Summary Highlighting:: Making the summary buffer all pretty and nice.
+* Summary Buffer Lines:: You can specify how summary lines should look.
+* To From Newsgroups:: How to not display your own name.
+* Summary Buffer Mode Line:: You can say how the mode line should look.
+* Summary Highlighting:: Making the summary buffer all pretty and nice.
@end menu
@findex mail-extract-address-components
lines as a normal @code{format} string, with some extensions
(@pxref{Formatting Variables}).
-There should always be a colon on the line; the cursor always moves to
-the colon after performing an operation. (Of course, Gnus wouldn't be
-Gnus if it wasn't possible to change this. Just write a new function
+There should always be a colon or a point position marker on the line;
+the cursor always moves to the point position marker or the colon after
+performing an operation. (Of course, Gnus wouldn't be Gnus if it wasn't
+possible to change this. Just write a new function
@code{gnus-goto-colon} which does whatever you like with the cursor.)
-The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
+The default string is @samp{%U%R%z%I%(%[%4L: %-23,23n%]%) %s\n}.
The following format specification characters are understood:
'(To Newsgroups))
(setq nnmail-extra-headers gnus-extra-headers)
(setq gnus-summary-line-format
- "%U%R%z%I%(%[%4L: %-20,20f%]%) %s\n")
+ "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
(setq gnus-ignored-from-addresses
"Your Name Here")
@end lisp
@cindex selecting articles
@menu
-* Choosing Commands:: Commands for choosing articles.
-* Choosing Variables:: Variables that influence these commands.
+* Choosing Commands:: Commands for choosing articles.
+* Choosing Variables:: Variables that influence these commands.
@end menu
* Summary Mail Commands:: Sending mail.
* Summary Post Commands:: Sending news.
* Summary Message Commands:: Other Message-related commands.
-* Canceling and Superseding:: ``Whoops, I shouldn't have called him that.''
+* Canceling and Superseding::
@end menu
Just remember, kids: There is no 'c' in 'supersede'.
+@node Delayed Articles
+@section Delayed Articles
+@cindex delayed sending
+@cindex send delayed
+
+Sometimes, you might wish to delay the sending of a message. For
+example, you might wish to arrange for a message to turn up just in time
+to remind your about the birthday of your Significant Other. For this,
+there is the @code{gnus-delay} package. Setup is simple:
+
+@lisp
+(gnus-delay-initialize)
+@end lisp
+
+@findex gnus-delay-article
+Normally, to send a message you use the @kbd{C-c C-c} command from
+Message mode. To delay a message, use @kbd{C-c C-j}
+(@code{gnus-delay-article}) instead. This will ask you for how long the
+message should be delayed. Possible answers are:
+
+@itemize
+@item
+A time span. Consists of an integer and a letter. For example,
+@code{42d} means to delay for 42 days. Available letters are @code{m}
+(minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M}
+(months) and @code{Y} (years).
+
+@item
+A specific date. Looks like @code{YYYYY-MM-DD}. The message will be
+delayed until that day, at a specific time (eight o'clock by default).
+See also @code{gnus-delay-default-hour}.
+
+@item
+A specific time of day. Given in @code{hh:mm} format, 24h, no am/pm
+stuff. The deadline will be at that time today, except if that time has
+already passed, then it's at the given time tomorrow. So if it's ten
+o'clock in the morning and you specify @code{11:15}, then the deadline
+is one hour and fifteen minutes hence. But if you specify @code{9:20},
+that means a time tomorrow.
+@end itemize
+
+The action of the @code{gnus-delay-article} command is influenced by a
+couple of variables:
+
+@table @code
+@item gnus-delay-default-hour
+@vindex gnus-delay-default-hour
+When you specify a specific date, the message will be due on that hour
+on the given date. Possible values are integers 0 through 23.
+
+@item gnus-delay-default-delay
+@vindex gnus-delay-default-delay
+This is a string and gives the default delay. It can be of any of the
+formats described above.
+
+@item gnus-delay-group
+@vindex gnus-delay-group
+Delayed articles will be kept in this group on the drafts server until
+they are due. You probably don't need to change this. The default
+value is @code{"delayed"}.
+
+@item gnus-delay-header
+@vindex gnus-delay-header
+The deadline for each article will be stored in a header. This variable
+is a string and gives the header name. You probably don't need to
+change this. The default value is @code{"X-Gnus-Delayed"}.
+@end table
+
+The way delaying works is like this: when you use the
+@code{gnus-delay-article} command, you give a certain delay. Gnus
+calculates the deadline of the message and stores it in the
+@code{X-Gnus-Delayed} header and puts the message in the
+@code{nndraft:delayed} group.
+
+And whenever you get new news, Gnus looks through the group for articles
+which are due and sends them. It uses the @code{gnus-delay-send-drafts}
+function for this. By default, this function is added to the hook
+@code{gnus-get-new-news-hook}. But of course, you can change this.
+Maybe you want to use the demon to send drafts? Just tell the demon to
+execute the @code{gnus-delay-send-drafts} function.
+
+@table @code
+@item gnus-delay-initialize
+@findex gnus-delay-initialize
+By default, this function installs the @kbd{C-c C-j} key binding in
+Message mode and @code{gnus-delay-send-drafts} in
+@code{gnus-get-new-news-hook}. But it accepts two optional arguments,
+@code{no-keymap} and @code{no-check}. If @code{no-keymap} is non-nil,
+the @kbd{C-c C-j} binding is not intalled. If @code{no-check} is
+non-nil, @code{gnus-get-new-news-hook} is not changed.
+
+For example, @code{(gnus-delay-initialize nil t)} means to change the
+keymap but not to change @code{gnus-get-new-news-hook}. Presumably, you
+want to use the demon for sending due delayed articles. Just don't
+forget to set that up :-)
+@end table
+
@node Marking Articles
@section Marking Articles
In addition, you also have marks that do not affect readedness.
@menu
-* Unread Articles:: Marks for unread articles.
-* Read Articles:: Marks for read articles.
-* Other Marks:: Marks that do not affect readedness.
+* Unread Articles:: Marks for unread articles.
+* Read Articles:: Marks for read articles.
+* Other Marks:: Marks that do not affect readedness.
@end menu
@ifinfo
(@code{gnus-replied-mark}).
@vindex gnus-forwarded-mark
-All articles that you have forwarded will be marked with an @samp{O} in
+All articles that you have forwarded will be marked with an @samp{F} in
the second column (@code{gnus-forwarded-mark}).
@vindex gnus-recent-mark
(@code{gnus-saved-mark}).
@item
+@vindex gnus-unseen-mark
+Articles that haven't been seen by the user before are marked with a
+@samp{.} in the second column (@code{gnus-unseen-mark}).
+
+@item
@vindex gnus-not-empty-thread-mark
@vindex gnus-empty-thread-mark
If the @samp{%e} spec is used, the presence of threads or not will be
@menu
-* Customizing Threading:: Variables you can change to affect the threading.
-* Thread Commands:: Thread based commands in the summary buffer.
+* Customizing Threading:: Variables you can change to affect the threading.
+* Thread Commands:: Thread based commands in the summary buffer.
@end menu
@cindex customizing threading
@menu
-* Loose Threads:: How gnus gathers loose threads into bigger threads.
-* Filling In Threads:: Making the threads displayed look fuller.
-* More Threading:: Even more variables for fiddling with threads.
-* Low-Level Threading:: You thought it was over... but you were wrong!
+* Loose Threads:: How Gnus gathers loose threads into bigger threads.
+* Filling In Threads:: Making the threads displayed look fuller.
+* More Threading:: Even more variables for fiddling with threads.
+* Low-Level Threading:: You thought it was over... but you were wrong!
@end menu
encoded in some way or other. Gnus can decode them for you.
@menu
-* Uuencoded Articles:: Uudecode articles.
-* Shell Archives:: Unshar articles.
-* PostScript Files:: Split PostScript.
-* Other Files:: Plain save and binhex.
-* Decoding Variables:: Variables for a happy decoding.
-* Viewing Files:: You want to look at the result of the decoding?
+* Uuencoded Articles:: Uudecode articles.
+* Shell Archives:: Unshar articles.
+* PostScript Files:: Split PostScript.
+* Other Files:: Plain save and binhex.
+* Decoding Variables:: Variables for a happy decoding.
+* Viewing Files:: You want to look at the result of the decoding?
@end menu
@cindex series
Adjective, not verb.
@menu
-* Rule Variables:: Variables that say how a file is to be viewed.
-* Other Decode Variables:: Other decode variables.
-* Uuencoding and Posting:: Variables for customizing uuencoding.
+* Rule Variables:: Variables that say how a file is to be viewed.
+* Other Decode Variables:: Other decode variables.
+* Uuencoding and Posting:: Variables for customizing uuencoding.
@end menu
these articles easier.
@menu
-* Article Highlighting:: You want to make the article look like fruit salad.
-* Article Fontisizing:: Making emphasized text look nice.
-* Article Hiding:: You also want to make certain info go away.
-* Article Washing:: Lots of way-neat functions to make life better.
-* Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
-* Article Date:: Grumble, UT!
-* Article Signature:: What is a signature?
-* Article Miscellania:: Various other stuff.
+* Article Highlighting:: You want to make the article look like fruit salad.
+* Article Fontisizing:: Making emphasized text look nice.
+* Article Hiding:: You also want to make certain info go away.
+* Article Washing:: Lots of way-neat functions to make life better.
+* Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
+* Article Date:: Grumble, UT!
+* Article Signature:: What is a signature?
+* Article Miscellania:: Various other stuff.
@end menu
@section Various Summary Stuff
@menu
-* Summary Group Information:: Information oriented commands.
-* Searching for Articles:: Multiple article commands.
-* Summary Generation Commands:: (Re)generating the summary buffer.
-* Really Various Summary Commands:: Those pesky non-conformant commands.
+* Summary Group Information:: Information oriented commands.
+* Searching for Articles:: Multiple article commands.
+* Summary Generation Commands::
+* Really Various Summary Commands:: Those pesky non-conformant commands.
@end menu
@table @code
tell gnus otherwise.
@menu
-* Hiding Headers:: Deciding what headers should be displayed.
-* Using MIME:: Pushing articles through @sc{mime} before reading them.
-* Customizing Articles:: Tailoring the look of the articles.
-* Article Keymap:: Keystrokes available in the article buffer.
-* Misc Article:: Other stuff.
+* Hiding Headers:: Deciding what headers should be displayed.
+* Using MIME:: Pushing articles through @sc{mime} before reading them.
+* Customizing Articles:: Tailoring the look of the articles.
+* Article Keymap:: Keystrokes available in the article buffer.
+* Misc Article:: Other stuff.
@end menu
on your setup (@pxref{Posting Server}).
@menu
-* Mail:: Mailing and replying.
-* Posting Server:: What server should you post via?
-* Mail and Post:: Mailing and posting at the same time.
-* Archived Messages:: Where gnus stores the messages you've sent.
-* Posting Styles:: An easier way to specify who you are.
-* Drafts:: Postponing messages and rejected messages.
-* Rejected Articles:: What happens if the server doesn't like your article?
-* Using GPG:: How to use GPG and MML to sign and encrypt messages
+* Mail:: Mailing and replying.
+* Posting Server:: What server should you post via?
+* Mail and Post:: Mailing and posting at the same time.
+* Archived Messages:: Where Gnus stores the messages you've sent.
+* Posting Styles:: An easier way to specify who you are.
+* Drafts:: Postponing messages and rejected messages.
+* Rejected Articles:: What happens if the server doesn't like your article?
+* Using GPG:: How to use GPG and MML to sign and encrypt messages
@end menu
Also see @pxref{Canceling and Superseding} for information on how to
The different methods all have their peculiarities, of course.
@menu
-* Server Buffer:: Making and editing virtual servers.
-* Getting News:: Reading USENET news with Gnus.
-* Getting Mail:: Reading your personal mail with Gnus.
-* Browsing the Web:: Getting messages from a plethora of Web sources.
-* Other Sources:: Reading directories, files, SOUP packets.
-* Combined Groups:: Combining groups into one group.
-* Gnus Unplugged:: Reading news and mail offline.
+* Server Buffer:: Making and editing virtual servers.
+* Getting News:: Reading USENET news with Gnus.
+* Getting Mail:: Reading your personal mail with Gnus.
+* Browsing the Web:: Getting messages from a plethora of Web sources.
+* Other Sources:: Reading directories, files, SOUP packets.
+* Combined Groups:: Combining groups into one group.
+* Gnus Unplugged:: Reading news and mail offline.
@end menu
(@code{gnus-group-enter-server-mode}) command in the group buffer.
@menu
-* Server Buffer Format:: You can customize the look of this buffer.
-* Server Commands:: Commands to manipulate servers.
-* Example Methods:: Examples server specifications.
-* Creating a Virtual Server:: An example session.
-* Server Variables:: Which variables to set.
-* Servers and Methods:: You can use server names as select methods.
-* Unavailable Servers:: Some servers you try to contact may be down.
+* Server Buffer Format:: You can customize the look of this buffer.
+* Server Commands:: Commands to manipulate servers.
+* Example Methods:: Examples server specifications.
+* Creating a Virtual Server:: An example session.
+* Server Variables:: Which variables to set.
+* Servers and Methods:: You can use server names as select methods.
+* Unavailable Servers:: Some servers you try to contact may be down.
@end menu
@vindex gnus-server-mode-hook
or it can read from a local spool.
@menu
-* NNTP:: Reading news from an @sc{nntp} server.
-* News Spool:: Reading news from the local spool.
+* NNTP:: Reading news from an @sc{nntp} server.
+* News Spool:: Reading news from the local spool.
@end menu
@end table
@menu
-* Direct Functions:: Connecting directly to the server.
-* Indirect Functions:: Connecting indirectly to the server.
-* Common Variables:: Understood by several connection functions.
+* Direct Functions:: Connecting directly to the server.
+* Indirect Functions:: Connecting indirectly to the server.
+* Common Variables:: Understood by several connection functions.
@end menu
course.
@menu
-* Mail in a Newsreader:: Important introductory notes.
-* Getting Started Reading Mail:: A simple cookbook example.
-* Splitting Mail:: How to create mail groups.
-* Mail Sources:: How to tell Gnus where to get mail from.
-* Mail Backend Variables:: Variables for customizing mail handling.
-* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
-* Group Mail Splitting:: Use group customize to drive mail splitting.
-* Incorporating Old Mail:: What about the old mail you have?
-* Expiring Mail:: Getting rid of unwanted mail.
-* Washing Mail:: Removing gruft from the mail you get.
-* Duplicates:: Dealing with duplicated mail.
-* Not Reading Mail:: Using mail backends for reading other files.
-* Choosing a Mail Backend:: Gnus can read a variety of mail formats.
+* Mail in a Newsreader:: Important introductory notes.
+* Getting Started Reading Mail:: A simple cookbook example.
+* Splitting Mail:: How to create mail groups.
+* Mail Sources:: How to tell Gnus where to get mail from.
+* Mail Backend Variables:: Variables for customizing mail handling.
+* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
+* Group Mail Splitting:: Use group customize to drive mail splitting.
+* Incorporating Old Mail:: What about the old mail you have?
+* Expiring Mail:: Getting rid of unwanted mail.
+* Washing Mail:: Removing gruft from the mail you get.
+* Duplicates:: Dealing with duplicated mail.
+* Not Reading Mail:: Using mail backends for reading other files.
+* Choosing a Mail Backend:: Gnus can read a variety of mail formats.
@end menu
mail" backend), you could put the following in your @file{.gnus} file:
@lisp
-(setq gnus-secondary-select-methods
- '((nnml "private")))
+(setq gnus-secondary-select-methods '((nnml "")))
@end lisp
Now, the next time you start Gnus, this backend will be queried for new
instance.
@menu
-* Mail Source Specifiers:: How to specify what a mail source is.
-* Mail Source Customization:: Some variables that influence things.
-* Fetching Mail:: Using the mail source specifiers.
+* Mail Source Specifiers:: How to specify what a mail source is.
+* Mail Source Customization:: Some variables that influence things.
+* Fetching Mail:: Using the mail source specifiers.
@end menu
messages into the right group. With this function, you only have to do
it once per thread.
-To use this feature, you have to set @code{nnmail-treat-duplicates} to a
-non-nil value. And then you can include
-@code{nnmail-split-fancy-with-parent} using the colon feature, like so:
+To use this feature, you have to set @code{nnmail-treat-duplicates} and
+@code{nnmail-cache-accepted-message-ids} to a non-nil value. And then
+you can include @code{nnmail-split-fancy-with-parent} using the colon
+feature, like so:
@lisp
(setq nnmail-split-fancy
'(| (: nnmail-split-fancy-with-parent)
interfaces to these sources.
@menu
-* Web Searches:: Creating groups from articles that match a string.
-* Slashdot:: Reading the Slashdot comments.
-* Ultimate:: The Ultimate Bulletin Board systems.
-* Web Archive:: Reading mailing list archived on web.
-* RSS:: Reading RDF site summary.
-* Customizing w3:: Doing stuff to Emacs/w3 from Gnus.
+* Web Searches:: Creating groups from articles that match a string.
+* Slashdot:: Reading the Slashdot comments.
+* Ultimate:: The Ultimate Bulletin Board systems.
+* Web Archive:: Reading mailing list archived on web.
+* RSS:: Reading RDF site summary.
+* Customizing w3:: Doing stuff to Emacs/w3 from Gnus.
@end menu
All the web sources require Emacs/w3 and the url library to work.
newsgroups.
@menu
-* Directory Groups:: You can read a directory as if it was a newsgroup.
-* Anything Groups:: Dired? Who needs dired?
-* Document Groups:: Single files can be the basis of a group.
-* SOUP:: Reading @sc{soup} packets ``offline''.
-* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
-* IMAP:: Using Gnus as a @sc{imap} client.
+* Directory Groups:: You can read a directory as if it was a newsgroup.
+* Anything Groups:: Dired? Who needs dired?
+* Document Groups:: Single files can be the basis of a group.
+* SOUP:: Reading @sc{soup} packets ``offline''.
+* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
+* IMAP:: Using Gnus as a @sc{imap} client.
@end menu
reading and Gnus for packing/sending these @sc{soup} packets.
@menu
-* SOUP Commands:: Commands for creating and sending @sc{soup} packets
-* SOUP Groups:: A backend for reading @sc{soup} packets.
-* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
+* SOUP Commands:: Commands for creating and sending @sc{soup} packets
+* SOUP Groups:: A backend for reading @sc{soup} packets.
+* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
@end menu
@end table
@menu
-* Splitting in IMAP:: Splitting mail with nnimap.
-* Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox.
-* Expunging mailboxes:: Equivalent of a "compress mailbox" button.
+* Splitting in IMAP:: Splitting mail with nnimap.
+* Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox.
+* Expunging mailboxes:: Equivalent of a "compress mailbox" button.
@end menu
groups.
@menu
-* Virtual Groups:: Combining articles from many groups.
-* Kibozed Groups:: Looking through parts of the newsfeed for articles.
+* Virtual Groups:: Combining articles from many groups.
+* Kibozed Groups:: Looking through parts of the newsfeed for articles.
@end menu
Of course, to use it as such, you have to learn a few new commands.
@menu
-* Agent Basics:: How it all is supposed to work.
-* Agent Categories:: How to tell the Gnus Agent what to download.
-* Agent Commands:: New commands for all the buffers.
-* Agent Expiry:: How to make old articles go away.
-* Agent and IMAP:: How to use the Agent with IMAP.
-* Outgoing Messages:: What happens when you post/mail something?
-* Agent Variables:: Customizing is fun.
-* Example Setup:: An example @file{.gnus.el} file for offline people.
-* Batching Agents:: How to fetch news from a @code{cron} job.
-* Agent Caveats:: What you think it'll do and what it does.
+* Agent Basics:: How it all is supposed to work.
+* Agent Categories:: How to tell the Gnus Agent what to download.
+* Agent Commands:: New commands for all the buffers.
+* Agent Expiry:: How to make old articles go away.
+* Agent and IMAP:: How to use the Agent with IMAP.
+* Outgoing Messages:: What happens when you post/mail something?
+* Agent Variables:: Customizing is fun.
+* Example Setup:: An example @file{.gnus.el} file for offline people.
+* Batching Agents:: How to fetch news from a @code{cron} job.
+* Agent Caveats:: What you think it'll do and what it does.
@end menu
managing categories.
@menu
-* Category Syntax:: What a category looks like.
-* Category Buffer:: A buffer for maintaining categories.
-* Category Variables:: Customize'r'Us.
+* Category Syntax:: What a category looks like.
+* Category Buffer:: A buffer for maintaining categories.
+* Category Variables:: Customize'r'Us.
@end menu
@menu
-* Group Agent Commands::
-* Summary Agent Commands::
-* Server Agent Commands::
+* Group Agent Commands::
+* Summary Agent Commands::
+* Server Agent Commands::
@end menu
You can run a complete batch fetch from the command line with the
@findex gnus-agent-catchup
Mark all undownloaded articles as read (@code{gnus-agent-catchup}).
+@item J u
+@kindex J u (Agent Summary)
+@findex gnus-agent-summary-fetch-group
+Download all downloadable articles in the current group
+(@code{gnus-agent-summary-fetch-group}).
+
@end table
silently to help keep the sizes of the score files down.
@menu
-* Summary Score Commands:: Adding score entries for the current group.
-* Group Score Commands:: General score commands.
-* Score Variables:: Customize your scoring. (My, what terminology).
-* Score File Format:: What a score file may contain.
-* Score File Editing:: You can edit score files by hand as well.
-* Adaptive Scoring:: Big Sister Gnus knows what you read.
-* Home Score File:: How to say where new score entries are to go.
-* Followups To Yourself:: Having Gnus notice when people answer you.
-* Scoring Tips:: How to score effectively.
-* Reverse Scoring:: That problem child of old is not problem.
-* Global Score Files:: Earth-spanning, ear-splitting score files.
-* Kill Files:: They are still here, but they can be ignored.
-* Converting Kill Files:: Translating kill files to score files.
-* GroupLens:: Getting predictions on what you like to read.
-* Advanced Scoring:: Using logical expressions to build score rules.
-* Score Decays:: It can be useful to let scores wither away.
+* Summary Score Commands:: Adding score entries for the current group.
+* Group Score Commands:: General score commands.
+* Score Variables:: Customize your scoring. (My, what terminology).
+* Score File Format:: What a score file may contain.
+* Score File Editing:: You can edit score files by hand as well.
+* Adaptive Scoring:: Big Sister Gnus knows what you read.
+* Home Score File:: How to say where new score entries are to go.
+* Followups To Yourself:: Having Gnus notice when people answer you.
+* Scoring On Other Headers:: Scoring on non-standard headers.
+* Scoring Tips:: How to score effectively.
+* Reverse Scoring:: That problem child of old is not problem.
+* Global Score Files:: Earth-spanning, ear-splitting score files.
+* Kill Files:: They are still here, but they can be ignored.
+* Converting Kill Files:: Translating kill files to score files.
+* GroupLens:: Getting predictions on what you like to read.
+* Advanced Scoring:: Using logical expressions to build score rules.
+* Score Decays:: It can be useful to let scores wither away.
@end menu
is system-dependent.
+@node Scoring On Other Headers
+@section Scoring On Other Headers
+@cindex scoring on other headers
+
+Gnus is quite fast when scoring the ``traditional''
+headers---@samp{From}, @samp{Subject} and so on. However, scoring
+other headers requires writing a @code{head} scoring rule, which means
+that Gnus has to request every single article from the backend to find
+matches. This takes a long time in big groups.
+
+Now, there's not much you can do about this for news groups, but for
+mail groups, you have greater control. In the @pxref{To From
+Newsgroups} section of the manual, it's explained in greater detail what
+this mechanism does, but here's a cookbook example for @code{nnml} on
+how to allow scoring on the @samp{To} and @samp{Cc} headers.
+
+Put the following in your @file{.gnus.el} file.
+
+@lisp
+(setq gnus-extra-headers '(To Cc Newsgroups Keywords)
+ nnmail-extra-headers gnus-extra-headers)
+@end lisp
+
+Restart Gnus and rebuild your @code{nnml} overview files with the
+@kbd{M-x nnml-generate-nov-databases} command. This will take a long
+time if you have much mail.
+
+Now you can score on @samp{To} and @samp{Cc} as ``extra headers'' like
+so: @kbd{I e s p To RET <your name> RET}.
+
+See? Simple.
+
+
@node Scoring Tips
@section Scoring Tips
@cindex scoring tips
article.
@menu
-* Using GroupLens:: How to make Gnus use GroupLens.
-* Rating Articles:: Letting GroupLens know how you rate articles.
-* Displaying Predictions:: Displaying predictions given by GroupLens.
-* GroupLens Variables:: Customizing GroupLens.
+* Using GroupLens:: How to make Gnus use GroupLens.
+* Rating Articles:: Letting GroupLens know how you rate articles.
+* Displaying Predictions:: Displaying predictions given by GroupLens.
+* GroupLens Variables:: Customizing GroupLens.
@end menu
@item gnus-summary-grouplens-line-format
The summary line format used in GroupLens-enhanced summary buffers. It
accepts the same specs as the normal summary line format (@pxref{Summary
-Buffer Lines}). The default is @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%)
+Buffer Lines}). The default is @samp{%U%R%z%l%I%(%[%4L: %-23,23n%]%)
%s\n}.
@item grouplens-bbb-host
@chapter Various
@menu
-* Process/Prefix:: A convention used by many treatment commands.
-* Interactive:: Making Gnus ask you many questions.
-* Symbolic Prefixes:: How to supply some Gnus functions with options.
-* Formatting Variables:: You can specify what buffers should look like.
-* Window Layout:: Configuring the Gnus buffer windows.
-* Faces and Fonts:: How to change how faces look.
-* Compilation:: How to speed Gnus up.
-* Mode Lines:: Displaying information in the mode lines.
-* Highlighting and Menus:: Making buffers look all nice and cozy.
-* Buttons:: Get tendinitis in ten easy steps!
-* Daemons:: Gnus can do things behind your back.
-* NoCeM:: How to avoid spam and other fatty foods.
-* Undo:: Some actions can be undone.
-* Moderation:: What to do if you're a moderator.
-* XEmacs Enhancements:: There are more pictures and stuff under XEmacs.
-* Fuzzy Matching:: What's the big fuzz?
-* Thwarting Email Spam:: A how-to on avoiding unsolicited commercial email.
-* Various Various:: Things that are really various.
+* Process/Prefix:: A convention used by many treatment commands.
+* Interactive:: Making Gnus ask you many questions.
+* Symbolic Prefixes:: How to supply some Gnus functions with options.
+* Formatting Variables:: You can specify what buffers should look like.
+* Window Layout:: Configuring the Gnus buffer windows.
+* Faces and Fonts:: How to change how faces look.
+* Compilation:: How to speed Gnus up.
+* Mode Lines:: Displaying information in the mode lines.
+* Highlighting and Menus:: Making buffers look all nice and cozy.
+* Buttons:: Get tendinitis in ten easy steps!
+* Daemons:: Gnus can do things behind your back.
+* NoCeM:: How to avoid spam and other fatty foods.
+* Undo:: Some actions can be undone.
+* Moderation:: What to do if you're a moderator.
+* XEmacs Enhancements:: There are more pictures and stuff under XEmacs.
+* Fuzzy Matching:: What's the big fuzz?
+* Thwarting Email Spam:: A how-to on avoiding unsolicited commercial email.
+* Various Various:: Things that are really various.
@end menu
lots of percentages everywhere.
@menu
-* Formatting Basics:: A formatting variable is basically a format string.
-* Mode Line Formatting:: Some rules about mode line formatting variables.
-* Advanced Formatting:: Modifying output in various ways.
-* User-Defined Specs:: Having Gnus call your own functions.
-* Formatting Fonts:: Making the formatting look colorful and nice.
+* Formatting Basics:: A formatting variable is basically a format string.
+* Mode Line Formatting:: Some rules about mode line formatting variables.
+* Advanced Formatting:: Modifying output in various ways.
+* User-Defined Specs:: Having Gnus call your own functions.
+* Formatting Fonts:: Making the formatting look colorful and nice.
+* Positioning Point:: Moving point to a position after an operation.
+* Tabulation:: Tabulating your output.
+* Wide Characters:: Dealing with wide characters.
@end menu
Currently Gnus uses the following formatting variables:
Note that the @samp{%(} specs (and friends) do not make any sense on the
mode-line variables.
+@node Positioning Point
+@subsection Positioning Point
+
+Gnus usually moves point to a pre-defined place on each line in most
+buffers. By default, point move to the first colon character on the
+line. You can customize this behaviour in three different ways.
+
+You can move the colon character to somewhere else on the line.
+
+@findex gnus-goto-colon
+You can redefine the function that moves the point to the colon. The
+function is called @code{gnus-goto-colon}.
+
+But perhaps the most convenient way to deal with this, if you don't want
+to have a colon in your line, is to use the @samp{%C} specifier. If you
+put a @samp{%C} somewhere in your format line definition, Gnus will
+place point there.
+
+
+@node Tabulation
+@subsection Tabulation
+
+You can usually line up your displays by padding and cutting your
+strings. However, when combining various strings of different size, it
+can often be more convenient to just output the strings, and then worry
+about lining up the following text afterwards.
+
+To do that, Gnus supplies tabulator specs--@samp{%=}. There are two
+different types---@dfn{hard tabulators} and @dfn{soft tabulators}.
+
+@samp{%50=} will insert space characters to pad the line up to column
+50. If the text is already past column 50, nothing will be inserted.
+This is the soft tabulator.
+
+@samp{%-50=} will insert space characters to pad the line up to column
+50. If the text is already past column 50, the excess text past column
+50 will be removed. This is the hard tabulator.
+
+
+@node Wide Characters
+@subsection Wide Characters
+
+Proportional 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.
+
+The problem is that when formatting, Gnus assumes that if a string is 10
+characters wide, it'll be 10 Latin characters wide on the screen. In
+these coutries, that's not true.
+
+@vindex gnus-use-correct-string-widths
+To help fix this, you can set @code{gnus-use-correct-string-widths} to
+@code{t}. This makes buffer generation slower, but the results will be
+prettieer. The default value is @code{nil}.
+
+
@node Window Layout
@section Window Layout
advantage of that.
@menu
-* Picons:: How to display pictures of what your reading.
-* Smileys:: Show all those happy faces the way they were meant to be shown.
-* Toolbar:: Click'n'drool.
-* XVarious:: Other XEmacsy Gnusey variables.
+* Picons:: How to display pictures of what your reading.
+* Smileys:: Show all those happy faces the way they were meant to be shown.
+* Toolbar:: Click'n'drool.
+* XVarious:: Other XEmacsy Gnusey variables.
@end menu
over your shoulder as you read news.
@menu
-* Picon Basics:: What are picons and How do I get them.
-* Picon Requirements:: Don't go further if you aren't using XEmacs.
-* Easy Picons:: Displaying Picons---the easy way.
-* Hard Picons:: The way you should do it. You'll learn something.
-* Picon Useless Configuration:: Other variables you can trash/tweak/munge/play with.
+* Picon Basics:: What are picons and How do I get them.
+* Picon Requirements:: Don't go further if you aren't using XEmacs.
+* Easy Picons:: Displaying Picons---the easy way.
+* Hard Picons:: The way you should do it. You'll learn something.
+* Picon Useless Configuration:: Other variables you can trash/tweak/munge/play with.
@end menu
@chapter Appendices
@menu
-* History:: How Gnus got where it is today.
-* On Writing Manuals:: Why this is not a beginner's guide.
-* Terminology:: We use really difficult, like, words here.
-* Customization:: Tailoring Gnus to your needs.
-* 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:: A question-and-answer session.
+* History:: How Gnus got where it is today.
+* On Writing Manuals:: Why this is not a beginner's guide.
+* Terminology:: We use really difficult, like, words here.
+* Customization:: Tailoring Gnus to your needs.
+* 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::
@end menu
``@sc{gnus}''. New vs. old.
@menu
-* Gnus Versions:: What Gnus versions have been released.
-* Other Gnus Versions:: Other Gnus versions that also have been released.
-* Why?:: What's the point of Gnus?
-* Compatibility:: Just how compatible is Gnus with @sc{gnus}?
-* Conformity:: Gnus tries to conform to all standards.
-* Emacsen:: Gnus can be run on a few modern Emacsen.
-* Gnus Development:: How Gnus is developed.
-* Contributors:: Oodles of people.
-* New Features:: Pointers to some of the new stuff in Gnus.
+* Gnus Versions:: What Gnus versions have been released.
+* Other Gnus Versions:: Other Gnus versions that also have been released.
+* Why?:: What's the point of Gnus?
+* Compatibility:: Just how compatible is Gnus with @sc{gnus}?
+* Conformity:: Gnus tries to conform to all standards.
+* Emacsen:: Gnus can be run on a few modern Emacsen.
+* Gnus Development:: How Gnus is developed.
+* Contributors:: Oodles of people.
+* New Features:: Pointers to some of the new stuff in Gnus.
@end menu
@cindex new features
@menu
-* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
-* September Gnus:: The Thing Formally Known As Gnus 5.2/5.3.
-* 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.
+* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
+* September Gnus:: The Thing Formally Known As Gnus 5.2/5.3.
+* 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.
@end menu
These lists are, of course, just @emph{short} overviews of the
@iftex
@page
-@node The Manual
+@node History
@section The Manual
@cindex colophon
@cindex manual
for some quite common situations.
@menu
-* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
-* Slow Terminal Connection:: You run a remote Emacs.
-* Little Disk Space:: You feel that having large setup files is icky.
-* Slow Machine:: You feel like buying a faster machine.
+* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
+* Slow Terminal Connection:: You run a remote Emacs.
+* Little Disk Space:: You feel that having large setup files is icky.
+* Slow Machine:: You feel like buying a faster machine.
@end menu
and general methods of operation.
@menu
-* Gnus Utility Functions:: Common functions and variable to use.
-* Backend Interface:: How Gnus communicates with the servers.
-* Score File Syntax:: A BNF definition of the score file standard.
-* Headers:: How Gnus stores headers internally.
-* Ranges:: A handy format for storing mucho numbers.
-* Group Info:: The group info format.
-* Extended Interactive:: Symbolic prefixes and stuff.
-* Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen.
-* Various File Formats:: Formats of files that Gnus use.
+* Gnus Utility Functions:: Common functions and variable to use.
+* Backend Interface:: How Gnus communicates with the servers.
+* Score File Syntax:: A BNF definition of the score file standard.
+* Headers:: How Gnus stores headers internally.
+* Ranges:: A handy format for storing mucho numbers.
+* Group Info:: The group info format.
+* Extended Interactive:: Symbolic prefixes and stuff.
+* Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen.
+* Various File Formats:: Formats of files that Gnus use.
@end menu
@cindex @code{nnchoke}
@menu
-* Required Backend Functions:: Functions that must be implemented.
-* Optional Backend Functions:: Functions that need not be implemented.
-* Error Messaging:: How to get messages and report errors.
-* Writing New Backends:: Extending old backends.
-* Hooking New Backends Into Gnus:: What has to be done on the Gnus end.
-* Mail-like Backends:: Some tips on mail backends.
+* Required Backend Functions:: Functions that must be implemented.
+* Optional Backend Functions:: Functions that need not be implemented.
+* Error Messaging:: How to get messages and report errors.
+* Writing New Backends:: Extending old backends.
+* Hooking New Backends Into Gnus:: What has to be done on the Gnus end.
+* Mail-like Backends:: Some tips on mail backends.
@end menu
@end example
RANGE is a range of articles you wish to update marks on. ACTION is
-@code{set}, @code{add} or @code{del}, respectively used for removing all
-existing marks and setting them as specified, adding (preserving the
-marks not mentioned) mark and removing (preserving the marks not
-mentioned) marks. MARK is a list of marks; where each mark is a symbol.
-Currently used marks are @code{read}, @code{tick}, @code{reply},
-@code{expire}, @code{killed}, @code{dormant}, @code{save},
-@code{download}, @code{unsend}, @code{forward} and @code{recent},
-but your backend should, if possible, not limit itself to these.
+@code{add} or @code{del}, used to add marks or remove marks
+(preserving all marks not mentioned). MARK is a list of marks; where
+each mark is a symbol. Currently used marks are @code{read},
+@code{tick}, @code{reply}, @code{expire}, @code{killed},
+@code{dormant}, @code{save}, @code{download}, @code{unsend},
+@code{forward} and @code{recent}, but your backend should, if
+possible, not limit itself to these.
Given contradictory actions, the last action in the list should be the
effective one. That is, if your action contains a request to add the
@subsection Various File Formats
@menu
-* Active File Format:: Information on articles and groups available.
-* Newsgroups File Format:: Group descriptions.
+* Active File Format:: Information on articles and groups available.
+* Newsgroups File Format:: Group descriptions.
@end menu
cat instead.
@menu
-* Keystrokes:: Entering text and executing commands.
-* Emacs Lisp:: The built-in Emacs programming language.
+* Keystrokes:: Entering text and executing commands.
+* Emacs Lisp:: The built-in Emacs programming language.
@end menu