-;;; gnus.el --- a newsreader for GNU Emacs
+;; gnus.el --- a newsreader for GNU Emacs
;; Copyright (C) 1987,88,89,90,93,94,95 Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
(defconst gnus-maintainer "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version "(ding) Gnus v0.99.5"
+(defconst gnus-version "(ding) Gnus v0.99.6"
"Version number for this version of Gnus.")
(defvar gnus-info-nodes
(defvar gnus-newsgroup-unselected nil
"List of unselected unread articles in the current newsgroup.")
+(defvar gnus-newsgroup-reads nil
+ "Alist of read articles and article marks in the current newsgroup.")
+
(defvar gnus-newsgroup-marked nil
"List of ticked articles in the current newsgroup (a subset of unread art).")
(defvar gnus-article-mode-line-format-spec nil)
(defvar gnus-group-mode-line-format-spec nil)
(defvar gnus-summary-mark-positions nil)
+(defvar gnus-group-mark-positions nil)
(defvar gnus-summary-expunge-below nil)
(defvar gnus-reffed-article-number nil)
gnus-newsgroup-last-folder gnus-newsgroup-last-file
gnus-newsgroup-auto-expire gnus-newsgroup-unreads
gnus-newsgroup-unselected gnus-newsgroup-marked
+ gnus-newsgroup-reads
gnus-newsgroup-replied gnus-newsgroup-expirable
gnus-newsgroup-processable gnus-newsgroup-killed
gnus-newsgroup-bookmarks gnus-newsgroup-dormant
(- (point) 2))) pos))
(setq gnus-summary-mark-positions pos))))
+(defun gnus-update-group-mark-positions ()
+ (save-excursion
+ (let ((gnus-process-mark 128)
+ (gnus-group-marked '("dummy.group")))
+ (gnus-set-work-buffer)
+ (gnus-group-insert-group-line nil "dummy.group" 0 nil 0 nil)
+ (goto-char (point-min))
+ (setq gnus-group-mark-positions
+ (list (cons 'process (and (search-forward "\200" nil t)
+ (- (point) 2))))))))
+
(defun gnus-mouse-face-function (form)
(` (let ((string (, form)))
(put-text-property 0 (length string) 'mouse-face gnus-mouse-face string)
(delete-window (get-buffer-window buf)))))
(setq buffers (cdr buffers)))
;; Remove windows on *all* summary buffers.
- (walk-windows
- (lambda (win)
- (let ((buf (window-buffer win)))
- (if (string-match "^\\*Summary" (buffer-name buf))
- (if first
- (progn
- (select-window win)
- (switch-to-buffer nntp-server-buffer)
- (setq first nil))
- (delete-window win)))))))))
+ (let (wins)
+ (walk-windows
+ (lambda (win)
+ (let ((buf (window-buffer win)))
+ (if (string-match "^\\*Summary" (buffer-name buf))
+ (if first
+ (progn
+ (select-window win)
+ (switch-to-buffer nntp-server-buffer)
+ (setq first nil))
+ (setq wins (cons win wins)))))))
+ (while wins
+ (delete-window (car wins))
+ (setq wins (cdr wins)))))))
+
(defun gnus-version ()
"Version numbers of this version of Gnus."
(setq group (gnus-group-group-name))
(progn
(beginning-of-line)
- (forward-char 2)
+ (forward-char
+ (or (cdr (assq 'process gnus-group-mark-positions)) 2))
(delete-char 1)
(if unmark
(progn
;; Go through all newsgroups that are known to Gnus.
(mapatoms
(lambda (group)
- (and (string-match regexp (symbol-name group))
+ (and (symbol-name group)
+ (string-match regexp (symbol-name group))
(setq groups (cons (symbol-name group) groups))))
gnus-active-hashtb)
;; Go through all descriptions that are known to Gnus.
(define-key gnus-summary-article-map "e" 'gnus-summary-end-of-article)
(define-key gnus-summary-article-map "^" 'gnus-summary-refer-parent-article)
(define-key gnus-summary-article-map "r" 'gnus-summary-refer-parent-article)
- (define-key gnus-summary-article-map "w" 'gnus-summary-stop-page-breaking)
- (define-key gnus-summary-article-map "c" 'gnus-summary-caesar-message)
(define-key gnus-summary-article-map "g" 'gnus-summary-show-article)
- (define-key gnus-summary-article-map "t" 'gnus-summary-toggle-header)
- (define-key gnus-summary-article-map "m" 'gnus-summary-toggle-mime)
(define-key gnus-summary-article-map "s" 'gnus-summary-isearch-article)
+
(define-prefix-command 'gnus-summary-wash-map)
(define-key gnus-summary-mode-map "W" 'gnus-summary-wash-map)
(define-key gnus-summary-wash-map "h" 'gnus-article-hide-headers)
(define-key gnus-summary-wash-map "\C-c" 'gnus-article-hide-citation-maybe)
(define-key gnus-summary-wash-map "o" 'gnus-article-treat-overstrike)
(define-key gnus-summary-wash-map "w" 'gnus-article-word-wrap)
- (define-key gnus-summary-wash-map "m" 'gnus-article-remove-cr)
+ (define-key gnus-summary-wash-map "M" 'gnus-article-remove-cr)
(define-key gnus-summary-wash-map "q" 'gnus-article-de-quoted-unreadable)
(define-key gnus-summary-wash-map "f" 'gnus-article-display-x-face)
(define-key gnus-summary-wash-map "t" 'gnus-article-date-ut)
(define-key gnus-summary-wash-map "\C-t" 'gnus-article-date-local)
(define-key gnus-summary-wash-map "T" 'gnus-article-date-lapsed)
+ (define-key gnus-summary-wash-map "l" 'gnus-summary-stop-page-breaking)
+ (define-key gnus-summary-wash-map "r" 'gnus-summary-caesar-message)
+ (define-key gnus-summary-wash-map "G" 'gnus-summary-toggle-header)
+ (define-key gnus-summary-wash-map "m" 'gnus-summary-toggle-mime)
+
(define-key gnus-summary-wash-map "A" 'gnus-article-highlight)
(define-key gnus-summary-wash-map "a" 'gnus-article-hide)
(define-key gnus-summary-wash-map "H" 'gnus-article-highlight-headers)
; (define-key gnus-summary-save-map "s" 'gnus-soup-add-article)
(define-key gnus-summary-mode-map "X" 'gnus-uu-extract-map)
-
+
(define-prefix-command 'gnus-summary-various-map)
(define-key gnus-summary-mode-map "V" 'gnus-summary-various-map)
- (define-key gnus-summary-various-map "u" 'gnus-summary-universal-argument)
- (define-key gnus-summary-various-map "\C-s" 'gnus-summary-search-article-forward)
- (define-key gnus-summary-various-map "\C-r" 'gnus-summary-search-article-backward)
- (define-key gnus-summary-various-map "r" 'gnus-summary-refer-article)
- (define-key gnus-summary-various-map "&" 'gnus-summary-execute-command)
- (define-key gnus-summary-various-map "T" 'gnus-summary-toggle-truncation)
- (define-key gnus-summary-various-map "e" 'gnus-summary-expand-window)
- (define-key gnus-summary-various-map "D" 'gnus-summary-enter-digest-group)
- (define-key gnus-summary-various-map "k" 'gnus-summary-edit-local-kill)
- (define-key gnus-summary-various-map "K" 'gnus-summary-edit-global-kill)
+ (define-key gnus-summary-mode-map "\M-&" 'gnus-summary-universal-argument)
+; (define-key gnus-summary-various-map "\C-s" 'gnus-summary-search-article-forward)
+; (define-key gnus-summary-various-map "\C-r" 'gnus-summary-search-article-backward)
+; (define-key gnus-summary-various-map "r" 'gnus-summary-refer-article)
+; (define-key gnus-summary-various-map "&" 'gnus-summary-execute-command)
+; (define-key gnus-summary-various-map "T" 'gnus-summary-toggle-truncation)
+; (define-key gnus-summary-various-map "e" 'gnus-summary-expand-window)
+ (define-key gnus-summary-article-map "D" 'gnus-summary-enter-digest-group)
+; (define-key gnus-summary-various-map "k" 'gnus-summary-edit-local-kill)
+; (define-key gnus-summary-various-map "K" 'gnus-summary-edit-global-kill)
(define-key gnus-summary-various-map "S" 'gnus-summary-score-map)
- (define-prefix-command 'gnus-summary-sort-map)
- (define-key gnus-summary-various-map "s" 'gnus-summary-sort-map)
- (define-key gnus-summary-sort-map "n" 'gnus-summary-sort-by-number)
- (define-key gnus-summary-sort-map "a" 'gnus-summary-sort-by-author)
- (define-key gnus-summary-sort-map "s" 'gnus-summary-sort-by-subject)
- (define-key gnus-summary-sort-map "d" 'gnus-summary-sort-by-date)
- (define-key gnus-summary-sort-map "i" 'gnus-summary-sort-by-score)
+; (define-prefix-command 'gnus-summary-sort-map)
+; (define-key gnus-summary-various-map "s" 'gnus-summary-sort-map)
+; (define-key gnus-summary-sort-map "n" 'gnus-summary-sort-by-number)
+; (define-key gnus-summary-sort-map "a" 'gnus-summary-sort-by-author)
+; (define-key gnus-summary-sort-map "s" 'gnus-summary-sort-by-subject)
+; (define-key gnus-summary-sort-map "d" 'gnus-summary-sort-by-date)
+; (define-key gnus-summary-sort-map "i" 'gnus-summary-sort-by-score)
(define-key gnus-summary-mode-map "I" 'gnus-summary-increase-score)
(define-key gnus-summary-mode-map "L" 'gnus-summary-lower-score)
(vectorp header)
(header-subject header))))
+;; Various summary mode internalish functions.
(defun gnus-mouse-pick-article (e)
(interactive "e")
;; It is below, so we mark it as read.
(setq gnus-newsgroup-unreads
(delq (header-number (car headers))
- gnus-newsgroup-unreads)))
+ gnus-newsgroup-unreads))
+ (setq gnus-newsgroup-reads
+ (cons (cons (header-number (car headers))
+ gnus-low-score-mark)
+ gnus-newsgroup-reads)))
(setq headers (cdr headers))))
;; Ok, these refer back to valid articles, but if
;; `gnus-thread-ignore-subject' is nil, we have to check that
(setq new-roots (cons (car headers) new-roots))
(setq gnus-newsgroup-unreads
(delq (header-number (car headers))
- gnus-newsgroup-unreads)))
+ gnus-newsgroup-unreads))
+ (setq gnus-newsgroup-reads
+ (cons (cons (header-number (car headers))
+ gnus-low-score-mark)
+ gnus-newsgroup-reads)))
(setcdr prev (cdr headers)))
(setq prev headers))
(setq headers (cdr headers)))))
(setq prev headers))
(setq gnus-newsgroup-unreads
(delq article gnus-newsgroup-unreads))
+ (setq gnus-newsgroup-reads
+ (cons (cons article gnus-low-score-mark)
+ gnus-newsgroup-reads))
(setcdr prev (cdr headers)))
(setq headers (cdr headers))))
;; It was not expunged, but we look at expunged children.
(setq prev headers)
(setq gnus-newsgroup-unreads
(delq article gnus-newsgroup-unreads))
+ (setq gnus-newsgroup-reads
+ (cons (cons article gnus-low-score-mark)
+ gnus-newsgroup-reads))
(setcdr prev (cdr headers)))
(setq headers (cdr headers)))))))
gnus-newsgroup-dependencies)
(progn
(setq gnus-newsgroup-unreads
(delq number gnus-newsgroup-unreads))
+ (setq gnus-newsgroup-reads
+ (cons (cons number gnus-low-score-mark)
+ gnus-newsgroup-reads))
t)))))
nil
(list (cons head tail)))))
gnus-summary-expunge-below))
(setq header nil)
(setq gnus-newsgroup-unreads
- (delq number gnus-newsgroup-unreads)))))
-
+ (delq number gnus-newsgroup-unreads))
+ (setq gnus-newsgroup-reads
+ (cons (cons number gnus-low-score-mark)
+ gnus-newsgroup-reads)))))
+
(and
header
(progn
((memq number gnus-newsgroup-dormant) gnus-dormant-mark)
((memq number gnus-newsgroup-unreads) gnus-unread-mark)
((memq number gnus-newsgroup-expirable) gnus-expirable-mark)
- (t gnus-ancient-mark))
+ (t (or (cdr (assq number gnus-newsgroup-reads))
+ gnus-ancient-mark)))
(memq number gnus-newsgroup-replied)
(memq number gnus-newsgroup-expirable)
(if (and (eq gnus-summary-make-false-root 'empty)
gnus-summary-default-score 0)
gnus-summary-expunge-below))
(setq gnus-newsgroup-unreads
- (delq number gnus-newsgroup-unreads)))
+ (delq number gnus-newsgroup-unreads))
+ (setq gnus-newsgroup-reads
+ (cons (cons number gnus-low-score-mark)
+ gnus-newsgroup-reads)))
(t
(gnus-summary-insert-line
nil header 0 nil
((memq number gnus-newsgroup-dormant) gnus-dormant-mark)
((memq number gnus-newsgroup-unreads) gnus-unread-mark)
((memq number gnus-newsgroup-expirable) gnus-expirable-mark)
- (t gnus-ancient-mark))
+ (t (or (cdr (assq number gnus-newsgroup-reads))
+ gnus-ancient-mark)))
(memq number gnus-newsgroup-replied)
(memq number gnus-newsgroup-expirable)
(header-subject header) nil
(if (memq key keystrokes)
(let ((obuf (current-buffer)))
(switch-to-buffer gnus-group-buffer)
- (gnus-group-jump-to-group group)
- (execute-kbd-macro (char-to-string key))
+ (and group
+ (gnus-group-jump-to-group group))
+ (condition-case ()
+ (execute-kbd-macro (char-to-string key))
+ (error (ding) nil))
(setq group (gnus-group-group-name))
(switch-to-buffer obuf)))))
(if (equal key cmd)
(setq article art)
(setq best (cdr (car scored))))))
(setq scored (cdr scored)))
- (if article
- (gnus-summary-goto-article article)
+ (cond
+ ((or (not article) (null gnus-newsgroup-unreads))
+ ;; We didn't find any scored articles, so we just jump to the
+ ;; first article.
(gnus-summary-first-unread-article))
+ ((> best gnus-summary-default-score)
+ ;; We found one, and it's bigger than the default score, so we
+ ;; select it.
+ (gnus-summary-goto-article article))
+ (t
+ ;; We found an article, but it has a score lower than the
+ ;; defaults, so we try to find an article with the default
+ ;; score.
+ (goto-char (point-min))
+ (while (and (or (not (= (gnus-summary-article-mark) gnus-unread-mark))
+ (not (eq (cdr (memq (gnus-summary-article-number)
+ gnus-newsgroup-scored))
+ gnus-summary-default-score)))
+ (zerop (forward-line 1))
+ (not (eobp))))
+ ;; We jump to the article we have finally found.
+ (gnus-summary-goto-article (gnus-summary-article-number))))
(gnus-summary-position-cursor)))
(defun gnus-summary-goto-article (article &optional all-headers)
(setq gnus-newsgroup-marked (delq article gnus-newsgroup-marked))
(setq gnus-newsgroup-unreads (delq article gnus-newsgroup-unreads))
(setq gnus-newsgroup-dormant
- (delq article gnus-newsgroup-dormant)))
+ (delq article gnus-newsgroup-dormant))
+ (setq gnus-newsgroup-reads
+ (cons (cons article gnus-canceled-mark)
+ gnus-newsgroup-reads)))
(gnus-message 1 "Couldn't move article %s" (car articles)))
(gnus-summary-remove-process-mark (car articles))
(setq articles (cdr articles)))))
(setq gnus-newsgroup-unreads (delq article gnus-newsgroup-unreads))
(setq gnus-newsgroup-marked (delq article gnus-newsgroup-marked))
(setq gnus-newsgroup-dormant (delq article gnus-newsgroup-dormant))
+ (setq gnus-newsgroup-reads
+ (cons (cons article mark) gnus-newsgroup-reads))
;; Possibly remove from cache, if that is used.
(and gnus-use-cache (gnus-cache-enter-remove-article article))
(and gnus-newsgroup-auto-expire
(setq gnus-newsgroup-marked (delq article gnus-newsgroup-marked))
(setq gnus-newsgroup-dormant (delq article gnus-newsgroup-dormant))
(setq gnus-newsgroup-expirable (delq article gnus-newsgroup-expirable))
+ (setq gnus-newsgroup-reads
+ (delq (assq article gnus-newsgroup-reads)
+ gnus-newsgroup-reads))
(if (= mark gnus-ticked-mark)
(setq gnus-newsgroup-marked (cons article gnus-newsgroup-marked)))
(if (= mark gnus-dormant-mark)
(setq gnus-newsgroup-unreads (delq article gnus-newsgroup-unreads))
(setq gnus-newsgroup-marked (delq article gnus-newsgroup-marked))
(setq gnus-newsgroup-dormant (delq article gnus-newsgroup-dormant))
+ (setq gnus-newsgroup-reads
+ (cons (cons article mark) gnus-newsgroup-reads))
;; Possibly remove from cache, if that is used.
(and gnus-use-cache (gnus-cache-enter-remove-article article))))
(setq gnus-newsgroup-marked (delq article gnus-newsgroup-marked))
(setq gnus-newsgroup-dormant (delq article gnus-newsgroup-dormant))
(setq gnus-newsgroup-expirable (delq article gnus-newsgroup-expirable))
+ (setq gnus-newsgroup-reads
+ (delq (assq article gnus-newsgroup-reads)
+ gnus-newsgroup-reads))
(if (= mark gnus-ticked-mark)
(setq gnus-newsgroup-marked (cons article gnus-newsgroup-marked)))
(if (= mark gnus-dormant-mark)
(let ((unreads (length gnus-newsgroup-unreads)))
(gnus-summary-show-all-threads)
(if (gnus-summary-first-subject (not all))
- (while (and (if to-here (< (point) to-here) t)
- (gnus-summary-mark-article-as-read
- gnus-catchup-mark)
- (gnus-summary-search-subject nil (not all)))))
+ (while (and
+ (if to-here (< (point) to-here) t)
+ (gnus-summary-mark-article-as-read gnus-catchup-mark)
+ (gnus-summary-search-subject nil (not all)))))
(- unreads (length gnus-newsgroup-unreads))
(or to-here
(setq gnus-newsgroup-unreads gnus-newsgroup-marked)))))
;; Duplicate almost all summary keystrokes in the article mode map.
(let ((commands
(list
- " " "\177" "p" "N" "P" "\M-\C-n" "\M-\C-p"
- "\M-n" "\M-p" "." "," "\M-s" "\M-r" "<" ">" "j" "^" "\M-^"
+ "p" "N" "P" "\M-\C-n" "\M-\C-p"
+ "\M-n" "\M-p" "." "," "\M-s" "\M-r" "<" ">" "j"
"u" "!" "U" "d" "D" "E" "\M-u" "\M-U" "k" "\C-k" "\M-\C-k"
"\M-\C-l" "e" "#" "\M-#" "\M-\C-t" "\M-\C-s" "\M-\C-h"
"\M-\C-f" "\M-\C-b" "\M-\C-u" "\M-\C-d" "&" "\C-w"
(let ((commands (list "q" "Q" "c" "r" "R" "\C-c\C-f" "m" "a" "f" "F"
;; "Zc" "ZC" "ZE" "ZQ" "ZZ" "Zn" "ZR" "ZG" "ZN" "ZP"
- "=" "n")))
+ "=" "n" "^" "\M-^")))
(while commands
(define-key gnus-article-mode-map (car commands)
'gnus-article-summary-command-nosave)
()
(setq gnus-dribble-eval-file nil)
(save-excursion
- (set-buffer gnus-dribble-buffer)
- (eval-buffer (current-buffer)))))
+ (let ((gnus-dribble-ignore t))
+ (set-buffer gnus-dribble-buffer)
+ (eval-buffer (current-buffer))))))
(defun gnus-dribble-delete-file ()
(if (file-exists-p (gnus-dribble-file-name))
(setq groups (or groups gnus-backup-default-subscribed-newsgroups))
(mapatoms
(lambda (sym)
- (setq group (symbol-name sym))
- (let ((do-sub (gnus-matches-options-n group)))
- (cond ((eq do-sub 'subscribe)
- (gnus-sethash group group gnus-killed-hashtb)
- (funcall
- gnus-subscribe-options-newsgroup-method group))
- ((eq do-sub 'ignore)
- nil)
- (t
- (setq gnus-killed-list (cons group gnus-killed-list))))))
+ (if (null (setq group (symbol-name sym)))
+ ()
+ (let ((do-sub (gnus-matches-options-n group)))
+ (cond
+ ((eq do-sub 'subscribe)
+ (gnus-sethash group group gnus-killed-hashtb)
+ (funcall gnus-subscribe-options-newsgroup-method group))
+ ((eq do-sub 'ignore)
+ nil)
+ (t
+ (setq gnus-killed-list (cons group gnus-killed-list)))))))
gnus-active-hashtb)
(while groups
(if (gnus-gethash (car groups) gnus-active-hashtb)
score-files)
;; if this group has been seen before, return the cached entry
(if (setq score-files (assoc group gnus-score-file-alist-cache))
- (cdr score-files) ; ensures caching of groups with no matches
+ (cdr score-files) ; ensures caching of groups with no matches
;; handle the multiple match alist
(while alist
(and (string-match (car (car alist)) group)
(setq score-files
- (nconc score-files (cdr (car alist)))))
+ (nconc score-files (copy-sequence (cdr (car alist))))))
(setq alist (cdr alist)))
(setq alist gnus-score-file-single-match-alist)
;; handle the single match alist
- (catch 'done
- (while alist
- (and (string-match (car (car alist)) group)
- ;; progn used just in case ("regexp") has no files
- ;; and score-files is still nil. -sj
- ;; this can be construed as a "stop searching here" feature :>
- ;; and used to simplify regexps in the single-alist
- (progn
- (setq score-files
- (append score-files (cdr (car alist))))
- (throw 'done nil)))
- (setq alist (cdr alist))))
+ (while alist
+ (and (string-match (car (car alist)) group)
+ ;; progn used just in case ("regexp") has no files
+ ;; and score-files is still nil. -sj
+ ;; this can be construed as a "stop searching here" feature :>
+ ;; and used to simplify regexps in the single-alist
+ (progn
+ (setq score-files
+ (nconc score-files (copy-sequence (cdr (car alist)))))
+ (setq alist nil)))
+ (setq alist (cdr alist)))
;; cache the score files
(setq gnus-score-file-alist-cache
(cons (cons group score-files) gnus-score-file-alist-cache))
(setq func (list func)))
;; Go through all the functions for finding score files (or actual
;; scores) and add them to a list.
- (setq score-files (copy-sequence
- (gnus-score-find-alist gnus-newsgroup-name)))
+ (setq score-files (gnus-score-find-alist gnus-newsgroup-name))
(while func
(and (symbolp (car func))
(fboundp (car func))
the mail backend inhabits (i.e., @file{~/Mail/}), but if this variable is
non-@code{nil}, it will be used instead.
+@vindex nnmail-movemail-program
+@code{nnmail-movemail-program} is executed to move mail from the user's
+inbox to her home directory. The default is @samp{"movemail"}.
+
@vindex nnmail-delete-incoming
If @code{nnmail-delete-incoming} is non-@code{nil}, the mail backends
will delete the temporary incoming file after splitting mail into the
@section Various Article Stuff
@table @kbd
-@item A w
-@kindex A w (Summary)
+@item W l
+@kindex W l (Summary)
@findex gnus-summary-stop-page-breaking
Remove page breaks from the current article
(@code{gnus-summary-stop-page-breaking}).
@findex gnus-summary-isearch-article
Perform an isearch in the article buffer
(@code{gnus-summary-isearch-article}).
-@item A c
-@kindex A c (Summary)
+@item W r
+@kindex W r (Summary)
@findex gnus-summary-caesar-message
Do a Caesar rotate (rot13) on the article buffer
(@code{gnus-summary-caesar-message}).
given a prefix, don't actually refetch any articles, just jump to the
current article and configure the windows to display the current
article.
-@item A t
-@kindex A t (Summary)
+@item W G
+@kindex W G (Summary)
@findex gnus-summary-toggle-header
Toggle whether to display all headers in the article buffer
(@code{gnus-summary-toggle-header}).
-@item A m
-@kindex A m (Summary)
+@item W m
+@kindex W m (Summary)
@findex gnus-summary-toggle-mime
Toggle whether to run the article through @sc{mime} before displaying
(@code{gnus-summary-toggle-mime}).
@kindex W w (Summary)
@findex gnus-article-word-wrap
Do word wrap (@code{gnus-article-word-wrap}).
-@item W m
-@kindex W m (Summary)
+@item W M
+@kindex W M (Summary)
@findex gnus-article-remove-cr
Remove CR (@code{gnus-article-remove-cr}).
@item W q
can't really see why you'd want that.
@table @kbd
-@item V s n
-@kindex V s n (Summary)
+@item C-c C-s C-n
+@kindex C-c C-s C-n (Summary)
@findex gnus-summary-sort-by-number
Sort by article number (@code{gnus-summary-sort-by-number}).
-@item V s a
-@kindex V s a (Summary)
+@item C-c C-s C-a
+@kindex C-c C-s C-a (Summary)
@findex gnus-summary-sort-by-author
Sort by author (@code{gnus-summary-sort-by-author}).
-@item V s s
-@kindex V s s (Summary)
+@item C-c C-s C-s
+@kindex C-c C-s C-s (Summary)
@findex gnus-summary-sort-by-subject
Sort by subject (@code{gnus-summary-sort-by-subject}).
-@item V s d
-@kindex V s d (Summary)
+@item C-c C-s C-d
+@kindex C-c C-s C-d (Summary)
@findex gnus-summary-sort-by-date
Sort by date (@code{gnus-summary-sort-by-date}).
-@item V s i
-@kindex V s i (Summary)
+@item C-c C-s C-i
+@kindex C-c C-s C-i (Summary)
@findex gnus-summary-sort-by-score
Sort by score (@code{gnus-summary-sort-by-score}).
@end table
@findex gnus-summary-refer-article
@kindex M-^ (Summary)
You can also ask the @sc{nntp} server for an arbitrary article, no
-matter what group it belongs to. @kbd{V r}
+matter what group it belongs to. @kbd{M-^}
(@code{gnus-summary-refer-article}) will ask you for a
@code{Message-Id}, which is one of those long thingies that look
something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}. You have to get
Two functions for editing a GNUS kill file:
@table @kbd
-@item V k
-@kindex V k (Summary)
+@item M-k
+@kindex M-k (Summary)
@findex gnus-summary-edit-local-kill
Edit this group's kill file (@code{gnus-summary-edit-local-kill}).
-@item V K
-@kindex V K (Summary)
+@item M-K
+@kindex M-K (Summary)
@findex gnus-summary-edit-global-kill
Edit the general kill file (@code{gnus-summary-edit-global-kill}).
@end table
@subsection Searching for Articles
@table @kbd
-@item V C-s
-@kindex V C-s (Summary)
+@item M-s
+@kindex M-s (Summary)
@findex gnus-summary-search-article-forward
Search through all subsequent articles for a regexp
(@code{gnus-summary-search-article-forward}).
-@item V C-r
-@kindex V C-r (Summary)
+@item M-r
+@kindex M-r (Summary)
@findex gnus-summary-search-article-backward
Search through all previous articles for a regexp
(@code{gnus-summary-search-article-backward}).
-@item V &
-@kindex V & (Summary)
+@item &
+@kindex & (Summary)
@findex gnus-summary-execute-command
This command will prompt you for a header field, a regular expression to
match on this field, and a command to be executed if the match is made
(@code{gnus-summary-execute-command}).
-@item V u
-@kindex V u (Summary)
+@item M-&
+@kindex M-& (Summary)
@findex gnus-summary-universal-argument
Perform any operation on all articles that have been marked with
the process mark (@code{gnus-summary-universal-argument}).
@subsection Really Various Summary Commands
@table @kbd
-@item V D
-@kindex V D (Summary)
+@item A D
+@kindex A D (Summary)
@findex gnus-summary-enter-digest-group
If the current article is a digest, you might use this command to enter
you into a group based on the current digest to ease reading
(@code{gnus-summary-enter-digest-group}).
-@item V T
-@kindex V T (Summary)
+@item C-t
+@kindex C-t (Summary)
@findex gnus-summary-toggle-truncation
Toggle truncation of summary lines (@code{gnus-summary-toggle-truncation}).
-@item V e
-@kindex V e (Summary)
+@item =
+@kindex = (Summary)
@findex gnus-summary-expand-window
Expand the summary buffer window (@code{gnus-summary-expand-window}).
If given a prefix, force an @code{article} window configuration.