* lisp/gnus-vers.el (gnus-revision-number): Increment to 02.
* lisp/dgnushack.el (dgnushack-texi-format): Remove "@anchor" if it is not
supported.
+2001-01-05 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * lisp/gnus-vers.el (gnus-revision-number): Increment to 02.
+
+ * lisp/dgnushack.el (dgnushack-texi-format): Remove "@anchor" if it
+ is not supported.
+
2000-12-26 Katsumi Yamaoka <yamaoka@jpl.org>
* lisp/gnus.el: Bind `:parameter-type', `:parameter-document',
+2001-01-05 06:49:37 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * time-date.el (time-to-number-of-days): New function.
+
+2001-01-04 11:06:14 Gregory Chernov <greg@visiontech-dml.com>
+
+ * nnslashdot.el (nnslashdot-request-list): Always get the right
+ sid.
+
+2001-01-05 00:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * message.el (message-minibuffer-local-map): New keymap.
+ (message-read-from-minibuffer): Use it.
+ * gnus-msg.el (gnus-summary-resend-message): Use it
+
+2001-01-04 22:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus-start.el (gnus-display-time-event-handler): New function.
+ (gnus-after-getting-new-news-hook): Use it.
+
+2001-01-03 07:26:58 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.el (message-ignored-mail-headers): Add draft header.
+
+2001-01-02 06:28:28 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-sum.el (gnus-summary-expire-articles): Don't save
+ excursion.
+
+ * nnslashdot.el (nnslashdot-request-list): Get the right year.
+
+2001-01-01 00:52:44 Ed L. Cashin <ecashin@coe.uga.edu>
+
+ * gnus-sum.el (gnus-summary-expire-articles): Save excursion.
+
+2000-12-31 11:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * qp.el (quoted-printable-decode-region): Don't backward-char.
+
+2000-12-31 03:57:31 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-draft.el: Mark articles as replied.
+
+ * gnus-sum.el (gnus-summary-add-mark): New function.
+
+ * gnus-group.el (gnus-add-mark): New function.
+
+ * gnus-sum.el (gnus-summary-buffer-name): New function.
+ (gnus-summary-setup-buffer): Use it.
+
+ * gnus-draft.el: Set things up with the right post method and
+ stuff.
+
+ * message.el (message-ignored-news-headers): Remove X-Draft-From.
+
+ * gnus-msg.el (gnus-inews-insert-draft-meta-information): New function.
+
+ * gnus.el (gnus-draft-meta-information-header): New variable.
+
+2000-12-30 00:17:38 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (gnus-treatment-function-alist): Move the date
+ functions before the header sorting functions.
+
+ * mm-uu.el (mm-uu-pgp-signed-extract-1): Unquote "- " quotes.
+
+ * dgnushack.el (dgnushack-compile): Message whether there is w3.
+ Don't (push "/usr/share/emacs/site-lisp" load-path).
+
+ * gnus-cite.el (gnus-article-fill-cited-article): Don't add space
+ to empty fill prefixes.
+
+2000-12-30 10:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * nntp.el (nntp-open-connection): Kill pbuffer if process is nil.
+ Suggested by Christoph Conrad <christoph.conrad@gmx.de>.
+
+2000-12-30 09:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * nnheader.el (autoload): Autoload gnus-sorted-intersection.
+
+ * nnml.el (autoload): Move to nnheader.el.
+
+ * nnfolder.el (nnfolder-existing-articles): Reversed, i.e. sorted.
+ (nnfolder-request-expire-articles): Use gnus-sorted-intersection.
+ (nnfolder-retrieve-headers): Use intersection. Suggested by Jonas
+ Kvarnstr\e,Av\e(Bm <jonkv@ida.liu.se>.
+
+2000-12-30 00:17:38 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (article-make-date-line): Get the hours right.
+ (gnus-ignored-headers): More hiding.
+
+ * nnmail.el (nnmail-expiry-wait): Not an integer.
+
+ * message.el (message-goto-body): Only expand abbrev when called
+ interactively.
+ (message-make-lines): Use it.
+
+2000-12-29 20:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus-msg.el (gnus-inews-yank-articles): Reparse headers.
+
+2000-12-30 00:17:38 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-sum.el (gnus-summary-limit-include-expunged): Really
+ include the expunged articles.
+
+ * gnus-group.el (gnus-group-sort-by-server): New function.
+
+ * gnus.el (gnus-method-to-server-name): New function.
+ (gnus-group-prefixed-name): Use it.
+
+ * gnus-group.el (gnus-group-sort-function): Doc fix.
+ (gnus-group-sort-groups-by-server): New command.
+
+2000-12-29 13:25:10 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (gnus-treat-date-english): New variable.
+ (article-date-english): New command.
+ (gnus-english-month-names): New variable.
+ (article-make-date-line): Do 'english.
+
+ * gnus-cite.el (gnus-article-fill-cited-article): Add a space
+ after the fill prefix.
+
+ * gnus-sum.el (gnus-summary-make-menu-bar): Removed "Enter
+ score...".
+
+ * gnus-art.el (gnus-ignored-headers): Hide more headers.
+
+ * message.el (message-mode-map): Bind comment-region.
+
+ * gnus-art.el (gnus-mime-display-part): Let w3 display
+ multipart/related.
+
+ * mm-bodies.el (mm-long-lines-p): New function.
+ (mm-body-encoding): Use it.
+ (mm-body-encoding): Encode articles with lines longer than 1000
+ characters.
+
+2000-12-29 01:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * mm-util.el (mm-enable-multibyte): Use
+ default-enable-multibyte-characters.
+ (mm-enable-multibyte-mule4): Ditto.
+ (mm-disable-multibyte): Test XEmacs.
+ (mm-disable-multibyte-mule4): Ditto.
+ (mm-with-unibyte-current-buffer): Simplified.
+ (mm-with-unibyte-current-buffer-mule4): Ditto.
+
+2000-12-28 19:44:56 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnheaderxm.el (nnheader-string-as-multibyte): New alias.
+
+ * nnheader.el (nnheader-string-as-multibyte): New alias.
+
+ * mm-view.el (mm-inline-text): Warn when bugging out in w3.
+
+ * gnus-uu.el (gnus-message-process-mark): New function.
+ (gnus-uu-mark-by-regexp): Use it.
+ (gnus-new-processable): New function.
+
+2000-12-28 19:21:57 Inge Frick <inge@nada.kth.se>
+
+ * gnus-sum.el (gnus-no-mark): New variable.
+
+2000-11-01 01:12:29 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnwfm.el (nnwfm-create-mapping): Remove quote marks and
+ backslashes.
+
2000-12-26 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-art.el (gnus-article-banner-alist): Remove duplicate
;;; binhex.el -- elisp native binhex decode
-;; Copyright (c) 1998 Free Software Foundation, Inc.
+;; Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
-;; Create Date: Oct 1, 1998
;; Keywords: binhex news
;; This file is part of GNU Emacs.
(defconst dgnushack-unexporting-files
(append '("dgnushack.el" "dgnuspath.el" "lpath.el" "ptexinfmt.el")
- (unless (or (condition-case nil
+ (unless (or (condition-case code
(require 'w3-forms)
- (error nil))
+ (error
+ (message "No w3: %s %s retrying..." code
+ (locate-library "w3-forms"))
+ nil))
;; Maybe mis-configured Makefile is used (e.g.
;; configured for FSFmacs but XEmacs is running).
(let ((lp (delete dgnushack-w3-dir
(copy-sequence load-path))))
- (when (condition-case nil
- (let ((load-path lp))
- (require 'w3-forms))
- (error nil))
+ (when (let ((load-path lp))
+ (condition-case code
+ (require 'w3-forms)
+ (error
+ (message "No w3: %s %s" code
+ (locate-library "w3-forms"))
+ nil)))
;; If success, fix `load-path' for compiling.
(setq load-path lp))))
'("nnweb.el" "nnlistserv.el" "nnultimate.el"
(1+ (match-end 0))
(point-max))))
(goto-char (point-min))
+ ;; Remove "@anchor" if it is not supported.
+ (unless (fboundp 'texinfo-anchor)
+ (while (re-search-forward "^@anchor" nil t)
+ (delete-region (match-beginning 0) (progn
+ (forward-line 1)
+ (point))))
+ (goto-char (point-min)))
;; Add suffix if it is needed.
(when (and addsuffix
(re-search-forward
(defun gnus-agent-insert-meta-information (type &optional method)
"Insert meta-information into the message that says how it's to be posted.
-TYPE can be either `mail' or `news'. If the latter METHOD can
+TYPE can be either `mail' or `news'. If the latter, then METHOD can
be a select method."
(save-excursion
(message-remove-header gnus-agent-meta-information-header)
"^List-[A-Za-z]+:" "^X-Listprocessor-Version:"
"^X-Received:" "^X-Distribute:" "^X-Sequence:" "^X-Juno-Line-Breaks:"
"^X-Notes-Item:" "^X-MS-TNEF-Correlator:" "^x-uunet-gateway:"
- "^X-Received:" "^Content-length:" "X-precedence:")
+ "^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:")
"*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."
:group 'gnus-article-treat
:type gnus-article-treat-head-custom)
+(defcustom gnus-treat-date-english nil
+ "Display the Date in a format that can be read aloud in English.
+Valid values are nil, t, `head', `last', an integer or a predicate.
+See the manual for details."
+ :group 'gnus-article-treat
+ :type gnus-article-treat-head-custom)
+
(defcustom gnus-treat-date-lapsed nil
"Display the Date header in a way that says how much time has elapsed.
Valid values are nil, t, `head', `last', an integer or a predicate.
;;; Internal variables
+(defvar gnus-english-month-names
+ '("January" "February" "March" "April" "May" "June" "July" "August"
+ "September" "October" "November" "December"))
+
(defvar article-goto-body-goes-to-point-min-p nil)
(defvar gnus-article-wash-types nil)
(defvar gnus-article-emphasis-alist nil)
(gnus-treat-fill-long-lines gnus-article-fill-long-lines)
(gnus-treat-strip-cr gnus-article-remove-cr)
(gnus-treat-display-xface gnus-article-display-x-face)
+ (gnus-treat-date-ut gnus-article-date-ut)
+ (gnus-treat-date-local gnus-article-date-local)
+ (gnus-treat-date-english gnus-article-date-english)
+ (gnus-treat-date-lapsed gnus-article-date-lapsed)
+ (gnus-treat-date-original gnus-article-date-original)
+ (gnus-treat-date-user-defined gnus-article-date-user)
+ (gnus-treat-date-iso8601 gnus-article-date-iso8601)
(gnus-treat-hide-headers gnus-article-maybe-hide-headers)
(gnus-treat-hide-boring-headers gnus-article-hide-boring-headers)
(gnus-treat-hide-signature gnus-article-hide-signature)
(gnus-treat-emphasize gnus-article-emphasize)
(gnus-treat-highlight-citation gnus-article-highlight-citation)
(gnus-treat-highlight-signature gnus-article-highlight-signature)
- (gnus-treat-date-ut gnus-article-date-ut)
- (gnus-treat-date-local gnus-article-date-local)
- (gnus-treat-date-lapsed gnus-article-date-lapsed)
- (gnus-treat-date-original gnus-article-date-original)
- (gnus-treat-date-user-defined gnus-article-date-user)
- (gnus-treat-date-iso8601 gnus-article-date-iso8601)
(gnus-treat-strip-trailing-blank-lines
gnus-article-remove-trailing-blank-lines)
(gnus-treat-strip-leading-blank-lines
(if (> real-sec 0)
" ago"
" in the future"))))))
+ ;; Display the date in proper English
+ ((eq type 'english)
+ (let ((dtime (decode-time time)))
+ (concat
+ "Date: the "
+ (number-to-string (nth 3 dtime))
+ (let ((digit (% (nth 3 dtime) 10)))
+ (cond
+ ((= digit 1) "st")
+ ((= digit 2) "nd")
+ ((= digit 3) "rd")
+ (t "th")))
+ " of "
+ (nth (1- (nth 4 dtime)) gnus-english-month-names)
+ " "
+ (number-to-string (nth 5 dtime))
+ " at "
+ (format "%02d" (nth 2 dtime))
+ ":"
+ (format "%02d" (nth 1 dtime)))))
(t
(error "Unknown conversion type: %s" type)))))
(interactive (list t))
(article-date-ut 'local highlight))
+(defun article-date-english (&optional highlight)
+ "Convert the current article date to something that is proper English."
+ (interactive (list t))
+ (article-date-ut 'english highlight))
+
(defun article-date-original (&optional highlight)
"Convert the current article date to what it was originally.
This is only useful if you have used some other date conversion
article-strip-blank-lines
article-strip-all-blank-lines
article-date-local
+ article-date-english
article-date-iso8601
article-date-original
article-date-ut
;;;!!! Most multipart/related is an HTML message plus images.
;;;!!! Unfortunately we are unable to let W3 display those
;;;!!! included images, so we just display it as a mixed multipart.
- (gnus-mime-display-mixed (cdr handle)))
+ ;;(gnus-mime-display-mixed (cdr handle))
+ ;;;!!! No, w3 can display everything just fine.
+ (gnus-mime-display-part (cadr handle)))
((equal (car handle) "multipart/signed")
(or (memq 'signed gnus-article-wash-types)
(push 'signed gnus-article-wash-types))
(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))
- (set-marker (make-marker)
- (point-max))))))
+ (mm-set-handle-multipart-parameter
+ handle 'gnus-region
+ (cons (set-marker (make-marker) (point-min))
+ (set-marker (make-marker) (point-max))))))
;;; @ for mime-view
?. ?_)))
;; Translate the first colon into a slash.
(when (string-match ":" group)
- (aset group (match-beginning 0) ?/))
+ (setq group (concat (substring group 0 (match-beginning 0))
+ "/" (substring group (match-end 0)))))
(nnheader-replace-chars-in-string group ?. ?/)))
t)
gnus-cache-directory))))
(narrow-to-region (caar marks) (caadr marks))
(let ((adaptive-fill-regexp
(concat "^" (regexp-quote (cdar marks)) " *"))
- (fill-prefix (cdar marks)))
+ (fill-prefix
+ (if (string= (cdar marks) "") ""
+ (concat (cdar marks) " "))))
(fill-region (point-min) (point-max)))
(set-marker (caar marks) nil)
(setq marks (cdr marks)))
;;; gnus-demon.el --- daemonic Gnus behaviour
-;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000
+;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news
;;;!!!but for the time being, we'll just run this tiny function uncompiled.
(defun gnus-draft-setup-for-editing (narticle group)
- (gnus-setup-message 'forward
- (let ((article narticle))
- (message-mail)
- (erase-buffer)
- (if (not (gnus-request-restore-buffer article group))
- (error "Couldn't restore the article")
- (funcall gnus-draft-decoding-function)
- ;; Insert the separator.
- (goto-char (point-min))
- (search-forward "\n\n")
- (forward-char -1)
- (insert mail-header-separator)
- (forward-line 1)
- (message-set-auto-save-file-name)))))
+ (let (ga)
+ (gnus-setup-message 'forward
+ (let ((article narticle))
+ (message-mail)
+ (erase-buffer)
+ (if (not (gnus-request-restore-buffer article group))
+ (error "Couldn't restore the article")
+ (funcall gnus-draft-decoding-function)
+ ;; Insert the separator.
+ (goto-char (point-min))
+ (search-forward "\n\n")
+ (forward-char -1)
+ (insert mail-header-separator)
+ (forward-line 1)
+ (setq ga (message-fetch-field gnus-draft-meta-information-header))
+ (message-set-auto-save-file-name))))
+ (when (and ga
+ (ignore-errors (setq ga (car (read-from-string ga)))))
+ (setq message-post-method
+ `(lambda (arg)
+ (gnus-post-method arg ,(car ga))))
+ (message-add-action
+ `(gnus-add-mark ,(car ga) 'replied ,(cadr ga))
+ 'send))))
(defvar gnus-draft-send-draft-buffer " *send draft*")
(defun gnus-draft-setup-for-sending (narticle group)
(require 'gnus-win)
(require 'gnus-undo)
(require 'time-date)
+(require 'gnus-ems)
(defcustom gnus-group-archive-directory
"*ftp@ftp.hpc.uh.edu:/pub/emacs/ding-list/"
for the groups to be sorted. Pre-made functions include
`gnus-group-sort-by-alphabet', `gnus-group-sort-by-real-name',
`gnus-group-sort-by-unread', `gnus-group-sort-by-level',
-`gnus-group-sort-by-score', `gnus-group-sort-by-method', and
-`gnus-group-sort-by-rank'.
+`gnus-group-sort-by-score', `gnus-group-sort-by-method',
+`gnus-group-sort-by-server', and `gnus-group-sort-by-rank'.
This variable can also be a list of sorting functions. In that case,
the most significant sort function should be the last function in the
(function-item gnus-group-sort-by-level)
(function-item gnus-group-sort-by-score)
(function-item gnus-group-sort-by-method)
+ (function-item gnus-group-sort-by-server)
(function-item gnus-group-sort-by-rank)
(function :tag "other" nil)))
(interactive "P")
(gnus-group-sort-groups 'gnus-group-sort-by-method reverse))
+(defun gnus-group-sort-groups-by-server (&optional reverse)
+ "Sort the group buffer alphabetically by server name.
+If REVERSE, sort in reverse order."
+ (interactive "P")
+ (gnus-group-sort-groups 'gnus-group-sort-by-server reverse))
+
;;; Selected group sorting.
(defun gnus-group-sort-selected-groups (n func &optional reverse)
(symbol-name (car (gnus-find-method-for-group
(gnus-info-group info2) info2)))))
+(defun gnus-group-sort-by-server (info1 info2)
+ "Sort alphabetically by server name."
+ (string< (gnus-method-to-server-name
+ (gnus-find-method-for-group
+ (gnus-info-group info1) info1))
+ (gnus-method-to-server-name
+ (gnus-find-method-for-group
+ (gnus-info-group info2) info2))))
+
(defun gnus-group-sort-by-score (info1 info2)
"Sort by group score."
(< (gnus-info-score info1) (gnus-info-score info2)))
(setcar (nthcdr 2 entry) info)
(when (and (not (eq (car entry) t))
(gnus-active (gnus-info-group info)))
- (setcar entry (length (gnus-list-of-unread-articles (car info))))))
+ (setcar entry (length
+ (gnus-list-of-unread-articles (car info))))))
(error "No such group: %s" (gnus-info-group info))))))
(defun gnus-group-set-method-info (group select-method)
(sort (nconc (gnus-uncompress-range (cdr m))
(copy-sequence articles)) '<) t))))))
+(defun gnus-add-mark (group mark article)
+ "Mark ARTICLE in GROUP with MARK, whether the group is displayed or not."
+ (let ((buffer (gnus-summary-buffer-name group)))
+ (if (gnus-buffer-live-p buffer)
+ (save-excursion
+ (set-buffer (get-buffer buffer))
+ (gnus-summary-add-mark article mark))
+ (gnus-add-marked-articles group (cdr (assq mark gnus-article-mark-lists))
+ (list article)))))
+
;;;
;;; Group timestamps
;;;
(progn
,@forms)
(gnus-inews-add-send-actions ,winconf ,buffer ,article)
+ (gnus-inews-insert-draft-meta-information ,group ,article)
(setq gnus-message-buffer (current-buffer))
(set (make-local-variable 'gnus-message-group-art)
(cons ,group ,article))
(gnus-configure-windows ,config t)
(set-buffer-modified-p nil))))
+(defun gnus-inews-insert-draft-meta-information (group article)
+ (save-excursion
+ (when (and group
+ (not (string= group ""))
+ (not (message-fetch-field gnus-draft-meta-information-header)))
+ (goto-char (point-min))
+ (insert gnus-draft-meta-information-header ": (\"" group "\" "
+ (if article (number-to-string article) "\"\"") ")\n"))))
+
;;;###autoload
(defun gnus-msg-mail (&rest args)
"Start editing a mail message to be sent.
;;;###autoload
(define-mail-user-agent 'gnus-user-agent
- 'gnus-msg-mail 'message-send-and-exit
- 'message-kill-buffer 'message-send-hook)
+ 'gnus-msg-mail 'message-send-and-exit
+ 'message-kill-buffer 'message-send-hook)
(defun gnus-setup-posting-charset (group)
(let ((alist gnus-group-posting-charset-alist)
(gnus-copy-article-buffer)
(let ((message-reply-buffer gnus-article-copy)
- (message-reply-headers gnus-current-headers))
+ (message-reply-headers
+ (with-current-buffer gnus-article-copy
+ ;; The headers are decoded.
+ (nnheader-parse-head t))))
(message-yank-original)
(setq beg (or beg (mark t))))
(when articles
(defun gnus-summary-resend-message (address n)
"Resend the current article to ADDRESS."
- (interactive "sResend message(s) to: \nP")
+ (interactive
+ (list (message-read-from-minibuffer "Resend message(s) to: ")
+ current-prefix-arg))
(let ((articles (gnus-summary-work-articles n))
article)
(while (setq article (pop articles))
(gnus-set-active group (cons (car active)
(cdr group-art))))
(gnus-activate-group group)))
- (let ((buffer (concat "*Summary " group "*"))
+ (let ((buffer (gnus-summary-buffer-name group))
(mark gnus-read-mark)
(article (cdr group-art)))
(unless
;;; gnus-picon.el --- displaying pretty icons in Gnus
-;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000
+;; Free Software Foundation, Inc.
;; Author: Wes Hardaker <hardaker@ece.ucdavis.edu>
;; Keywords: news xpm annotation glyph faces
(put-text-property (1- (point)) (point) 'articles alike))
(setq alike (list art)
last this)))
- (when last ; Bwadr, duplicate code.
+ (when last ; Bwadr, duplicate code.
(insert last ?\n)
(put-text-property (1- (point)) (point) 'articles alike))
(setq alist (car scores)
scores (cdr scores)
entries (assoc header alist))
- (while (cdr entries) ;First entry is the header index.
+ (while (cdr entries) ;First entry is the header index.
(let* ((rest (cdr entries))
(kill (car rest))
(match (nth 0 kill))
:type 'hook)
(defcustom gnus-after-getting-new-news-hook
- (when (gnus-boundp 'display-time-timer)
- '(display-time-event-handler))
+ '(gnus-display-time-event-handler)
"A hook run after Gnus checks for new news when Gnus is already running."
:group 'gnus-group-new
:type 'hook)
(file-name-as-directory (expand-file-name gnus-default-directory))
default-directory)))
+(defun gnus-display-time-event-handler ()
+ "Like `display-time-event-handler', but test `display-time-timer'."
+ (when (gnus-boundp 'display-time-timer)
+ (display-time-event-handler)))
+
(provide 'gnus-start)
;;; gnus-start.el ends here
:group 'gnus-summary-marks
:type 'character)
+(defcustom gnus-no-mark ? ;Whitespace
+ "*Mark used for articles that have no other secondary mark."
+ :group 'gnus-summary-marks
+ :type 'character)
+
(defcustom gnus-ancient-mark ?O
"*Mark used for ancient articles."
:group 'gnus-summary-marks
"z" gnus-article-date-ut
"u" gnus-article-date-ut
"l" gnus-article-date-local
+ "p" gnus-article-date-english
"e" gnus-article-date-lapsed
"o" gnus-article-date-original
"i" gnus-article-date-iso8601
"Score"
(nconc
(list
- ["Enter score..." gnus-summary-score-entry t]
["Customize" gnus-score-customize t])
(gnus-make-score-map 'increase)
(gnus-make-score-map 'lower)
(aset table i [??]))))
(setq buffer-display-table table)))
+(defun gnus-summary-buffer-name (group)
+ "Return the summary buffer name of GROUP."
+ (concat "*Summary " group "*"))
+
(defun gnus-summary-setup-buffer (group)
"Initialize summary buffer."
- (let ((buffer (concat "*Summary " group "*")))
+ (let ((buffer (gnus-summary-buffer-name group)))
(if (get-buffer buffer)
(progn
(set-buffer buffer)
(gnus-tmp-replied gnus-replied-mark)
((memq gnus-tmp-current gnus-newsgroup-saved)
gnus-saved-mark)
- (t gnus-unread-mark)))
+ (t gnus-no-mark)))
(gnus-tmp-from (mail-header-from gnus-tmp-header))
(gnus-tmp-name
(cond
gnus-replied-mark)
((memq number gnus-newsgroup-saved)
gnus-saved-mark)
- (t gnus-unread-mark))
+ (t gnus-no-mark))
gnus-tmp-from (mail-header-from gnus-tmp-header)
gnus-tmp-name
(cond
(gnus-summary-remove-process-mark (car gnus-newsgroup-processable))))
(gnus-summary-position-point))
+(defun gnus-summary-add-mark (article type)
+ "Mark ARTICLE with a mark of TYPE."
+ (let ((vtype (car (assq type gnus-article-mark-lists)))
+ var)
+ (if (not vtype)
+ (error "No such mark type: %s" type)
+ (setq var (intern (format "gnus-newsgroup-%s" type)))
+ (set var (cons article (symbol-value var)))
+ (if (memq type '(processable cached replied saved))
+ (gnus-summary-update-secondary-mark article)
+ ;;; !!! This is bobus. We should find out what primary
+ ;;; !!! mark we want to set.
+ (gnus-summary-update-mark gnus-del-mark 'unread)))))
+
(defun gnus-summary-mark-as-expirable (n)
"Mark N articles forward as expirable.
If N is negative, mark backward instead. The difference between N and
gnus-replied-mark)
((memq article gnus-newsgroup-saved)
gnus-saved-mark)
- (t gnus-unread-mark))
+ (t gnus-no-mark))
'replied)
(when (gnus-visual-p 'summary-highlight 'highlight)
(gnus-run-hooks 'gnus-summary-update-hook))
(gnus-read-mark-p mark))
(gnus-summary-mark-article gnus-current-article gnus-read-mark))))
+(defun gnus-summary-mark-unread-as-ticked ()
+ "Intended to be used by `gnus-summary-mark-article-hook'."
+ (when (memq gnus-current-article gnus-newsgroup-unreads)
+ (gnus-summary-mark-article gnus-current-article gnus-ticked-mark)))
+
(defun gnus-summary-mark-region-as-read (point mark all)
"Mark all unread articles between point and mark as read.
If given a prefix, mark all articles between point and mark as read,
(let ((scored gnus-newsgroup-scored)
headers h)
(while scored
- (unless (gnus-summary-goto-subject (caar scored))
+ (unless (gnus-number-to-header (caar scored))
(and (setq h (gnus-summary-article-header (caar scored)))
(< (cdar scored) gnus-summary-expunge-below)
(push h headers)))
(delete-char 1))
(goto-char (next-single-property-change (point) prop nil (point-max))))))
+(require 'nnheader)
(defun gnus-newsgroup-directory-form (newsgroup)
"Make hierarchical directory name from NEWSGROUP name."
- (let ((newsgroup (gnus-newsgroup-savable-name newsgroup))
- (len (length newsgroup))
- idx)
- ;; If this is a foreign group, we don't want to translate the
- ;; entire name.
- (if (setq idx (string-match ":" newsgroup))
- (aset newsgroup idx ?/)
- (setq idx 0))
- ;; Replace all occurrences of `.' with `/'.
- (while (< idx len)
- (when (= (aref newsgroup idx) ?.)
- (aset newsgroup idx ?/))
- (setq idx (1+ idx)))
- newsgroup))
+ (let* ((newsgroup (gnus-newsgroup-savable-name newsgroup))
+ (idx (string-match ":" newsgroup)))
+ (concat
+ (if idx (substring newsgroup 0 idx))
+ (if idx "/")
+ (nnheader-replace-chars-in-string
+ (if idx (substring newsgroup (1+ idx)) newsgroup)
+ ?. ?/))))
(defun gnus-newsgroup-savable-name (group)
;; Replace any slashes in a group name (eg. an ange-ftp nndoc group)
;; Process marking.
+(defun gnus-message-process-mark (unmarkp new-marked)
+ (let ((old (- (length gnus-newsgroup-processable) (length new-marked))))
+ (message "%d mark%s %s%s"
+ (length new-marked)
+ (if (= (length new-marked) 1) "" "s")
+ (if unmarkp "removed" "added")
+ (cond
+ ((and (zerop old)
+ (not unmarkp))
+ "")
+ (unmarkp
+ (format ", %d remain marked"
+ (length gnus-newsgroup-processable)))
+ (t
+ (format ", %d already marked" old))))))
+
+(defun gnus-new-processable (unmarkp articles)
+ (if unmarkp
+ (gnus-intersection gnus-newsgroup-processable articles)
+ (gnus-set-difference articles gnus-newsgroup-processable)))
+
(defun gnus-uu-mark-by-regexp (regexp &optional unmark)
"Set the process mark on articles whose subjects match REGEXP.
When called interactively, prompt for REGEXP.
Optional UNMARK non-nil means unmark instead of mark."
(interactive "sMark (regexp): \nP")
- (let ((articles (gnus-uu-find-articles-matching regexp)))
- (while articles
- (if unmark
- (gnus-summary-remove-process-mark (pop articles))
- (gnus-summary-set-process-mark (pop articles))))
- (message ""))
+ (save-excursion
+ (let* ((articles (gnus-uu-find-articles-matching regexp))
+ (new-marked (gnus-new-processable unmark articles)))
+ (while articles
+ (if unmark
+ (gnus-summary-remove-process-mark (pop articles))
+ (gnus-summary-set-process-mark (pop articles))))
+ (gnus-message-process-mark unmark new-marked)))
(gnus-summary-position-point))
(defun gnus-uu-unmark-by-regexp (regexp)
(require 'product)
(provide 'gnus-vers)
-(defconst gnus-revision-number "01"
+(defconst gnus-revision-number "02"
"Revision number for this version of gnus.")
;; Product information of this gnus.
;;; gnus-xmas.el --- Gnus functions for XEmacs
-;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000
+;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Katsumi Yamaoka <yamaoka@jpl.org>
(defvar gnus-agent-gcc-header "X-Gnus-Agent-Gcc")
(defvar gnus-agent-meta-information-header "X-Gnus-Agent-Meta-Information")
+(defvar gnus-draft-meta-information-header "X-Draft-From")
(defvar gnus-group-get-parameter-function 'gnus-group-get-parameter)
(defvar gnus-original-article-buffer " *Original Article*")
(defvar gnus-newsgroup-name nil)
(defvar gnus-agent-fetching nil
"Whether Gnus agent is in fetching mode.")
-(defvar gnus-agent-fetching nil
- "Whether Gnus agent is in fetching mode.")
-
(defvar gnus-command-method nil
"Dynamically bound variable that says what the current backend is.")
(and active
(file-exists-p active))))))
+(defsubst gnus-method-to-server-name (method)
+ (concat
+ (format "%s" (car method))
+ (when (and
+ (or (assoc (format "%s" (car method))
+ (gnus-methods-using 'address))
+ (gnus-server-equal method gnus-message-archive-method))
+ (nth 1 method)
+ (not (string= (nth 1 method) "")))
+ (concat "+" (nth 1 method)))))
+
(defun gnus-group-prefixed-name (group method)
"Return the whole name from GROUP and METHOD."
(and (stringp method) (setq method (gnus-server-to-method method)))
(if (or (not method)
(gnus-server-equal method "native"))
group
- (concat (format "%s" (car method))
- (when (and
- (or (assoc (format "%s" (car method))
- (gnus-methods-using 'address))
- (gnus-server-equal method gnus-message-archive-method))
- (nth 1 method)
- (not (string= (nth 1 method) "")))
- (concat "+" (nth 1 method)))
- ":" group)))
+ (concat (gnus-method-to-server-name method) ":" group)))
(defun gnus-group-real-prefix (group)
"Return the prefix of the current group name."
(maybe-fbind '(babel-fetch
babel-wash create-image decode-coding-string display-graphic-p
+ display-time-event-handler
find-image font-create-object gnus-mule-get-coding-system
font-lock-set-defaults
image-size image-type-available-p insert-image
set-buffer-multibyte set-char-table-range
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))
+ window-edges x-color-values x-popup-menu browse-url
+ frame-char-height frame-char-width))
(maybe-bind '(buffer-display-table
buffer-file-coding-system font-lock-defaults
global-face-data gnus-article-x-face-too-ugly
:type 'sexp)
(defcustom message-ignored-news-headers
- "^NNTP-Posting-Host:\\|^Xref:\\|^[BGF]cc:\\|^Resent-Fcc:"
+ "^NNTP-Posting-Host:\\|^Xref:\\|^[BGF]cc:\\|^Resent-Fcc:\\|X-Draft-From:"
"*Regexp of headers to be removed unconditionally before posting."
:group 'message-news
:group 'message-headers
:type 'regexp)
-(defcustom message-ignored-mail-headers "^[GF]cc:\\|^Resent-Fcc:\\|^Xref:"
+(defcustom message-ignored-mail-headers
+ "^[GF]cc:\\|^Resent-Fcc:\\|^Xref:\\|X-Draft-From:"
"*Regexp of headers to be removed unconditionally before mailing."
:group 'message-mail
:group 'message-headers
:group 'message-various
:type 'hook)
+(defcustom message-minibuffer-local-map
+ (let ((map (make-sparse-keymap 'message-minibuffer-local-map)))
+ (set-keymap-parent map minibuffer-local-map)
+ map)
+ "Keymap for `message-read-from-minibuffer'.")
+
;;;###autoload
(defcustom message-citation-line-function 'message-insert-citation-line
"*Function called to insert the \"Whomever writes:\" line."
(goto-char (point-min)))
(defun message-narrow-to-head-1 ()
- "Like `message-narrow-to-head'. Don't widen."
+ "Like `message-narrow-to-head'. Don't widen."
(narrow-to-region
(goto-char (point-min))
(if (search-forward "\n\n" nil 1)
(define-key message-mode-map "\M-q" 'message-fill-paragraph)
(define-key message-mode-map "\t" 'message-tab)
+ (define-key message-mode-map "\M-;" 'comment-region)
(define-key message-mode-map "\C-x\C-s" 'message-save-drafts)
(define-key message-mode-map "\C-xk" 'message-mimic-kill-buffer))
(message-setup-fill-variables)
;; Allow using comment commands to add/remove quoting.
(set (make-local-variable 'comment-start) message-yank-prefix)
- ;;(when (fboundp 'mail-hist-define-keys)
- ;; (mail-hist-define-keys))
(if (featurep 'xemacs)
(message-setup-toolbar)
(set (make-local-variable 'font-lock-defaults)
(interactive)
(message-position-on-field "Summary" "Subject"))
-(defun message-goto-body ()
+(defun message-goto-body (&optional interactivep)
"Move point to the beginning of the message body."
- (interactive)
- (if (looking-at "[ \t]*\n") (expand-abbrev))
+ (interactive (list t))
+ (when (and interactivep
+ (looking-at "[ \t]*\n"))
+ (expand-abbrev))
(goto-char (point-min))
(or (search-forward (concat "\n" mail-header-separator "\n") nil t)
(search-forward "\n\n" nil t)))
(save-excursion
(save-restriction
(widen)
- (goto-char (point-min))
- (re-search-forward
- (concat "^" (regexp-quote mail-header-separator) "$"))
- (forward-line 1)
+ (message-goto-body)
(int-to-string (count-lines (point) (point-max))))))
(defun message-make-in-reply-to ()
;; Allow customizations to have their say.
(if (not wide)
;; This is a regular reply.
- (if (message-functionp message-reply-to-function)
- (setq follow-to (funcall message-reply-to-function)))
- ;; This is a followup.
- (if (message-functionp message-wide-reply-to-function)
+ (when (message-functionp message-reply-to-function)
(save-excursion
- (setq follow-to
- (funcall message-wide-reply-to-function)))))
+ (setq follow-to (funcall message-reply-to-function))))
+ ;; This is a followup.
+ (when (message-functionp message-wide-reply-to-function)
+ (save-excursion
+ (setq follow-to
+ (funcall message-wide-reply-to-function)))))
(setq message-id (message-fetch-field "message-id" t)
references (message-fetch-field "references")
date (message-fetch-field "date")
from (message-fetch-field "from")
subject (or (message-fetch-field "subject") "none"))
- (if gnus-list-identifiers
- (setq subject (message-strip-list-identifiers subject)))
+ (when gnus-list-identifiers
+ (setq subject (message-strip-list-identifiers subject)))
(setq subject (message-make-followup-subject subject))
(when (and (setq gnus-warning (message-fetch-field "gnus-warning"))
"Read from the minibuffer while providing abbrev expansion."
(if (fboundp 'mail-abbrevs-setup)
(let ((mail-abbrev-mode-regexp "")
- (minibuffer-setup-hook 'mail-abbrevs-setup))
+ (minibuffer-setup-hook 'mail-abbrevs-setup)
+ (minibuffer-local-map message-minibuffer-local-map))
(read-from-minibuffer prompt))
- (let ((minibuffer-setup-hook 'mail-abbrev-minibuffer-setup-hook))
+ (let ((minibuffer-setup-hook 'mail-abbrev-minibuffer-setup-hook)
+ (minibuffer-local-map message-minibuffer-local-map))
(read-string prompt))))
(defun message-use-alternative-email-as-from ()
;;; messagexmas.el --- XEmacs extensions to message
-;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000
+;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: mail, news
(setq start nil))
charset)))))))
-(eval-when-compile (defvar message-posting-charset))
+(defun mm-long-lines-p (length)
+ "Say whether any of the lines in the buffer is longer than LINES."
+ (save-excursion
+ (goto-char (point-min))
+ (end-of-line)
+ (while (and (not (eobp))
+ (not (> (current-column) length)))
+ (forward-line 1)
+ (end-of-line))
+ (and (> (current-column) length)
+ (current-column))))
+
+(defvar message-posting-charset)
(defun mm-body-encoding (charset &optional encoding)
"Do Content-Transfer-Encoding and return the encoding of the current buffer."
- (let ((bits (mm-body-7-or-8)))
+ (let ((bits (mm-body-7-or-8))
+ (longp (mm-long-lines-p 1000)))
(require 'message)
(cond
- ((and (not mm-use-ultra-safe-encoding) (eq bits '7bit))
+ ((and (not mm-use-ultra-safe-encoding)
+ (not longp)
+ (eq bits '7bit))
bits)
((and (not mm-use-ultra-safe-encoding)
+ (not longp)
(or (eq t (cdr message-posting-charset))
(memq charset (cdr message-posting-charset))
(eq charset mail-parse-charset)))
"Set the multibyte flag of the current buffer.
Only do this if the default value of `enable-multibyte-characters' is
non-nil. This is a no-op in XEmacs."
- (when (and (fboundp 'set-buffer-multibyte)
- (boundp 'enable-multibyte-characters)
- (default-value 'enable-multibyte-characters))
+ (when (and (not (featurep 'xemacs))
+ (boundp 'default-enable-multibyte-characters)
+ default-enable-multibyte-characters
+ (fboundp 'set-buffer-multibyte))
(set-buffer-multibyte t)))
(defsubst mm-disable-multibyte ()
"Unset the multibyte flag of in the current buffer.
This is a no-op in XEmacs."
- (when (fboundp 'set-buffer-multibyte)
+ (when (and (not (featurep 'xemacs))
+ (fboundp 'set-buffer-multibyte))
(set-buffer-multibyte nil)))
(defsubst mm-enable-multibyte-mule4 ()
"Enable multibyte in the current buffer.
Only used in Emacs Mule 4."
- (when (and (fboundp 'set-buffer-multibyte)
- (boundp 'enable-multibyte-characters)
- (default-value 'enable-multibyte-characters)
+ (when (and (not (featurep 'xemacs))
+ (boundp 'default-enable-multibyte-characters)
+ default-enable-multibyte-characters
+ (fboundp 'set-buffer-multibyte)
(fboundp 'charsetp)
(not (charsetp 'eight-bit-control)))
(set-buffer-multibyte t)))
(defsubst mm-disable-multibyte-mule4 ()
"Disable multibyte in the current buffer.
Only used in Emacs Mule 4."
- (when (and (fboundp 'set-buffer-multibyte)
+ (when (and (not (featurep 'xemacs))
+ (fboundp 'set-buffer-multibyte)
(fboundp 'charsetp)
(not (charsetp 'eight-bit-control)))
(set-buffer-multibyte nil)))
"Evaluate FORMS with current current buffer temporarily made unibyte.
Also bind `default-enable-multibyte-characters' to nil.
Equivalent to `progn' in XEmacs"
- (let ((multibyte (make-symbol "multibyte")))
- `(if (fboundp 'set-buffer-multibyte)
- (let ((,multibyte enable-multibyte-characters))
+ (let ((buffer (make-symbol "buffer")))
+ `(if (and (not (featurep 'xemacs))
+ (boundp 'enable-multibyte-characters)
+ enable-multibyte-characters
+ (fboundp 'set-buffer-multibyte))
+ (let ((,buffer (current-buffer)))
(unwind-protect
(let (default-enable-multibyte-characters)
(set-buffer-multibyte nil)
,@forms)
- (set-buffer-multibyte ,multibyte)))
- (progn
+ (set-buffer ,buffer)
+ (set-buffer-multibyte t)))
+ (let (default-enable-multibyte-characters)
,@forms))))
(put 'mm-with-unibyte-current-buffer 'lisp-indent-function 0)
(put 'mm-with-unibyte-current-buffer 'edebug-form-spec '(body))
(defmacro mm-with-unibyte-current-buffer-mule4 (&rest forms)
"Evaluate FORMS there like `progn' in current buffer.
Mule4 only."
- (let ((multibyte (make-symbol "multibyte")))
- `(if (or (featurep 'xemacs)
- (not (fboundp 'set-buffer-multibyte))
- (not (fboundp 'charsetp))
- (charsetp 'eight-bit-control)) ;; For Emacs Mule 4 only.
- (progn
- ,@forms)
- (let ((,multibyte (default-value 'enable-multibyte-characters)))
+ (let ((buffer (make-symbol "buffer")))
+ `(if (and (not (featurep 'xemacs))
+ (boundp 'enable-multibyte-characters)
+ enable-multibyte-characters
+ (fboundp 'set-buffer-multibyte)
+ (fboundp 'charsetp)
+ (not (charsetp 'eight-bit-control))) ;; For Emacs Mule 4 only.
+ (let ((,buffer (current-buffer)))
(unwind-protect
- (let ((buffer-file-coding-system mm-binary-coding-system)
- (coding-system-for-read mm-binary-coding-system)
- (coding-system-for-write mm-binary-coding-system))
+ (let (default-enable-multibyte-characters)
(set-buffer-multibyte nil)
- (setq-default enable-multibyte-characters nil)
,@forms)
- (setq-default enable-multibyte-characters ,multibyte)
- (set-buffer-multibyte ,multibyte))))))
+ (set-buffer ,buffer)
+ (set-buffer-multibyte t)))
+ (let (default-enable-multibyte-characters)
+ ,@forms))))
(put 'mm-with-unibyte-current-buffer-mule4 'lisp-indent-function 0)
(put 'mm-with-unibyte-current-buffer-mule4 'edebug-form-spec '(body))
(if (search-forward "\n\n" nil t)
(delete-region (point-min) (point)))
(if (re-search-forward mm-uu-pgp-beginning-signature nil t)
- (delete-region (match-beginning 0) (point-max))))
- (list
- (mm-make-handle buf
- '("text/plain" (charset . gnus-decoded))))))
+ (delete-region (match-beginning 0) (point-max)))
+ (goto-char (point-min))
+ (while (re-search-forward "^- " nil t)
+ (replace-match "" t t)
+ (forward-line 1)))
+ (list (mm-make-handle buf '("text/plain" (charset . gnus-decoded))))))
(defun mm-uu-pgp-signed-extract ()
(let ((mm-security-handle (list (format "multipart/signed"))))
(url-standalone-mode t))
(condition-case var
(w3-region (point-min) (point-max))
- (error)))))
+ (error
+ (message
+ "Error while rendering html; showing as text/plain"))))))
(mm-handle-set-undisplayer
handle
`(lambda ()
(with-temp-buffer
(setq charset (mm-charset-to-coding-system
(cdr (assq 'charset cont))))
- (if (eq charset 'ascii) (setq charset nil))
+ (when (eq charset 'ascii)
+ (setq charset nil))
(cond
((cdr (assq 'buffer cont))
(insert-buffer-substring (cdr (assq 'buffer cont))))
;; Remove quotes from quoted tags.
(goto-char (point-min))
(while (re-search-forward
- "<#!+/?\\(part\\|multipart\\|external\\|mml\\)" nil t)
+ "<#!+/?\\(part\\|multipart\\|external\\|mml\\)"
+ nil t)
(delete-region (+ (match-beginning 0) 2)
(+ (match-beginning 0) 3))))))
(cond
;;; nndb.el --- nndb access for Gnus
-;; Copyright (C) 1997,98 Free Software Foundation, Inc.
+
+;; Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
;; Kai Grossjohann <grossjohann@ls6.informatik.uni-dortmund.de>
(require 'gnus-util)
(require 'gnus-range)
+(eval-and-compile
+ (autoload 'gnus-intersection "gnus-range"))
+
(nnoo-declare nnfolder)
(defvoo nnfolder-directory (expand-file-name message-directory)
'headers
(if (nnfolder-retrieve-headers-with-nov articles fetch-old)
'nov
+ (setq articles (gnus-sorted-intersection
+ ;; Is ARTICLES sorted?
+ (sort articles '<)
+ (nnfolder-existing-articles)))
(while (setq article (pop articles))
(set-buffer nnfolder-current-buffer)
(when (nnfolder-goto-article article)
(let ((marker (concat "\n" nnfolder-article-marker))
(number "[0-9]+")
numbers)
-
(while (and (search-forward marker nil t)
(re-search-forward number nil t))
(let ((newnum (string-to-number (match-string 0))))
(if (nnmail-within-headers-p)
(push newnum numbers))))
- numbers))))
+ ;; The article numbers are increasing, so this result is sorted.
+ (nreverse numbers)))))
(deffoo nnfolder-request-expire-articles
(articles newsgroup &optional server force)
;; The articles that really exist and will
;; be expired if they are old enough.
(maybe-expirable
- (gnus-intersection articles (nnfolder-existing-articles))))
+ (gnus-sorted-intersection articles (nnfolder-existing-articles))))
(nnmail-activate 'nnfolder)
(save-excursion
(require 'mail-utils)
(require 'mime)
(eval-and-compile
+ (autoload 'gnus-sorted-intersection "gnus-range")
(autoload 'gnus-intersection "gnus-range")
(autoload 'gnus-sorted-complement "gnus-range"))
(defalias 'nnheader-run-at-time 'run-at-time)
(defalias 'nnheader-cancel-timer 'cancel-timer)
(defalias 'nnheader-cancel-function-timers 'cancel-function-timers)
+(defalias 'nnheader-string-as-multibyte 'string-as-multibyte)
(defun nnheader-Y-or-n-p (prompt)
"Ask user a \"Y/n\" question. Return t if answer is neither \"n\", \"N\" nor \"C-g\"."
;;; nnheaderxm.el --- making Gnus backends work under XEmacs
-;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000
+;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Katsumi Yamaoka <yamaoka@jpl.org>
(defalias 'nnheader-run-at-time 'nnheader-xmas-run-at-time)
(defalias 'nnheader-cancel-timer 'delete-itimer)
(defalias 'nnheader-cancel-function-timers 'ignore)
+(defalias 'nnheader-string-as-multibyte 'identity)
(defalias 'nnheader-Y-or-n-p 'nnheader-xmas-Y-or-n-p)
(provide 'nnheaderxm)
can also be `immediate' and `never'."
:group 'nnmail-expire
:type '(choice (const immediate)
- (integer :tag "days")
+ (number :tag "days")
(const never)))
(defcustom nnmail-expiry-wait-function nil
(require 'nnheader)
(require 'nnmail)
(require 'nnoo)
-(eval-and-compile
- (autoload 'gnus-sorted-intersection "gnus-range"))
(nnoo-declare nnml)
(nnweb-decode-entities-string (match-string 1)))
(re-search-forward "<url>\\([^<]+\\)</url>")
(setq sid (match-string 1))
- (string-match "/\\([0-9/]+\\)\\(.shtml\\|$\\)" sid)
- (setq sid (concat "00/" (match-string 1 sid)))
+ (string-match "sid=\\([0-9/]+\\)\\(.shtml\\|$\\)" sid)
+ (setq sid (match-string 1 sid))
(re-search-forward "<comments>\\([^<]+\\)</comments>")
(setq articles (string-to-number (match-string 1)))
(setq gname (concat description " (" sid ")"))
nil))))
(when timer
(nnheader-cancel-timer timer))
+ (unless process
+ (nntp-kill-buffer pbuffer))
(when (and (buffer-name pbuffer)
process)
(process-kill-without-query process)
(defun nnweb-insert-html (parse)
"Insert HTML based on a w3 parse tree."
(if (stringp parse)
- (insert parse)
+ (insert (nnheader-string-as-multibyte parse))
(insert "<" (symbol-name (car parse)) " ")
(insert (mapconcat
(lambda (param)
(format "Item.asp?GroupID=%d&ThreadID=%d" sid
thread-id)))
(goto-char (point-min))
- (setq contents
- (ignore-errors (w3-parse-buffer (current-buffer))))
- (setq tables (caddar (caddar (cdr (caddar (caddar contents))))))
+ (setq tables (caddar
+ (caddar
+ (cdr (caddar
+ (caddar
+ (ignore-errors
+ (w3-parse-buffer (current-buffer)))))))))
(setq tables (cdr (caddar (memq (assq 'div tables) tables))))
(setq contents nil)
(dolist (table tables)
- (setq table (caddar (caddar (caddr table)))
- hstuff (delete ":link" (nnweb-text (car table)))
- bstuff (car (caddar (cdr table)))
- from (car hstuff))
- (when (nth 2 hstuff)
- (setq time (nnwfm-date-to-time (nth 2 hstuff)))
- (push (list from time bstuff) contents)))
+ (when (eq (car table) 'table)
+ (setq table (caddar (caddar (caddr table)))
+ hstuff (delete ":link" (nnweb-text (car table)))
+ bstuff (car (caddar (cdr table)))
+ from (car hstuff))
+ (when (nth 2 hstuff)
+ (setq time (nnwfm-date-to-time (nth 2 hstuff)))
+ (push (list from time bstuff) contents))))
(setq contents (nreverse contents))
(dolist (art (cdr elem))
(push (list (car art)
(while (re-search-forward " wr(" nil t)
(forward-char -1)
(setq elem (message-tokenize-header
- (buffer-substring
- (1+ (point))
- (progn
- (forward-sexp 1)
- (1- (point))))))
+ (nnweb-replace-in-string
+ (buffer-substring
+ (1+ (point))
+ (progn
+ (forward-sexp 1)
+ (1- (point))))
+ "\\\\[\"\\\\]" "")))
(push (list
(string-to-number (nth 1 elem))
(nnweb-replace-in-string (nth 2 elem) "\"" "")
(if coding-system
(mm-encode-coding-region (point-min) (point-max) coding-system))
(goto-char (point-min))
- (while (and (skip-chars-forward "^=" to)
+ (while (and (skip-chars-forward "^=")
(not (eobp)))
(cond ((eq (char-after (1+ (point))) ?\n)
(delete-char 2))
16)))
(insert byte)
(delete-char 3)
- (unless (eq byte ?=)
- (backward-char))))
+ ;; Why backward-char???
+ ;;(unless (eq byte 61) ;; 61 is not ?= in XEmacs
+ ;; (backward-char))
+ ))
(t
(error "Malformed quoted-printable text")
(forward-char)))))
(- (/ (1- year) 100)) ; - century years
(/ (1- year) 400)))) ; + Gregorian leap years
+(defun time-to-number-of-days (time)
+ "Return the number of days represented by TIME.
+The number of days will be returned as a floating point number."
+ (/ (+ (* 1.0 65536 (car time)) (cadr time)) (* 60 60 24)))
+
;;;###autoload
(defun safe-date-to-time (date)
"Parse DATE and return a time structure.
+2001-01-05 06:53:13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * emacs-mime.texi (time-date): Addition.
+ (time-date): Addition.
+
+2001-01-04 22:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus.texi (Newest Features): uref, not url.
+
+ * texi2latex.el (latexi-translate-file): Ignore anchor.
+
+2001-01-04 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+ * gnus.texi (Article Washing): Refer to `Customizing Articles' for
+ permanent changes. Suggested by Russell Marks (russel dot marks
+ at ntlworld dot com).
+
+2001-01-03 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+ * gnus.texi (Article Washing): Mention `C-u g' as a sort of
+ anti-washing.
+
+2001-01-01 11:40:34 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (extensions): Removed.
+
+2000-12-31 10:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * texi2latex.el (latexi-translate-file): Understand uref.
+
+2000-12-30 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+ * gnus.texi (Selecting a Group): Explain in more detail, what a
+ prefix arg means for SPC. Refer people to M-g command from
+ summary buffer. Kudos to Paul Repacholi <prep@prep.synonet.com>
+ and Dan Jacobson <jidanni@kimo.com.tw> for suggesting this.
+
+2000-12-29 21:43:20 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.texi (Spelling): New.
+
+2000-12-29 10:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * texi2latex.el (latexi-translate-file): Support srcdir.
+ (latexi-translate-file): Understand ifnottex, dircategory, and
+ direntry. Set coding-system-for-write to iso-8859-1.
+
+ * Makefile.in: Fix for srcdir.
+
+ * gnus.texi (NoCeM): Use file instead of uref.
+ (Mail Source Specifiers): Use subsubsection instead of
+ subsubheading.
+
+2000-12-29 01:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus.texi (Top): Set version to Oort Gnus v0.01.
+
+ * Makefile.in (install): The info files are in the current
+ directory.
+
+2000-12-29 Christopher Splinter <chris@splinter.inka.de>
+
+ * gnus.texi (Customizing Articles): Added documentation for
+ `gnus-treat-hide-citation-maybe', `gnus-treat-date-iso8601' and
+ `gnus-treat-date-user-defined'.
+
+2000-12-29 00:38:59 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Posting Styles): Addition.
+
+2000-12-28 20:04:26 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.texi (Buffer Entry): New section.
+
2000-12-22 Christopher Splinter <chris@splinter.inka.de>
* gnus.texi (Group Parameters): Add documentation for the `banner'
.texi.dvi :
sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi
- $(TEXI2DVI) gnustmp.texi
+ $(TEXI2DVI) -I $(srcdir) gnustmp.texi
cp gnustmp.dvi $*.dvi
rm gnustmp.*
.texi.pdf :
sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi
- $(TEXI2PDF) gnustmp.texi
+ $(TEXI2PDF) -I $(srcdir) gnustmp.texi
cp gnustmp.pdf $*.pdf
rm gnustmp.*
refcard.dvi: refcard.tex gnuslogo.refcard gnusref.tex
- $(LATEX) refcard.tex
+ TEXINPUTS=$(srcdir):$$TEXINPUTS $(LATEX) refcard.tex
refcard.pdf: refcard.tex gnuslogo.refcard gnusref.tex
- epstopdf gnuslogo.refcard --outfile=gnuslogo.refcard.pdf
- $(PDFLATEX) refcard.tex
+ epstopdf $(srcdir)/gnuslogo.refcard --outfile=gnuslogo.refcard.pdf
+ TEXINPUTS=$(srcdir):$$TEXINPUTS $(PDFLATEX) refcard.tex
clean:
rm -f *.orig *.rej *.elc *~ gnus-[0-9] gnus-[0-9][0-9]
makeinfo -o message message.texi
texi2latex.elc: texi2latex.el
- $(EMACSINFO) -batch -l bytecomp --eval '(byte-compile-file "texi2latex.el")'
+ srcdir=$(srcdir)/../lisp $(EMACSINFO) -l $(srcdir)/../lisp/dgnushack.el --eval '(byte-compile-file "$(srcdir)/texi2latex.el")'
-latex: gnus.texi texi2latex.elc
- $(EMACSINFO) -batch -q -no-site-file gnus.texi -l ./texi2latex.elc -f latexi-translate
+latex gnus.latexi gnus-faq.latexi: $(srcdir)/gnus.texi $(srcdir)/gnus-faq.texi texi2latex.elc
+ srcdir=$(srcdir) $(EMACSINFO) -l ./texi2latex.elc -f latexi-translate
-latexps:
+latexps: gnus.latexi
$(MAKE) texi2latex.elc
rm -f gnus.aux
egrep -v "label.*Index|chapter.*Index" gnus.latexi > gnus.tmplatexi1
- $(LATEX) gnus.tmplatexi1
+ TEXINPUTS=$(srcdir):$$TEXINPUTS $(LATEX) gnus.tmplatexi1
./splitindex
makeindex -o gnus.kind gnus.kidx
makeindex -o gnus.cind gnus.cidx
$(SHELL) $(top_srcdir)/mkinstalldirs $(infodir)
@list='$(INFO_DEPS)'; \
for file in $$list; do \
- d=$(srcdir); \
- for ifile in `CDPATH=: && cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
- if test -f $$d/$$ifile; then \
- echo " $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile"; \
- $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile; \
+ for ifile in `echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
+ if test -f $$ifile; then \
+ echo " $(INSTALL_DATA) $$ifile $(infodir)/$$ifile"; \
+ $(INSTALL_DATA) $$ifile $(infodir)/$$ifile; \
else : ; fi; \
done; \
done
This file documents the Emacs MIME interface functionality.
-Copyright (C) 1998,99,2000 Free Software Foundation, Inc.
+Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1998,99,2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1998, 1999, 2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
These functions convert between five formats: A date string, an Emacs
time structure, a decoded time list, a second number, and a day number.
-The functions have quite self-explanatory names, so the following just
-gives an overview of which functions are available.
+Here's a bunch of time/date/second/day examples:
@example
(parse-time-string "Sat Sep 12 12:21:54 1998 +0200")
(seconds-to-time 905595714.0)
@result{} (13818 19266 0)
-(time-to-day '(13818 19266))
+(time-to-days '(13818 19266))
@result{} 729644
(days-to-time 729644)
(time-to-day-in-year '(13818 19266))
@result{} 255
+(time-to-number-of-days
+ (time-since
+ (date-to-time "Mon, 01 Jan 2001 02:22:26 GMT")))
+@result{} 4.146122685185185
@end example
And finally, we have @code{safe-date-to-time}, which does the same as
@code{date-to-time}, but returns a zero time if the date is
syntactically malformed.
+The five data representations used are the following:
+
+@table @var
+@item date
+An RFC822 (or similar) date string. For instance: @code{"Sat Sep 12
+12:21:54 1998 +0200"}.
+
+@item time
+An internal Emacs time. For instance: @code{(13818 26466)}.
+
+@item seconds
+A floating point representation of the internal Emacs time. For
+instance: @code{905595714.0}.
+
+@item days
+An integer number representing the number of days since 00000101. For
+instance: @code{729644}.
+
+@item decoded time
+A list of decoded time. For instance: @code{(54 21 12 12 9 1998 6 t
+7200)}.
+@end table
+
+All the examples above represent the same moment.
+
+These are the functions available:
+
+@table @code
+@item date-to-time
+Take a date and return a time.
+
+@item time-to-seconds
+Take a time and return seconds.
+
+@item seconds-to-time
+Take seconds and return a time.
+
+@item time-to-days
+Take a time and return days.
+
+@item days-to-time
+Take days and return a time.
+
+@item date-to-day
+Take a date and return days.
+
+@item time-to-number-of-days
+Take a time and return the number of days that represents.
+
+@item safe-date-to-time
+Take a date and return a time. If the date is not syntactically valid,
+return a "zero" date.
+
+@item time-less-p
+Take two times and say whether the first time is less (i. e., earlier)
+than the second time.
+
+@item time-since
+Take a time and return a time saying how long it was since that time.
+
+@item subtract-time
+Take two times and subtract the second from the first. I. e., return
+the time between the two times.
+
+@item days-between
+Take two days and return the number of days between those two days.
+
+@item date-leap-year-p
+Take a year number and say whether it's a leap year.
+
+@item time-to-day-in-year
+Take a time and return the day number within the year that the time is
+in.
+
+@end table
@node qp
@synindex fn cp
@synindex vr cp
@synindex pg cp
-@dircategory Editors
+@dircategory Emacs
@direntry
* Gnus-ja: (gnus-ja). The newsreader gnus (Japanese).
@end direntry
\thispagestyle{empty}
-Copyright \copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000
+Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
\e$B$3$N%U%!%$%k$O\e(B GNU Emacs \e$B$N%K%e!<%9%j!<%@$G$"$k\e(B gnus \e$B$K4X$9$k@bL@=q$G$9!#\e(B
-Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
Composing Messages
* Mail:: \e$B%a!<%k$HJVEz\e(B
-* Post:: \e$BEj9F$H%U%)%m!<%"%C%W\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
\e$B$"$l$P\e(B gnus \e$B$O?7$7$$J}$+$i\e(B @var{N} \e$B8D$N5-;v$r<hF@$7!"\e(B@var{N} \e$B$,Ii$N?t$G\e(B
\e$B$"$l$P\e(B gnus \e$B$O8E$$J}$+$i\e(B @code{abs(@var{N})} \e$B8D$N5-;v$r<hF@$7$^$9!#\e(B
+\e$B$7$?$,$C$F!"\e(B@kbd{SPC} \e$B$G$OIaDL$K%0%k!<%W$KF~$j!"\e(B@kbd{C-u SPC} \e$B$G$O8E$$5-\e(B
+\e$B;v$,8=$l$^$9!#\e(B@kbd{C-u 4 2 SPC} \e$B$G$O\e(B 42 \e$B8D$N:G?7$N5-;v$r<hF@$7!"\e(B@kbd{C-u
+- 4 2 SPC} \e$B$G$O\e(B 42 \e$B8D$N:G$b8E$$5-;v$r<hF@$7$^$9!#\e(B
+
+\e$B%0%k!<%W$K$$$k\e(B (\e$B35N,%P%C%U%!$K$$$k\e(B) \e$B$H$-$O!"\e(B@kbd{M-g} \e$B$G?7$7$$5-;v$r<hF@\e(B
+\e$B$G$-$k$7!"\e(B@kbd{C-u M-g} \e$B$G$O8E$$5-;v$rI=<($9$k$3$H$,$G$-$^$9!#\e(B
+
@item RET
@kindex RET (Group)
@findex gnus-group-select-group
\e$B%U%)%m!<%"%C%W$H%K%e!<%9$X$NEj9F$r$9$k$H$-$K;HMQ$5$l$k%"%I%l%9!#\e(B
@example
-(to-address . "some@@where.com")
+(to-address . "some@@where.com")
@end example
\e$B$3$l$O<g$K!"JD$8$?%a!<%j%s%0%j%9%H$rI=$o$9%a!<%k%0%k!<%W$K$*$$$FJXMx$J$b\e(B
@findex gnus-group-sort-by-method
\e$BA*BrJ}K!$N%"%k%U%!%Y%C%H=g$GJB$YBX$($^$9!#\e(B
+@item gnus-group-sort-by-server
+@findex gnus-group-sort-by-server
+\e$B%5!<%P!<L>$N%"%k%U%!%Y%C%H=g$GJB$YBX$($^$9!#\e(B
+
@end table
@code{gnus-group-sort-function} \e$B$OJB$YBX$(4X?t$N%j%9%H$G$"$C$F$b9=$$$^$;\e(B
@findex gnus-article-strip-banner
@cindex banner
@cindex OneList
-@cindex stripping advertisments
-@cindex advertisments
+@cindex stripping advertisements
+@cindex advertisements
@code{banner} \e$B%0%k!<%W%Q%i%a!<%?$G;XDj$5$l$?%P%J!<$r<h$j=|$-$^\e(B
\e$B$9\e(B (@code{gnus-article-strip-banner})\e$B!#$3$l$O<g$K!"$$$/$D$+$N%a!<%j%s%0%j%9\e(B
\e$B%H$d;J2q<TIU$-$N%0%k!<%W$,A4$F$N%0%k!<%W$KDI2C$9$k!"15F+$7$$%P%J!<$H\e(B/\e$B$b\e(B
\e$B$^$9$,!"IaDL$O$b$C$HNI$/8+$($k2?$+$KMn$ACe$-$^$9!#$=$l$K$b$C$H$-$l$$$G$9!"\e(B
\e$B$?$V$s!#\e(B
+gnus \e$B$,5-;v$rI=<($9$k4{Dj$N$d$jJ}$rJQ$($?$$$H$-\e(B
+\e$B$O\e(B @xref{Customizing Articles} \e$B$r;2>H$7$F2<$5$$!#\e(B
+
@table @kbd
+@item C-u g
+\e$B$3$l$O5-;v@vBu$G$O$J$/$F!"$=$N5U$G$9!#$3$l$r%?%$%W$9$k$H!"%G%#%9%/$d%5!<\e(B
+\e$B%P!<$K$"$k$,$^$^$N5-;v$,8+$($^$9!#\e(B
+
@item W l
@kindex W l (\e$B35N,\e(B)
@findex gnus-summary-stop-page-breaking
\include{xface}
@end iflatex
@end iftex
+@anchor{X-Face}
\e$B$9$Y$F$N\e(B X-Face \e$BMs$rC5$7$FI=<($7$^$9\e(B(@code{gnus-article-display-x-face})\e$B!#\e(B
\e$B$3$NL?Na$OJQ?t\e(B @code{gnus-article-x-face-command} \e$B$K$h$C$FM?$($i$l$?4X?t\e(B
\e$B$K$h$C$F<B9T$5$l$^$9!#$3$NJQ?t$,J8;zNs$J$i$P!"$3$NJ8;zNs$,%5%V%7%'%k$G<B\e(B
@findex gnus-article-date-local
\e$BF|IU$r$=$NCO0h$N;~4VBS$GI=<($7$^$9\e(B (@code{gnus-article-date-local})\e$B!#\e(B
+@item W T p
+@kindex W T p (Summary)
+@findex gnus-article-date-english
+\e$BF|IU$r1Q8l$GH/2;$G$-$k7A<0$GI=<($7$^\e(B
+\e$B$9\e(B (@code{gnus-article-date-english})\e$B!#\e(B
+
@item W T s
@kindex W T s (\e$B35N,\e(B)
@vindex gnus-article-time-format
@item gnus-treat-hide-boring-headers (head)
@item gnus-treat-hide-signature (t, last)
@item gnus-treat-hide-citation (t, integer)
+@item gnus-treat-hide-citation-maybe (t, integer)
@item gnus-treat-strip-pgp (t, last, integer)
@item gnus-treat-strip-pem (t, last, integer)
@item gnus-treat-highlight-headers (head)
@item gnus-treat-highlight-signature (t, last, integer)
@item gnus-treat-date-ut (head)
@item gnus-treat-date-local (head)
+@item gnus-treat-date-english (head)
@item gnus-treat-date-lapsed (head)
@item gnus-treat-date-original (head)
+@item gnus-treat-date-iso8601 (head)
+@item gnus-treat-date-user-defined (head)
@item gnus-treat-strip-headers-in-body (t, integer)
@item gnus-treat-strip-trailing-blank-lines (t, last, integer)
@item gnus-treat-strip-leading-blank-lines (t, integer)
@menu
* Mail:: \e$B%a!<%k$HJVEz\e(B
-* Post:: \e$BEj9F$H%U%)%m!<%"%C%W\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
@end table
-@node Post
-@section \e$BEj9F\e(B
-
-\e$B%K%e!<%95-;v:n@.$N$?$a$NJQ?t\e(B:
-
-@table @code
-@item gnus-sent-message-ids-file
-@vindex gnus-sent-message-ids-file
-Gnus \e$B$OAw?.$7$?A4$F$N%a!<%k$N\e(B @code{Message-ID} \e$BMzNr%U%!%$\e(B
-\e$B%k\e(B (history file) \e$B$rJ]B8$7$^$9!#$b$7%a!<%k$r4{$KAw$C$?;v$,H/8+$5$l$?$J$i!"\e(B
-\e$BMxMQ<T$K%a!<%k$r:FAw$9$k$+$I$&$+$r?R$M$^$9!#\e(B(\e$B$3$l$O<g$KF1$8%Q%1%C%H$rJ#\e(B
-\e$B?t2sAw$k798~$N$"$k\e(B @sc{soup} \e$B%Q%1%C%H$d!"$=$l$K;w$?$h$&$J$b$N$r07$C$F$$\e(B
-\e$B$k$H$-$KLr$KN)$A$^$9!#\e(B) \e$B$3$NJQ?t$O$3$NMzNr%U%!%$%k$,$I$3$K$"$k$+$r;XDj$7\e(B
-\e$B$^$9!#%G%#%U%)%k%H$G$O\e(B @file{~/News/Sent-Message-IDs} \e$B$G$9!#\e(BGnus \e$B$,MzNr\e(B
-\e$B%U%!%$%k$rJ];}$9$k;v$rK>$^$J$$$N$G$"$l$P!"$3$NJQ?t$r\e(B @code{nil} \e$B$K@_Dj$9\e(B
-\e$B$k;v$,$G$-$^$9!#\e(B
-
-@item gnus-sent-message-ids-length
-@vindex gnus-sent-messages-ids-length
-\e$B$3$NJQ?t$O$I$l$/$i$$B?$/$N\e(B @code{Message-ID} \e$B$rMzNr%U%!%$%k$KJ];}$9$k$+\e(B
-\e$B$r;XDj$7$^$9!#%G%#%U%)%k%H$G$O\e(B 1000 \e$B$G$9!#\e(B
-
-@end table
-
@node Posting Server
@section \e$BEj9F$9$k%5!<%P!<\e(B
((message-news-p)
(signature my-news-signature))
(header "From\\|To" "larsi.*org"
- (Organization "Somewhere, Inc."))
+ (Organization "Somewhere, Inc."))
((posting-from-work-p)
(signature-file "~/.work-signature")
(address "user@@bar.foo")
(body "You are fired.\n\nSincerely, your boss.")
(organization "Important Work, Inc"))
+ ("nnml:.*"
+ (From (save-excursion
+ (set-buffer gnus-article-buffer)
+ (message-fetch-field "to"))))
("^nn.+:"
(signature-file "~/.mail-signature"))))
@end lisp
+@samp{nnml:.*} \e$B$N5,B'$O!"$"$J$?$,=P$9$9$Y$F$NJV;v$N\e(B @code{To} \e$B%"%I%l%9\e(B
+\e$B$r\e(B @code{From} \e$B%"%I%l%9$H$7$F;H$&$3$H$r0UL#$7$^$9!#$3$l$O!"$"$J$?$,$?$/\e(B
+\e$B$5$s$N%a!<%j%s%0%j%9%H$K;22C$7$F$$$k>l9g$KJXMx$G$7$g$&!#\e(B
+
@node Drafts
@section \e$B2<=q$-\e(B
@cindex drafts
@section \e$B%5!<%P!<%P%C%U%!\e(B
\e$BEAE}E*$K!"\e(B@dfn{\e$B%5!<%P!<\e(B} \e$B$O$=$l$K@\B3$7$F!"$=$l$+$i>pJs$rMW5a$9$k%^%7%s\e(B
-\e$B$+%=%U%H%&%'%"$G$9!#\e(B
+\e$B$+%=%U%H%&%'%"$G$9!#\e(Bgnus \e$B$OK\Ev$N$I$s$J%5!<%P!<$K$bD>@\$K$O@\B3$;$:!"%P%C\e(B
+\e$B%/%(%s%I$+B>$N$b$N$rDL$7$F$9$Y$F$N=hM}$r9T$J$$$^$9!#$7$+$7!"$=$l$O<B:]$N\e(B
+\e$BG^BN$H\e(B gnus \e$B$N4V$KC1$K0l$D$+$=$l0J>e$N3,AX$rCV$/$3$H$G$"$C$F!"$=$l$>$l$N\e(B
+\e$B%P%C%/%(%s%I$,$^$5$K5?;wE*$J%5!<%P!<$KAjEv$9$k$H8@$C$F$bNI$$$G$7$g$&!#\e(B
+
+\e$BNc$($P\e(B @code{nntp} \e$B%P%C%/%(%s%I$O!"0[$J$k$$$/$D$+$N<B:_$9$k\e(B @sc{nntp} \e$B%5!<\e(B
+\e$B%P!<!"$"$k$$$OF1$8<B:_$9$k\e(B @sc{nntp} \e$B%5!<%P!<$N0[$J$k%]!<%H$K@\B3$9$k$?\e(B
+\e$B$a$KMQ$$$i$l$^$9!#$"$J$?$O!"$I$N%P%C%/%(%s%I$r;H$&$+!"$=$7$F$I$s$J%Q%i%a!<\e(B
+\e$B%?$r@_Dj$9$k$+$rA*BrJ}K!\e(B (@dfn{select method}) \e$B$G;XDj$7$^$9!#\e(B
+
+\e$BA*BrJ}K!$N;XDj$O!"$H$-$K6K$a$FLLE]$J$b$N$K$J$j$^$9!#$=$&$@$J$"!"Nc$($P!"\e(B
+@sc{nov} \e$B%X%C%@!<$r<h$j4s$;$h$&$H$9$k$H8G$^$C$F$7$^$$!"A*Br$N:n6H$,8N>c\e(B
+\e$B$,$A$J\e(B @sc{nntp} \e$B%5!<%P!<\e(B @samp{news.funet.fi} \e$B$N%]!<%H\e(B 13 \e$B$rFI$_$?$$>l\e(B
+\e$B9g$H$+!#$&$*$C$[$s!#$H$K$+$/$G$9$M!"$3$N%5!<%P!<$r;H$&$=$l$>$l$N%0%k!<%W\e(B
+\e$B$K$D$$$F$=$&$$$&$3$H$r@_Dj$7$J$1$l$P$J$i$J$$$H$7$?$i!"BgJQ$J:n6H$K$J$C$F\e(B
+\e$B$7$^$&$G$7$g$&!#$=$3$G\e(B gnus \e$B$O!"$=$&$$$&:n6H$r%5!<%P!<%P%C%U%!$G9T$J$&$?\e(B
+\e$B$a$K!"A*BrJ}K!$KL>A0$rIU$1$k<jCJ$r@_$1$F$$$k$N$G$9!#\e(B
+
+\e$B%5!<%P!<%P%C%U%!$KF~$k$?$a$K$O!"%0%k!<%W%P%C%U%!\e(B
+\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
@item
\e$B$=$l$>$l$N9T$OG$0U$N?t$N\e(B \e$B6h@Z$j0u\e(B/\e$BCM\e(B \e$B$NBP$r4^$`;v$,$G$-$^$9!#\e(B
-@end enumerate
\e$BM-8z$J6h@Z$j0u$O\e(B @samp{machine}, @samp{login}, @samp{password},
-@samp{default} \e$B$G$9!#\e(Bgnus \e$B$O\e(B @file{.netrc}/@code{ftp} \e$B$N9=J8$N867?$K$O8=\e(B
-\e$B$l$J$$Fs$D$N?7$7$$6h@Z$j0u!"L>IU$1$F\e(B @samp{port} \e$B$H\e(B @samp{force} \e$B$rF3F~\e(B
-\e$B$7$^$9!#\e(B(\e$B$3$l$,\e(B @file{.authinfo} \e$B%U%!%$%k$NMM<0$,\e(B @file{.netrc} \e$B%U%!%$%k\e(B
-\e$B$NMM<0$+$i0o$l$kM#0l$NJ}K!$G$9!#\e(B) @samp{port} \e$B$O%5!<%P!<$N$I$N%]!<%H$rG'\e(B
-\e$B>Z$KMQ$$$k$+$r<($7!"\e(B@samp{force} \e$B$O0J2<$G@bL@$7$^$9!#\e(B
+@samp{default} \e$B$G$9!#2C$($F!"\e(Bgnus \e$B$O\e(B @file{.netrc}/@code{ftp} \e$B$N9=J8$N86\e(B
+\e$B7?$K$O8=$l$J$$Fs$D$N?7$7$$6h@Z$j0u!"L>IU$1\e(B
+\e$B$F\e(B @samp{port} \e$B$H\e(B @samp{force} \e$B$rF3F~$7$^$9!#\e(B
+(\e$B$3$l$,\e(B @file{.authinfo} \e$B%U%!%$%k$NMM<0$,\e(B @file{.netrc} \e$B%U%!%$%k$NMM<0$+\e(B
+\e$B$i0o$l$kM#0l$NJ}K!$G$9!#\e(B) @samp{port} \e$B$O%5!<%P!<$N$I$N%]!<%H$rG'>Z$KMQ$$\e(B
+\e$B$k$+$r<($7!"\e(B@samp{force} \e$B$O0J2<$G@bL@$7$^$9!#\e(B
+
+@end enumerate
\e$B$3$l$,$=$N%U%!%$%k$NNc$G$9\e(B:
@item nntp-open-ssl-stream
\e$B%5!<%P!<$K\e(B @dfn{\e$B0BA4$J\e(B} \e$B%A%c%s%M%k$r;H$C$F%5!<%P!<$K@\B3$7$^$9!#$3$l$r;H\e(B
\e$B$&$?$a$K$O!"\e(BSSLay \e$B$,%$%s%9%H!<%k$5$l$F$$$J$1$l$P$J$j$^$;\e(B
-\e$B$s\e(B (@file{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL} \e$B$H!"\e(B@file{ssl.el} (\e$BNc$(\e(B
+\e$B$s\e(B (@uref{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL} \e$B$H!"\e(B@file{ssl.el} (\e$BNc$(\e(B
\e$B$P!"\e(BW3 \e$B$NG[I[$+$i\e(B) \e$B$,I,MW$K$J$j$^$9\e(B)\e$B!#$=$l$+$i%5!<%P!<$r<!$N$h$&$KDj5A$7\e(B
\e$B$^$9\e(B:
@item nntp-record-commands
@vindex nntp-record-commands
\e$B$b$7\e(B @code{nil} \e$B$G$J$$$H!"\e(B@code{nntp} \e$B$O\e(B @sc{nntp} \e$B%5!<%P!<$KAw$C$?A4$F\e(B
-\e$B$NL?Na$r\e(B (\e$B;~4V$H6&$K\e(B) @samp{*nntp-log*} \e$B%P%C%U%!$K5-O?$7$^$9!#$3$l$OF0:n\e(B
+\e$B$NL?Na$r\e(B (\e$B;~9o$H6&$K\e(B) @samp{*nntp-log*} \e$B%P%C%U%!$K5-O?$7$^$9!#$3$l$OF0:n\e(B
\e$B$7$F$$$J$$$H;W$o$l$k\e(B gnus/@sc{nntp} \e$B@\B3$r%G%#%P%C%0$7$F$$$k$H$-$KLr$KN)\e(B
\e$B$A$^$9!#\e(B
POP \e$B%5!<%P!<$N%]!<%HHV9f$G$9!#$3$l$O?tCM\e(B (\e$BNc$($P\e(B @samp{:port 1234}) \e$B$+J8\e(B
\e$B;zNs\e(B (\e$BNc$($P\e(B @samp{:port "pop3"}) \e$B$G$9!#$b$7J8;zNs$J$i\e(B Unix \e$B%7%9%F%`$K$*\e(B
\e$B$1$k\e(B @file{/etc/services} \e$B$K:\$C$F$$$k%5!<%S%9L>$G$J$1$l$P$J$j$^$;$s!#=i\e(B
-\e$B4|CM$O\e(B @samp{pop3} \e$B$G$9!#\e(B
+\e$B4|CM$O\e(B @samp{pop3} \e$B$G$9!#%7%9%F%`$K$h$C$F$O\e(B @samp{"pop-3"} \e$B$H$7$J$1$l$P\e(B
+\e$B$J$i$J$$$+$b$7$l$^$;$s!#\e(B
@item :user
POP \e$B%5!<%P!<$KM?$($kMxMQ<TL>$G$9!#=i4|CM$O%m%0%$%sL>$G$9!#\e(B
@end table
@end table
-@subsubheading Function Interface
+@subsubsection Function Interface
\e$B>e5-$N$$$/$D$+$N%-!<%o!<%I$O!"<B9T$9$k$?$a$N\e(B Lisp \e$B4X?t$r;XDj$7$^$9!#4X?t\e(B
\e$B$,<B9T$5$l$F$$$k4V$@$1!"$=$l$>$l$N%-!<%o!<%I\e(B @code{:foo} \e$B$NCM$H$7$F\e(B Lisp
@code{nnmail-message-id-cache-length} \e$B$NCM$r4{DjCM$h$j$b4v$i$+Bg$-$JCM$K\e(B
\e$B@_Dj$9$k$3$H$r$*4+$a$7$^$9!#$=$&$9$k$H!":#D4$Y$i$l$?%a%C%;!<%8\e(B ID \e$BC#$O:#\e(B
\e$B$7$P$i$/%-%c%C%7%e$NCf$KB8B3$G$-$^$9\e(B (5000 \e$B$K@_Dj$9$k$H%-%c%C%7%e%U%!%$\e(B
-\e$B%k$NBg$-$5$O$@$$$?$$\e(B 300 \e$B%-%m%P%$%H$0$i$$$K$J$k$_$?$$$G$9\e(B)\e$B!#$5$i$K!"\e(B
-\e$BJQ?t\e(B @code{nnmail-cache-accepted-message-ids} \e$B$NCM$rHs\e(B nil \e$B$K@_Dj$9$l$P!"\e(B
-Gnus \e$B$O0\F0$5$l$?5-;v$N%a%C%;!<%8\e(B ID \e$B$r$b5-O?$9$k$N$G!"%U%)%m!<%"%C%W5-\e(B
-\e$B;v$O?F5-;v$N0\F0@h$HF1$8%0%k!<%W$KF~$k$h$&$K$J$j$^$9!#\e(B
+\e$B%k$NBg$-$5$O$@$$$?$$\e(B 300 \e$B%-%m%P%$%H$0$i$$$K$J$k$_$?$$$G$9\e(B)\e$B!#\e(B
+@vindex nnmail-cache-accepted-message-ids
+\e$B$5$i$K!"JQ?t\e(B @code{nnmail-cache-accepted-message-ids} \e$B$NCM$r\e(B
+\e$BHs\e(B @code{nil} \e$B$K@_Dj$9$l$P!"\e(Bgnus \e$B$O0\F0$5$l$?5-;v$N%a%C%;!<%8\e(B ID \e$B$r$b5-\e(B
+\e$BO?$9$k$N$G!"%U%)%m!<%"%C%W5-;v$O?F5-;v$N0\F0@h$HF1$8%0%k!<%W$KF~$k$h$&$K\e(B
+\e$B$J$j$^$9!#\e(B
@node Group Mail Splitting
@subsection \e$B%0%k!<%W%a!<%kJ,3d\e(B
@var{auto-update} \e$B$,\e(B @code{nil} \e$B$GL5$$$H!"\e(B
@code{gnus-group-split-update} \e$B$,\e(B @code{nnmail-pre-get-new-mail-hook} \e$B$K\e(B
\e$BDI2C$5$l!"FsEY$H\e(B @code{nnmail-split-fancy} \e$B$N99?7$r?4G[$9$kI,MW$O$"$j$^\e(B
-\e$B$;$s!#\e(B@var{catch-all} \e$B$r>JN,$7$J$$>l9g$O\e(B (\e$B$=$l$O%*%W%7%g%s$G\e(B nil \e$B$HF1$8\e(B)\e$B!"\e(B
-@code{gnus-group-split-default-catch-all-group} \e$B$O$=$NCM$K@_Dj$5$l$^$9!#\e(B
+\e$B$;$s!#\e(B@var{catch-all} \e$B$r>JN,$7$J$$>l9g$O\e(B (\e$B$=$l$O%*%W%7%g%s\e(B
+\e$B$G\e(B @code{nil} \e$B$HEy\e(B
+\e$B2A\e(B)\e$B!"\e(B@code{gnus-group-split-default-catch-all-group} \e$B$O$=$NCM$K@_Dj$5$l\e(B
+\e$B$^$9!#\e(B
@vindex gnus-group-split-updated-hook
@code{nnmail-split-fancy} \e$B$,\e(B @code{gnus-group-split-update} \e$B$G@_Dj$5$l$?\e(B
@cindex Slashdot
@cindex nnslashdot
-Slashdot (@file{http://slashdot.org/}) \e$B$O?M5$$N$"$k%K%e!<%9%5%$%H$G!"%K%e!<\e(B
+Slashdot (@uref{http://slashdot.org/}) \e$B$O?M5$$N$"$k%K%e!<%9%5%$%H$G!"%K%e!<\e(B
\e$B%95-;v$N8e$K3hH/$J5DO@$,$J$5$l$F$$$^$9!#\e(B@code{nnslashdot} \e$B$G$OJXMx$JJ}K!\e(B
\e$B$G$3$N2q5D<<$rFI$`$3$H$,$G$-$^$9!#\e(B
@cindex nnultimate
@cindex Ultimate Bulletin Board
-Ultimate Bulletin Board (@file{http://www.ultimatebb.com/}) \e$B$O$*$=$i$/0l\e(B
+Ultimate Bulletin Board (@uref{http://www.ultimatebb.com/}) \e$B$O$*$=$i$/0l\e(B
\e$BHVNI$/;H$o$l$F$$$k%&%'%V7G<(HD%7%9%F%`$G$7$g$&!#$H$F$b@0A3$H$7$FNI$$3&LL\e(B
\e$B$G!"\e(Bgnus \e$B$,%0%k!<%W$r:G?7$N>uBV$KJ]$C$F$*$/$?$a$K>pJs$rF@$k$3$H$,2DG=$G\e(B
\e$B$9!#\e(B
@cindex Web Archive
\e$B%a!<%j%s%0%j%9%H$NCf$K$ONc$($P!"\e(B
-@file{http://www.egroups.com/} \e$B$d\e(B @file{http://www.mail-archive.com/} \e$B$N\e(B
+@uref{http://www.egroups.com/} \e$B$d\e(B @uref{http://www.mail-archive.com/} \e$B$N\e(B
\e$B$h$&$K%&%'%V%5!<%P!<$K$7$+%"!<%+%$%V$,L5$$$b$N$b$"$j$^$9!#$H$F$b@0A3$H$7\e(B
\e$B$FNI$$3&LL$G!"\e(Bgnus \e$B$,%0%k!<%W$r:G?7$N>uBV$KJ]$C$F$*$/$?$a$K>pJs$rF@$k$3\e(B
\e$B$H$,2DG=$G$9!#\e(B
\e$B$r4^$_$^$9!#\e(B
@vindex imap-ssl-program
-SSL \e$B@\B3$N$?$a$N\e(B OpenSSL \e$B%W%m%0%i%`$O\e(B @file{http://www.openssl.org/} \e$B$+\e(B
+SSL \e$B@\B3$N$?$a$N\e(B OpenSSL \e$B%W%m%0%i%`$O\e(B @uref{http://www.openssl.org/} \e$B$+\e(B
\e$B$iF~<j$G$-$^$9!#\e(BOpenSSL \e$B$O0JA0$O\e(B SSLeay \e$B$H$7$FCN$i$l$F$$$?$b$N$G!"\e(B
nnimap \e$B$O$=$l$b%5%]!<%H$7$^$9!#$7$+$7!"\e(BSSLeay \e$B$N:G?7HG$G$"$k\e(B 0.9.x \e$B$K$O\e(B
\e$B=EBg$J%P%0$,$"$k$?$a;H$($^$;$s!#0JA0$NHG!"FC$K\e(B SSLeay 0.8.x \e$B$O;H$($k$3$H\e(B
\e$B$3$N\e(B @code{MIEE} \e$B$r;H$&$H\e(B @code{gnus-offline} \e$B$rMQ$$$F\e(B@code{nnspool} \e$B$b\e(B
\e$B%3%s%H%m!<%k$9$k;v$,$G$-$^$9\e(B(\e$B$3$3$G$O=R$Y$^$;$s$,!D\e(B)\e$B!#\e(B(\e$B$b$A$m\e(B
\e$B$s\e(B @code{gnus-agent} + @code{MIEE} \e$B$H$$$&AH9g$;$b2DG=$G\e(B
-\e$B$9\e(B) @code{MIEE} \e$B$O\e(B @file{http://www.shiojiri.ne.jp/%7Et-ichi/lisp/miee.el} \e$B$+\e(B
+\e$B$9\e(B) @code{MIEE} \e$B$O\e(B @uref{http://www.shiojiri.ne.jp/%7Et-ichi/lisp/miee.el} \e$B$+\e(B
\e$B$i<h$C$FMh$k;v$,$G$-$^$9!#\e(B@code{gnus-setup-for-offline} \e$B$G@_Dj$7$?>l9g$K\e(B
\e$B$O!"\e(B@code{MIEE} \e$B$N@_Dj$O$$$C$5$$$7$J$/$F$b$+$^$$$^$;$s!#\e(B
\e$B>C5n%U%!%$%k$+$i%9%3%"%U%!%$%k$X$NJQ49%Q%C%1!<%8$O!"I8=`$G$O\e(Bgnus \e$B$K$O4^\e(B
\e$B$^$l$^$;$s!#\e(B
-@file{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el} \e$B$+\e(B
+@uref{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el} \e$B$+\e(B
\e$B$iF~<j$9$k$3$H$,$G$-$^$9!#\e(B
\e$B$b$7$"$J$?$N>C5n%U%!%$%k$,Hs>o$KJ#;($J$b$N$G$"$l$P\e(B --- \e$B$=$l\e(B
GroupLens \e$B$r;H$&$?$a$K$O!"%m!<%+%k$N\e(B Better Bit Berau (BBB) \e$B$KI.\e(B
\e$BL>\e(B (pseudonym) \e$B$rEPO?$7$J$1$l$P$J$j$^$;$s!#\e(B
-@samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} \e$B$,8=:_!"$A$^$?\e(B
+@uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html} \e$B$,8=:_!"$A$^$?\e(B
\e$B$KB8:_$9$kM#0l$N\e(B better bit \e$B$G$9!#\e(B
\e$BEPO?$7$?8e$G!"$$$/$D$+$NJQ?t$r@_Dj$9$kI,MW$,$"$j$^$9!#\e(B
@vindex gnus-picons-piconsearch-url
\e$B$"$J$?$,%$%s%?!<%M%C%H$X>o;~@\B3$7$F$$$k$N$J$i$P!"\e(B
@code{gnus-picons-piconsearch-url} \e$B$KJ8;z\e(B
-\e$BNs\e(B @file{http://www.cs.indiana.edu/picons/search.html} \e$B$r@_Dj$9$k$3$H$G!"\e(B
+\e$BNs\e(B @uref{http://www.cs.indiana.edu/picons/search.html} \e$B$r@_Dj$9$k$3$H$G!"\e(B
Steve Kinzler \e$B$N\e(B picon \e$B8!:w%(%s%8%s$r;H$&$3$H$,$G$-$^$9!#\e(B
@vindex gnus-picons-database
\e$B$=$&$G$J$1$l$P!"H`$N%G!<%?%Y!<%9$r<j85$KJ#@=$9$kI,MW$,$"$j$^$9!#\e(Bpicon \e$B%G!<\e(B
\e$B%?%Y!<%9$NF~<j$H%$%s%9%H!<%k$N<j=g$O!"%&%'%V%V%i%&%6!<\e(B
-\e$B$G\e(B @file{http://www.cs.indiana.edu/picons/ftp/index.html} \e$B$K9T$C$F$_$F$/\e(B
+\e$B$G\e(B @uref{http://www.cs.indiana.edu/picons/ftp/index.html} \e$B$K9T$C$F$_$F$/\e(B
\e$B$@$5$$!#\e(BGnus \e$B$O\e(B picons \e$B$,\e(B @code{gnus-picons-database} \e$B$G<($5$l$k>l=j$K%$\e(B
\e$B%s%9%H!<%k$7$F$"$k$b$N$H4|BT$7$^$9!#\e(B
@item gnus-picons-piconsearch-url
@vindex gnus-picons-piconsearch-url
Web \e$B>e$N\e(B picon \e$B8!:w%(%s%8%s$N\e(B URL\e$B!#8=:_CN$i$l$F$$$kM#0l$N%(%s%8%s\e(B
-\e$B$O\e(B @file{http://www.cs.indiana.edu:800/piconsearch} \e$B$G$9!#%M%C%H%o!<%/CY\e(B
+\e$B$O\e(B @uref{http://www.cs.indiana.edu:800/piconsearch} \e$B$G$9!#%M%C%H%o!<%/CY\e(B
\e$B1d$r2sHr$9$k$?$a$K\e(B icon \e$B$O%P%C%/%0%i%&%s%I$G<hF@$5$l$^$9!#$b$7$3$l$,\e(B
@code{nil} (\e$B=i4|@_DjCM\e(B) \e$B$G$"$l$P!"\e(B
picon \e$B$O\e(B @code{gnus-picons-database} \e$B$G<($5$l$k%m!<%+%k$N%G!<%?%Y!<%9$+\e(B
\e$B$^$?!"$"$J$?$,BU$1<T$N%M%C%H%o!<%/;TL1$G$b$"$k$J$i!"\e(B
@file{gnus-junk.el} \e$B%Q%C%1!<%8$K$h$C$F<+F0E*$K6l>p$r$$$&J}$,NI$$$H;W$&$+\e(B
\e$B$b$7$l$^$;$s!#$3$l\e(B
-\e$B$O\e(B @file{<URL:http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html>} \e$B$+\e(B
+\e$B$O\e(B @* @uref{http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html} \e$B$+\e(B
\e$B$i!VL5NA$G!WMxMQ$G$-$^$9!#$[$H$s$I$N\e(B spam \e$B%a!<%k$O<+F0E*$KAw$i$l$F$$$k$N\e(B
\e$B$G!"$A$g$C$H$@$11'Ch$N%P%i%s%9$,$H$l$k$+$b$7$l$^$;$s!#\e(B
\e$B$?!#\e(B
\e$B$3$NL5Ni$r9T$C$??MJ*$rD4$Y$F$_$?$$$N$J$i!"$"$J$?$N\e(B (\e$B$/$=\e(B!) \e$B%&%'%V%V%i%&\e(B
-\e$B%6!<$r\e(B @file{http://quimby.gnus.org/~larsi/} \e$B$K8~$1$k;v$,$G$-$^$9!#\e(B
+\e$B%6!<$r\e(B @uref{http://quimby.gnus.org/} \e$B$K8~$1$k;v$,$G$-$^$9!#\e(B
\e$B$3$l$O?7$7$/$F?h$JHG$N\e(B gnus \e$B$NBh0lG[I[>l=j$G!"\e(BNewsrc \e$B$r$V$C2u$7$F?M!9$r\e(B
\e$B7cE\$5$l$k%5%$%H$H$7$FCN$i$l$F$$$^$9!#\e(B
A way to continue editing the latest Message composition.
@item
- http://www.sonicnet.com/feature/ari3/
+@uref{http://www.sonicnet.com/feature/ari3/}
@item
facep is not declared.
when replying to several messages at once, put the "other" message-ids
into a See-Also header.
@item
- support setext: URL:http://www.bsdi.com/setext/
+ support setext: @uref{http://www.bsdi.com/setext/}
@item
- support ProleText: <URL:http://proletext.clari.net/prole/proletext.html>
+ support ProleText: @uref{http://proletext.clari.net/prole/proletext.html}
@item
when browsing a foreign server, the groups that are already subscribed
should be listed as such and not as "K".
What would be best I suppose is to find the one closest to your site.
In any case, there is a list of general news group archives at @*
-ftp://ftp.neosoft.com/pub/users/claird/news.lists/newsgroup_archives.html
+@uref{ftp://ftp.neosoft.com/pub/users/claird/news.lists/newsgroup_archives.html}
@item
@example
version branches as threading, checkin date as the date, etc.
@item
- http://www.dejanews.com/forms/dnsetfilter_exp.html ?
+@uref{http://www.dejanews.com/forms/dnsetfilter_exp.html}?
This filter allows one to construct advance queries on the Dejanews
database such as specifying start and end dates, subject, author,
and/or newsgroup name.
@item
@example
(add-hook 'gnus-exit-query-functions
-'(lambda ()
+ (lambda ()
(if (and (file-exists-p nnmail-spool-file)
(> (nnheader-file-size nnmail-spool-file) 0))
(yes-or-no-p "New mail has arrived. Quit Gnus anyways? ")
@end iftex
@c End:
+% LocalWords: Backend BNF mucho Backends backends detailmenu cindex kindex kbd
+% LocalWords: findex Gnusae vindex dfn dfn samp nntp setq nnspool nntpserver
+% LocalWords: nnmbox backend newusers Blllrph NEWGROUPS dingnusdingnusdingnus
+% LocalWords: pre fab rec comp nnslashdot regex ga ga sci nnml nnbabyl nnmh
+% LocalWords: nnfolder emph looong eld newsreaders defun init elc pxref
@synindex fn cp
@synindex vr cp
@synindex pg cp
-@dircategory Editors
+@dircategory Emacs
@direntry
* Gnus: (gnus). The newsreader Gnus.
@end direntry
\thispagestyle{empty}
-Copyright \copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000
+Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
This file documents gnus, the GNU Emacs newsreader.
-Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
Composing Messages
* Mail:: Mailing and replying.
-* Post:: Posting and following up.
* 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.
* 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.
+* 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.
* 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 tendonitis in ten easy steps!
+* 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.
me. Usage of the patent (@dfn{Master/Slave Relationships In Computer
Applications}) will be much more expensive, of course.)
-Anyways, you start one gnus up the normal way with @kbd{M-x gnus} (or
+Anyway, you start one gnus up the normal way with @kbd{M-x gnus} (or
however you do it). Each subsequent slave gnusae should be started with
@kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc}
files, but instead save @dfn{slave files} that contain information only
positive, gnus fetches the @var{N} newest articles, if @var{N} is
negative, Gnus fetches the @code{abs(@var{N})} oldest articles.
+Thus, @kbd{SPC} enters the group normally, @kbd{C-u SPC} offers old
+articles, @kbd{C-u 4 2 SPC} fetches the 42 newest articles, and @kbd{C-u
+- 4 2 SPC} fetches the 42 oldest ones.
+
+When you are in the group (in the Summary buffer), you can type
+@kbd{M-g} to fetch new articles, or @kbd{C-u M-g} to also show the old
+ones.
+
@item RET
@kindex RET (Group)
@findex gnus-group-select-group
Address used by when doing followups and new posts.
@example
-(to-address . "some@@where.com")
+(to-address . "some@@where.com")
@end example
This is primarily useful in mail groups that represent closed mailing
@findex gnus-group-sort-by-method
Sort alphabetically on the select method.
+@item gnus-group-sort-by-server
+@findex gnus-group-sort-by-server
+Sort alphabetically on the Gnus server name.
+
@end table
previous (unread) article, I'm sure there are people that want that as
well.
-Multiply these five behaviours with five different marking commands, and
+Multiply these five behaviors with five different marking commands, and
you get a potentially complex set of variable to control what each
command should do.
Threading is done by looking at the @code{References} headers of the
articles. In a perfect world, this would be enough to build pretty
trees, but unfortunately, the @code{References} header is often broken
-or simply missing. Weird news propagation excarcerbates the problem,
+or simply missing. Weird news propagation exacerbates the problem,
so one has to employ other heuristics to get pleasing results. A
plethora of approaches exists, as detailed in horrible detail in
@pxref{Customizing Threading}.
To turn caching on, set @code{gnus-use-cache} to @code{t}. By default,
all articles ticked or marked as dormant will then be copied
over to your local cache (@code{gnus-cache-directory}). Whether this
-cache is flat or hierarchal is controlled by the
+cache is flat or hierarchical is controlled by the
@code{gnus-use-long-file-name} variable, as usual.
When re-selecting a ticked or dormant article, it will be fetched from the
@findex gnus-article-strip-banner
@cindex banner
@cindex OneList
-@cindex stripping advertisments
-@cindex advertisments
+@cindex stripping advertisements
+@cindex advertisements
Strip the banner specified by the @code{banner} group parameter
(@code{gnus-article-strip-banner}). This is mainly used to hide those
annoying banners and/or signatures that some mailing lists and moderated
something else'', but normally results in something looking better.
Cleaner, perhaps.
+@xref{Customizing Articles}, if you want to change how Gnus displays
+articles by default.
+
@table @kbd
+@item C-u g
+This is not really washing, it's sort of the opposite of washing. If
+you type this, you see the article exactly as it exists on disk or on
+the server.
+
@item W l
@kindex W l (Summary)
@findex gnus-summary-stop-page-breaking
\include{xface}
@end iflatex
@end iftex
+@anchor{X-Face}
Look for and display any X-Face headers
(@code{gnus-article-display-x-face}). The command executed by this
function is given by the @code{gnus-article-x-face-command} variable.
@findex gnus-article-date-local
Display the date in the local timezone (@code{gnus-article-date-local}).
+@item W T p
+@kindex W T p (Summary)
+@findex gnus-article-date-english
+Display the date in a format that's easily pronounceable in English
+(@code{gnus-article-date-english}).
+
@item W T s
@kindex W T s (Summary)
@vindex gnus-article-time-format
default charsets to be used when reading these groups.
In addition, some people do use soi-disant @sc{mime}-aware agents that
-aren't. These blitely mark messages as being in @code{iso-8859-1} even
+aren't. These blithely mark messages as being in @code{iso-8859-1} even
if they really are in @code{koi-8}. To help here, the
@code{gnus-newsgroup-ignored-charsets} variable can be used. The
charsets that are listed here will be ignored. The variable can be set
@item gnus-treat-hide-boring-headers (head)
@item gnus-treat-hide-signature (t, last)
@item gnus-treat-hide-citation (t, integer)
+@item gnus-treat-hide-citation-maybe (t, integer)
@item gnus-treat-strip-pgp (t, last, integer)
@item gnus-treat-strip-pem (t, last, integer)
@item gnus-treat-highlight-headers (head)
@item gnus-treat-highlight-signature (t, last, integer)
@item gnus-treat-date-ut (head)
@item gnus-treat-date-local (head)
+@item gnus-treat-date-english (head)
@item gnus-treat-date-lapsed (head)
@item gnus-treat-date-original (head)
+@item gnus-treat-date-iso8601 (head)
+@item gnus-treat-date-user-defined (head)
@item gnus-treat-strip-headers-in-body (t, integer)
@item gnus-treat-strip-trailing-blank-lines (t, last, integer)
@item gnus-treat-strip-leading-blank-lines (t, integer)
@menu
* Mail:: Mailing and replying.
-* Post:: Posting and following up.
* 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.
@end table
-@node Post
-@section Post
-
-Variables for composing news articles:
-
-@table @code
-@item gnus-sent-message-ids-file
-@vindex gnus-sent-message-ids-file
-Gnus will keep a @code{Message-ID} history file of all the mails it has
-sent. If it discovers that it has already sent a mail, it will ask the
-user whether to re-send the mail. (This is primarily useful when
-dealing with @sc{soup} packets and the like where one is apt to send the
-same packet multiple times.) This variable says what the name of this
-history file is. It is @file{~/News/Sent-Message-IDs} by default. Set
-this variable to @code{nil} if you don't want gnus to keep a history
-file.
-
-@item gnus-sent-message-ids-length
-@vindex gnus-sent-message-ids-length
-This variable says how many @code{Message-ID}s to keep in the history
-file. It is 1000 by default.
-
-@end table
-
-
@node Posting Server
@section Posting Server
@end lisp
You can, however, use any mail select method (@code{nnml},
-@code{nnmbox}, etc.). @code{nnfolder} is a quite likeable select method
+@code{nnmbox}, etc.). @code{nnfolder} is a quite likable select method
for doing this sort of thing, though. If you don't like the default
directory chosen, you could say something like:
((message-news-p)
(signature my-news-signature))
(header "From\\|To" "larsi.*org"
- (Organization "Somewhere, Inc."))
+ (Organization "Somewhere, Inc."))
((posting-from-work-p)
(signature-file "~/.work-signature")
(address "user@@bar.foo")
(body "You are fired.\n\nSincerely, your boss.")
(organization "Important Work, Inc"))
+ ("nnml:.*"
+ (From (save-excursion
+ (set-buffer gnus-article-buffer)
+ (message-fetch-field "to"))))
("^nn.+:"
(signature-file "~/.mail-signature"))))
@end lisp
+The @samp{nnml:.*} rule means that you use the @code{To} address as the
+@code{From} address in all your outgoing replies, which might be handy
+if you fill many roles.
+
@node Drafts
@section Drafts
complicated---say, for instance, that you want to read from the
@sc{nntp} server @samp{news.funet.fi} on port number 13, which
hangs if queried for @sc{nov} headers and has a buggy select. Ahem.
-Anyways, if you had to specify that for each group that used this
+Anyway, if you had to specify that for each group that used this
server, that would be too much work, so Gnus offers a way of naming
select methods, which is what you do in the server buffer.
@findex gnus-server-regenerate-server
Request that the server regenerate all its data structures
(@code{gnus-server-regenerate-server}). This can be useful if you have
-a mail backend that has gotten out of synch.
+a mail backend that has gotten out of sync.
@end table
@item
Each line may contain an arbitrary number of token/value pairs.
-@end enumerate
The valid tokens include @samp{machine}, @samp{login}, @samp{password},
-@samp{default}. Gnus introduce two new tokens, not present in the
-original @file{.netrc}/@code{ftp} syntax, namely @samp{port} and
+@samp{default}. In addition Gnus introduces two new tokens, not present
+in the original @file{.netrc}/@code{ftp} syntax, namely @samp{port} and
@samp{force}. (This is the only way the @file{.authinfo} file format
-deviates from the @file{.netrc} file format.) @samp{port} is used to
-indicate what port on the server the credentials apply to, @samp{force}
-is explained below.
+deviates from the @file{.netrc} file format.) @samp{port} is used to
+indicate what port on the server the credentials apply to and
+@samp{force} is explained below.
+
+@end enumerate
Here's an example file:
@item nntp-open-ssl-stream
Opens a connection to a server over a @dfn{secure} channel. To use this
you must have SSLay installed
-(@file{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL}, and you also need
-@file{ssl.el} (from the W3 distributeion, for instance). You then
+(@uref{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL}, and you also need
+@file{ssl.el} (from the W3 distribution, for instance). You then
define a server as follows:
@lisp
@item nntp-record-commands
@vindex nntp-record-commands
If non-@code{nil}, @code{nntp} will log all commands it sends to the
-@sc{nntp} server (along with a timestep) in the @samp{*nntp-log*}
+@sc{nntp} server (along with a timestamp) in the @samp{*nntp-log*}
buffer. This is useful if you are debugging a Gnus/@sc{nntp} connection
that doesn't seem to work.
contain very big articles---@samp{alt.binaries.pictures.furniture}, for
instance.
-Anyways, you just specify @code{nnspool} as the method and @code{""} (or
+Anyway, you just specify @code{nnspool} as the method and @code{""} (or
anything else) as the address.
If you have access to a local spool, you should probably use that as the
The port number of the POP server. This can be a number (eg,
@samp{:port 1234}) or a string (eg, @samp{:port "pop3"}). If it is a
string, it should be a service name as listed in @file{/etc/services} on
-Unix systems. The default is @samp{"pop3"}.
+Unix systems. The default is @samp{"pop3"}. On some systems you might
+need to specify it as @samp{"pop-3"} instead.
@item :user
The user name to give to the POP server. The default is the login
@end table
@end table
-@subsubheading Function Interface
+@subsubsection Function Interface
Some of the above keywords specify a Lisp function to be executed.
For each keyword @code{:foo}, the Lisp variable @code{foo} is bound to
is recommended that you set @code{nnmail-message-id-cache-length} to a
somewhat higher number than the default so that the message ids are
still in the cache. (A value of 5000 appears to create a file some 300
-kBytes in size.) When @code{nnmail-cache-accepted-message-ids} is
-non-nil, Gnus also records the message ids of moved articles, so that
-the followup messages goes into the new group.
+kBytes in size.)
+@vindex nnmail-cache-accepted-message-ids
+When @code{nnmail-cache-accepted-message-ids} is non-@code{nil}, Gnus
+also records the message ids of moved articles, so that the followup
+messages goes into the new group.
@node Group Mail Splitting
If @var{auto-update} is non-@code{nil}, @code{gnus-group-split-update}
will be added to @code{nnmail-pre-get-new-mail-hook}, so you won't ever
have to worry about updating @code{nnmail-split-fancy} again. If you
-don't omit @var{catch-all} (it's optional; same as nil),
+don't omit @var{catch-all} (it's optional, equivalent to @code{nil}),
@code{gnus-group-split-default-catch-all-group} will be set to its
value.
@cindex Slashdot
@cindex nnslashdot
-Slashdot (@file{http://slashdot.org/}) is a popular news site, with
+Slashdot (@uref{http://slashdot.org/}) is a popular news site, with
lively discussion following the news articles. @code{nnslashdot} will
let you read this forum in a convenient manner.
@cindex nnultimate
@cindex Ultimate Bulletin Board
-The Ultimate Bulletin Board (@file{http://www.ultimatebb.com/}) is
+The Ultimate Bulletin Board (@uref{http://www.ultimatebb.com/}) is
probably the most popular Web bulletin board system used. It has a
quite regular and nice interface, and it's possible to get the
information Gnus needs to keep groups updated.
@cindex Web Archive
Some mailing lists only have archives on Web servers, such as
-@file{http://www.egroups.com/} and
-@file{http://www.mail-archive.com/}. It has a quite regular and nice
+@uref{http://www.egroups.com/} and
+@uref{http://www.mail-archive.com/}. It has a quite regular and nice
interface, and it's possible to get the information Gnus needs to keep
groups updated.
@vindex imap-ssl-program
For SSL connections, the OpenSSL program is available from
-@file{http://www.openssl.org/}. OpenSSL was formerly known as SSLeay,
+@uref{http://www.openssl.org/}. OpenSSL was formerly known as SSLeay,
and nnimap support it too - although the most recent versions of
SSLeay, 0.9.x, are known to have serious bugs making it
useless. Earlier versions, especially 0.8.x, of SSLeay are known to
this concept of marking articles @code{Deleted} which doesn't actually
delete them, and this (marking them @code{Deleted}, that is) is what
nnimap does when you delete a article in Gnus (with @kbd{G DEL} or
-similair).
+similar).
Since the articles aren't really removed when we mark them with the
@code{Deleted} flag we'll need a way to actually delete them. Feel like
@table @code
@item always
-The default behaviour, delete all articles marked as "Deleted" when
+The default behavior, delete all articles marked as "Deleted" when
closing a mailbox.
@item never
Never actually delete articles. Currently there is no way of showing
This variable can also have a function as its value, the function will
be called with the headers narrowed and should return a group where it
-thinks the article should be splitted to. See @code{nnimap-split-fancy}.
+thinks the article should be split to. See @code{nnimap-split-fancy}.
The splitting code tries to create mailboxes if it need too.
@vindex nnimap-split-predicate
Mail matching this predicate in @code{nnimap-split-inbox} will be
-splitted, it is a string and the default is @samp{UNSEEN UNDELETED}.
+split, it is a string and the default is @samp{UNSEEN UNDELETED}.
This might be useful if you use another @sc{imap} client to read mail in
your inbox but would like Gnus to split all articles in the inbox
If/when using something like the above, be aware that there are many
misconfigured systems/mailers out there and so an article's date is not
always a reliable indication of when it was posted. Hell, some people
-just don't give a damm.
+just don't give a damn.
The above predicates apply to *all* the groups which belong to the
category. However, if you wish to have a specific predicate for an
@item
Use @code{normal} score files
-If you dont want to maintain two sets of scoring rules for a group, and
+If you don't want to maintain two sets of scoring rules for a group, and
your desired @code{downloading} criteria for a group are the same as your
@code{reading} criteria then you can tell the agent to refer to your
@code{normal} score files when deciding what to download.
Gnus keep track of flag changes when reading nnimap groups under the
Agent by default. When you plug back in, by default Gnus will check if
-you have any changed any flags and ask if you wish to synchronize theese
-with the server. This behaviour is customizable with
+you have any changed any flags and ask if you wish to synchronize these
+with the server. This behavior is customizable with
@code{gnus-agent-synchronize-flags}.
@vindex gnus-agent-synchronize-flags
The kill to score conversion package isn't included in Gnus by default.
You can fetch it from
-@file{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
+@uref{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
If your old kill files are very complex---if they contain more
non-@code{gnus-kill} forms than not, you'll have to convert them by
To use GroupLens you must register a pseudonym with your local Better
Bit Bureau (BBB).
-@samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only
+@uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only
better bit in town at the moment.
Once you have registered you'll need to set a couple of variables.
* 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 tendonitis in ten easy steps!
+* 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.
@end iflatex
@end iftex
-So... You want to slow down your news reader even more! This is a
+So@dots{} You want to slow down your news reader even more! This is a
good way to do so. Its also a great way to impress people staring
over your shoulder as you read news.
If you have a permanent connection to the Internet you can use Steve
Kinzler's Picons Search engine by setting
@code{gnus-picons-piconsearch-url} to the string @*
-@file{http://www.cs.indiana.edu/picons/search.html}.
+@uref{http://www.cs.indiana.edu/picons/search.html}.
@vindex gnus-picons-database
Otherwise you need a local copy of his database. For instructions on
obtaining and installing the picons databases, point your Web browser at @*
-@file{http://www.cs.indiana.edu/picons/ftp/index.html}. Gnus expects
+@uref{http://www.cs.indiana.edu/picons/ftp/index.html}. Gnus expects
picons to be installed into a location pointed to by
@code{gnus-picons-database}.
@item gnus-picons-piconsearch-url
@vindex gnus-picons-piconsearch-url
The URL for the web picons search engine. The only currently known
-engine is @file{http://www.cs.indiana.edu:800/piconsearch}. To
+engine is @uref{http://www.cs.indiana.edu:800/piconsearch}. To
workaround network delays, icons will be fetched in the background. If
this is @code{nil} 'the default), then picons are fetched from local
database indicated by @code{gnus-picons-database}.
has only an effect if `gnus-picons-display-where' has value `article'.
If @code{nil}, display the picons in the @code{From} and
-@code{Newsgroups} lines. This is the defailt.
+@code{Newsgroups} lines. This is the default.
@item gnus-picons-clear-cache-on-shutdown
@vindex gnus-picons-clear-cache-on-shutdown
put it in your @code{From} header of all your news articles. (I've
chosen @samp{larsi@@trym.ifi.uio.no}, but for many addresses on the form
@samp{larsi+usenet@@ifi.uio.no} will be a better choice. Ask your
-sysadm whether your sendmail installation accepts keywords in the local
+sysadmin whether your sendmail installation accepts keywords in the local
part of the mail address.)
@lisp
If you are also a lazy net citizen, you will probably prefer complaining
automatically with the @file{gnus-junk.el} package, available FOR FREE
-at @* @file{<URL:http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html>}.
+at @* @uref{http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html}.
Since most e-mail spam is sent automatically, this may reconcile the
cosmic balance somewhat.
If you want to investigate the person responsible for this outrage,
you can point your (feh!) web browser to
-@file{http://quimby.gnus.org/~larsi/}. This is also the primary
+@uref{http://quimby.gnus.org/}. This is also the primary
distribution point for the new and spiffy versions of Gnus, and is
known as The Site That Destroys Newsrcs And Drives People Mad.
introduced may confuse casual users. New features are frequently
introduced, fiddled with, and judged to be found wanting, and then
either discarded or totally rewritten. People reading the mailing list
-usually keep up with these rapid changes, whille people on the newsgroup
+usually keep up with these rapid changes, while people on the newsgroup
can't be assumed to do so.
A way to continue editing the latest Message composition.
@item
- http://www.sonicnet.com/feature/ari3/
+@uref{http://www.sonicnet.com/feature/ari3/}
@item
facep is not declared.
when replying to several messages at once, put the "other" message-ids
into a See-Also header.
@item
- support setext: URL:http://www.bsdi.com/setext/
+ support setext: @uref{http://www.bsdi.com/setext/}
@item
- support ProleText: <URL:http://proletext.clari.net/prole/proletext.html>
+ support ProleText: @uref{http://proletext.clari.net/prole/proletext.html}
@item
when browsing a foreign server, the groups that are already subscribed
should be listed as such and not as "K".
What would be best I suppose is to find the one closest to your site.
In any case, there is a list of general news group archives at @*
-ftp://ftp.neosoft.com/pub/users/claird/news.lists/newsgroup_archives.html
+@uref{ftp://ftp.neosoft.com/pub/users/claird/news.lists/newsgroup_archives.html}
version branches as threading, checkin date as the date, etc.
@item
- http://www.dejanews.com/forms/dnsetfilter_exp.html ?
+@uref{http://www.dejanews.com/forms/dnsetfilter_exp.html}?
This filter allows one to construct advance queries on the Dejanews
database such as specifying start and end dates, subject, author,
and/or newsgroup name.
@item
@example
(add-hook 'gnus-exit-query-functions
-'(lambda ()
+ (lambda ()
(if (and (file-exists-p nnmail-spool-file)
(> (nnheader-file-size nnmail-spool-file) 0))
(yes-or-no-p "New mail has arrived. Quit Gnus anyways? ")
@end iftex
@c End:
+% LocalWords: Backend BNF mucho Backends backends detailmenu cindex kindex kbd
+% LocalWords: findex Gnusae vindex dfn dfn samp nntp setq nnspool nntpserver
+% LocalWords: nnmbox backend newusers Blllrph NEWGROUPS dingnusdingnusdingnus
+% LocalWords: pre fab rec comp nnslashdot regex ga ga sci nnml nnbabyl nnmh
+% LocalWords: nnfolder emph looong eld newsreaders defun init elc pxref
@synindex fn cp
@synindex vr cp
@synindex pg cp
-@dircategory Editors
+@dircategory Emacs
@direntry
* Message-ja: (message-ja). Mail and news composition mode that goes
with Gnus (Japanese).
\e$B$3$N%U%!%$%k$O\e(B Emacs \e$B$N%a%C%;!<%8:n@.%b!<%I$G$"$k\e(B Message \e$B$K4X$9$k@bL@J8\e(B
\e$B=q$G$9!#\e(B
-Copyright (C) 1996,97,98,99,2000 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1996,97,98,99,2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1996, 1997, 1998, 1999, 2000
+ Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
\e$B%I%P%C%U%!$G9T$o$l$^$9!#\e(B
@menu
-* Interface:: \e$B%a%C%;!<%8%P%C%U%!$r@_Dj$9$k!#\e(B
-* Commands:: \e$B%a%C%;!<%8%b!<%I%P%C%U%!$G<B9T$G$-$kL?Na!#\e(B
-* Variables:: \e$B%a%C%;!<%8%P%C%U%!$r%+%9%?%^%$%:$9$k!#\e(B
-* Compatibility:: \e$B%a%C%;!<%8$r2<0L8_49$K$9$k!#\e(B
-* Appendices:: \e$B$b$C$H5;=QE*$J;v!#\e(B
-* Index:: \e$BJQ?t!"4X?t!"35G0$N:w0z!#\e(B
-* Key Index:: \e$B%a%C%;!<%8%b!<%I%-!<$N0lMw!#\e(B
+* Interface:: \e$B%a%C%;!<%8%P%C%U%!$r@_Dj$9$k\e(B
+* Commands:: \e$B%a%C%;!<%8%b!<%I%P%C%U%!$G<B9T$G$-$kL?Na\e(B
+* Variables:: \e$B%a%C%;!<%8%P%C%U%!$r%+%9%?%^%$%:$9$k\e(B
+* Compatibility:: \e$B%a%C%;!<%8$r2<0L8_49$K$9$k\e(B
+* Appendices:: \e$B$b$C$H5;=QE*$J;v\e(B
+* Index:: \e$BJQ?t!"4X?t!"35G0$N:w0z\e(B
+* Key Index:: \e$B%a%C%;!<%8%b!<%I%-!<$N0lMw\e(B
@end menu
\e$B$3$N%^%K%e%"%k$O\e(B T-gnus 6.15 Message \e$B$KBP1~$7$^$9!#\e(BMessage \e$B$O$3$N%^%K%e\e(B
\e$B%"%k$HF1$8HGHV9f$N\e(B Gnus \e$B$NG[I[$H6&$KG[I[$5$l$^$9!#\e(B
-
@node Interface
@chapter \e$B3&LL\e(B
\e$B%W%m%0%i%`\e(B (\e$B$b$7$/$O?M\e(B) \e$B$,%a%C%;!<%8$KH?1~$7$?$$$H$-\e(B -- \e$BJVEz!"%U%)%m!<%"%C\e(B
\e$B%W!"E>Aw!"<h$j>C$7\e(B -- \e$B$=$N%W%m%0%i%`\e(B (\e$B$b$7$/$O?M\e(B) \e$B$O%a%C%;!<%8$,$"$k%P%C\e(B
-\e$B%U%!$K%]%$%s%H$rF~$l$FI,MW$JL?Na$r8F$S=P$9$@$1$GNI$$$Y$-$G$9!#$=$&$9$k$H\e(B
-@code{Message} \e$B$O?7$7$$\e(B @code{message} \e$B%b!<%I%P%C%U%!$rE,@Z$J%X%C%@!<$r\e(B
-\e$BF~$l$F:n$j=P$7!"MxMQ<T$O%a%C%;!<%8$rAw$kA0$K$=$l$rJT=8$G$-$^$9!#\e(B
+\e$B%U%!$K%]%$%s%H$rF~$l$FI,MW$JL?Na$r8F$S=P$9$@$1$GNI$$$Y$-$G$9!#$=$&$9$k\e(B
+\e$B$H\e(B @code{Message} \e$B$O?7$7$$\e(B @code{message} \e$B%b!<%I%P%C%U%!$rE,@Z$J%X%C%@!<\e(B
+\e$B$rF~$l$F:n$j=P$7!"MxMQ<T$O%a%C%;!<%8$rAw$kA0$K$=$l$rJT=8$G$-$^$9!#\e(B
@menu
-* New News Message:: \e$BA4$/?7$7$$%K%e!<%9%a%C%;!<%8$rJT=8$9$k!#\e(B
-* Reply:: \e$B%a!<%k$GJVEz$9$k!#\e(B
-* Wide Reply:: \e$BA4$F$N?M$K%a!<%k$G1~Ez$9$k!#\e(B
-* Followup:: \e$B%K%e!<%9$G%U%)%m!<%"%C%W$9$k!#\e(B
-* Canceling News:: \e$B?7$7$$5-;v$r<h$j>C$9!#\e(B
-* Superseding:: \e$B%a%C%;!<%8$NBeBX!#\e(B
-* Forwarding:: \e$B%a%C%;!<%8$r%K%e!<%9$b$7$/$O%a!<%k$GE>Aw$9$k!#\e(B
-* Resending:: \e$B%a!<%k%a%C%;!<%8$r:FAw$9$k!#\e(B
-* Bouncing:: \e$B%a!<%k%a%C%;!<%8$N<:GT$r:FAw$9$k!#\e(B
+* New News Message:: \e$BA4$/?7$7$$%K%e!<%9%a%C%;!<%8$rJT=8$9$k\e(B
+* Reply:: \e$B%a!<%k$GJVEz$9$k\e(B
+* Wide Reply:: \e$BA4$F$N?M$K%a!<%k$G1~Ez$9$k\e(B
+* Followup:: \e$B%K%e!<%9$G%U%)%m!<%"%C%W$9$k\e(B
+* Canceling News:: \e$B?7$7$$5-;v$r<h$j>C$9\e(B
+* Superseding:: \e$B%a%C%;!<%8$NBeBX\e(B
+* Forwarding:: \e$B%a%C%;!<%8$r%K%e!<%9$b$7$/$O%a!<%k$GE>Aw$9$k\e(B
+* Resending:: \e$B%a!<%k%a%C%;!<%8$r:FAw$9$k\e(B
+* Bouncing:: \e$B%a!<%k%a%C%;!<%8$N<:GT$r:FAw$9$k\e(B
@end menu
-
@node New Mail Message
@section \e$B?7$7$$%a!<%k%a%C%;!<%8\e(B
@code{message-mail} \e$BL?Na$O?7$7$$%P%C%U%!$r:n$jI=<($7$^$9!#\e(B
2\e$B$D$NA*Br<+M3$J0z?t$,<u$1IU$1$i$l$^$9\e(B: \e$B:G=i$N$b$N$O\e(B @code{To} \e$B%X%C%@!<$H\e(B
-\e$B$7$F!"\e(B2\e$BHVL\$O\e(B @code{Subject} \e$B%X%C%@!<$H$7$F;H$o$l$k!#$b$7$3$l$i$,\e(B
-@code{nil} \e$B$G$"$k$J$i!"$=$l$i$N\e(B2\e$B$D$N%X%C%@!<$O6u$K$J$j$^$9!#\e(B
-
+\e$B$7$F!"\e(B2\e$BHVL\$O\e(B @code{Subject} \e$B%X%C%@!<$H$7$F;H$o$l$k!#$b$7$3$l$i\e(B
+\e$B$,\e(B @code{nil} \e$B$G$"$k$J$i!"$=$l$i$N\e(B2\e$B$D$N%X%C%@!<$O6u$K$J$j$^$9!#\e(B
@node New News Message
@section \e$B?7$7$$%K%e!<%9%a%C%;!<%8\e(B
@findex message-news
\e$BL?Na\e(B @code{message-news} \e$B$O?7$7$$%a%C%;!<%8%P%C%U%!$r:n$j!"I=<($7$^$9!#\e(B
-\e$B$3$N4X?t$O\e(B2\e$B$D$NA*Br<+M3$J0z?t$r<u$1IU$1$^$9!#:G=i$N$b$N$O\e(B
-@code{Newsgroups} \e$B%X%C%@!<$H$7$F!"\e(B2\e$B$D$a$N$b$N$O\e(B @code{Subject} \e$B%X%C%@!<\e(B
+\e$B$3$N4X?t$O\e(B2\e$B$D$NA*Br<+M3$J0z?t$r<u$1IU$1$^$9!#:G=i$N$b$N\e(B
+\e$B$O\e(B @code{Newsgroups} \e$B%X%C%@!<$H$7$F!"\e(B2\e$B$D$a$N$b$N$O\e(B @code{Subject} \e$B%X%C%@!<\e(B
\e$B$H$7$F;H$o$l$^$9!#$b$7$3$l$i$,\e(B @code{nil} \e$B$G$"$k$J$i!"$=$l$i$N\e(B2\e$B$D$N%X%C\e(B
\e$B%@!<$O6u$K$J$j$^$9!#\e(B
-
@node Reply
@section \e$BJVEz\e(B
\e$B$l$^$9!#\e(B
\e$B$4Mw$NDL$j!"$3$N4X?t$O$=$l$,\e(B To \e$B%X%C%@!<$,$I$N$h$&$G$"$k$Y$-$+$K4V$9$k<g\e(B
-\e$BD%$,$"$l$P!"J8;zNs$rJV$9$Y$-$G$9!#$b$7$=$&$G$J$1$l$P!"$=$l$O\e(B @code{nil}
+\e$BD%$,$"$l$P!"J8;zNs$rJV$9$Y$-$G$9!#$b$7$=$&$G$J$1$l$P!"$=$l$O\e(B @code{nil}
\e$B$rJV$9$@$1$G!"$=$&$9$l$P\e(B To \e$B%X%C%@!<$r7hDj$9$kIaDL$NJ}K!$,;H$o$l$k$G$7$g\e(B
\e$B$&!#\e(B
-\e$B$3$N4X?t$O%j%9%H$rJV$9;v$b$G$-$^$9!#$=$N$h$&$J>l9g$O!"$=$l$>$l$NMWAG$O\e(B
-cons \e$B%;%k$G$"$k$Y$-$G!"$=$l$N\e(B car \e$B$O%X%C%@!<$NL>A0\e(B (\e$BNc\e(B @code{Cc}) \e$B$G!"\e(B
+\e$B$3$N4X?t$O%j%9%H$rJV$9;v$b$G$-$^$9!#$=$N$h$&$J>l9g$O!"$=$l$>$l$NMWAG\e(B
+\e$B$O\e(B cons \e$B%;%k$G$"$k$Y$-$G!"$=$l$N\e(B car \e$B$O%X%C%@!<$NL>A0\e(B (\e$BNc\e(B @code{Cc}) \e$B$G!"\e(B
cdr \e$B$,%X%C%@!<$NCM\e(B (\e$BNc\e(B @samp{larsi@@ifi.uio.no}) \e$B$G$"$k$Y$-$G$9!#A4$F$N\e(B
\e$B$3$l$i$N%X%C%@!<$O=P$F9T$/%a!<%k$N%X%C%@!<$KA^F~$5$l$^$9!#\e(B
-
@node Wide Reply
@section \e$B9-$/JVEz\e(B
\e$BJQ99$9$k;v$,$G$-$^$9!#$=$l$O\e(B @code{message-reply-to-function} \e$B$HF1$8$h$&\e(B
\e$B$K;H$o$l$^$9\e(B (@pxref{Reply})\e$B!#\e(B
-
@findex message-dont-reply-to-names
-\e$B@55,I=8=\e(B @code{rmail-dont-reply-to-names} \e$B$K9gCW$9$k%"%I%l%9$O\e(B @code{Cc}
+\e$B@55,I=8=\e(B @code{rmail-dont-reply-to-names} \e$B$K9gCW$9$k%"%I%l%9$O\e(B @code{Cc}
\e$B%X%C%@!<$+$i<h$j=|$+$l$^$9!#\e(B
-
@node Followup
@section \e$B%U%)%m!<%"%C%W\e(B
@vindex message-followup-to-function
Message \e$B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"\e(B
@code{message-followup-to-function} \e$B$rO.$k;v$G!"$"$J$?$NMW5a$K9g$&$h$&$K\e(B
-\e$B?6$kIq$$$rJQ99$9$k;v$,$G$-$^$9!#$=$l$O\e(B @code{message-reply-to-function}
+\e$B?6$kIq$$$rJQ99$9$k;v$,$G$-$^$9!#$=$l$O\e(B @code{message-reply-to-function}
\e$B$HF1$8$h$&$K;H$o$l$^$9\e(B (@pxref{Reply})\e$B!#\e(B
@vindex message-use-followup-to
\e$B?R$M$^$9!#$b$7\e(B @code{t} \e$B$G$"$k$H!"$=$l$,\e(B @samp{\e$BEj9F<T\e(B} \e$B$G$J$$8B$j!"CM$r\e(B
\e$B;H$$$^$9!#\e(B@code{nil} \e$B$G$"$l$P!"CM$r;H$$$^$;$s!#\e(B
-
@node Canceling News
@section \e$B%K%e!<%9$r<h$j>C$9\e(B
@findex message-cancel-news
\e$BL?Na\e(B @code{message-cancel-news} \e$B$O8=:_$N%P%C%U%!$N5-;v$r<h$j>C$7$^$9!#\e(B
-
@node Superseding
@section \e$BBeBX\e(B
@vindex message-ignored-supersede-headers
@code{message-ignored-supersedes-headers} \e$B$K9gCW$9$k%X%C%@!<$O?7$7$$%a%C\e(B
-\e$B%;!<%8%P%C%U%!$r:n$j>e$2$kA0$K<h$j=|$+$l$^$9!#=i4|CM$O\e(B
-@*@samp{^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|@*
+\e$B%;!<%8%P%C%U%!$r:n$j>e$2$kA0$K<h$j=|$+$l$^$9!#=i4|CM\e(B
+\e$B$O\e(B @*@samp{^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|@*
^Received:\\|^X-From-Line:\\|Return-Path:\\|^Supersedes:} \e$B$G$9!#\e(B
-
@node Forwarding
@section \e$BE>Aw\e(B
@end table
-
@node Resending
@section \e$B:FAw\e(B
\e$B@55,I=8=\e(B @code{message-ignored-resent-headers} \e$B$K9gCW$9$k%X%C%@!<$O%a%C\e(B
\e$B%;!<%8$rAw$kA0$K<h$j=|$+$l$^$9!#=i4|CM$O\e(B @code{^Return-receipt} \e$B$G$9!#\e(B
-
@node Bouncing
@section \e$B<:GT\e(B
@vindex message-ignored-bounced-headers
\e$B@55,I=8=\e(B @code{message-ignored-bounced-headers} \e$B$K9gCW$9$k%X%C%@!<$O%P%C\e(B
-\e$B%U%!$r:n$j>e$2$kA0$K<h$j=|$+$l$^$9!#=i4|CM$O\e(B
-@samp{^\\(Received\\|Return-Path\\):} \e$B$G$9!#\e(B
-
+\e$B%U%!$r:n$j>e$2$kA0$K<h$j=|$+$l$^$9!#=i4|CM\e(B
+\e$B$O\e(B @samp{^\\(Received\\|Return-Path\\):} \e$B$G$9!#\e(B
@node Commands
@chapter \e$BL?Na\e(B
@menu
-* Header Commands:: \e$B%X%C%@!<$K0\F0$9$k$?$a$NL?Na!#\e(B
-* Movement:: \e$B%a%C%;!<%8%P%C%U%!$rF0$-2s$k!#\e(B
-* Insertion:: \e$B%a%C%;!<%8%P%C%U%!$KJ*;v$rA^F~$9$k!#\e(B
+* Buffer Entry:: \e$B%a%C%;!<%8%P%C%U%!$KF~$C$?8e$NL?Na\e(B
+* Header Commands:: \e$B%X%C%@!<$K0\F0$9$k$?$a$NL?Na\e(B
+* Movement:: \e$B%a%C%;!<%8%P%C%U%!$rF0$-2s$k\e(B
+* Insertion:: \e$B%a%C%;!<%8%P%C%U%!$KJ*;v$rA^F~$9$k\e(B
@c * MIME:: @sc{mime} considerations.
@c * Security:: Signing and encrypting messages.
-* Various Commands:: \e$B$$$m$$$m$J;v!#\e(B
-* Sending:: \e$B<B:]$K%a%C%;!<%8$rAw$k!#\e(B
-* Mail Aliases:: \e$B$I$N$h$&$K$7$F%a!<%k$NJLL>$r;H$&$+!#\e(B
+* Various Commands:: \e$B$$$m$$$m$J;v\e(B
+* Sending:: \e$B<B:]$K%a%C%;!<%8$rAw$k\e(B
+* Mail Aliases:: \e$B$I$N$h$&$K$7$F%a!<%k$NJLL>$r;H$&$+\e(B
+* Spelling:: Emacs \e$B$K%9%Z%k%A%'%C%/$5$;$k\e(B
@end menu
+@node Buffer Entry
+@section \e$B%P%C%U%!$KF~$k\e(B
+@cindex undo
+@kindex C-_
+
+\e$B2?$+B>$N%a%C%;!<%8$KJVEz$9$k$H$-!"$"$J$?$O$?$$$F$$%a%C%;!<%8%P%C%U%!$G=q\e(B
+\e$B$->e$2$^$9$h$M!#\e(BMessage \e$B$OB?$/$N0zMQJ8$r07$$!"=pL>$N:o=|$dJ8>O$N@07A$r$7\e(B
+\e$B$?$j!"$"$k$$$O$"$?$J$,;H$C$F$$$k@_Dj$K0MB8$7$F$$$^$9!#\e(BMessage \e$B$OIaDL$O$&\e(B
+\e$B$^$/F0:n$7$^$9$,!"$H$-$I$-4V0c$($b$7$^$9!#$=$l$i$N4V0c$$$r%f!<%6$,@5$9$3\e(B
+\e$B$H$,$G$-$k$h$&$K!"\e(BMessage \e$B$O$=$l$>$l<gMW$JF0:n$r9T$J$&A0$K%"%s%I%%$N6-3&\e(B
+\e$B$r@_Dj$7$^$9!#$"$J$?$O2?2s$+%"%s%I%%$N%-!<\e(B (\e$BDL>o\e(B @kbd{C-_}) \e$B$r2!$;$P!"L$\e(B
+\e$BJT=8$N%a%C%;!<%8$KLa$9$3$H$,$G$-$^$9!#\e(B
@node Header Commands
@section \e$B%X%C%@!<L?Na\e(B
@item C-c C-f C-d
@kindex C-c C-f C-d
@findex message-goto-distribution
-@code{Distribution} \e$B%X%C%@!<$K9T$-$^$9\e(B
-(@code{message-goto-distribution})\e$B!#\e(B
+@code{Distribution} \e$B%X%C%@!<$K9T$-$^\e(B
+\e$B$9\e(B (@code{message-goto-distribution})\e$B!#\e(B
@item C-c C-f C-o
@kindex C-c C-f C-o
@end table
-
@node Movement
@section \e$B0\F0\e(B
@end table
-
@node Insertion
@section \e$BA^F~\e(B
@item C-c C-q
@kindex C-c C-q
@findex message-fill-yanked-message
-\e$BE=$jIU$1$i$l$?%a%C%;!<%8$r@^$jJV$7$^$9\e(B
-(@code{message-fill-yanked-message})\e$B!#7Y9p\e(B: \e$B$b$7!"0zMQ$N=,47$,JQ$G$"$k$J\e(B
-\e$B$i!"E=$jIU$1$i$l$?J8>O$r$R$I$/$0$A$c$0$A$c$K$7$F$7$^$&$+$b$7$l$^$;$s!#$=\e(B
-\e$B$l$,0BA4$G$"$k$HCN$k$H!"$9$0$K?M?4CO$D$/$G$7$g$&$,!#$H$K$+$/!"\e(B@kbd{C-x
-u} (@code{undo}) \e$B$,;HMQ2DG=$G!"Bg>fIW$G$"$k$H8@$&;v$r3P$($F$*$$$F2<$5$$!#\e(B
-
+\e$BE=$jIU$1$i$l$?%a%C%;!<%8$r@^$jJV$7$^\e(B
+\e$B$9\e(B (@code{message-fill-yanked-message})\e$B!#7Y9p\e(B: \e$B$b$7!"0zMQ$N=,47$,JQ$G$"\e(B
+\e$B$k$J$i!"E=$jIU$1$i$l$?J8>O$r$R$I$/$0$A$c$0$A$c$K$7$F$7$^$&$+$b$7$l$^$;$s!#\e(B
+\e$B$=$l$,0BA4$G$"$k$HCN$k$H!"$9$0$K?M?4CO$D$/$G$7$g$&$,!#$H$K$+$/!"\e(B
+@kbd{C-x u} (@code{undo}) \e$B$,;HMQ2DG=$G!"Bg>fIW$G$"$k$H8@$&;v$r3P$($F$*$$\e(B
+\e$B$F2<$5$$!#\e(B
@item C-c C-w
@kindex C-c C-w
@item message-citation-line-function
@vindex message-citation-line-function
-\e$B0zMQ9T$rA^F~$9$k$?$a$K8F$P$l$k4X?t$G$9!#=i4|CM$O\e(B
-@code{message-insert-citation-line} \e$B$G!"$3$l$O0zMQ9T$r<!$N$h$&$K$7$^$9\e(B:
+\e$B0zMQ9T$rA^F~$9$k$?$a$K8F$P$l$k4X?t$G$9!#=i4|CM\e(B
+\e$B$O\e(B @code{message-insert-citation-line} \e$B$G!"$3$l$O0zMQ9T$r<!$N$h$&$K$7$^\e(B
+\e$B$9\e(B:
@example
Hallvard B Furuseth <h.b.furuseth@@usit.uio.no> writes:
@cindex yanking
@cindex quoting
\e$B$"$J$?$,5-;v$KJVEz$+%U%)%m!<%"%C%W$r$7$F$$$k$H$-$O!"IaDL$O$"$J$?$,1~Ez$7\e(B
-\e$B$F$$$k?M$N$b$N$K0zMQId$rIU$1$?$$$G$7$g$&!#0zMQJ8$NA^F~$O\e(B @dfn{\e$BE=$jIU$1\e(B}
-\e$B$K$h$C$F$J$5$l!"$=$l$>$l$NE=$jIU$1$i$l$?0zMQ9T$O$=$NA0$K\e(B
-@code{message-yank-prefix} \e$B$rIU$1$i$l$^$9!#=i4|CM$O\e(B @samp{> } \e$B$G$9!#\e(B
+\e$B$F$$$k?M$N$b$N$K0zMQId$rIU$1$?$$$G$7$g$&!#0zMQJ8$NA^F~$O\e(B @dfn{\e$BE=$jIU$1\e(B}
+\e$B$K$h$C$F$J$5$l!"$=$l$>$l$NE=$jIU$1$i$l$?0zMQ9T$O$=$NA0\e(B
+\e$B$K\e(B @code{message-yank-prefix} \e$B$rIU$1$i$l$^$9!#=i4|CM$O\e(B @samp{> } \e$B$G$9!#\e(B
@item message-yank-add-new-references
@vindex message-yank-add-new-references
@cindex yanking
-\e$B%3%^%s%I\e(B @code{message-yank-original} \e$B$rBPOCE*$K;H$C$?$H$-$K!"$3$NCM$,\e(B
-@code{nil} \e$B$G$J$+$C$?$i!"\e(BReferences \e$B%U%#!<%k%I$K\e(B ID \e$B$,DI2C$5$l$^$9!#$b\e(B
-\e$B$7CM$,%7%s%\%k\e(B @code{message-id-only} \e$B$@$C$?$i\e(B Message-ID \e$B%U%#!<%k%I$N\e(B
-ID \e$B$@$1$,;H$o$l$^$9$,!"$=$&$G$J$1$l$P\e(B References\e$B!"\e(BIn-Reply-To \e$B$*$h$S\e(B
-Message-ID \e$B%U%#!<%k%I$+$iCj=P$5$l$?\e(B ID \e$B$,;H$o$l$^$9!#\e(B
+\e$B%3%^%s%I\e(B @code{message-yank-original} \e$B$rBPOCE*$K;H$C$?$H$-$K!"$3$NCM\e(B
+\e$B$,\e(B @code{nil} \e$B$G$J$+$C$?$i!"\e(BReferences \e$B%U%#!<%k%I$K\e(B ID \e$B$,DI2C$5$l$^$9!#\e(B
+\e$B$b$7CM$,%7%s%\%k\e(B @code{message-id-only} \e$B$@$C$?$i\e(B Message-ID \e$B%U%#!<%k%I\e(B
+\e$B$N\e(B ID \e$B$@$1$,;H$o$l$^$9$,!"$=$&$G$J$1$l$P\e(B References\e$B!"\e(BIn-Reply-To \e$B$*$h\e(B
+\e$B$S\e(B Message-ID \e$B%U%#!<%k%I$+$iCj=P$5$l$?\e(B ID \e$B$,;H$o$l$^$9!#\e(B
@item message-list-references-add-position
@vindex message-list-references-add-position
@cindex yanking
\e$B%3%^%s%I\e(B @code{message-yank-original} \e$B$rBPOCE*$K;H$C$?$H$-$K!"$3$NCM$,\e(B
-\e$B@5$N@0?t$@$C$?$i!"$9$G$K$"$k\e(B References \e$B%U%#!<%k%I$N:G8e$+$i$=$N8D?t$N\e(B
-ID \e$B$@$1N%$l$?>l=j$K?7$7$$\e(B ID \e$B$,A^F~$5$l$^$9!#$=$l0J30$N>l9g$O:G8e$KA^F~\e(B
-\e$B$5$l$^$9!#\e(B
+\e$B@5$N@0?t$@$C$?$i!"$9$G$K$"$k\e(B References \e$B%U%#!<%k%I$N:G8e$+$i$=$N8D?t\e(B
+\e$B$N\e(B ID \e$B$@$1N%$l$?>l=j$K?7$7$$\e(B ID \e$B$,A^F~$5$l$^$9!#$=$l0J30$N>l9g$O:G8e$KA^\e(B
+\e$BF~$5$l$^$9!#\e(B
@item message-indentation-spaces
@vindex message-indentation-spaces
\e$BK\5-;v$r0zMQ$9$k$?$a$N4X?t$G$9!#=i4|CM$O\e(B @code{message-cite-original} \e$B$G!"\e(B
\e$B$3$l$OC1=c$K$b$H$N%a%C%;!<%8$rA^F~$7!"$=$l$>$l$N9T$NF,$K\e(B @samp{> } \e$B$r$/$C\e(B
\e$B$D$1$^$9!#\e(B@code{message-cite-original-without-signature} \e$B$OF1MM$N;v$r$7\e(B
-\e$B$^$9$,!"=pL>$O>J$-$^$9!#\e(BSupercite \e$B$r;H$&$?$a$K!"$=$l$r\e(B
-@code{sc-cite-original} \e$B$K@_Dj$9$k;v$b$G$-$^$9!#\e(B
+\e$B$^$9$,!"=pL>$O>J$-$^$9!#\e(BSupercite \e$B$r;H$&$?$a$K!"$=$l\e(B
+\e$B$r\e(B @code{sc-cite-original} \e$B$K@_Dj$9$k;v$b$G$-$^$9!#\e(B
@item message-indent-citation-function
@vindex message-indent-citation-function
\e$B$A$g$&$I%a!<%k%P%C%U%!$KA^F~$5$l$?0zMQJ8$r=$@5$9$k$?$a$N4X?t$G$9!#$3$l$O\e(B
-\e$B4X?t$N%j%9%H$G$"$k;v$b$G$-$^$9!#$=$l$>$l$N4X?t$O\e(B @code{(point)} \e$B$H\e(B
-@code{(mark t)} \e$B$N4V$G0zMQ$rH/8+$9$k;v$,$G$-$^$9!#$=$7$F!"$=$l$>$l$N4X?t\e(B
-\e$B$O0zMQJ8$,=$@5$5$l$k$H!"$=$N<~$j$K%]%$%s%H$H%^!<%/$r;D$5$J$1$l$P$J$j$^$;\e(B
-\e$B$s!#\e(B
+\e$B4X?t$N%j%9%H$G$"$k;v$b$G$-$^$9!#$=$l$>$l$N4X?t\e(B
+\e$B$O\e(B @code{(point)} \e$B$H\e(B @code{(mark t)} \e$B$N4V$G0zMQ$rH/8+$9$k;v$,$G$-$^$9!#\e(B
+\e$B$=$7$F!"$=$l$>$l$N4X?t$O0zMQJ8$,=$@5$5$l$k$H!"$=$N<~$j$K%]%$%s%H$H%^!<%/\e(B
+\e$B$r;D$5$J$1$l$P$J$j$^$;$s!#\e(B
@item message-signature
@vindex message-signature
@item messsage-signature-file
@vindex message-signature-file
-\e$B%P%C%U%!$N:G8e$KA^F~$5$l$k=pL>$NF~$C$F$$$k%U%!%$%k$G$9!#=i4|CM$O\e(B
-@samp{~/.signature} \e$B$G$9!#\e(B
+\e$B%P%C%U%!$N:G8e$KA^F~$5$l$k=pL>$NF~$C$F$$$k%U%!%$%k$G$9!#=i4|CM\e(B
+\e$B$O\e(B @samp{~/.signature} \e$B$G$9!#\e(B
@end table
@item C-c C-r
@kindex C-c C-r
@findex message-caesar-buffer-body
-\e$B8=:_$N%a%C%;!<%8$r%7!<%6!<JQ49\e(B (\e$BJLL>\e(B rot13) \e$B$7$^$9\e(B
-(@code{message-caesar-buffer-body})\e$B!#$b$7HO0O8BDj$,<B9T$5$l$F$$$?$i!"%P%C\e(B
-\e$B%U%!$N8+$($kItJ,$@$1$rJQ49$7$^$9!#?tCM@\F,0z?t$OJ8$r$I$N$/$i$$2sE>$5$;$k\e(B
-\e$B$+$r;XDj$7$^$9!#=i4|CM$O\e(B 13 \e$B$G$9!#\e(B
+\e$B8=:_$N%a%C%;!<%8$r%7!<%6!<JQ49\e(B (\e$BJLL>\e(B rot13) \e$B$7$^\e(B
+\e$B$9\e(B (@code{message-caesar-buffer-body})\e$B!#$b$7HO0O8BDj$,<B9T$5$l$F$$$?$i!"\e(B
+\e$B%P%C%U%!$N8+$($kItJ,$@$1$rJQ49$7$^$9!#?tCM@\F,0z?t$OJ8$r$I$N$/$i$$2sE>$5\e(B
+\e$B$;$k$+$r;XDj$7$^$9!#=i4|CM$O\e(B 13 \e$B$G$9!#\e(B
@item C-c C-e
@kindex C-c C-e
@item C-c C-z
@kindex C-c C-x
@findex message-kill-to-signature
-\e$B=pL>$^$G$+!"$=$l$,L5$1$l$P5-;v$N:G8e$^$G$NA4$F$NJ8$r@Z$j$^$9\e(B
-(@code{message-kill-to-signature})\e$B!#\e(B
+\e$B=pL>$^$G$+!"$=$l$,L5$1$l$P5-;v$N:G8e$^$G$NA4$F$NJ8$r@Z$j$^\e(B
+\e$B$9\e(B (@code{message-kill-to-signature})\e$B!#\e(B
@item C-c C-v
@kindex C-c C-v
@findex message-delete-not-region
-\e$B%a%C%;!<%8$NK\BN$N%j!<%8%g%s$N30$NA4$F$NJ8$r>C5n$7$^$9\e(B
-(@code{message-delete-not-region})\e$B!#\e(B
+\e$B%a%C%;!<%8$NK\BN$N%j!<%8%g%s$N30$NA4$F$NJ8$r>C5n$7$^\e(B
+\e$B$9\e(B (@code{message-delete-not-region})\e$B!#\e(B
@item M-RET
@kindex M-RET
@item C-c C-t
@kindex C-c C-t
@findex message-insert-to
-\e$B%U%)%m!<%"%C%W$7$h$&$H$9$k%a%C%;!<%8$N\e(B @code{Reply-To} \e$B$b$7$/$O\e(B
-@code{From} \e$B%X%C%@!<$r4^$`\e(B @code{To} \e$B%X%C%@!<$rA^F~$7$^$9\e(B
-(@code{message-insert-to})\e$B!#\e(B
+\e$B%U%)%m!<%"%C%W$7$h$&$H$9$k%a%C%;!<%8$N\e(B @code{Reply-To} \e$B$b$7$/\e(B
+\e$B$O\e(B @code{From} \e$B%X%C%@!<$r4^$`\e(B @code{To} \e$B%X%C%@!<$rA^F~$7$^\e(B
+\e$B$9\e(B (@code{message-insert-to})\e$B!#\e(B
@item C-c C-n
@kindex C-c C-n
@findex message-insert-newsgroups
\e$BJVEz$7$F$$$k5-;v$N\e(B @code{Followup-To} \e$B$b$7$/$O!"\e(B@code{Nesgroups} \e$B%X%C%@!<\e(B
-\e$B$rH?1G$7$?\e(B @code{Newsgroups} \e$B%X%C%@!<$rA^F~$7$^$9\e(B
-(@code{message-insert-newsgroups})\e$B!#\e(B
+\e$B$rH?1G$7$?\e(B @code{Newsgroups} \e$B%X%C%@!<$rA^F~$7$^\e(B
+\e$B$9\e(B (@code{message-insert-newsgroups})\e$B!#\e(B
@item C-c M-r
@kindex C-c M-r
@end table
-
@node Sending
@section \e$BAw?.\e(B
@item C-c C-c
@kindex C-c C-c
@findex message-send-and-exit
-\e$B%a%C%;!<%8$rAw?.$7!"8=:_$N%P%C%U%!$rKd$a$^$9\e(B
-(@code{message-send-and-exit})\e$B!#\e(B
+\e$B%a%C%;!<%8$rAw?.$7!"8=:_$N%P%C%U%!$rKd$a$^\e(B
+\e$B$9\e(B (@code{message-send-and-exit})\e$B!#\e(B
@item C-c C-s
@kindex C-c C-s
@end table
-
-
@node Mail Aliases
@section \e$B%a!<%kJLL>\e(B
@cindex mail aliases
\e$B%a%C%;!<%8$rAw$k$H$-$K$O?-D%$O9T$o$l$^$;$s\e(B---\e$BA4$F$N?-D%$OL@<(E*$K9T$o$l\e(B
\e$B$J$/$F$O$J$j$^$;$s!#\e(B
+@node Spelling
+@section Emacs \e$B$K%9%Z%k%A%'%C%/$5$;$k\e(B
+@cindex spelling
+@findex ispell-message
+Emacs \e$B$G%9%Z%k%A%'%C%/$9$k$?$a$KIa5Z$7$F$$$kFs$D$NJ}K!!"\e(B
+@code{ispell} \e$B$H\e(B @code{flyspell} \e$B$,$"$j$^$9!#\e(B@code{ispell} \e$B$NJ}$O@N$+$i\e(B
+\e$B$"$C$F!"$?$V$s$h$j0lHLE*$J%Q%C%1!<%8$G$9!#$"$J$?$ONc$K$h$C$F:G=i$K%a%C%;!<\e(B
+\e$B%8$r=q$$$F$+$iA4BN$r\e(B @code{ispell} \e$B$KDL$7!"$9$Y$F$N=q$-B;$8$r=$@5$7$^$9!#\e(B
+\e$B%a%C%;!<%8$rAw?.$9$k$H$-$K$=$l$r<+F0E*$K9T$J$&$?$a$K$O!"\e(B.emacs \e$B%U%!%$%k\e(B
+\e$B$K0J2<$N$h$&$J$b$N$rF~$l$F2<$5$$!#\e(B
+
+@lisp
+(add-hook 'message-send-hook 'ispell-message)
+@end lisp
+
+@vindex ispell-message-dictionary-alist
+\e$B$b$7$"$J$?$,0c$&8@8l$G=q$/=,47$J$i$P!"$=$l$OJQ\e(B
+\e$B?t\e(B @code{ispell-message-dictionary-alist} \e$B$G@)8f$G$-$^$9!#\e(B
+
+@lisp
+(setq ispell-message-dictionary-alist
+ '(("^Newsgroups:.*\\bde\\." . "deutsch8")
+ (".*" . "default")))
+@end lisp
+
+@code{ispell} \e$B$O%$%s%9%H!<%k$5$l$?\e(B @samp{ispell} \e$B%3%^%s%I$K0MB8$7$F$$$^\e(B
+\e$B$9!#\e(B
+
+\e$B$b$&0lJ}$NIa5Z$7$F$$$kJ}K!$O\e(B @code{flyspell} \e$B$r;H$&$3$H$G$9!#$3$N%Q%C%1!<\e(B
+\e$B%8$O$"$J$?$,=q$$$F$$$k:GCf$K%9%Z%k%A%'%C%/$r9T$J$$!"$$$m$s$JJ}K!$G4V0c$C\e(B
+\e$B$?%9%Z%k$N8l$r;XE&$7$F$/$l$^$9!#\e(B
+
+@code{flyspell} \e$B$r;H$&$K$O!"0J2<$N$h$&$J$b$N$r\e(B .emacs \e$B%U%!%$%k$KF~$l$F2<\e(B
+\e$B$5$$!#\e(B
+
+@lisp
+(defun my-message-setup-routine ()
+ (flyspell-mode 1))
+(add-hook 'message-setup-hook 'my-message-setup-routine)
+@end lisp
+
+@code{flyspell} \e$B$O%$%s%9%H!<%k$5$l$?\e(B @samp{ispell} \e$B%3%^%s%I$K0MB8$7$F$$$^\e(B
+\e$B$9!#\e(B
@node Variables
@chapter \e$BJQ?t\e(B
@menu
-* Message Headers:: \e$B0lHLE*$J%a%C%;!<%8%X%C%@!<$N$h$&$J$b$N!#\e(B
-* Mail Headers:: \e$B%a!<%k%X%C%@!<$r%+%9%?%^%$%:$9$k!#\e(B
-* Mail Variables:: \e$BB>$N%a!<%kJQ?t!#\e(B
-* News Headers:: \e$B%K%e!<%9%X%C%@!<$r%+%9%?%^%$%:$9$k!#\e(B
-* News Variables:: \e$BB>$N%K%e!<%9JQ?t!#\e(B
-* Various Message Variables:: \e$BB>$N%a%C%;!<%8JQ?t!#\e(B
-* Sending Variables:: \e$BAw?.$9$k$?$a$NJQ?t!#\e(B
-* Message Buffers:: Message \e$B$,$=$N%P%C%U%!$NL>A0$rIU$1$kJ}K!!#\e(B
-* Message Actions:: \e$B=*N;$9$k$H$-$K<B9T$5$l$kF0:n!#\e(B
+* Message Headers:: \e$B0lHLE*$J%a%C%;!<%8%X%C%@!<$N$h$&$J$b$N\e(B
+* Mail Headers:: \e$B%a!<%k%X%C%@!<$r%+%9%?%^%$%:$9$k\e(B
+* Mail Variables:: \e$BB>$N%a!<%kJQ?t\e(B
+* News Headers:: \e$B%K%e!<%9%X%C%@!<$r%+%9%?%^%$%:$9$k\e(B
+* News Variables:: \e$BB>$N%K%e!<%9JQ?t\e(B
+* Various Message Variables:: \e$BB>$N%a%C%;!<%8JQ?t\e(B
+* Sending Variables:: \e$BAw?.$9$k$?$a$NJQ?t\e(B
+* Message Buffers:: Message \e$B$,$=$N%P%C%U%!$NL>A0$rIU$1$kJ}K!\e(B
+* Message Actions:: \e$B=*N;$9$k$H$-$K<B9T$5$l$kF0:n\e(B
@end menu
-
@node Message Headers
@section \e$B%a%C%;!<%8%X%C%@!<\e(B
\e$B:o=|$5$l$^$9!#5-;v$rEj9F$9$k$H$7$^$7$g$&!#$=$l$+$i!"$o$s$Q$/K7<g$J$"$J$?\e(B
\e$B$O$=$l$r2?$+B>$N%0%k!<%W$K:F$SEj9F$9$k;v$K7hDj$7$?$N$G!"\e(B
@code{*post-buf*} \e$B%P%C%U%!$KLa$j!"\e(B@code{Newsgroups} \e$B9T$rJT=8$7!":F$SAw$j\e(B
-\e$B=P$7$?$H$7$^$9!#=i4|@_Dj$G$O!"$3$NJQ?t$OA0$K:n@.$5$l$?8E$$\e(B
-@code{Message-ID} \e$B$,<h$j=|$+$l!"?7$7$$$b$N$,:n@.$5$l$k;v$r3N<B$K$7$F$$$^\e(B
-\e$B$9!#$b$7$3$l$,$J$5$l$J$$$H!"Dk9qA4BN$O$*$=$i$/Jx2u$7!"L5@/I\<g5A$,?;F)$7!"\e(B
-\e$BG-$,\e(B2\e$BK\$NB-$GJb$-;O$a!"@$3&$r;YG[$9$k$G$7$g$&!#J9$/$H$3$m$K0M$l$P!#\e(B
+\e$B=P$7$?$H$7$^$9!#=i4|@_Dj$G$O!"$3$NJQ?t$OA0$K:n@.$5$l$?8E\e(B
+\e$B$$\e(B @code{Message-ID} \e$B$,<h$j=|$+$l!"?7$7$$$b$N$,:n@.$5$l$k;v$r3N<B$K$7$F\e(B
+\e$B$$$^$9!#$b$7$3$l$,$J$5$l$J$$$H!"Dk9qA4BN$O$*$=$i$/Jx2u$7!"L5@/I\<g5A$,?;\e(B
+\e$BF)$7!"G-$,\e(B2\e$BK\$NB-$GJb$-;O$a!"@$3&$r;YG[$9$k$G$7$g$&!#J9$/$H$3$m$K0M$l$P!#\e(B
@item message-default-headers
@vindex message-default-headers
@item message-subject-re-regexp
@vindex message-subject-re-regexp
-\e$B%a%C%;!<%8$X$N1~Ez$O\e(B @samp{Re: } \e$B$G;O$^$j$^$9!#$3$l$O1Q8l$N\e(B ``response''
-\e$B$NN,$G$O\e(B @emph{\e$B$"$j$^$;$s\e(B} \e$B$,!"%i%F%s8l$G!"\e(B``\e$B$=$l$K1~Ez$7$F\e(B'' (in
-response to) \e$B$H8@$&0UL#$G$9!#$$$/$D$+$NL53X$NGO</$O$3$N;v<B$rF@$k;v$K<:\e(B
-\e$BGT$7!"H`$i$N%=%U%H%&%'%"$r4w$^$o$7$$\e(B @samp{Aw: } (``antwort'') \e$B$d\e(B
-@samp{Sv: } (``svar'') \e$B$rBe$o$j$K;H$&$h$&$K\e(B ``\e$B9q:]2=\e(B'' \e$B$7$^$7$?!#$=$l$O\e(B
-\e$B0UL#$,L5$/!"<Y0-$G$9!#$7$+$7!"$3$l$i$N<Y0-$JF;6q$r;H$C$?MxMQ<T$r07$o$J$1\e(B
-\e$B$l$P$J$i$J$$$+$b$7$l$^$;$s$N$G!"$=$N$h$&$J>l9g$O$3$NJQ?t$r$3$l$i$N@\F,8l\e(B
-\e$B$K9g$&$h$&$J@55,I=8=$K@_Dj$9$k$G$7$g$&!#;d<+?H$O!"$=$N$h$&$J5,3J$K=>$o$J\e(B
-\e$B$$%a!<%k$O$?$@<N$F5n$C$F$$$k$@$1$G$9!#\e(B
+\e$B%a%C%;!<%8$X$N1~Ez$O\e(B @samp{Re: } \e$B$G;O$^$j$^$9!#$3$l$O1Q8l\e(B
+\e$B$N\e(B ``response'' \e$B$NN,$G$O\e(B @emph{\e$B$"$j$^$;$s\e(B} \e$B$,!"%i%F%s8l$G!"\e(B``\e$B$=$l$K1~Ez\e(B
+\e$B$7$F\e(B'' (in response to) \e$B$H8@$&0UL#$G$9!#$$$/$D$+$NL53X$NGO</$O$3$N;v<B$r\e(B
+\e$BF@$k;v$K<:GT$7!"H`$i$N%=%U%H%&%'%"$r4w$^$o$7\e(B
+\e$B$$\e(B @samp{Aw: } (``antwort'') \e$B$d\e(B @samp{Sv: } (``svar'') \e$B$rBe$o$j$K;H$&$h\e(B
+\e$B$&$K\e(B ``\e$B9q:]2=\e(B'' \e$B$7$^$7$?!#$=$l$O0UL#$,L5$/!"<Y0-$G$9!#$7$+$7!"$3$l$i$N<Y\e(B
+\e$B0-$JF;6q$r;H$C$?MxMQ<T$r07$o$J$1$l$P$J$i$J$$$+$b$7$l$^$;$s$N$G!"$=$N$h$&\e(B
+\e$B$J>l9g$O$3$NJQ?t$r$3$l$i$N@\F,8l$K9g$&$h$&$J@55,I=8=$K@_Dj$9$k$G$7$g$&!#\e(B
+\e$B;d<+?H$O!"$=$N$h$&$J5,3J$K=>$o$J$$%a!<%k$O$?$@<N$F5n$C$F$$$k$@$1$G$9!#\e(B
@item message-alternative-emails
@vindex message-alternative-emails
-A regexp to match the alternative email addresses. The first matched
-address (not primary one) is used in the @code{From} field.
\e$BBe$o$j$N%a!<%k%"%I%l%9$K9gCW$9$k@55,I=8=$G$9!#:G=i$K%^%C%A$7$?\e(B (\e$BBh0l5A$G\e(B
\e$B$O$J$$\e(B) \e$B%"%I%l%9$,\e(B @code{From} \e$B%U%#!<%k%I$G;H$o$l$^$9!#\e(B
(\e$BLuCm\e(B: To \e$B$+\e(B Cc \e$B$K$"$k%"%I%l%9$G!":G=i$K$3$N@55,I=8=$K9gCW$7!"\e(B
@end table
-
@node Mail Headers
@section \e$B%a!<%k%X%C%@!<\e(B
@item message-ignored-mail-headers
@vindex message-ignored-mail-headers
-\e$B%a!<%k$r=P$9A0$K<h$j=|$+$l$k%X%C%@!<$N@55,I=8=$G$9!#=i4|CM$O\e(B
-@samp{^[GF]cc:\\|^Resent-Fcc:} \e$B$G$9!#\e(B
+\e$B%a!<%k$r=P$9A0$K<h$j=|$+$l$k%X%C%@!<$N@55,I=8=$G$9!#=i4|CM\e(B
+\e$B$O\e(B @samp{^[GF]cc:\\|^Resent-Fcc:} \e$B$G$9!#\e(B
@item message-default-mail-headers
@vindex message-default-mail-headers
@end table
-
@node Mail Variables
@section \e$B%a!<%kJQ?t\e(B
@table @code
@item message-send-mail-function
@vindex message-send-mail-function
-\e$B8=:_$N%P%C%U%!$r%a!<%k$H$7$FAw$k$?$a$K;H$o$l$k4X?t$G$9!#=i4|CM$O\e(B
-@code{message-send-mail-with-sendmail} \e$B$G$9!#$b$7Be$o$j$K\e(B MH \e$B$GAw$k$N$r\e(B
-\e$B9%$`$N$G$"$l$P!"$3$NJQ?t$r\e(B @code{message-send-mail-with-mh} \e$B$K@_Dj$7$F2<\e(B
-\e$B$5$$!#\e(B
+\e$B8=:_$N%P%C%U%!$r%a!<%k$H$7$FAw$k$?$a$K;H$o$l$k4X?t$G$9!#=i4|CM\e(B
+\e$B$O\e(B @code{message-send-mail-with-sendmail} \e$B$G$9!#$b$7Be$o$j$K\e(B MH \e$B$GAw$k$N\e(B
+\e$B$r9%$`$N$G$"$l$P!"$3$NJQ?t$r\e(B @code{message-send-mail-with-mh} \e$B$K@_Dj$7$F\e(B
+\e$B2<$5$$!#\e(B
@item message-mh-deletable-headers
@vindex message-mh-deletable-headers
@end table
-
@node News Headers
@section \e$B%K%e!<%9%X%C%@!<\e(B
\e$B$3$NA*BrG$0U$J%X%C%@!<$OJQ?t\e(B @code{message-user-organization} \e$B$K0MB8$7$F\e(B
\e$B:n@.$5$l$^$9!#$b$7$3$NJQ?t$,\e(B @code{t} \e$B$G$"$l$P!"\e(B
@code{message-user-organization-file} \e$B$,;H$o$l$^$9!#$3$NJQ?t$OJ8;zNs$G$"\e(B
-\e$B$k;v$b$G$-\e(B (\e$B$=$N>l9g$O$=$NJ8;zNs$,;H$o$l$^$9\e(B)\e$B!"4X?t$G$"$k;v$b$G$-$^$9\e(B
-(\e$B$=$N4X?t$O0z?tL5$7$G8F$P$l!";H$o$l$kJ8;zNs$rJV$9I,MW$,$"$j$^$9\e(B)\e$B!#\e(B
+\e$B$k;v$b$G$-\e(B (\e$B$=$N>l9g$O$=$NJ8;zNs$,;H$o$l$^$9\e(B)\e$B!"4X?t$G$"$k;v$b$G$-$^\e(B
+\e$B$9\e(B (\e$B$=$N4X?t$O0z?tL5$7$G8F$P$l!";H$o$l$kJ8;zNs$rJV$9I,MW$,$"$j$^$9\e(B)\e$B!#\e(B
@item Lines
@cindex Lines
@findex system-name
@cindex Sun
\e$B$3$NI,MW$J%X%C%@!<$O\e(B Message \e$B$K$h$j:n@.$5$l$^$9!#F|IU!";~4V!"MxMQ<TL>!"\e(B
-\e$B%7%9%F%`L>$K4p$E$$$?B>$KL5$$\e(B ID \e$B$,:n@.$5$l$^$9!#\e(BMessage \e$B$O\e(B
-@code{system-name} \e$B$r%7%9%F%`L>$r7h$a$k$?$a$K;H$$$^$9!#$b$7$3$l$,\e(B fully
-qualified domain name (FQDN) (\e$B40A4$K>r7o$rK~$?$7$?%I%a%$%sL>\e(B) \e$B$G$J$$$J$i\e(B
-\e$B$P!"\e(BMessage \e$B$O\e(B @code{mail-host-address} \e$B$r\e(B FQDN \e$B$H$7$F;H$$$^$9!#\e(B
+\e$B%7%9%F%`L>$K4p$E$$$?B>$KL5$$\e(B ID \e$B$,:n@.$5$l$^$9!#\e(B
+Message \e$B$O\e(B @code{system-name} \e$B$r%7%9%F%`L>$r7h$a$k$?$a$K;H$$$^$9!#$b$7$3\e(B
+\e$B$l$,\e(B fully qualified domain name (FQDN) (\e$B40A4$K>r7o$rK~$?$7$?%I%a%$%s\e(B
+\e$BL>\e(B) \e$B$G$J$$$J$i\e(B \e$B$P!"\e(BMessage \e$B$O\e(B @code{mail-host-address} \e$B$r\e(B FQDN \e$B$H$7$F;H\e(B
+\e$B$$$^$9!#\e(B
@item X-Newsreader
@cindex X-Nesreader
@end table
-
@node News Variables
@section \e$B?7$7$$JQ?t\e(B
@table @code
@item message-send-news-function
@vindex message-send-news-function
-\e$B8=:_$N%P%C%U%!$r%K%e!<%9$H$7$FAw$k$?$a$K;H$o$l$k4X?t$G$9!#=i4|CM$O\e(B
-@code{mesage-send-news} \e$B$G$9!#\e(B
+\e$B8=:_$N%P%C%U%!$r%K%e!<%9$H$7$FAw$k$?$a$K;H$o$l$k4X?t$G$9!#=i4|CM\e(B
+\e$B$O\e(B @code{mesage-send-news} \e$B$G$9!#\e(B
@item message-post-method
@vindex message-post-method
@end table
-
@node Various Message Variables
@section \e$B$$$m$$$m$J%a%C%;!<%8JQ?t\e(B
@c Symbol naming a @sc{mime} charset. Non-ASCII characters in messages are
@c assumed to be encoded using this charset. The default is @code{nil},
@c which means ask the user. (This variable is used only on non-@sc{mule}
-@c Emacsen.
-@c @xref{Charset Translation, , Charset Translation, emacs-mime,
+@c Emacsen.
+@c @xref{Charset Translation, , Charset Translation, emacs-mime,
@c Emacs MIME Manual}, for details on the @sc{mule}-to-@sc{mime}
@c translation process.
@c
@item message-directory
@vindex message-directory
-\e$BB?$/$N%a!<%k$N$b$N$+$i;H$o$l$k%G%#%l%/%H%j!<$G$9!#=i4|CM$O\e(B
-@file{~/Mail/} \e$B$G$9!#\e(B
+\e$BB?$/$N%a!<%k$N$b$N$+$i;H$o$l$k%G%#%l%/%H%j!<$G$9!#=i4|CM\e(B
+\e$B$O\e(B @file{~/Mail/} \e$B$G$9!#\e(B
@item message-signature-setup-hook
@vindex message-signature-setup-hook
@vindex message-send-hook
\e$B%a%C%;!<%8$rAw$kA0$K<B9T$5$l$k%U%C%/$G$9!#\e(B
-\e$B$b$7Aw$kA0$KFCDj$N%X%C%@!<$r2C$($?$$$N$G$"$l$P!"4X?t\e(B
-@code{message-add-header} \e$B$r$3$N%U%C%/$K;H$&;v$,$G$-$^$9!#Nc$($P\e(B:
+\e$B$b$7Aw$kA0$KFCDj$N%X%C%@!<$r2C$($?$$$N$G$"$l$P!"4X\e(B
+\e$B?t\e(B @code{message-add-header} \e$B$r$3$N%U%C%/$K;H$&;v$,$G$-$^$9!#Nc$($P\e(B:
@findex message-add-header
@lisp
(mail message-mail-p message-send-via-mail))
@end lisp
-
-
@end table
-
-
@node Sending Variables
@section \e$BAw$k$?$a$NJQ?t\e(B
@item message-fcc-handler-function
@vindex message-fcc-handler-function
\e$B=P$F$$$/5-;v$rJ]B8$9$k$?$a$K8F$P$l$k4X?t$G$9!#$3$N4X?t$O5-;v$rC_@Q$9$k$?\e(B
-\e$B$a$N%U%!%$%kL>$H6&$K8F$P$l$^$9!#=i4|@_Dj$N4X?t$O\e(B @code{message-output}
+\e$B$a$N%U%!%$%kL>$H6&$K8F$P$l$^$9!#=i4|@_Dj$N4X?t$O\e(B @code{message-output}
\e$B$G!"$=$l$O\e(B Unix mailbox \e$BMM<0$GJ]B8$7$^$9!#\e(B
@item message-courtesy-message
@vindex messsage-courtesy-messsage
\e$BJ#9g%a%C%;!<%8$rAw$k$H$-$O!"$3$NJ8;zNs$O%a!<%k$GAw$i$l$?J#@=$NJ}$N:G=i$K\e(B
\e$BA^F~$5$l$^$9!#$b$7$=$NJ8;zNs$,=qK!;EMM;XDj\e(B @samp{%s} \e$B$r4^$s$G$$$l$P!"5-\e(B
-\e$B;v$,Ej9F$5$l$?%K%e!<%9%0%k!<%W$,$=$3$KA^F~$5$l$^$9!#$b$7$3$NJQ?t$,\e(B
-@code{nil} \e$B$G$"$l$P!"$=$N$h$&$J?F@Z%a%C%;!<%8$O2C$($i$l$^$;$s!#=i4|CM$O\e(B
-@samp{"The following message is a courtesy copy of an article\nthat has
+\e$B;v$,Ej9F$5$l$?%K%e!<%9%0%k!<%W$,$=$3$KA^F~$5$l$^$9!#$b$7$3$NJQ?t\e(B
+\e$B$,\e(B @code{nil} \e$B$G$"$l$P!"$=$N$h$&$J?F@Z%a%C%;!<%8$O2C$($i$l$^$;$s!#=i4|CM\e(B
+\e$B$O\e(B @samp{"The following message is a courtesy copy of an article\nthat has
been posted to %s as well.\n\n"} \e$B$G$9!#\e(B
@end table
-
@node Message Buffers
@section \e$B%a%C%;!<%8%P%C%U%!\e(B
@item message-use-multi-frames
@vindex message-use-multi-frames
-@code{nil} \e$B$G$J$1$l$P!"?7$7$$%U%l!<%`$r:n@.$7$^$9!#=i4|CM$O\e(B @code{nil}
+@code{nil} \e$B$G$J$1$l$P!"?7$7$$%U%l!<%`$r:n@.$7$^$9!#=i4|CM$O\e(B @code{nil}
\e$B$G$9!#\e(B
@item message-delete-frame-on-exit
@item message-max-buffers
@vindex message-max-buffers
-\e$B#k$NJQ?t$O$I$N$/$i$$8E$$%a%C%;!<%8%P%C%U%!$rJ]$C$F$*$/$+$r;XDj$7$^$9!#$3\e(B
+\e$B$3$NJQ?t$O$I$N$/$i$$8E$$%a%C%;!<%8%P%C%U%!$rJ]$C$F$*$/$+$r;XDj$7$^$9!#$3\e(B
\e$B$l$h$jB?$$%a%C%;!<%8%P%C%U%!$,$"$l$P!"0lHV8E$$%P%C%U%!$,:o=|$5$l$^$9!#=i\e(B
\e$B4|CM$O\e(B10\e$B$G$9!#$3$NJQ?t$,\e(B @code{nil} \e$B$G$"$k$H!"8E$$%a%C%;!<%8%P%C%U%!$O:o\e(B
\e$B=|$5$l$^$;$s!#\e(B
@item message-send-rename-function
@vindex message-send-rename-function
-\e$B%a%C%;!<%8$rAw$C$?8e$G!"%P%C%U%!$NL>A0$O!"Nc$($P!"\e(B@samp{*reply to Lars*}
+\e$B%a%C%;!<%8$rAw$C$?8e$G!"%P%C%U%!$NL>A0$O!"Nc$($P!"\e(B@samp{*reply to Lars*}
\e$B$+$i\e(B @samp{*sent reply to Lars*} \e$B$KJQ99$5$l$^$9!#$b$7$3$l$r9%$^$J$$$J$i!"\e(B
\e$B$3$NJQ?t$r$"$J$?$N9%$-$JJ}K!$G%P%C%U%!$NL>A0$rJQ99$9$k4X?t$K@_Dj$7$F2<$5\e(B
\e$B$$!#$=$b$=$b%P%C%U%!L>$rJQ99$9$k;v$r9%$^$J$$$N$G$"$l$P!"<!$N$h$&$K$G$-$^\e(B
@end table
-
@node Message Actions
@section \e$B%a%C%;!<%8$NF0:n\e(B
@dfn{\e$BF0:n\e(B} \e$B$O<!$N$I$l$+$G$9\e(B: \e$BIaDL$N4X?t!"$b$7$/$O\e(B @code{car} \e$B$,4X?t$G!"\e(B
@code{cdr} \e$B$,0z?t$N%j%9%H$G$"$k%j%9%H$+!"\e(B@code{\e$BI>2A\e(B} \e$B$5$l$k<0$G$9!#\e(B
-
@node Compatibility
@chapter \e$B8_49@-\e(B
@cindex compatibility
\e$B$3$l$OB?$/$N\e(B Message \e$BJQ?t$rBP1~$9$k%a!<%kJQ?t$+$i=i4|2=$7$^$9!#\e(B
-
@node Appendices
@chapter \e$BIU5-\e(B
@menu
* Responses:: \e$B1~Ez$,2?=h$K9T$/$+$r7hDj$9$kI8=`$NK!B'!#\e(B
-@end menu
+@end menu
@node Responses
@section \e$B1~Ez\e(B
@item From
@end table
-
@item wide reply
@dfn{\e$B9-$$JVEz\e(B} (wide reply) \e$B$O$"$J$?$,1~Ez$7$h$&$H$7$F$$$k%a%C%;!<%8$K=q\e(B
\e$B$+$l$F$$$?\e(B @emph{\e$BA4$F$N\e(B} \e$B<BBN$r4^$`%a!<%k$K$h$k1~Ez$G$9!#0J2<$N%X%C%@!<\e(B
@end table
@code{Mail-Copies-To} \e$B%X%C%@!<$,B8:_$7$F$$$k$H!"$=$l$b%a!<%k%\%C%/%9$N%j\e(B
-\e$B%9%H$K2C$($i$l$k$G$7$g$&!#$3$N%X%C%@!<$,\e(B @samp{never} \e$B$G$"$l$P!"$=$l$O\e(B
-@code{From} (\e$B$b$7$/$O\e(B @code{Reply-To}) \e$B%a!<%k%\%C%/%9$,M^@)$5$l$k$H8@$&\e(B
-\e$B;v$G$9!#\e(B
-
+\e$B%9%H$K2C$($i$l$k$G$7$g$&!#$3$N%X%C%@!<$,\e(B @samp{never} \e$B$G$"$l$P!"$=$l\e(B
+\e$B$O\e(B @code{From} (\e$B$b$7$/$O\e(B @code{Reply-To}) \e$B%a!<%k%\%C%/%9$,M^@)$5$l$k$H8@\e(B
+\e$B$&;v$G$9!#\e(B
@item followup
-@dfn{\e$B%U%)%m!<%"%C%W\e(B} (followup) \e$B$O%K%e!<%9$K$h$k1~Ez$G$9!#0J2<$N%X%C%@!<\e(B
-(\e$BM%@h=g0L$N9b$$$b$N$+$i5s$2$i$l$F$$$^$9\e(B) \e$B$,2?=h$K1~Ez$,Aw$i$l$k$+$r7hDj\e(B
-\e$B$7$^$9\e(B:
+@dfn{\e$B%U%)%m!<%"%C%W\e(B} (followup) \e$B$O%K%e!<%9$K$h$k1~Ez$G$9!#0J2<$N%X%C\e(B
+\e$B%@!<\e(B (\e$BM%@h=g0L$N9b$$$b$N$+$i5s$2$i$l$F$$$^$9\e(B) \e$B$,2?=h$K1~Ez$,Aw$i$l$k$+$r\e(B
+\e$B7hDj$7$^$9\e(B:
@table @code
@end table
-
-
@node Index
@chapter Index
@printindex cp
@bye
@c End:
-
@synindex fn cp
@synindex vr cp
@synindex pg cp
-@dircategory Editors
+@dircategory Emacs
@direntry
* Message: (message). Mail and news composition mode that goes with Gnus.
@end direntry
This file documents Message, the Emacs message composition mode.
-Copyright (C) 1996,97,98,99,2000 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1996,97,98,99,2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1996, 1997, 1998, 1999, 2000
+ Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to T-gnus 6.15 Message. Message is
-distributed with the Gnus distribution bearing the same version number
-as this manual.
+This manual corresponds to T-gnus 6.15 Message. Message is distributed
+with the Gnus distribution bearing the same version number as this
+manual.
@node Interface
@chapter Commands
@menu
+* Buffer Entry:: Commands after entering a Message buffer.
* Header Commands:: Commands for moving to headers.
* Movement:: Moving around in message buffers.
* Insertion:: Inserting things into message buffers.
* Various Commands:: Various things.
* Sending:: Actually sending the message.
* Mail Aliases:: How to use mail aliases.
+* Spelling:: Having Emacs check your spelling.
@end menu
+@node Buffer Entry
+@section Buffer Entry
+@cindex undo
+@kindex C-_
+
+You most often end up in a Message buffer when responding to some other
+message of some sort. Message does lots of handling of quoted text, and
+may remove signatures, reformat the text, or the like---depending on
+which used settings you're using. Message usually gets things right,
+but sometimes it stumbles. To help the user unwind these stumblings,
+Message sets the undo boundary before each major automatic action it
+takes. If you press the undo key (usually located at @kbd{C-_}) a few
+times, you will get back the un-edited message you're responding to.
+
+
@node Header Commands
@section Header Commands
expansions have to be done explicitly.
+@node Spelling
+@section Spelling
+@cindex spelling
+@findex ispell-message
+
+There are two popular ways to have Emacs spell-check your messages:
+@code{ispell} and @code{flyspell}. @code{ispell} is the older and
+probably more popular package. You typically first write the message,
+and then run the entire thing through @code{ispell} and fix all the
+typos. To have this happen automatically when you send a message, put
+something like the following in your @file{.emacs} file:
+
+@lisp
+(add-hook 'message-send-hook 'ispell-message)
+@end lisp
+
+@vindex ispell-message-dictionary-alist
+If you're in the habit of writing in different languages, this can be
+controlled by the @code{ispell-message-dictionary-alist} variable:
+
+@lisp
+(setq ispell-message-dictionary-alist
+ '(("^Newsgroups:.*\\bde\\." . "deutsch8")
+ (".*" . "default")))
+@end lisp
+
+@code{ispell} depends on having the external @samp{ispell} command
+installed.
+
+The other popular method is using @code{flyspell}. This package checks
+your spelling while you're writing, and marks any mis-spelled words in
+various ways.
+
+To use @code{flyspell}, put something like the following in your
+@file{.emacs} file:
+
+@lisp
+(defun my-message-setup-routine ()
+ (flyspell-mode 1))
+(add-hook 'message-setup-hook 'my-message-setup-routine)
+@end lisp
+
+@code{flyspell} depends on having the external @samp{ispell} command
+installed.
+
@node Variables
@chapter Variables
@item message-subject-re-regexp
@vindex message-subject-re-regexp
Responses to messages have subjects that start with @samp{Re: }. This
-is @emph{not} an abbreviation of the English word ``response'', but in
+is @emph{not} an abbreviation of the English word ``response'', but is
Latin, and means ``in response to''. Some illiterate nincompoops have
failed to grasp this fact, and have ``internationalized'' their software
to use abonimations like @samp{Aw: } (``antwort'') or @samp{Sv: }
--- /dev/null
+;;; texi2latex.el --- convert a texi file into a LaTeX file.
+;; Copyright (C) 1996 Lars Magne Ingebrigtsen
+
+(require 'cl)
+
+(defun latexi-discard-until (string)
+ (let ((beg (match-beginning 0)))
+ (unless (re-search-forward (concat "^@end +" string "[ \t]*\n") nil t)
+ (error "No end: %s" string))
+ (delete-region beg (match-end 0))))
+
+(defun latexi-strip-line ()
+ (delete-region (progn (beginning-of-line) (point))
+ (progn (forward-line 1) (point))))
+
+(defun latexi-switch-line (command arg)
+ (latexi-strip-line)
+ (insert (format "\\%s{%s}\n" command arg)))
+
+(defun latexi-index-command (command arg)
+ (latexi-strip-line)
+ (insert (format "\\gnus%sindex{%s}\n"
+ (if (equal command "kindex") "k" "")
+ arg)))
+
+(defun latexi-begin-command (command)
+ (latexi-strip-line)
+ (insert (format "\\begin{%s}\n" command)))
+
+(defun latexi-exchange-command (command arg)
+ (delete-region (match-beginning 0) (match-end 0))
+ (insert (format "\\%s{%s}" command arg)))
+
+(defun latexi-translate ()
+ "Translate."
+ (interactive)
+ (latexi-translate-file "gnus")
+ (latexi-translate-file "gnus-faq"))
+
+(defun latexi-translate-file (file)
+ "Translate file a LaTeX file."
+ (let ((item-string "")
+ (item-stack nil)
+ (list-stack nil)
+ (latexi-buffer (get-buffer-create "*LaTeXi*"))
+ verbatim
+ (regexp
+ (concat
+ "@\\([^{} \t\n]+\\)"
+ "\\(\\( +\\(.*$\\)\\|[ \t]*$\\)\\|{\\([^}]*\\)}\\)"))
+ (cur (find-file-noselect (concat (or (getenv "srcdir") ".")
+ "/" file ".texi")))
+ (times 3)
+ (chapter 0)
+ command arg)
+ (pop-to-buffer latexi-buffer)
+ (buffer-disable-undo)
+ (erase-buffer)
+ (insert-buffer-substring cur)
+ (goto-char (point-min))
+ (latexi-strip-line)
+ (latexi-translate-string "%@{" "\\gnuspercent{}\\gnusbraceleft{}")
+ (latexi-translate-string "%@}" "\\gnuspercent{}\\gnusbraceright{}")
+ (latexi-translate-string "%1@{" "\\gnuspercent{}1\\gnusbraceright{}")
+; (while (re-search-forward "{\"[^\"]*\\(\\\\\\)[^\"]*\"}\\\\" nil t)
+; (replace-match "\\verb+\\\\+ " t t))
+ (while (not (zerop (decf times)))
+ (goto-char (point-min))
+ (while (re-search-forward regexp nil t)
+ (setq command (match-string 1))
+ (if (match-beginning 3)
+ (progn
+ (setq arg (or (match-string 4) ""))
+ (save-match-data
+ (when (string-match "[ \t]+$" arg)
+ (setq arg (substring arg 0 (match-beginning 0)))))
+ (cond
+ ((member command '("c" "comment"))
+ (if (string-match "@icon" (or arg ""))
+ (progn
+ (beginning-of-line)
+ (delete-region (point) (+ (point) 4))
+ (insert "\\gnus"))
+ (delete-region (match-beginning 0)
+ (progn (end-of-line) (point))))
+ (if (equal arg "@head")
+ (insert "\\gnusinteresting")))
+ ((member command '("setfilename"
+ "synindex" "setchapternewpage"
+ "summarycontents" "bye"
+ "top" "iftex" "cartouche"
+ "iflatex" "finalout" "vskip"
+ "dircategory"))
+ (latexi-strip-line))
+ ((member command '("menu" "tex" "ifinfo" "ignore"
+ "ifnottex" "direntry"))
+ (latexi-discard-until command))
+ ((member command '("subsection" "subsubsection"))
+ (latexi-switch-line command arg))
+ ((member command '("chapter"))
+ (latexi-switch-line
+ (format
+ "gnus%s{\\epsfig{figure=tmp/new-herd-%d.ps,scale=.5}}"
+ command (incf chapter))
+ arg))
+ ((member command '("section"))
+ (latexi-switch-line (format "gnus%s" command) arg))
+ ((member command '("cindex" "findex" "kindex" "vindex"))
+ (latexi-index-command command arg))
+ ((member command '("*"))
+ (delete-char -2)
+ (insert "\\\\"))
+ ((equal command "sp")
+ (replace-match "" t t))
+ ((equal command "node")
+ (latexi-strip-line)
+ (insert (format "\\label{%s}\n" arg)))
+ ((equal command "contents")
+ (latexi-strip-line)
+ ;;(insert (format "\\tableofcontents\n" arg))
+ )
+ ((member command '("titlepage"))
+ (latexi-begin-command command))
+ ((member command '("lisp" "example"))
+ (latexi-strip-line)
+ (insert (format "\\begin{verbatim}\n"))
+ (setq verbatim (point)))
+ ((member command '("center"))
+ (latexi-strip-line)
+ (insert (format "\\begin{%s}%s\\end{%s}\n"
+ command arg command)))
+ ((member command '("end"))
+ (cond
+ ((member arg '("titlepage"))
+ (latexi-strip-line)
+ (insert (format "\\end{%s}\n" arg)))
+ ((equal arg "quotation")
+ (latexi-strip-line)
+ (insert (format "\\end{verse}\n")))
+ ((member arg '("lisp" "example"))
+ (latexi-strip-line)
+ (save-excursion
+ (save-restriction
+ (narrow-to-region verbatim (point))
+ (goto-char (point-min))
+ (while (search-forward "@{" nil t)
+ (replace-match "{" t t))
+ (goto-char (point-min))
+ (while (search-forward "@}" nil t)
+ (replace-match "}" t t))))
+ (setq verbatim nil)
+ (insert "\\end{verbatim}\n"))
+ ((member arg '("table"))
+ (setq item-string (pop item-stack))
+ (latexi-strip-line)
+ (insert (format "\\end{%slist}\n" (pop list-stack))))
+ ((member arg '("itemize" "enumerate"))
+ (setq item-string (pop item-stack))
+ (latexi-strip-line)
+ (insert (format "\\end{%s}\n" arg)))
+ ((member arg '("iflatex" "iftex" "cartouche"))
+ (latexi-strip-line))
+ (t
+ (error "Unknown end arg: %s" arg))))
+ ((member command '("table"))
+ (push item-string item-stack)
+ (push (substring arg 1) list-stack)
+ (setq item-string
+ (format "[@%s{%%s}]" (car list-stack)))
+ (latexi-strip-line)
+ (insert (format "\\begin{%slist}\n" (car list-stack))))
+ ((member command '("itemize" "enumerate"))
+ (push item-string item-stack)
+ (cond
+ ((member arg '("@bullet"))
+ (setq item-string "[\\gnusbullet]"))
+ (t
+ (setq item-string "")))
+ (latexi-strip-line)
+ (insert (format "\\begin{%s}\n" command)))
+ ((member command '("item"))
+ (latexi-strip-line)
+ (insert (format "\\%s%s\n" command (format item-string arg))))
+ ((equal command "itemx")
+ (latexi-strip-line)
+ (insert (format "\\gnusitemx{%s}\n" (format item-string arg))))
+ ((eq (aref command 0) ?@)
+ (goto-char (match-beginning 0))
+ (delete-char 2)
+ (insert "duppat{}"))
+ ((equal command "settitle")
+ (latexi-strip-line)
+ (insert (format "\\newcommand{\\gnustitlename}{%s}\n" arg)))
+ ((equal command "title")
+ (latexi-strip-line)
+ (insert (format "\\gnustitlename{%s}\n" arg)))
+ ((equal command "author")
+ (latexi-strip-line)
+ (insert (format "\\gnusauthor{%s}\n" arg)))
+ ((equal command "quotation")
+ (latexi-begin-command "verse"))
+ ((equal command "page")
+ (latexi-strip-line)
+ (insert (format "\\newpage\n" arg)))
+ ((equal command "'s")
+ (goto-char (match-beginning 0))
+ (delete-char 1))
+ ((equal command "include")
+ (latexi-strip-line)
+ (insert "\\input{gnus-faq.latexi}\n"))
+ ((equal command "printindex")
+ (latexi-strip-line)
+ ;;(insert
+ ;; (format
+ ;; "\\begin{theindex}\\input{gnus.%s}\\end{theindex}\n" arg))
+ )
+ (t
+ (error "Unknown command: %s" command))))
+ ;; These are commands with {}.
+ (setq arg (match-string 5))
+ (cond
+ ((member command '("anchor"))
+ (latexi-strip-line))
+ ((member command '("xref" "pxref"))
+ (latexi-exchange-command (concat "gnus" command) arg))
+ ((member command '("sc" "file" "dfn" "emph" "kbd" "uref"
+ "code" "samp" "var" "strong" "i"
+ "result"))
+ (goto-char (match-beginning 0))
+ (delete-char 1)
+ (insert "\\gnus"))
+ ((member command '("copyright" "footnote"))
+ (goto-char (match-beginning 0))
+ (delete-char 1)
+ (insert "\\"))
+ ((member command '("dots"))
+ (goto-char (match-beginning 0))
+ (delete-region (match-beginning 0) (match-end 0))
+ (insert "..."))
+ ((eq (aref command 0) ?@)
+ (goto-char (match-beginning 0))
+ (delete-char 2)
+ (insert "duppat{}"))
+ (t
+ (error "Unknown command: %s" command))))))
+ (latexi-translate-string "$" "\\gnusdollar{}")
+ (latexi-translate-string "&" "\\gnusampersand{}")
+ (latexi-translate-string "%" "\\gnuspercent{}")
+ (latexi-translate-string "#" "\\gnushash{}")
+ (latexi-translate-string "^" "\\gnushat{}")
+ (latexi-translate-string "~" "\\gnustilde{}")
+ (latexi-translate-string "_" "\\gnusunderline{}")
+ (latexi-translate-string "¬" "\\gnusnot{}")
+ (goto-char (point-min))
+ (while (search-forward "duppat{}" nil t)
+ (replace-match "@" t t))
+ (latexi-translate-string "@@" "@")
+ (latexi-translate-string "<" "\\gnusless{}")
+ (latexi-translate-string ">" "\\gnusgreater{}")
+ (goto-char (point-min))
+ (search-forward "label{Top}" nil t)
+ (while (re-search-forward "\\\\[ntr]\\b" nil t)
+ (when (save-match-data
+ (or (not (save-excursion
+ (search-backward "begin{verbatim}" nil t)))
+ (> (save-excursion
+ (search-backward "end{verbatim"))
+ (save-excursion
+ (search-backward "begin{verbatim}")))))
+ (goto-char (match-beginning 0))
+ (delete-char 1)
+ (insert "\\gnusbackslash{}")))
+ (latexi-translate-string "\\\\" "\\gnusbackslash{}")
+ (goto-char (point-min))
+ (while (re-search-forward "\\\\[][{}]" nil t)
+ (goto-char (match-beginning 0))
+ (delete-char 1))
+ (latexi-contributors)
+ (let ((coding-system-for-write 'iso-8859-1))
+ (write-region (point-min) (point-max) (concat file ".latexi")))))
+
+(defun latexi-translate-string (in out)
+ (let (yes)
+ (goto-char (point-min))
+ (search-forward "label{Top}" nil t)
+ (while (search-forward in nil t)
+ (when (save-match-data
+ (or (not (save-excursion
+ (search-backward "begin{verbatim}" nil t)))
+ (> (save-excursion
+ (re-search-backward "end{verbatim}\\|end{verse}"))
+ (save-excursion
+ (re-search-backward
+ "begin{verbatim}\\|begin{verse}")))))
+ (replace-match out t t)))))
+
+(defun latexi-contributors ()
+ (goto-char (point-min))
+ (when (re-search-forward "^Also thanks to the following" nil t)
+ (forward-line 2)
+ (narrow-to-region
+ (point)
+ (1- (search-forward "\n\n")))
+ (when (re-search-backward "^and" nil t)
+ (latexi-strip-line))
+ (goto-char (point-min))
+ (while (re-search-forward "[.,] *$" nil t)
+ (replace-match "" t t))
+ (goto-char (point-min))
+ (let (names)
+ (while (not (eobp))
+ (push (buffer-substring (point) (progn (end-of-line) (point)))
+ names)
+ (forward-line 1))
+ (delete-region (point-min) (point-max))
+ (insert "\\begin{tabular}{lll}\n")
+ (setq names (nreverse (delete "" names)))
+ (while names
+ (insert (pop names) " & " (or (pop names) "\\mbox{}")
+ " & " (or (pop names) "\\mbox{}")
+ "\\\\\n"))
+ (insert "\\end{tabular}\n")
+ (widen))))
+