(sexp :menu-tag "on" t)))
 
 (defcustom gnus-simplify-subject-functions nil
-  "*List of functions taking a string argument that simplify subjects.
+  "List of functions taking a string argument that simplify subjects.
 The functions are applied recursively."
   :group 'gnus-thread
   :type '(repeat (list function)))
   :type 'boolean)
 
 (defcustom gnus-summary-dummy-line-format
-  "*  %(:                          :%) %S\n"
+  "  %(:                          :%) %S\n"
   "*The format specification for the dummy roots in the summary buffer.
 It works along the same lines as a normal formatting string,
 with some simple extensions.
   :type 'function)
 
 (defcustom gnus-summary-expunge-below nil
-  "*All articles that have a score less than this variable will be expunged.
+  "All articles that have a score less than this variable will be expunged.
 This variable is local to the summary buffers."
   :group 'gnus-score-default
   :type '(choice (const :tag "off" nil)
                 integer))
 
 (defcustom gnus-thread-expunge-below nil
-  "*All threads that have a total score less than this variable will be expunged.
+  "All threads that have a total score less than this variable will be expunged.
 See `gnus-thread-score-function' for en explanation of what a
 \"thread score\" is.
 
 
 (defcustom gnus-structured-field-decoder
   #'eword-decode-and-unfold-structured-field
-  "*Function to decode non-ASCII characters in structured field for summary."
+  "Function to decode non-ASCII characters in structured field for summary."
   :group 'gnus-various
   :type 'function)
 
      (eword-decode-unstructured-field-body
       (std11-unfold-string string) 'must-unfold)
      ))
-  "*Function to decode non-ASCII characters in unstructured field for summary."
+  "Function to decode non-ASCII characters in unstructured field for summary."
   :group 'gnus-various
   :type 'function)
 
   :type 'hook)
 
 (defcustom gnus-summary-selected-face 'gnus-summary-selected-face
-  "*Face used for highlighting the current article in the summary buffer."
+  "Face used for highlighting the current article in the summary buffer."
   :group 'gnus-summary-visual
   :type 'face)
 
      . gnus-summary-high-unread-face)
     ((and (< score default) (= mark gnus-unread-mark))
      . gnus-summary-low-unread-face)
-    ((memq mark (list gnus-unread-mark gnus-downloadable-mark
-                     gnus-undownloaded-mark))
+    ((= mark gnus-unread-mark)
+     . gnus-summary-normal-unread-face)
+    ((and (> score default) (memq mark (list gnus-downloadable-mark
+                                            gnus-undownloaded-mark)))
+     . gnus-summary-high-unread-face)
+    ((and (< score default) (memq mark (list gnus-downloadable-mark
+                                            gnus-undownloaded-mark)))
+     . gnus-summary-low-unread-face)
+    ((memq mark (list gnus-downloadable-mark gnus-undownloaded-mark))
      . gnus-summary-normal-unread-face)
     ((> score default)
      . gnus-summary-high-read-face)
                       face)))
 
 (defcustom gnus-alter-header-function nil
-  "*Function called to allow alteration of article header structures.
+  "Function called to allow alteration of article header structures.
 The function is called with one parameter, the article header vector,
 which it may alter in any way.")
 
            (progn
              (goto-char p)
              (setq id (if (re-search-forward
-                           "^message-id: *\\(<[^\n\t> ]>\\)" nil t)
+                           "^message-id: *\\(<[^\n\t> ]+>\\)" nil t)
                           ;; We do it this way to make sure the Message-ID
                           ;; is (somewhat) syntactically valid.
-                          (buffer-substring (match-beginning 0)
-                                            (match-end 0))
+                          (buffer-substring (match-beginning 1)
+                                            (match-end 1))
                         ;; If there was no message-id, we just fake one
                         ;; to make subsequent routines simpler.
                         (nnheader-generate-fake-message-id))))
   (interactive)
   (gnus-set-global-variables)
   (gnus-kill-save-kill-buffer)
+  (gnus-async-halt-prefetch)
   (let* ((group gnus-newsgroup-name)
         (quit-config (gnus-group-quit-config gnus-newsgroup-name))
         (mode major-mode)
     (when (or no-questions
              gnus-expert-user
              (gnus-y-or-n-p "Discard changes to this group and exit? "))
+      (gnus-async-halt-prefetch)
       ;; If we have several article buffers, we kill them at exit.
       (unless gnus-single-article-buffer
        (gnus-kill-buffer gnus-article-buffer)
   (gnus-summary-move-article n nil nil 'crosspost))
 
 (defcustom gnus-summary-respool-default-method nil
-  "*Default method for respooling an article.
+  "Default method for respooling an article.
 If nil, use to the current newsgroup method."
   :type `(choice (gnus-select-method :value (nnml ""))
                 (const nil))
 
   "Version number for this version of gnus.")
 
 (defconst gnus-version
-  (format "Semi-gnus %s (based on Quassia Gnus v0.30)" gnus-version-number)
+  (format "Semi-gnus %s (based on Quassia Gnus v0.31)" gnus-version-number)
   "Version string for this version of gnus.")
 
 (defcustom gnus-inhibit-startup-message nil
-  "*If non-nil, the startup message will not be displayed.
+  "If non-nil, the startup message will not be displayed.
 This variable is used before `.gnus.el' is loaded, so it should
 be set in `.emacs' instead."
   :group 'gnus-start
   :type 'boolean)
 
 (defcustom gnus-play-startup-jingle nil
-  "*If non-nil, play the Gnus jingle at startup."
+  "If non-nil, play the Gnus jingle at startup."
   :group 'gnus-start
   :type 'boolean)
 
 (require 'nnheader)
 
 (defcustom gnus-home-directory "~/"
-  "*Directory variable that specifies the \"home\" directory.
+  "Directory variable that specifies the \"home\" directory.
 All other Gnus path variables are initialized from this variable."
   :group 'gnus-files
   :type 'directory)
 
 (defcustom gnus-directory (or (getenv "SAVEDIR")
-                             (nnheader-concat gnus-home-directory "News/"))
+                     (nnheader-concat gnus-home-directory "News/"))
   "*Directory variable from which all other Gnus file variables are derived."
   :group 'gnus-files
   :type 'directory)
  (setq gnus-select-method '(nntp \"my.nntp.server\" (nntp-port-number 899)))")
 
 (defcustom gnus-nntpserver-file "/etc/nntpserver"
-  "*A file with only the name of the nntp server in it."
+  "A file with only the name of the nntp server in it."
   :group 'gnus-files
   :group 'gnus-server
   :type 'file)
                 string))
 
 (defcustom gnus-secondary-servers nil
-  "*List of NNTP servers that the user can choose between interactively.
+  "List of NNTP servers that the user can choose between interactively.
 To make Gnus query you for a server, you have to give `gnus' a
 non-numeric prefix - `C-u M-x gnus', in short."
   :group 'gnus-server
                 string))
 
 (defcustom gnus-secondary-select-methods nil
-  "*A list of secondary methods that will be used for reading news.
+  "A list of secondary methods that will be used for reading news.
 This is a list where each element is a complete select method (see
 `gnus-select-method').
 
 Should be set in paths.el, and shouldn't be touched by the user.")
 
 (defcustom gnus-local-domain nil
-  "*Local domain name without a host name.
+  "Local domain name without a host name.
 The DOMAINNAME environment variable is used instead if it is defined.
 If the `system-name' function returns the full Internet name, there is
 no need to set this variable."
 ;; Customization variables
 
 (defcustom gnus-refer-article-method nil
-  "*Preferred method for fetching an article by Message-ID.
+  "Preferred method for fetching an article by Message-ID.
 If you are reading news from the local spool (with nnspool), fetching
 articles by Message-ID is painfully slow.  By setting this method to an
 nntp method, you might get acceptable results.
   :type 'boolean)
 
 (defcustom gnus-use-demon nil
-  "*If non-nil, Gnus might use some demons."
+  "If non-nil, Gnus might use some demons."
   :group 'gnus-meta
   :type 'boolean)
 
   :type 'boolean)
 
 (defcustom gnus-shell-command-separator ";"
-  "*String used to separate to shell commands."
+  "String used to separate to shell commands."
   :group 'gnus-files
   :type 'string)
 
                                (sexp :tag "Value")))))
 
 (defcustom gnus-updated-mode-lines '(group article summary tree)
-  "*List of buffers that should update their mode lines.
+  "List of buffers that should update their mode lines.
 The list may contain the symbols `group', `article', `tree' and
 `summary'.  If the corresponding symbol is present, Gnus will keep
 that mode line updated with information that may be pertinent.
                 regexp))
 
 (defcustom gnus-group-uncollapsed-levels 1
-  "*Number of group name elements to leave alone when making a short group name."
+  "Number of group name elements to leave alone when making a short group name."
   :group 'gnus-group-visual
   :type 'integer)
 
 ;; Hooks.
 
 (defcustom gnus-load-hook nil
-  "*A hook run while Gnus is loaded."
+  "A hook run while Gnus is loaded."
   :group 'gnus-start
   :type 'hook)
 
 (defcustom gnus-apply-kill-hook '(gnus-apply-kill-file)
-  "*A hook called to apply kill files to a group.
+  "A hook called to apply kill files to a group.
 This hook is intended to apply a kill file to the selected newsgroup.
 The function `gnus-apply-kill-file' is called by default.
 
   :type 'hook)
 
 (defcustom gnus-group-change-level-function nil
-  "*Function run when a group level is changed.
+  "Function run when a group level is changed.
 It is called with three parameters -- GROUP, LEVEL and OLDLEVEL."
   :group 'gnus-group-level
   :type 'function)
        (kill-buffer (current-buffer))))))
 
 (defcustom gnus-kill-file-name "KILL"
-  "*Suffix of the kill files."
+  "Suffix of the kill files."
   :group 'gnus-score-kill
   :group 'gnus-score-files
   :type 'string)