+2001-04-01 00:37:14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-score.el (gnus-score-orphans): Clean up.
+
+ * gnus-win.el (gnus-remove-some-windows): Leave one Gnus window.
+
+ * gnus-sum.el (gnus-summary-exit): Kill the summary buffer a bit
+ later.
+
+ * gnus-start.el (gnus-close-all-servers): Find the right items to
+ close.
+
+ * qp.el (quoted-printable-decode-region): Just message
+ malformation; don't quit.
+
+2001-03-31 21:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+ From Gerd Moellmann <gerd@gnu.org>.
+
+ * gnus.el (gnus-interactive): A typo.
+
+2001-03-26 Juanma Barranquero <lektu@uol.com.br>
+ Committed by ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus-util.el (gnus-delete-alist): Declare it as an alias of
+ `assq-delete-all', if that function exists; otherwise use the old
+ definition. Documentation changed to match the one in
+ `assq-delete-all'.
+
+2001-04-01 00:37:14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-start.el (gnus-close-all-servers): New function.
+
+ * gnus-srvr.el (gnus-server-close-all-servers): Clean up.
+ (gnus-server-remove-denials): Clean up.
+
+ * gnus-sum.el (gnus-summary-sort-by-original): New command and
+ keystroke.
+
+2001-03-31 02:56:55 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.el (message-send-news): Message where we are sending.
+ (message-send-mail): Ditto.
+
+ * gnus.el (gnus-server-string): New function.
+
+ * gnus-sum.el (gnus-summary-up-thread): Doc fix.
+
+ * mm-decode.el (mm-default-directory): Customized.
+ (mm-tmp-directory): Ditto.
+
+ * gnus-sum.el (gnus-summary-catchup-and-exit): Doc fix.
+ (gnus-get-newsgroup-headers): Return -1 for articles without Lines
+ or Chars.
+ (gnus-summary-line-format-alist): ?l is now a string.
+ (gnus-summary-prepare-threads): Output ? for unknown lines.
+ (gnus-summary-insert-line): Ditto.
+ (gnus-summary-print-article): Unbalanced parentheses.
+
+ * gnus-msg.el (gnus-inews-do-gcc): Check group to allow it to find
+ out whether new stuff has arrived.
+
+2001-03-31 02:14:38 Alan Shutko <ats@acm.org>
+
+ * gnus-sum.el: Let printing work on ttys on Emacs.
+
+2001-03-31 01:11:14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-msg.el (gnus-post-news): Add an empty Newsgroups header
+ when forcing news.
+
+ * gnus-sum.el (gnus-summary-mark-article-as-replied): Make into a
+ command.
+
+2001-03-31 01:04:54 Francis Litterio <franl-removethis@world.omitthis.std.com>
+
+ * message.el (message-set-auto-save-file-name): Don't use
+ asterisks under nt.
+
+2001-03-31 00:03:42 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-msg.el (gnus-inews-insert-draft-meta-information): Allow
+ lists of articles.
+
+ * gnus-uu.el (gnus-uu-digest-mail-forward): Mark as forwarded.
+
+ * gnus-msg.el (gnus-put-message): Clean up.
+ (gnus-summary-reply): Mark all replied-to articles as replied to.
+ (gnus-inews-add-send-actions): Also mark as forwarded.
+ (gnus-summary-mail-forward): Mark as forwarded.
+
+ * gnus-sum.el (gnus-summary-mark-article-as-replied): Take a list
+ of articles.
+ (gnus-summary-mark-article-as-forwarded): Ditto.
+
+ * gnus-msg.el (gnus-summary-resend-message): Mark article as
+ forwarded.
+ (gnus-summary-mail-forward): Clean up.
+
+ * gnus.el (gnus-article-mark-lists): Added forward.
+
+ * gnus-sum.el (gnus-forwarded-mark): New variable.
+ (gnus-summary-prepare-threads): Use it.
+ (gnus-summary-update-secondary-mark): Ditto.
+ (gnus-newsgroup-forwarded): New variable.
+
+2001-03-30 23:13:37 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-msg.el (gnus-summary-reply): Allow very wide replies.
+ (gnus-summary-very-wide-reply): New command and keystroke.
+ (gnus-summary-very-wide-reply-with-original): Ditto.
+
+ * gnus-score.el (gnus-adaptive-word-length-limit): New variable.
+ (gnus-score-adaptive): Use it.
+
+ * gnus-start.el (gnus-get-unread-articles): Clean up.
+
2001-03-21 20:00:43 Lars Magne Ingebrigtsen <larsi@gnus.org>
* nnultimate.el (nnultimate-retrieve-headers): Work for other
(looking-at "[ \t]*$"))
(gnus-delete-line))))))
-(defun article-replace-with-quoted-text ()
- "Replace the entire article with the quoted text in the article."
- (interactive)
- (unless gnus-cite-prefix-alist
- (error "No quoted text in the article"))
- (gnus-summary-show-article t)
- (save-excursion
- (set-buffer gnus-article-buffer)
- (gnus-cite-parse-maybe t)
- (let ((prefix (concat "^" (caar gnus-cite-prefix-alist)))
- (buffer-read-only nil)
- (body nil))
- (dolist (line (sort (copy-sequence (cdar gnus-cite-prefix-alist)) '<))
- (save-excursion
- (set-buffer gnus-original-article-buffer)
- (goto-char (point-min))
- (forward-line (1- line))
- (push (buffer-substring (point) (progn (forward-line 1) (point)))
- body)))
- (article-goto-body)
- (forward-line -1)
- (delete-region (point) (point-max))
- (mapcar #'insert (mapcar #'string-as-unibyte (nreverse body)))
- (goto-char (point-min))
- (while (re-search-forward prefix nil t)
- (replace-match "" t t))
- (gnus-article-prepare-display))))
-
(defun article-narrow-to-head ()
"Narrow the buffer to the head of the message.
Point is left at the beginning of the narrowed-to region."
article-strip-trailing-space
article-strip-blank-lines
article-strip-all-blank-lines
- article-replace-with-quoted-text
article-date-local
article-date-english
article-date-iso8601
"R" gnus-summary-reply-with-original
"w" gnus-summary-wide-reply
"W" gnus-summary-wide-reply-with-original
+ "v" gnus-summary-very-wide-reply
+ "V" gnus-summary-very-wide-reply-with-original
"n" gnus-summary-followup-to-mail
"N" gnus-summary-followup-to-mail-with-original
"m" gnus-summary-mail-other-window
(group (make-symbol "gnus-setup-message-group")))
`(let ((,winconf (current-window-configuration))
(,buffer (buffer-name (current-buffer)))
- (,article (and gnus-article-reply (gnus-summary-article-number)))
+ (,article gnus-article-reply)
(,group gnus-newsgroup-name)
(message-header-setup-hook
(copy-sequence message-header-setup-hook))
(unwind-protect
(progn
,@forms)
- (gnus-inews-add-send-actions ,winconf ,buffer ,article)
+ (gnus-inews-add-send-actions ,winconf ,buffer ,article ,config)
(gnus-inews-insert-draft-meta-information ,group ,article)
(setq gnus-message-buffer (current-buffer))
(set (make-local-variable 'gnus-message-group-art)
(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"))))
+ (if article (number-to-string
+ (if (listp article)
+ (car article)
+ article)) "\"\"")
+ ")\n"))))
;;;###autoload
(defun gnus-msg-mail (&optional to subject other-headers continue
(symbol-value (car elem))))
(throw 'found (cons (cadr elem) (caddr elem)))))))))
-(defun gnus-inews-add-send-actions (winconf buffer article)
+(defun gnus-inews-add-send-actions (winconf buffer article &optional config)
(make-local-hook 'message-sent-hook)
(add-hook 'message-sent-hook (if gnus-agent 'gnus-agent-possibly-do-gcc
'gnus-inews-do-gcc) nil t)
(save-excursion
(set-buffer ,buffer)
,(when article
- `(gnus-summary-mark-article-as-replied ,article))))
+ (if (eq config 'forward)
+ `(gnus-summary-mark-article-as-forwarded ',article)
+ `(gnus-summary-mark-article-as-replied ',article)))))
'send))
(put 'gnus-setup-message 'lisp-indent-function 1)
force-news)
(when article-buffer
(gnus-copy-article-buffer))
- (let ((gnus-article-reply article-buffer)
+ (let ((gnus-article-reply (and article-buffer (gnus-summary-article-number)))
(add-to-list gnus-add-to-list))
(gnus-setup-message (cond (yank 'reply-yank)
(article-buffer 'reply)
(message-news (or to-group group))
(set-buffer gnus-article-copy)
(gnus-msg-treat-broken-reply-to)
- (message-followup (if (or newsgroup-p force-news) nil to-group)))
+ (message-followup (if (or newsgroup-p force-news) "" to-group)))
;; The is mail.
(if post
(progn
;;; Mail reply commands of Gnus summary mode
-(defun gnus-summary-reply (&optional yank wide)
- "Start composing a reply mail to the current message.
+(defun gnus-summary-reply (&optional yank wide very-wide)
+ "Start composing a mail reply to the current message.
If prefix argument YANK is non-nil, the original article is yanked
-automatically."
+automatically.
+If WIDE, make a wide reply.
+If VERY-WIDE, make a very wide reply."
(interactive
(list (and current-prefix-arg
(gnus-summary-work-articles 1))))
;; Stripping headers should be specified with mail-yank-ignored-headers.
(when yank
(gnus-summary-goto-subject (car yank)))
- (let ((gnus-article-reply t))
+ (let ((gnus-article-reply (or yank (gnus-summary-article-number)))
+ (headers ""))
(gnus-setup-message (if yank 'reply-yank 'reply)
- (gnus-summary-select-article)
+ (if (not very-wide)
+ (gnus-summary-select-article)
+ (dolist (article very-wide)
+ (gnus-summary-select-article nil nil nil article)
+ (save-excursion
+ (set-buffer (gnus-copy-article-buffer))
+ (gnus-msg-treat-broken-reply-to)
+ (save-restriction
+ (message-narrow-to-head)
+ (setq headers (concat headers (buffer-string)))))))
(set-buffer (gnus-copy-article-buffer))
(gnus-msg-treat-broken-reply-to)
+ (save-restriction
+ (message-narrow-to-head)
+ (when very-wide
+ (erase-buffer)
+ (insert headers))
+ (goto-char (point-max)))
(message-reply nil wide)
(when yank
(gnus-inews-yank-articles yank)))))
(interactive "P")
(gnus-summary-reply-with-original n t))
+(defun gnus-summary-very-wide-reply (&optional yank)
+ "Start composing a very wide reply mail to the current message.
+If prefix argument YANK is non-nil, the original article is yanked
+automatically."
+ (interactive
+ (list (and current-prefix-arg
+ (gnus-summary-work-articles 1))))
+ (gnus-summary-reply yank t (gnus-summary-work-articles yank)))
+
+(defun gnus-summary-very-wide-reply-with-original (n)
+ "Start composing a very wide reply mail to the current message.
+The original article will be yanked."
+ (interactive "P")
+ (gnus-summary-reply
+ (gnus-summary-work-articles n) t (gnus-summary-work-articles n)))
+
(defun gnus-summary-mail-forward (&optional full-headers post)
"Forward the current message to another user.
If FULL-HEADERS (the prefix), include full headers when forwarding."
(gnus-summary-select-article nil nil nil article)
(save-excursion
(set-buffer gnus-original-article-buffer)
- (message-resend address)))))
+ (message-resend address))
+ (gnus-summary-mark-article-as-forwarded article))))
(defun gnus-summary-post-forward (&optional full-headers)
"Forward the current article to a newsgroup.
(let ((reply gnus-article-reply)
(winconf gnus-prev-winconf)
(group gnus-newsgroup-name))
+ (unless (and group
+ (not (gnus-group-read-only-p group)))
+ (setq group (read-string "Put in group: " nil (gnus-writable-groups))))
- (or (and group (not (gnus-group-read-only-p group)))
- (setq group (read-string "Put in group: " nil
- (gnus-writable-groups))))
(when (gnus-gethash group gnus-newsrc-hashtb)
(error "No such group: %s" group))
-
(save-excursion
(save-restriction
(widen)
(message-narrow-to-headers)
- (let (gnus-deletable-headers)
- (if (message-news-p)
- (message-generate-headers message-required-news-headers)
- (message-generate-headers message-required-mail-headers)))
+ (let ((gnus-deletable-headers nil))
+ (message-generate-headers
+ (if (message-news-p)
+ message-required-news-headers
+ message-required-mail-headers)))
(goto-char (point-max))
(insert "Gcc: " group "\n")
(widen)))
-
(gnus-inews-do-gcc)
-
- (when (get-buffer gnus-group-buffer)
- (when (gnus-buffer-exists-p (car-safe reply))
- (set-buffer (car reply))
- (and (cdr reply)
- (gnus-summary-mark-article-as-replied
- (cdr reply))))
- (when winconf
- (set-window-configuration winconf)))))
+ (when (and (get-buffer gnus-group-buffer)
+ (gnus-buffer-exists-p (car-safe reply))
+ (cdr reply))
+ (set-buffer (car reply))
+ (gnus-summary-mark-article-as-replied (cdr reply)))
+ (when winconf
+ (set-window-configuration winconf))))
(defun gnus-article-mail (yank)
"Send a reply to the address near point.
(while (setq group (pop groups))
(gnus-check-server
(setq method (gnus-inews-group-method group)))
- (unless (gnus-request-group group t method)
+ (unless (gnus-request-group group nil method)
(gnus-request-create-group group method))
(save-excursion
(nnheader-set-temp-buffer " *acc*")
(symbol :tag "other"))
(integer :tag "Score"))))))
+(defcustom gnus-adaptive-word-length-limit nil
+ "*Words of a length lesser than this limit will be ignored when doing adaptive scoring."
+ :group 'gnus-score-adapt
+ :type 'integer)
+
(defcustom gnus-ignored-adaptive-words nil
"List of words to be ignored when doing adaptive word scoring."
:group 'gnus-score-adapt
which has references, but is not connected via its references to a
root article. This function finds all the orphans, and adjusts their
score in GNUS-NEWSGROUP-SCORED by SCORE."
- (let ((threads (gnus-make-threads)))
- ;; gnus-make-threads produces a list, where each entry is a "thread"
- ;; as described in the gnus-score-lower-thread docs. This function
- ;; will be called again (after limiting has been done) if the display
- ;; is threaded. It would be nice to somehow save this info and use
- ;; it later.
- (while threads
- (let* ((thread (car threads))
- (id (aref (car thread) gnus-score-index)))
- ;; If the parent of the thread is not a root, lower the score of
- ;; it and its descendants. Note that some roots seem to satisfy
- ;; (eq id nil) and some (eq id ""); not sure why.
- (if (and id (not (string= id "")))
- (gnus-score-lower-thread thread score)))
- (setq threads (cdr threads)))))
+ ;; gnus-make-threads produces a list, where each entry is a "thread"
+ ;; as described in the gnus-score-lower-thread docs. This function
+ ;; will be called again (after limiting has been done) if the display
+ ;; is threaded. It would be nice to somehow save this info and use
+ ;; it later.
+ (dolist (thread (gnus-make-threads))
+ (let ((id (aref (car thread) gnus-score-index)))
+ ;; If the parent of the thread is not a root, lower the score of
+ ;; it and its descendants. Note that some roots seem to satisfy
+ ;; (eq id nil) and some (eq id ""); not sure why.
+ (when (and id
+ (not (string= id "")))
+ (gnus-score-lower-thread thread score)))))
(defun gnus-score-integer (scores header now expire &optional trace)
(let ((gnus-score-index (nth 1 (assoc header gnus-header-index)))
;; Put the word and score into the hashtb.
(setq val (gnus-gethash (setq word (match-string 0))
hashtb))
- (setq val (+ score (or val 0)))
- (if (and gnus-adaptive-word-minimum
- (< val gnus-adaptive-word-minimum))
- (setq val gnus-adaptive-word-minimum))
- (gnus-sethash word val hashtb))
+ (when (or (not gnus-adaptive-word-length-limit)
+ (> (length word)
+ gnus-adaptive-word-length-limit))
+ (setq val (+ score (or val 0)))
+ (if (and gnus-adaptive-word-minimum
+ (< val gnus-adaptive-word-minimum))
+ (setq val gnus-adaptive-word-minimum))
+ (gnus-sethash word val hashtb)))
(erase-buffer))))
(set-syntax-table syntab))
;; Make all the ignorable words ignored.
(defun gnus-server-close-all-servers ()
"Close all servers."
(interactive)
- (let ((servers gnus-inserted-opened-servers))
- (while servers
- (gnus-server-close-server (car (pop servers))))))
+ (dolist (server gnus-inserted-opened-servers)
+ (gnus-server-close-server (car server))))
(defun gnus-server-deny-server (server)
"Make sure SERVER will never be attempted opened."
(defun gnus-server-remove-denials ()
"Make all denied servers into closed servers."
(interactive)
- (let ((servers gnus-opened-servers))
- (while servers
- (when (eq (nth 1 (car servers)) 'denied)
- (setcar (nthcdr 1 (car servers)) 'closed))
- (setq servers (cdr servers))))
+ (dolist (server gnus-opened-servers)
+ (when (eq (nth 1 server) 'denied)
+ (setcar (nthcdr 1 server) 'closed)))
(gnus-server-list-servers))
(defun gnus-server-copy-server (from to)
(setq variables (cdr variables))))
(setq files (cdr files)))))
+(defun gnus-close-all-servers ()
+ "Close all servers."
+ (interactive)
+ (dolist (server gnus-opened-servers)
+ (gnus-close-server (car server))))
+
(defun gnus-clear-system ()
"Clear all variables and buffers."
;; Clear gnus variables.
gnus-activate-foreign-newsgroups)
(t 0))
level))
- scanned-methods info group active method retrievegroups)
+ scanned-methods info group active method retrieve-groups)
(gnus-message 5 "Checking new news...")
(while newsrc
(if (gnus-check-backend-function 'retrieve-groups group)
;; if server support gnus-retrieve-groups we push
;; the group onto retrievegroups for later checking
- (if (assoc method retrievegroups)
- (setcdr (assoc method retrievegroups)
- (cons group (cdr (assoc method retrievegroups))))
- (push (list method group) retrievegroups))
+ (if (assoc method retrieve-groups)
+ (setcdr (assoc method retrieve-groups)
+ (cons group (cdr (assoc method retrieve-groups))))
+ (push (list method group) retrieve-groups))
;; hack: `nnmail-get-new-mail' changes the mail-source depending
;; on the group, so we must perform a scan for every group
;; if the users has any directory mail sources.
;; unread articles and stuff.
(gnus-set-active group nil)
(let ((tmp (gnus-gethash group gnus-newsrc-hashtb)))
- (if tmp (setcar tmp t))))))
+ (when tmp
+ (setcar tmp t))))))
;; iterate through groups on methods which support gnus-retrieve-groups
;; and fetch a partial active file and use it to find new news.
- (while retrievegroups
- (let* ((mg (pop retrievegroups))
- (method (or (car mg) gnus-select-method))
- (groups (cdr mg)))
+ (dolist (rg retrieve-groups)
+ (let ((method (or (car rg) gnus-select-method))
+ (groups (cdr rg)))
(when (gnus-check-server method)
;; Request that the backend scan its incoming messages.
(when (gnus-check-backend-function 'request-scan (car method))
(gnus-request-scan nil method))
- (gnus-read-active-file-2 (mapcar (lambda (group)
- (gnus-group-real-name group))
- groups) method)
+ (gnus-read-active-file-2
+ (mapcar (lambda (group) (gnus-group-real-name group)) groups)
+ method)
(dolist (group groups)
(cond
((setq active (gnus-active (gnus-info-group
:type 'character)
(defcustom gnus-souped-mark ?F
- "*Mark used for killed articles."
+ "*Mark used for souped articles."
:group 'gnus-summary-marks
:type 'character)
:group 'gnus-summary-marks
:type 'character)
+(defcustom gnus-forwarded-mark ?O
+ "*Mark used for articles that have been forwarded."
+ :group 'gnus-summary-marks
+ :type 'character)
+
(defcustom gnus-cached-mark ?*
"*Mark used for articles that are in the cache."
:group 'gnus-summary-marks
(?M ,(macroexpand '(mail-header-id gnus-tmp-header)) ?s)
(?r ,(macroexpand '(mail-header-references gnus-tmp-header)) ?s)
(?c (or (mail-header-chars gnus-tmp-header) 0) ?d)
- (?L gnus-tmp-lines ?d)
+ (?L gnus-tmp-lines ?s)
(?I gnus-tmp-indentation ?s)
(?T (if (= gnus-tmp-level 0) "" (make-string (frame-width) ? )) ?s)
(?R gnus-tmp-replied ?c)
(defvar gnus-newsgroup-replied nil
"List of articles that have been replied to in the current newsgroup.")
+(defvar gnus-newsgroup-forwarded nil
+ "List of articles that have been forwarded in the current newsgroup.")
+
(defvar gnus-newsgroup-expirable nil
"List of articles in the current newsgroup that can be expired.")
gnus-newsgroup-auto-expire gnus-newsgroup-unreads
gnus-newsgroup-unselected gnus-newsgroup-marked
gnus-newsgroup-reads gnus-newsgroup-saved
- gnus-newsgroup-replied gnus-newsgroup-expirable
+ gnus-newsgroup-replied gnus-newsgroup-forwarded
+ gnus-newsgroup-expirable
gnus-newsgroup-processable gnus-newsgroup-killed
gnus-newsgroup-downloadable gnus-newsgroup-undownloaded
gnus-newsgroup-unsendable
"\C-c\C-s\C-s" gnus-summary-sort-by-subject
"\C-c\C-s\C-d" gnus-summary-sort-by-date
"\C-c\C-s\C-i" gnus-summary-sort-by-score
+ "\C-c\C-s\C-o" gnus-summary-sort-by-original
"=" gnus-summary-expand-window
"\C-x\C-s" gnus-summary-reselect-current-group
"\M-g" gnus-summary-rescan-group
["Sort by date" gnus-summary-sort-by-date t]
["Sort by score" gnus-summary-sort-by-score t]
["Sort by lines" gnus-summary-sort-by-lines t]
- ["Sort by characters" gnus-summary-sort-by-chars t])
+ ["Sort by characters" gnus-summary-sort-by-chars t]
+ ["Original sort" gnus-summary-sort-by-original t])
("Help"
["Fetch group FAQ" gnus-summary-fetch-faq t]
["Describe group" gnus-summary-describe-group t]
(when (string= gnus-tmp-name "")
(setq gnus-tmp-name gnus-tmp-from))
(unless (numberp gnus-tmp-lines)
- (setq gnus-tmp-lines 0))
+ (setq gnus-tmp-lines -1))
+ (when (= gnus-tmp-lines -1)
+ (setq gnus-tmp-lines "?"))
(gnus-put-text-property-excluding-characters-with-faces
(point)
(progn (eval gnus-summary-line-format-spec) (point))
gnus-cached-mark)
((memq number gnus-newsgroup-replied)
gnus-replied-mark)
+ ((memq number gnus-newsgroup-forwarded)
+ gnus-forwarded-mark)
((memq number gnus-newsgroup-saved)
gnus-saved-mark)
(t gnus-no-mark))
(when (string= gnus-tmp-name "")
(setq gnus-tmp-name gnus-tmp-from))
(unless (numberp gnus-tmp-lines)
- (setq gnus-tmp-lines 0))
+ (setq gnus-tmp-lines -1))
+ (when (= gnus-tmp-lines -1)
+ (setq gnus-tmp-lines "?"))
(gnus-put-text-property
(point)
(progn (eval gnus-summary-line-format-spec) (point))
(goto-char p)
(if (search-forward "\nchars: " nil t)
(if (numberp (setq chars (ignore-errors (read cur))))
- chars 0)
- 0))
+ chars -1)
+ -1))
;; Lines.
(progn
(goto-char p)
(if (search-forward "\nlines: " nil t)
(if (numberp (setq lines (ignore-errors (read cur))))
- lines 0)
- 0))
+ lines -1)
+ -1))
;; Xref.
(progn
(goto-char p)
(setq gnus-article-current nil))
(set-buffer buf)
(if (not gnus-kill-summary-on-exit)
- (gnus-deaden-summary)
+ (progn
+ (gnus-deaden-summary)
+ (setq mode nil))
;; We set all buffer-local variables to nil. It is unclear why
;; this is needed, but if we don't, buffer-local variables are
;; not garbage-collected, it seems. This would the lead to en
(set-buffer gnus-group-buffer)
(gnus-summary-clear-local-variables)
(let ((gnus-summary-local-variables gnus-newsgroup-variables))
- (gnus-summary-clear-local-variables))
- ;; Return to group mode buffer.
- (when (eq mode 'gnus-summary-mode)
- (gnus-kill-buffer buf)))
+ (gnus-summary-clear-local-variables)))
(setq gnus-current-select-method gnus-select-method)
(pop-to-buffer gnus-group-buffer)
(if (not quit-config)
(set-window-start (selected-window) (point))
(goto-char group-point)))
(gnus-handle-ephemeral-exit quit-config))
+ ;; Return to group mode buffer.
+ (when (eq mode 'gnus-summary-mode)
+ (gnus-kill-buffer buf))
;; Clear the current group name.
(unless quit-config
(setq gnus-newsgroup-name nil)))))
(mail-header-date gnus-current-headers) ")"))))
(gnus-run-hooks 'gnus-ps-print-hook)
(save-excursion
- (ps-spool-buffer-with-faces))))
+ (if window-system
+ (ps-spool-buffer-with-faces)
+ (ps-spool-buffer)))))
(kill-buffer buffer))))
(gnus-summary-remove-process-mark article))
(ps-despool filename))
(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))
+ (if (memq type '(processable cached replied forwarded saved))
(gnus-summary-update-secondary-mark article)
;;; !!! This is bobus. We should find out what primary
;;; !!! mark we want to set.
(gnus-summary-mark-forward n gnus-expirable-mark))
(defun gnus-summary-mark-article-as-replied (article)
- "Mark ARTICLE replied and update the summary line."
- (push article gnus-newsgroup-replied)
- (let ((buffer-read-only nil))
- (when (gnus-summary-goto-subject article nil t)
- (gnus-summary-update-secondary-mark article))))
+ "Mark ARTICLE as replied to and update the summary line.
+ARTICLE can also be a list of articles."
+ (interactive (list (gnus-summary-article-number)))
+ (let ((articles (if (listp article) article (list article))))
+ (dolist (article articles)
+ (push article gnus-newsgroup-replied)
+ (let ((buffer-read-only nil))
+ (when (gnus-summary-goto-subject article nil t)
+ (gnus-summary-update-secondary-mark article))))))
+
+(defun gnus-summary-mark-article-as-forwarded (article)
+ "Mark ARTICLE as forwarded and update the summary line.
+ARTICLE can also be a list of articles."
+ (let ((articles (if (listp article) article (list article))))
+ (dolist (article articles)
+ (push article gnus-newsgroup-forwarded)
+ (let ((buffer-read-only nil))
+ (when (gnus-summary-goto-subject article nil t)
+ (gnus-summary-update-secondary-mark article))))))
(defun gnus-summary-set-bookmark (article)
"Set a bookmark in current article."
gnus-cached-mark)
((memq article gnus-newsgroup-replied)
gnus-replied-mark)
+ ((memq article gnus-newsgroup-forwarded)
+ gnus-forwarded-mark)
((memq article gnus-newsgroup-saved)
gnus-saved-mark)
(t gnus-no-mark))
(defun gnus-summary-catchup-and-exit (&optional all quietly)
"Mark all unread articles in this group as read, then exit.
-If prefix argument ALL is non-nil, all articles are marked as read."
+If prefix argument ALL is non-nil, all articles are marked as read.
+If QUIETLY is non-nil, no questions will be asked."
(interactive "P")
(when (gnus-summary-catchup all quietly nil 'fast)
;; Select next newsgroup or exit.
(defun gnus-summary-up-thread (n)
"Go up thread N steps.
-If N is negative, go up instead.
+If N is negative, go down instead.
Returns the difference between N and how many steps down that were
taken."
(interactive "p")
(interactive "P")
(gnus-summary-sort 'chars reverse))
+(defun gnus-summary-sort-by-original (&optional reverse)
+ "Sort the summary buffer using the default sorting method.
+Argument REVERSE means reverse order."
+ (interactive "P")
+ (let* ((buffer-read-only)
+ (gnus-summary-prepare-hook nil))
+ ;; We do the sorting by regenerating the threads.
+ (gnus-summary-prepare)
+ ;; Hide subthreads if needed.
+ (when (and gnus-show-threads gnus-thread-hide-subtree)
+ (gnus-summary-hide-all-threads))))
+
(defun gnus-summary-sort (predicate reverse)
"Sort summary buffer by PREDICATE. REVERSE means reverse order."
(let* ((thread (intern (format "gnus-thread-sort-by-%s" predicate)))
(pop list))
(nreverse out)))
-(defun gnus-delete-alist (key alist)
- "Delete all entries in ALIST that have a key eq to KEY."
- (let (entry)
- (while (setq entry (assq key alist))
- (setq alist (delq entry alist)))
- alist))
+(if (fboundp 'assq-delete-all)
+ (defalias 'gnus-delete-alist 'assq-delete-all)
+ (defun gnus-delete-alist (key alist)
+ "Delete from ALIST all elements whose car is KEY.
+Return the modified alist."
+ (let (entry)
+ (while (setq entry (assq key alist))
+ (setq alist (delq entry alist)))
+ alist)))
(defmacro gnus-pull (key alist &optional assoc-p)
"Modify ALIST to be without KEY."
(interactive "P")
(let ((gnus-uu-save-in-digest t)
(file (make-temp-name (nnheader-concat gnus-uu-tmp-dir "forward")))
+ (message-forward-as-mime message-forward-as-mime)
+ (mail-parse-charset gnus-newsgroup-charset)
+ (mail-parse-ignored-charsets gnus-newsgroup-ignored-charsets)
gnus-uu-digest-buffer subject from)
- (gnus-setup-message 'forward
- (setq gnus-uu-digest-from-subject nil)
- (setq gnus-uu-digest-buffer
- (gnus-get-buffer-create " *gnus-uu-forward*"))
- (gnus-uu-decode-save n file)
- (set-buffer gnus-uu-digest-buffer)
- (let ((fs gnus-uu-digest-from-subject))
- (when fs
- (setq from (caar fs)
- subject (gnus-simplify-subject-fuzzy (cdar fs))
- fs (cdr fs))
- (while (and fs (or from subject))
- (when from
- (unless (string= from (caar fs))
- (setq from nil)))
- (when subject
- (unless (string= (gnus-simplify-subject-fuzzy (cdar fs))
- subject)
- (setq subject nil)))
- (setq fs (cdr fs))))
- (unless subject
- (setq subject "Digested Articles"))
- (unless from
- (setq from
- (if (gnus-news-group-p gnus-newsgroup-name)
- gnus-newsgroup-name
- "Various"))))
- (mime-edit-enclose-digest-region (point-min) (point-max))
- (if post
- (message-news nil (concat "[" from "] " subject))
- (message-mail nil (concat "[" from "] " subject)))
- (message-goto-body)
- ;; Make sure we're at the start of the line.
- (unless (bolp)
- (insert "\n"))
- ;; Insert the forwarded buffer.
- (insert-buffer gnus-uu-digest-buffer)
- (kill-buffer gnus-uu-digest-buffer)
- (set-text-properties (point-min) (point-max) nil)
- (message-position-point))
+ (if (and n (not (numberp n)))
+ (setq message-forward-as-mime (not message-forward-as-mime)
+ n nil))
+ (let ((gnus-article-reply (gnus-summary-work-articles n)))
+ (gnus-setup-message 'forward
+ (setq gnus-uu-digest-from-subject nil)
+ (setq gnus-uu-digest-buffer
+ (gnus-get-buffer-create " *gnus-uu-forward*"))
+ (gnus-uu-decode-save n file)
+ (switch-to-buffer gnus-uu-digest-buffer)
+ (let ((fs gnus-uu-digest-from-subject))
+ (when fs
+ (setq from (caar fs)
+ subject (gnus-simplify-subject-fuzzy (cdar fs))
+ fs (cdr fs))
+ (while (and fs (or from subject))
+ (when from
+ (unless (string= from (caar fs))
+ (setq from nil)))
+ (when subject
+ (unless (string= (gnus-simplify-subject-fuzzy (cdar fs))
+ subject)
+ (setq subject nil)))
+ (setq fs (cdr fs))))
+ (unless subject
+ (setq subject "Digested Articles"))
+ (unless from
+ (setq from
+ (if (gnus-news-group-p gnus-newsgroup-name)
+ gnus-newsgroup-name
+ "Various"))))
+ (goto-char (point-min))
+ (when (re-search-forward "^Subject: ")
+ (delete-region (point) (gnus-point-at-eol))
+ (insert subject))
+ (goto-char (point-min))
+ (when (re-search-forward "^From:")
+ (delete-region (point) (gnus-point-at-eol))
+ (insert " " from))
+ (let ((message-forward-decoded-p t))
+ (message-forward post))))
(setq gnus-uu-digest-from-subject nil)))
(defun gnus-uu-digest-post-forward (&optional n)
(if (featurep 'xemacs)
(switch-to-buffer nntp-server-buffer)
(set-buffer nntp-server-buffer)))
- (mapcar (lambda (b) (delete-windows-on b t)) bufs))))
+ (mapcar (lambda (b) (delete-windows-on b t))
+ (delq lowest-buf bufs)))))
(provide 'gnus-win)
(bookmarks . bookmark) (dormant . dormant)
(scored . score) (saved . save)
(cached . cache) (downloadable . download)
- (unsendable . unsend)))
+ (unsendable . unsend) (forwarded . forward)))
(defvar gnus-headers-retrieved-by nil)
(defvar gnus-article-reply nil)
out)
(cond
((= c ?r)
- (push (if (< (point) (mark) (point) (mark))) out)
- (push (if (> (point) (mark) (point) (mark))) out))))
+ (push (if (< (point) (mark)) (point) (mark)) out)
+ (push (if (> (point) (mark)) (point) (mark)) out))))
(setq out (delq 'gnus-prefix-nil out))
(nreverse out)))
(list (intern server) "")))
gnus-select-method))
+(defun gnus-server-string (server)
+ "Return a readable string that describes SERVER."
+ (let* ((server (gnus-server-to-method server))
+ (address (nth 1 server)))
+ (if (and address
+ (not (zerop (length address))))
+ (format "%s via %s" address (car server))
+ (format "%s" (car server)))))
+
(defun gnus-find-method-for-group (group &optional info)
"Find the select method that GROUP uses."
(or gnus-override-method
(autoload 'gnus-request-post "gnus-int")
(autoload 'gnus-copy-article-buffer "gnus-msg")
(autoload 'gnus-alive-p "gnus-util")
+ (autoload 'gnus-server-string "gnus")
(autoload 'gnus-group-name-charset "gnus-group")
(autoload 'rmail-output "rmailout")
(autoload 'mu-cite-original "mu-cite"))
(backward-char 1)
(run-hooks 'message-send-news-hook)
(gnus-open-server method)
+ (message "Sending news with %s..." (gnus-server-string method))
(gnus-request-post method)
))
(if (gnus-alive-p)
(setq message-draft-article
(nndraft-request-associate-buffer "drafts"))
- (setq buffer-file-name (expand-file-name "*message*"
- message-auto-save-directory))
+ (setq buffer-file-name (expand-file-name
+ (if (eq system-type 'windows-nt)
+ "message"
+ "*message*")
+ message-auto-save-directory))
(setq buffer-auto-save-file-name (make-auto-save-file-name)))
(clear-visited-file-modtime)
(static-if (boundp 'MULE)
:type '(repeat string)
:group 'mime-display)
-(defvar mm-tmp-directory
+(defcustom mm-tmp-directory
(cond ((fboundp 'temp-directory) (temp-directory))
((boundp 'temporary-file-directory) temporary-file-directory)
("/tmp/"))
- "Where mm will store its temporary files.")
+ "Where mm will store its temporary files."
+ :type 'directory
+ :group 'mime-display)
(defcustom mm-inline-large-images nil
"If non-nil, then all images fit in the buffer."
:type 'boolean
:group 'mime-display)
+(defcustom mm-default-directory nil
+ "The default directory where mm will save files.
+If not set, `default-directory' will be used."
+ :type 'directory
+ :group 'mime-display)
+
;;; Internal variables.
(defvar mm-dissection-list nil)
(set-buffer cur)
(insert-buffer-substring temp)))))))
-(defvar mm-default-directory nil)
-
(defun mm-save-part (handle)
"Write HANDLE to a file."
(let* ((name (mail-content-type-get (mm-handle-type handle) 'name))
;; (backward-char))
))
(t
- (error "Malformed quoted-printable text")
+ (message "Malformed quoted-printable text")
(forward-char)))))
(if coding-system
(mm-decode-coding-region (point-min) (point-max) coding-system)))))
;; uncomment and edit the following line appropriately.
;; "/usr/local/share/mule/site-lisp/w3/"
)))
- ;; No user servicable parts beyond this point.
+ ;; No user serviceable parts beyond this point.
\f
(let ((i (length additional-load-path))
p)
+2001-04-01 00:32:46 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (S): Renamed.
+ (Summary Sorting): Addition.
+
+2001-03-31 00:40:44 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Other Marks): Additon.
+ (The End): Remove "The" from menus.
+
+2001-03-30 23:34:02 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Adaptive Scoring): Addition.
+ (Summary Mail Commands): Addition.
+
2001-03-17 Matthias Wiehl <mwiehl@gmx.de>
* message.texi (Security): Typos.
@menu
* Starting Up:: \e$B%K%e!<%9$r8+$D$1$k$N$K$O6lO+$,H<$&$+$bCN$l$J$$\e(B
-* The Group Buffer:: \e$B%0%k!<%W$rA*Br$7!"9XFI$7!":o=|$9$k\e(B
-* The Summary Buffer:: \e$B5-;v$rFI$_!"J]B8$7!"Ej9F$9$k\e(B
-* The Article Buffer:: \e$B5-;v$rI=<($7!"07$&\e(B
+* Group Buffer:: \e$B%0%k!<%W$rA*Br$7!"9XFI$7!":o=|$9$k\e(B
+* Summary Buffer:: \e$B5-;v$rFI$_!"J]B8$7!"Ej9F$9$k\e(B
+* Article Buffer:: \e$B5-;v$rI=<($7!"07$&\e(B
* Composing Messages:: \e$B%a!<%k$H%K%e!<%9$rAw$k$?$a$N>pJs\e(B
* Select Methods:: Gnus \e$B$OA4$F$N%a%C%;!<%8$r$$$m$$$m$JA*BrJ}K!$GFI$`\e(B
* Scoring:: \e$B5-;v$KCM$r$D$1$k\e(B
* Marking Articles:: \e$B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1$k\e(B
* Limiting:: \e$B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k\e(B
* Threading:: \e$B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+\e(B
-* Sorting:: \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k$+\e(B
+* Sorting the Summary Buffer:: \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k$+\e(B
* Asynchronous Fetching:: Gnus \e$B$O5-;v$r@h$K<hF@$9$k$3$H$,$G$-$k\e(B
* Article Caching:: \e$B%-%c%C%7%e$K5-;v$rCy$a$F$*$1$k\e(B
* Persistent Articles:: \e$B5-;v$r4|8B@Z$l>C5n$7$J$/$5$;$k\e(B
Select Methods
-* The Server Buffer:: \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\e(B
+* Server Buffer:: \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\e(B
* Getting News:: USENET \e$B%K%e!<%9$r\e(B gnus \e$B$GFI$`\e(B
* Getting Mail:: \e$B8D?ME*$J%a!<%k$r\e(B gnus \e$B$GFI$`\e(B
* Browsing the Web:: \e$B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r<hF@$9$k\e(B
Agent Categories
-* Category Syntax:: \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
-* The Category Buffer:: \e$BJ,N`$r4IM}$9$k%P%C%U%!!<\e(B
-* Category Variables:: \e$B%+%9%?%^%$%6\e(B"\e$B$i\e(B"\e$B%9\e(B
+* Category Syntax:: \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
+* Category Buffer:: \e$BJ,N`$r4IM}$9$k%P%C%U%!!<\e(B
+* Category Variables:: \e$B%+%9%?%^%$%6\e(B"\e$B$i\e(B"\e$B%9\e(B
Agent Commands
@end table
-@node The Group Buffer
+@node Group Buffer
@chapter \e$B%0%k!<%W%P%C%U%!\e(B
@cindex group buffer
@kindex ^ (Group)
@findex gnus-group-enter-server-mode
\e$B%5!<%P%P%C%U%!%b!<%I$KF~$k\e(B (@code{gnus-group-enter-server-mode})\e$B!#\e(B
-@xref{The Server Buffer}\e$B!#\e(B
+@xref{Server Buffer}\e$B!#\e(B
@item a
@kindex a (Group)
@end table
-@node The Summary Buffer
+@node Summary Buffer
@chapter \e$B35N,%P%C%U%!\e(B
@cindex summary buffer
* Marking Articles:: \e$B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1$k\e(B
* Limiting:: \e$B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k\e(B
* Threading:: \e$B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+\e(B
-* Sorting:: \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k$+\e(B
+* Sorting the Summary Buffer:: \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k$+\e(B
* Asynchronous Fetching:: Gnus \e$B$O5-;v$r@h$K<hF@$9$k$3$H$,$G$-$k\e(B
* Article Caching:: \e$B%-%c%C%7%e$K5-;v$rCy$a$F$*$1$k\e(B
* Persistent Articles:: \e$B5-;v$r4|8B@Z$l>C5n$7$J$/$5$;$k\e(B
\e$B$9\e(B (@code{gnus-summary-wide-reply-with-original})\e$B!#$3$NL?Na$O%W%m%;%9\e(B/\e$B@\\e(B
\e$BF,0z?t$N=,47$r;H$$$^$9!#\e(B
+@item S v
+@kindex S v (Summary)
+@findex gnus-summary-very-wide-reply
+\e$B8=:_$N5-;v$r=q$$$??M$KBP$7$F!"Hs>o$K9-$$JVEz\e(B (very wide reply) \e$B$r$7$^\e(B
+\e$B$9\e(B (@code{gnus-summary-very-wide-reply})\e$B!#\e(B@dfn{\e$BHs>o$K9-$$JVEz\e(B} \e$B$H$O!"%W\e(B
+\e$B%m%;%9\e(B/\e$B@\F,0z?t$G;XDj$5$l$?$9$Y$F$N5-;v$N%X%C%@!<$N\e(B @code{To},
+@code{From}, (\e$B$b$7$/$O\e(B @code{Reply-to}) \e$B$H\e(B @code{Cc}) \e$B$N$9$Y$F$N?M$KJVEz\e(B
+\e$B$r$9$k$3$H$G$9!#$3$NL?Na$O%W%m%;%9\e(B/\e$B@\F,0z?t$N=,47$r;H$$$^$9!#\e(B
+
+@item S V
+@kindex S V (Summary)
+@findex gnus-summary-very-wide-reply-with-original
+\e$B8=:_$N5-;v$KK\5-;v$r4^$s$@Hs>o$K9-$$JVEz$N%a!<%k$rAw$j$^\e(B
+\e$B$9\e(B (@code{gnus-summary-very-wide-reply-with-original})\e$B!#$3$NL?Na$O%W%m%;\e(B
+\e$B%9\e(B/\e$B@\F,0z?t$N=,47$r;H$$$^$9!#\e(B
+
@item S o m
@itemx C-c C-f
@kindex S o m (\e$B35N,\e(B)
\e$BJVEz$r$7$?$+!"%U%)%m!<%"%C%W$r$7$?\e(B (\e$BNc$($P!"Ez$($?\e(B) \e$B5-;v$O$9$Y$FFs7eL\\e(B
\e$B$K\e(B @samp{A} \e$B$N0u$,$D$-$^$9\e(B (@code{gnus-replied-mark})\e$B!#\e(B
+@vindex gnus-forwarded-mark
+\e$BE>Aw$7$?5-;v$O$9$Y$FFs7eL\$K\e(B @samp{O} \e$B$N0u$,$D$-$^\e(B
+\e$B$9\e(B (@code{gnus-forwarded-mark})\e$B!#\e(B
+
@item
@vindex gnus-cached-mark
\e$B5-;v%-%c%C%7%e$KCy$a$i$l$F$$$k5-;v$OFs7eL\$K\e(B @samp{*} \e$B$N0u$,$D$-$^\e(B
\e$B9T$7$F$$$k$H$-$KI=Bj$OL5;k$5$l$^$9!#$3$NJQ?t$,\e(B @code{fuzzy} \e$B$G$"$k$H!"$"\e(B
\e$B$$$^$$$KEy$7$$I=Bj$r;}$D5-;v$@$1$,4^$^$l$^$9\e(B (@pxref{Fuzzy Matching})\e$B!#\e(B
-@node Sorting
+@node Sorting the Summary Buffer
@section \e$BJB$SBX$(\e(B
@findex gnus-thread-sort-by-total-score
@kindex C-c C-s C-i (\e$B35N,\e(B)
@findex gnus-summary-sort-by-score
\e$B%9%3%"$K$h$C$FJB$SBX$($^$9\e(B (@code{gnus-summary-sort-by-score})\e$B!#\e(B
+
+@item C-c C-s C-o
+@kindex C-c C-s C-o (Summary)
+@findex gnus-summary-sort-by-original
+\e$B%G%#%U%)%k%H$NJ}K!$GJB$SBX$($^$9\e(B (@code{gnus-summary-sort-by-original})\e$B!#\e(B
@end table
\e$B$3$l$i$N4X?t$O%9%l%C%I$r;H$C$F$$$k$H$-$H;H$C$F$$$J$$$H$-$NN>J}$GF0:n$7$^\e(B
@end table
@end ignore
-@node The Article Buffer
+@node Article Buffer
@chapter \e$B5-;v%P%C%U%!\e(B
@cindex article buffer
\e$BA*BrJ}K!$O\e(B @dfn{\e$B;v<B>e$N%5!<%P!<\e(B} \e$B$rDj5A$9$k$H8@$&$3$H$,$G$-$k$+$b$7$l$^\e(B
\e$B$;$s\e(B---\e$B$G$9$+$i;d$?$A$O$A$g$&$I$=$l$r$7$^$7\e(B
-\e$B$?\e(B (@pxref{The Server Buffer})\e$B!#\e(B
+\e$B$?\e(B (@pxref{Server Buffer})\e$B!#\e(B
\e$B%0%k!<%W$N\e(B @dfn{\e$BL>A0\e(B} \e$B$O%P%C%/%(%s%I$,%0%k!<%W$rG'<1$9$kL>A0$G$9!#\e(B
\e$B$b$A$m$s!"0c$C$?J}K!$OA4$F$=$lFCM-$N$b$N$,$"$j$^$9!#\e(B
@menu
-* The Server Buffer:: \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\e(B
-* Getting News:: USENET \e$B%K%e!<%9$r\e(B gnus \e$B$GFI$`\e(B
-* Getting Mail:: \e$B8D?ME*$J%a!<%k$r\e(B gnus \e$B$GFI$`\e(B
-* Browsing the Web:: \e$B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r<hF@$9$k\e(B
-* Other Sources:: \e$B%G%#%l%/%H%j!<!"%U%!%$%k!"\e(BSOUP \e$B%Q%1%C%H$rFI$`\e(B
-* Combined Groups:: \e$BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k\e(B
-* Gnus Unplugged:: \e$B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`\e(B
+* Server Buffer:: \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\e(B
+* Getting News:: USENET \e$B%K%e!<%9$r\e(B gnus \e$B$GFI$`\e(B
+* Getting Mail:: \e$B8D?ME*$J%a!<%k$r\e(B gnus \e$B$GFI$`\e(B
+* Browsing the Web:: \e$B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r<hF@$9$k\e(B
+* Other Sources:: \e$B%G%#%l%/%H%j!<!"%U%!%$%k!"\e(BSOUP \e$B%Q%1%C%H$rFI$`\e(B
+* Combined Groups:: \e$BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k\e(B
+* Gnus Unplugged:: \e$B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`\e(B
@end menu
-@node The Server Buffer
+@node Server Buffer
@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$=$l$G!"0l;~E*$K$=$N%^%7%s$N5!7y$,0-$$$@$1$@$H2?$,5/$3$k$N$G$7$g$&\e(B? \e$B$I$&\e(B
\e$B$d$C$F%^%7%s$,La$C$F$-$F$$$k$+$I$&$+$C$r:F$SD4$Y$k;v$,$G$-$k$G$N$7$g$&\e(B?
-\e$B%5!<%P!<%P%C%U%!$KHt$S0\$C$F\e(B (@pxref{The Server Buffer})\e$B!"0J2<$NL?Na$G\e(B
-\e$B$D$D$/$@$1$G$G$-$^$9\e(B:
+\e$B%5!<%P!<%P%C%U%!$KHt$S0\$C$F\e(B (@pxref{Server Buffer})\e$B!"0J2<$NL?Na$G$D$D$/\e(B
+\e$B$@$1$G$G$-$^$9\e(B:
@table @kbd
\e$B@.$H4IM}$N$?$a$NFH<+$N%P%C%U%!!<$r;}$C$F$$$^$9!#\e(B
@menu
-* Category Syntax:: \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
-* The Category Buffer:: \e$BJ,N`$r4IM}$9$k%P%C%U%!!<\e(B
-* Category Variables:: \e$B%+%9%?%^%$%6\e(B"\e$B$i\e(B"\e$B%9\e(B
+* Category Syntax:: \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
+* Category Buffer:: \e$BJ,N`$r4IM}$9$k%P%C%U%!!<\e(B
+* Category Variables:: \e$B%+%9%?%^%$%6\e(B"\e$B$i\e(B"\e$B%9\e(B
@end menu
@node Category Syntax
@end itemize
@end enumerate
-@node The Category Buffer
+@node Category Buffer
@subsubsection \e$BJ,N`%P%C%U%!!<\e(B
\e$BDL>o$OA4$F$NJ,N`$OJ,N`%P%C%U%!!<$+$i4IM}$7$^$9!#\e(B(\e$B%0%k!<%W%P%C%U%!!<\e(B
\e$B$l$^$9!#L5;k$7$?$$C18l$rDI2C$7$?$$$H$-$O!"$3$NJQ?t$G$O$J\e(B
\e$B$/\e(B @code{gnus-ignored-adaptive-words} \e$B%j%9%H$NJ}$r;H$C$F$/$@$5$$!#\e(B
+@vindex gnus-adaptive-word-length-limit
+\e$BC;$$C18l$G$OE,1~@-%9%3%"$r:nF0$5$;$k$Y$-$G$O$J$$$H;W$&?M$b$$$k$G$7$g$&!#\e(B
+\e$B$b$7$=$&$J$i\e(B @code{gnus-adaptive-word-length-limit} \e$B$K@0?t$r@_Dj$9$k$3$H\e(B
+\e$B$,$G$-!"$3$N?tCM$h$jC;$$C18l$OL5;k$5$l$^$9!#$3$NJQ?t$N=i4|@_DjCM\e(B
+\e$B$O\e(B @code{nil} \e$B$G$9!#\e(B
+
@vindex gnus-adaptive-word-syntax-table
\e$B%9%3%"IU$1$,=*N;$7$?$H$-!"\e(B@code{gnus-adaptive-word-syntax-table} \e$B$NJ8K!\e(B
\e$BI=$,$=$N1F6A$r<u$1$^$9!#$3$l$OI8=`$NJ8K!I=$H;w$F$$$^$9$,!"C18l$N9=@.MWAG\e(B
@menu
* Starting Up:: Finding news can be a pain.
-* The Group Buffer:: Selecting, subscribing and killing groups.
-* The Summary Buffer:: Reading, saving and posting articles.
-* The Article Buffer:: Displaying and handling articles.
+* Group Buffer:: Selecting, subscribing and killing groups.
+* Summary Buffer:: Reading, saving and posting articles.
+* Article Buffer:: Displaying and handling articles.
* Composing Messages:: Information on sending mail and news.
* Select Methods:: Gnus reads all messages from various select methods.
* Scoring:: Assigning values to articles.
* Marking Articles:: Marking articles as read, expirable, etc.
* Limiting:: You can limit the summary buffer.
* Threading:: How threads are made.
-* Sorting:: How articles and threads are sorted.
+* Sorting the Summary Buffer:: How articles and threads are sorted.
* Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
* Article Caching:: You may store articles in a cache.
* Persistent Articles:: Making articles expiry-resistant.
Select Methods
-* The Server Buffer:: Making and editing virtual servers.
+* Server Buffer:: Making and editing virtual servers.
* Getting News:: Reading USENET news with Gnus.
* Getting Mail:: Reading your personal mail with Gnus.
* Browsing the Web:: Getting messages from a plethora of Web sources.
Agent Categories
* Category Syntax:: What a category looks like.
-* The Category Buffer:: A buffer for maintaining categories.
+* Category Buffer:: A buffer for maintaining categories.
* Category Variables:: Customize'r'Us.
Agent Commands
@end table
-@node The Group Buffer
-@chapter The Group Buffer
+@node Group Buffer
+@chapter Group Buffer
@cindex group buffer
The @dfn{group buffer} lists all (or parts) of the available groups. It
@kindex ^ (Group)
@findex gnus-group-enter-server-mode
Enter the server buffer (@code{gnus-group-enter-server-mode}).
-@xref{The Server Buffer}.
+@xref{Server Buffer}.
@item a
@kindex a (Group)
@end table
-@node The Summary Buffer
-@chapter The Summary Buffer
+@node Summary Buffer
+@chapter Summary Buffer
@cindex summary buffer
A line for each article is displayed in the summary buffer. You can
* Marking Articles:: Marking articles as read, expirable, etc.
* Limiting:: You can limit the summary buffer.
* Threading:: How threads are made.
-* Sorting:: How articles and threads are sorted.
+* Sorting the Summary Buffer:: How articles and threads are sorted.
* Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
* Article Caching:: You may store articles in a cache.
* Persistent Articles:: Making articles expiry-resistant.
message (@code{gnus-summary-wide-reply-with-original}). This command uses
the process/prefix convention.
+@item S v
+@kindex S v (Summary)
+@findex gnus-summary-very-wide-reply
+Mail a very wide reply to the author of the current article
+(@code{gnus-summary-wide-reply}). A @dfn{very wide reply} is a reply
+that goes out to all people listed in the @code{To}, @code{From} (or
+@code{Reply-to}) and @code{Cc} headers in all the process/prefixed
+articles. This command uses the process/prefix convention.
+
+@item S W
+@kindex S W (Summary)
+@findex gnus-summary-wide-reply-with-original
+Mail a very wide reply to the current article and include the original
+message (@code{gnus-summary-wide-reply-with-original}). This command uses
+the process/prefix convention.
+
@item S o m
@itemx C-c C-f
@kindex S o m (Summary)
answered) will be marked with an @samp{A} in the second column
(@code{gnus-replied-mark}).
+@vindex gnus-forwarded-mark
+All articles that you have forwarded will be marked with an @samp{O} in
+the second column (@code{gnus-forwarded-mark}).
+
@item
@vindex gnus-cached-mark
Articles stored in the article cache will be marked with an @samp{*} in
Matching}).
-@node Sorting
-@section Sorting
+@node Sorting the Summary Buffer
+@section Sorting the Summary Buffer
@findex gnus-thread-sort-by-total-score
@findex gnus-thread-sort-by-date
@kindex C-c C-s C-i (Summary)
@findex gnus-summary-sort-by-score
Sort by score (@code{gnus-summary-sort-by-score}).
+
+@item C-c C-s C-o
+@kindex C-c C-s C-o (Summary)
+@findex gnus-summary-sort-by-original
+Sort using the default sorting method
+(@code{gnus-summary-sort-by-original}).
@end table
These functions will work both when you use threading and when you don't
@end table
-@node The Article Buffer
-@chapter The Article Buffer
+@node Article Buffer
+@chapter Article Buffer
@cindex article buffer
The articles are displayed in the article buffer, of which there is only
value may have special meaning for the backend in question.
One could say that a select method defines a @dfn{virtual server}---so
-we do just that (@pxref{The Server Buffer}).
+we do just that (@pxref{Server Buffer}).
The @dfn{name} of the group is the name the backend will recognize the
group as.
The different methods all have their peculiarities, of course.
@menu
-* The Server Buffer:: Making and editing virtual servers.
+* Server Buffer:: Making and editing virtual servers.
* Getting News:: Reading USENET news with Gnus.
* Getting Mail:: Reading your personal mail with Gnus.
* Browsing the Web:: Getting messages from a plethora of Web sources.
@end menu
-@node The Server Buffer
-@section The Server Buffer
+@node Server Buffer
+@section Server Buffer
Traditionally, a @dfn{server} is a machine or a piece of software that
one connects to, and then requests information from. Gnus does not
So, what happens if the machine was only feeling unwell temporarily?
How do you test to see whether the machine has come up again?
-You jump to the server buffer (@pxref{The Server Buffer}) and poke it
+You jump to the server buffer (@pxref{Server Buffer}) and poke it
with the following commands:
@table @kbd
@menu
* Category Syntax:: What a category looks like.
-* The Category Buffer:: A buffer for maintaining categories.
+* Category Buffer:: A buffer for maintaining categories.
* Category Variables:: Customize'r'Us.
@end menu
@end itemize
@end enumerate
-@node The Category Buffer
-@subsubsection The Category Buffer
+@node Category Buffer
+@subsubsection Category Buffer
You'd normally do all category maintenance from the category buffer.
When you enter it for the first time (with the @kbd{J c} command from
rest. Next time you enter the group, you will see new articles in the
interesting threads, plus any new threads.
-I.e.---the orphan score atom is for high-volume groups where there
-exist a few interesting threads which can't be found automatically by
-ordinary scoring rules.
+I.e.---the orphan score atom is for high-volume groups where a few
+interesting threads which can't be found automatically by ordinary
+scoring rules exist.
@item adapt
This entry controls the adaptive scoring. If it is @code{t}, the
will be ignored. If you wish to add more words to be ignored, use the
@code{gnus-ignored-adaptive-words} list instead.
+@vindex gnus-adaptive-word-length-limit
+Some may feel that short words shouldn't count when doing adaptive
+scoring. If so, you may set @code{gnus-adaptive-word-length-limit} to
+an integer. Words shorter than this number will be ignored. This
+variable defaults til @code{nil}.
+
@vindex gnus-adaptive-word-syntax-table
When the scoring is done, @code{gnus-adaptive-word-syntax-table} is the
syntax table in effect. It is similar to the standard syntax table, but