+Mon Dec 16 14:33:58 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-msg.el (gnus-bug): Insert nntp server type.
+ (gnus-copy-article-buffer): Remove prev/next buttons.
+
+ * gnus-cache.el (gnus-jog-cache): Let the call func be
+ interactive.
+
+ * gnus-art.el (gnus-summary-save-in-pipe): Include number of
+ articles.
+ (gnus-article-add-buttons): Don't add buttons to already
+ buttonized areas.
+
+ * nntp.el (nntp-open-connection): Allow `C-g' to continue.
+
+ * nnbabyl.el (nnbabyl-retrieve-headers): Wouldn't find all
+ articles sometimes.
+
+ * gnus-sum.el (gnus-data-compute-positions): Reinstated.
+ (gnus-remove-thread): Do the right thing with dummy roots.
+
+ * nndoc.el (nndoc-request-article): Only return valid articles.
+
+ * nnfolder.el (nnfolder-delete-mail): Wouldn't delete From lines.
+
+ * gnus-topic.el (gnus-topic-find-groups): Ignore nil groups.
+
+ * nnfolder.el (nnfolder-save-mail): Quote all "From " lines.
+
+Sat Dec 14 11:49:21 1996 David Moore <dmoore@ucsd.edu>
+
+ * gnus-nocem.el (gnus-nocem-groups):
+ news.admin.net-abuse.bulletins is to replace
+ news.admin.net-abuse.announce for nocemish postings.
+
+Mon Dec 16 13:38:38 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nnmail.el (nnmail-move-inbox): Message at end.
+
+ * gnus-sum.el (gnus-summary-refer-parent-article): Use
+ "in-reply-to" header.
+
+ * gnus-topic.el (gnus-topic-set-parameters): Enter into dribble.
+
+ * gnus-sum.el (gnus-summary-save-newsrc): Change.
+ (gnus-summary-catchup): Only catch up the limited articles.
+ (gnus-simplify-subject-fuzzy-regexp): Changed to nil.
+ (gnus-simplify-buffer-fuzzy): Ignore nil
+ gnus-simplify-subject-fuzzy-regexp.
+
+ * gnus-srvr.el (gnus-server-prepare): Don't insert servers twice.
+
+Thu Dec 12 18:18:11 1996 David Moore <dmoore@ucsd.edu>
+
+ * gnus-start.el (gnus-setup-news): Use gnus-make-hashtable.
+ (gnus-update-active-hashtb-from-killed): ditto.
+ (gnus-newsrc-to-gnus-format): ditto.
+
+ * gnus-bcklg.el (gnus-backlog-setup): ditto.
+
+ * gnus-sum.el (gnus-create-xref-hashtb): ditto.
+
+ * gnus-move.el (gnus-move-group-to-server): ditto.
+
+ * gnus-util.el (gnus-create-hash-size): Power of 2 hashtables can
+ be _significantly_ faster than 2^x-1 tables on many risc
+ machines. Any gains of 2^x-1 are comparably small on other
+ machines.
+
+Fri Dec 13 05:05:03 1996 Lars Magne Ingebrigtsen <menja.larsi@ifi.uio.no>
+
+ * gnus.el: Red Gnus v0.75 is released.
+
Fri Dec 13 04:49:21 1996 Andre Deparade <deparade@i3.informatik.rwth-aachen.de>
* gnus-cite.el (gnus-cited-text-button-line-format-alist): Make %b
(cond ((eq command 'default)
gnus-last-shell-command)
(command command)
- (t (read-string "Shell command on article: "
- gnus-last-shell-command))))
+ (t (read-string
+ (format
+ "Shell command on %s: "
+ (if (and gnus-number-of-articles-to-be-saved
+ (> gnus-number-of-articles-to-be-saved 1))
+ (format "these %d articles"
+ gnus-number-of-articles-to-be-saved)
+ "this article"))
+ gnus-last-shell-command))))
(when (string-equal command "")
(setq command gnus-last-shell-command))
(gnus-eval-in-buffer-window gnus-article-buffer
(let* ((start (and entry (match-beginning (nth 1 entry))))
(end (and entry (match-end (nth 1 entry))))
(from (match-beginning 0)))
- (when (or (eq t (nth 1 entry))
- (eval (nth 1 entry)))
+ (when (and (or (eq t (nth 1 entry))
+ (eval (nth 1 entry)))
+ (not (get-text-property (point) 'gnus-callback)))
;; That optional form returned non-nil, so we add the
;; button.
(gnus-article-add-button
(defun gnus-backlog-setup ()
"Initialize backlog variables."
(unless gnus-backlog-hashtb
- (setq gnus-backlog-hashtb (make-vector 1023 0))))
+ (setq gnus-backlog-hashtb (gnus-make-hashtable 1024))))
(gnus-add-shutdown 'gnus-backlog-shutdown 'gnus)
(gnus-group-universal-argument
nil nil
(lambda ()
+ (interactive)
(gnus-summary-read-group (gnus-group-group-name) nil t)
;; ... and enter the articles into the cache.
(when (eq major-mode 'gnus-summary-mode)
(gnus-message 7 "Translating %s..." group)
(when (gnus-request-group group nil to-server)
(setq to-active (gnus-parse-active)
- hashtb (make-vector 1023 0))
+ hashtb (gnus-make-hashtable 1024))
;; Fetch the headers from the `to-server'.
(when (and to-active
(setq type (gnus-retrieve-headers
(copy-to-buffer gnus-article-copy (point-min) (point-max))
(set-buffer gnus-article-copy)
(article-delete-text-of-type 'annotation)
+ (gnus-remove-text-with-property 'gnus-prev)
+ (gnus-remove-text-with-property 'gnus-next)
(insert
(prog1
(format "%s" (buffer-string))
(when yank
(gnus-inews-yank-articles (list (cdr gnus-article-current)))))))
+(defvar nntp-server-type)
(defun gnus-bug ()
"Send a bug report to the Gnus maintainers."
(interactive)
(re-search-forward (concat "^" (regexp-quote mail-header-separator) "$"))
(forward-line 1)
(insert (gnus-version) "\n")
- (insert (emacs-version))
+ (insert (emacs-version) "\n")
+ (when (and (boundp 'nntp-server-type)
+ (stringp nntp-server-type))
+ (insert nntp-server-type))
(insert "\n\n\n\n\n")
(gnus-debug)
(goto-char (point-min))
:group 'gnus-score)
(defcustom gnus-nocem-groups
- '("news.lists.filters" "alt.nocem.misc" "news.admin.net-abuse.announce")
+ '("news.lists.filters" "news.admin.net-abuse.bulletins"
+ "alt.nocem.misc" "news.admin.net-abuse.announce")
"List of groups that will be searched for NoCeM messages."
:group 'gnus-nocem
:type '(repeat (string :tag "Group")))
(setq gnus-inserted-opened-servers nil)
;; First we do the real list of servers.
(while alist
- (push (cdr (setq server (pop alist))) done)
+ (push (caar alist) done)
+ (cdr (setq server (pop alist)))
(when (and server (car server) (cdr server))
(gnus-server-insert-server-line (car server) (cdr server))))
;; Then we insert the list of servers that have been opened in
;; this session.
(while opened
- (unless (member (caar opened) done)
- (push (caar opened) done)
+ (unless (member (cadaar opened) done)
+ (push (cadaar opened) done)
(gnus-server-insert-server-line
(setq op-ser (format "%s:%s" (caaar opened) (nth 1 (caar opened))))
(caar opened))
(gnus-read-active-file))
(unless gnus-active-hashtb
- (setq gnus-active-hashtb (make-vector 4095 0)))
+ (setq gnus-active-hashtb (gnus-make-hashtable 4096)))
;; Initialize the cache.
(when gnus-use-cache
;; Enter all dead groups into the hashtb.
(defun gnus-update-active-hashtb-from-killed ()
- (let ((hashtb (setq gnus-active-hashtb (make-vector 4095 0)))
+ (let ((hashtb (setq gnus-active-hashtb (gnus-make-hashtable 4096)))
(lists (list gnus-killed-list gnus-zombie-list))
killed)
(while lists
;; if group is moderated, stick in moderation table
(when (= (following-char) ?m)
(unless gnus-moderated-hashtb
- (setq gnus-moderated-hashtb (make-vector 127 0)))
+ (setq gnus-moderated-hashtb (gnus-make-hashtable)))
(gnus-sethash (symbol-name group) t
gnus-moderated-hashtb)))
(set group nil)))
(setq gnus-newsrc-options-n nil)
(unless gnus-active-hashtb
- (setq gnus-active-hashtb (make-vector 4095 0)))
+ (setq gnus-active-hashtb (gnus-make-hashtable 4096)))
(let ((buf (current-buffer))
(already-read (> (length gnus-newsrc-alist) 1))
group subscribed options-symbol newsrc Options-symbol
:group 'gnus-summary-format
:type 'integer)
-(defcustom gnus-simplify-subject-fuzzy-regexp ""
+(defcustom gnus-simplify-subject-fuzzy-regexp nil
"*Strings to be removed when doing fuzzy matches.
This can either be a regular expression or list of regular expressions
that will be removed from subject strings if fuzzy subject
(re-search-forward "^ *\\(re\\|fwd\\)[[{(^0-9]*[])}]?[:;] *" nil t)
(goto-char (match-beginning 0))
(while (or
- (looking-at gnus-simplify-subject-fuzzy-regexp)
+ (and
+ gnus-simplify-subject-fuzzy-regexp
+ (looking-at gnus-simplify-subject-fuzzy-regexp))
(looking-at "^ *\\(re\\|fwd\\)[[{(^0-9]*[])}]?[:;] *")
(looking-at "^[[].*: .*[]]$"))
(goto-char (point-min))
- (while (re-search-forward gnus-simplify-subject-fuzzy-regexp
- nil t)
- (replace-match "" t t))
+ (when gnus-simplify-subject-fuzzy-regexp
+ (while (re-search-forward gnus-simplify-subject-fuzzy-regexp
+ nil t)
+ (replace-match "" t t)))
(goto-char (point-min))
(while (re-search-forward "^ *\\(re\\|fw\\|fwd\\)[[{(^0-9]*[])}]?[:;] *"
nil t)
["Exit and goto prev group" gnus-summary-prev-group t]
["Reselect group" gnus-summary-reselect-current-group t]
["Rescan group" gnus-summary-rescan-group t]
- ["Save newsrc" gnus-summary-save-newsrc t])))
+ ["Update dribble" gnus-summary-save-newsrc t])))
(run-hooks 'gnus-summary-menu-hook)))
(setcar (nthcdr 2 (car data)) (+ offset (nth 2 (car data))))
(setq data (cdr data))))
+(defun gnus-data-compute-positions ()
+ "Compute the positions of all articles."
+ (let ((data gnus-newsgroup-data)
+ pos)
+ (while data
+ (when (setq pos (text-property-any
+ (point-min) (point-max)
+ 'gnus-number (gnus-data-number (car data))))
+ (gnus-data-set-pos (car data) (+ pos 3)))
+ (setq data (cdr data)))))
+
(defun gnus-summary-article-pseudo-p (article)
"Say whether this article is a pseudo article or not."
(not (vectorp (gnus-data-header (gnus-data-find article)))))
"Gather threads by looking at Subject headers."
(if (not gnus-summary-make-false-root)
threads
- (let ((hashtb (gnus-make-hashtable 1023))
+ (let ((hashtb (gnus-make-hashtable 1024))
(prev threads)
(result threads)
subject hthread whole-subject)
(defun gnus-gather-threads-by-references (threads)
"Gather threads by looking at References headers."
- (let ((idhashtb (gnus-make-hashtable 1023))
- (thhashtb (gnus-make-hashtable 1023))
+ (let ((idhashtb (gnus-make-hashtable 1024))
+ (thhashtb (gnus-make-hashtable 1024))
(prev threads)
(result threads)
ids references id gthread gid entered ref)
;; If we use dummy roots, then we have to remove the
;; dummy root as well.
(when (eq gnus-summary-make-false-root 'dummy)
- ;; Uhm.
- )
+ (gnus-delete-line)
+ (gnus-data-compute-positions))
(setq thread (cdr thread))
(while thread
(gnus-remove-thread-1 (car thread))
The resulting hash table is returned, or nil if no Xrefs were found."
(let* ((virtual (gnus-virtual-group-p from-newsgroup))
(prefix (if virtual "" (gnus-group-real-prefix from-newsgroup)))
- (xref-hashtb (make-vector 63 0))
+ (xref-hashtb (gnus-make-hashtable))
start group entry number xrefs header)
(while headers
(setq header (pop headers))
(unless (gnus-ephemeral-group-p gnus-newsgroup-name)
(gnus-group-update-group group))))))
-(defun gnus-summary-save-newsrc ()
- "Save the .newsrc file.
-The current number of read/marked articles in the summary buffer
-will also be saved."
+(defun gnus-summary-save-newsrc (&optional force)
+ "Save the current number of read/marked articles in the dribble buffer.
+If FORCE (the prefix), also save the .newsrc file(s)."
(interactive)
(gnus-summary-update-info)
- (gnus-save-newsrc-file))
+ (when force
+ (gnus-save-newsrc-file)))
(defun gnus-summary-exit (&optional temporary)
"Exit reading current newsgroup, and then return to group selection mode.
(while (and (> n 0)
(not error))
(setq header (gnus-summary-article-header))
- (setq ref
- ;; If we try to find the parent of the currently
- ;; displayed article, then we take a look at the actual
- ;; References header, since this is slightly more
- ;; reliable than the References field we got from the
- ;; server.
- (if (and (eq (mail-header-number header)
- (cdr gnus-article-current))
- (equal gnus-newsgroup-name
- (car gnus-article-current)))
- (save-excursion
- (set-buffer gnus-original-article-buffer)
- (nnheader-narrow-to-headers)
- (prog1
- (message-fetch-field "references")
- (widen)))
+ (if (and (eq (mail-header-number header)
+ (cdr gnus-article-current))
+ (equal gnus-newsgroup-name
+ (car gnus-article-current)))
+ ;; If we try to find the parent of the currently
+ ;; displayed article, then we take a look at the actual
+ ;; References header, since this is slightly more
+ ;; reliable than the References field we got from the
+ ;; server.
+ (save-excursion
+ (set-buffer gnus-original-article-buffer)
+ (nnheader-narrow-to-headers)
+ (unless (setq ref (message-fetch-field "references"))
+ (setq ref (message-fetch-field "in-reply-to")))
+ (widen))
+ (setq ref
;; It's not the current article, so we take a bet on
;; the value we got from the server.
(mail-header-references header)))
t))))
(defun gnus-summary-catchup (&optional all quietly to-here not-mark)
- "Mark all articles not marked as unread in this newsgroup as read.
-If prefix argument ALL is non-nil, all articles are marked as read.
+ "Mark all unread articles in this newsgroup as read.
+If prefix argument ALL is non-nil, ticked and dormant articles will
+also be marked as read.
If QUIETLY is non-nil, no questions will be asked.
If TO-HERE is non-nil, it should be a point in the buffer. All
articles before this point will be marked as read.
+Note that this function will only catch up the unread article
+in the current summary buffer limitation.
The number of articles marked as read is returned."
(interactive "P")
(gnus-set-global-variables)
(if to-here (< (point) to-here) t)
(gnus-summary-mark-article-as-read gnus-catchup-mark)
(gnus-summary-find-next (not all)))))
- (unless to-here
- (setq gnus-newsgroup-unreads nil))
(gnus-set-mode-line 'summary))
t))
(gnus-summary-position-point)))
(setq level (or level 7))
;; We go through the newsrc to look for matches.
(while groups
- (setq entry (gnus-gethash (setq group (pop groups)) gnus-newsrc-hashtb)
- info (nth 2 entry)
- params (gnus-info-params info)
- active (gnus-active group)
- unread (or (car entry)
- (and (not (equal group "dummy.group"))
- active
- (- (1+ (cdr active)) (car active))))
- clevel (or (gnus-info-level info)
- (if (member group gnus-zombie-list) 8 9)))
+ (when (setq group (pop groups))
+ (setq entry (gnus-gethash group gnus-newsrc-hashtb)
+ info (nth 2 entry)
+ params (gnus-info-params info)
+ active (gnus-active group)
+ unread (or (car entry)
+ (and (not (equal group "dummy.group"))
+ active
+ (- (1+ (cdr active)) (car active))))
+ clevel (or (gnus-info-level info)
+ (if (member group gnus-zombie-list) 8 9))))
(and
unread ; nil means that the group is dead.
(<= clevel level)
(nconc (cadr top) (list nil)))
(unless (nthcdr 3 (cadr top))
(nconc (cadr top) (list nil)))
- (setcar (nthcdr 3 (cadr top)) parameters)))
+ (setcar (nthcdr 3 (cadr top)) parameters)
+ (gnus-dribble-enter
+ (format "(gnus-topic-set-parameters %s '%S)" topic parameters))))
(defun gnus-group-topic-parameters (group)
"Compute the group parameters for GROUP taking into account inheritance from topics."
(forward-line -1)
(when (setq alist (assoc (gnus-current-topic) gnus-topic-alist))
(setcdr alist (gnus-delete-first group (cdr alist))))))
- ;; If the group is subscribed. then we enter it into the topics.
+ ;; If the group is subscribed we enter it into the topics.
(when (and (< level gnus-level-zombie)
(>= oldlevel gnus-level-zombie))
(let* ((prev (gnus-group-group-name))
(insert "%"))
(buffer-string)))
-;; Make a hash table (default and minimum size is 255).
+;; Make a hash table (default and minimum size is 256).
;; Optional argument HASHSIZE specifies the table size.
(defun gnus-make-hashtable (&optional hashsize)
- (make-vector (if hashsize (max (gnus-create-hash-size hashsize) 255) 255) 0))
-
-;; Make a number that is suitable for hashing; bigger than MIN and one
-;; less than 2^x.
+ (make-vector (if hashsize (max (gnus-create-hash-size hashsize) 256) 256) 0))
+
+;; Make a number that is suitable for hashing; bigger than MIN and
+;; equal to some 2^x. Many machines (such as sparcs) do not have a
+;; hardware modulo operation, so they implement it in software. On
+;; many sparcs over 50% of the time to intern is spent in the modulo.
+;; Yes, it's slower than actually computing the hash from the string!
+;; So we use powers of 2 so people can optimize the modulo to a mask.
(defun gnus-create-hash-size (min)
(let ((i 1))
(while (< i min)
(setq i (* 2 i)))
- (1- i)))
+ i))
(defcustom gnus-verbose 7
"*Integer that says how verbose Gnus should be.
"Score and kill file handling."
:group 'gnus )
-(defconst gnus-version-number "0.75"
+(defconst gnus-version-number "0.76"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Red Gnus v%s" gnus-version-number)
(while (setq article (pop articles))
(setq art-string (nnbabyl-article-string article))
(set-buffer nnbabyl-mbox-buffer)
- (beginning-of-line)
+ (end-of-line)
(when (or (search-forward art-string nil t)
(search-backward art-string nil t))
(unless (re-search-backward delim nil t)
(buffer-substring
(match-beginning 1) (match-end 1))))
(cdadar alist)))
- (setcdr (cadar alist) (1+ number)))
+ (setcdr (cadar alist) number))
(setq alist (cdr alist)))
;; We go through the mbox and make sure that each and
beg)
(set-buffer buffer)
(erase-buffer)
- (if (stringp article)
- nil
- (insert-buffer-substring
- nndoc-current-buffer (car entry) (nth 1 entry))
- (insert "\n")
- (setq beg (point))
- (insert-buffer-substring
- nndoc-current-buffer (nth 2 entry) (nth 3 entry))
- (goto-char beg)
- (when nndoc-prepare-body-function
- (funcall nndoc-prepare-body-function))
- (when nndoc-article-transform-function
- (funcall nndoc-article-transform-function article))
- t))))
+ (when entry
+ (if (stringp article)
+ nil
+ (insert-buffer-substring
+ nndoc-current-buffer (car entry) (nth 1 entry))
+ (insert "\n")
+ (setq beg (point))
+ (insert-buffer-substring
+ nndoc-current-buffer (nth 2 entry) (nth 3 entry))
+ (goto-char beg)
+ (when nndoc-prepare-body-function
+ (funcall nndoc-prepare-body-function))
+ (when nndoc-article-transform-function
+ (funcall nndoc-article-transform-function article))
+ t)))))
(deffoo nndoc-request-group (group &optional server dont-check)
"Select news GROUP."
(save-excursion
(nnmail-search-unix-mail-delim-backward)
(if leave-delim (progn (forward-line 1) (point))
- (match-beginning 0)))
+ (point)))
(progn
(forward-line 1)
(if (nnmail-search-unix-mail-delim)
(if (and (not (bobp)) leave-delim)
(progn (forward-line -2) (point))
- (match-beginning 0))
+ (point))
(point-max))))))
;; When scanning, we're not looking t immediately switch into the group - if
(goto-char (point-min)))
;; Quote all "From " lines in the article.
(forward-line 1)
- (while (re-search-forward delim nil t)
+ (while (re-search-forward "^From " nil t)
(beginning-of-line)
(insert "> "))
(setq save-list group-art-list)
(buffer-string)))
(error "%s" (buffer-string)))
(setq tofile nil)))))))
+ (message "Getting mail from %s...done" inbox)
(and errors
(buffer-name errors)
(kill-buffer errors))
(run-hooks 'nntp-prepare-server-hook)
(let* ((pbuffer (nntp-make-process-buffer buffer))
(process
- (ignore-errors
- (funcall nntp-open-connection-function pbuffer))))
+ (condition-case ()
+ (funcall nntp-open-connection-function pbuffer)
+ (error nil)
+ (quit nil))))
(when process
(process-kill-without-query process)
(nntp-wait-for process "^.*\n" buffer nil t)
+Mon Dec 16 13:53:28 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.texi (Exiting the Summary Buffer): Update.
+
Fri Dec 13 01:04:41 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
* gnus.texi (Limiting): Addition.
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Red Gnus 0.75 Manual
+@settitle Red Gnus 0.76 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Red Gnus 0.75 Manual
+@title Red Gnus 0.76 Manual
@author by Lars Magne Ingebrigtsen
@page
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Red Gnus 0.75
+This manual corresponds to Red Gnus 0.76
@end ifinfo
If non-@code{nil}, all threads will be hidden when the summary buffer is
generated.
+@item gnus-thread-expunge-below
+@vindex gnus-thread-expunge-below
+All threads that have a total score (as defined by
+@code{gnus-thread-score-function}) less than this number will be
+expunged. This variable is @code{nil} by default, which means that no
+threads are expunged.
+
@item gnus-thread-hide-killed
@vindex gnus-thread-hide-killed
if you kill a thread and this variable is non-@code{nil}, the subtree
@vindex gnus-thread-indent-level
This is a number that says how much each sub-thread should be indented.
The default is 4.
+
+@item gnus-parse-headers-hook
+@vindex gnus-parse-headers-hook
+Hook run before parsing any headers. The default value is
+@code{(gnus-decode-rfc1522)}, which means that QPized headers will be
+slightly decoded in a hackish way. This is likely to change in the
+future when Gnus becomes @sc{MIME}ified.
+
@end table
@kindex B r (Summary)
@findex gnus-summary-respool-article
Respool the mail article (@code{gnus-summary-move-article}).
+@code{gnus-summary-respool-default-method} will be used as the default
+method when respooling. This variable is @code{nil} by default, which
+means that the current group method will be used instead.
@item B w
@itemx e
called before doing much of the exiting, and calls
@code{gnus-summary-expire-articles} by default.
@code{gnus-summary-exit-hook} is called after finishing the exiting
-process.
+process. @code{gnus-group-no-more-groups-hook} is run when returning to
+group mode having no more (unread) groups.
@item Z E
@itemx Q
@item Z s
@kindex Z s (Summary)
@findex gnus-summary-save-newsrc
-Save the @file{.newsrc} file(s). The current number of read/marked
-articles in the summary buffer will also be saved. This will make exit
-without updating (the @kbd{Q} command) worthless.
+Save the current number of read/marked articles in the dribble buffer
+(@code{gnus-summary-save-newsrc}). If given a prefix, also save the
+@file{.newsrc} file(s). Using this command will make exit without
+updating (the @kbd{Q} command) worthless.
@end table
@vindex gnus-exit-group-hook
@vindex gnus-summary-default-score
Default score of an article, which is 0 by default.
+@item gnus-summary-expunge-below
+@vindex gnus-summary-expunge-below
+Don't display the summary lines of articles that have scores lower than
+this variable. This is @code{nil} by default, which means that no
+articles will be hidden.
+
@item gnus-score-over-mark
@vindex gnus-score-over-mark
Mark (in the third column) used for articles with a score over the