*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 23:30:53 +0000 (23:30 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 23:30:53 +0000 (23:30 +0000)
62 files changed:
lisp/ChangeLog
lisp/article.el
lisp/custom-edit.el
lisp/dgnushack.el
lisp/gnus-art.el
lisp/gnus-async.el
lisp/gnus-audio.el
lisp/gnus-bcklg.el
lisp/gnus-cache.el
lisp/gnus-cite.el
lisp/gnus-demon.el
lisp/gnus-ems.el
lisp/gnus-gl.el
lisp/gnus-group.el
lisp/gnus-int.el
lisp/gnus-kill.el
lisp/gnus-load.el
lisp/gnus-logic.el
lisp/gnus-move.el
lisp/gnus-msg.el
lisp/gnus-nocem.el
lisp/gnus-picon.el
lisp/gnus-range.el
lisp/gnus-salt.el
lisp/gnus-score.el
lisp/gnus-setup.el
lisp/gnus-soup.el
lisp/gnus-spec.el
lisp/gnus-srvr.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-topic.el
lisp/gnus-util.el
lisp/gnus-uu.el
lisp/gnus-vm.el
lisp/gnus-win.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/message.el
lisp/nnbabyl.el
lisp/nndb.el
lisp/nndoc.el
lisp/nndraft.el
lisp/nneething.el
lisp/nnfolder.el
lisp/nnheader.el
lisp/nnheaderxm.el
lisp/nnkiboze.el
lisp/nnmail.el
lisp/nnmbox.el
lisp/nnmh.el
lisp/nnml.el
lisp/nnoo.el
lisp/nnsoup.el
lisp/nnspool.el
lisp/nntp.el
lisp/nnvirtual.el
lisp/nnweb.el
lisp/widget-edit.el
texi/ChangeLog
texi/gnus.texi
texi/message.texi

index 13e1ca9..609eb7e 100644 (file)
@@ -1,3 +1,49 @@
+Tue Oct  1 03:41:17 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-picon.el (gnus-picons-glyph-hashtb): Made into hashtb.
+
+Tue Oct  1 01:50:10 1996  Lars Magne Ingebrigtsen  <larsi@hrym.ifi.uio.no>
+
+       * gnus-group.el (gnus-group-new-mail): New function.
+       (gnus-new-mail-mark): New variable.
+
+       * nnmail.el (nnmail-new-mail-p): New function.
+
+       * gnus-xmas.el (gnus-xmas-splash): New function.
+
+Tue Oct  1 01:36:17 1996  Raja R. Harinath  <harinath@cs.umn.edu>
+
+        * gnus-score.el (gnus-all-score-files): Didn't handle alist.
+
+        * gnus-gl.el: Dropped `bbb-alist'.  Changed cl-hashtable to obarray,
+        using gnus-{get,set}hash to access it.  Dropped a few temp. bindings
+        Changed (aref (assoc "message-id" ...) ...) to (mail-header-id ...).
+
+Mon Sep 30 00:02:13 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
+
+       * gnus.el: General (and major) indentation, breaking,
+       if/when/unless/and/or, push revision.
+
+       * gnus-sum.el (gnus-read-header): Set buffer before changing
+       vars. 
+
+Sun Sep 29 23:20:26 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
+
+       * gnus-util.el (gnus-write-buffer): New function.
+
+Sun Sep 29 23:05:33 1996  Kurt Swanson  <Kurt.Swanson@dna.lth.se>
+
+       * gnus-sum.el (gnus-handle-ephemeral-exit): New function.
+
+Sun Sep 29 22:41:01 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
+
+       * gnus-cache.el (gnus-cache-possibly-enter-article): Allow making
+       articles persistent in uncacheable groups.
+
+Sun Sep 29 01:23:43 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.el: Red Gnus v0.45 is released.
+
 Sun Sep 29 00:57:13 1996  Dave Disser  <disser@sdd.hp.com>
 
        * gnus-sum.el (gnus-summary-display-article): Don't show tree
 Sun Sep 29 00:57:13 1996  Dave Disser  <disser@sdd.hp.com>
 
        * gnus-sum.el (gnus-summary-display-article): Don't show tree
index aa2e79e..f4b9196 100644 (file)
@@ -42,7 +42,9 @@
   "All headers that match this regexp will be hidden.
 This variable can also be a list of regexps of headers to be ignored.
 If `article-visible-headers' is non-nil, this variable will be ignored."
   "All headers that match this regexp will be hidden.
 This variable can also be a list of regexps of headers to be ignored.
 If `article-visible-headers' is non-nil, this variable will be ignored."
-  :type '(repeat string)               ;Leave monster regexp to lisp.
+  :type '(choice :custom-show nil
+                regexp
+                (repeat regexp))
   :group 'article)
 
 (defcustom gnus-visible-headers 
   :group 'article)
 
 (defcustom gnus-visible-headers 
@@ -53,7 +55,9 @@ If `article-visible-headers' is non-nil, this variable will be ignored."
   "All headers that do not match this regexp will be hidden.
 This variable can also be a list of regexp of headers to remain visible.
 If this variable is non-nil, `gnus-article-ignored-headers' will be ignored."
   "All headers that do not match this regexp will be hidden.
 This variable can also be a list of regexp of headers to remain visible.
 If this variable is non-nil, `gnus-article-ignored-headers' will be ignored."
-  :type '(repeat string)               ;Leave monster regexp to lisp.
+  :type '(choice :custom-show nil
+                (repeat regexp)
+                regexp)
   :group 'article)
 
 (defcustom gnus-sorted-header-list
   :group 'article)
 
 (defcustom gnus-sorted-header-list
@@ -63,18 +67,18 @@ If this variable is non-nil, `gnus-article-ignored-headers' will be ignored."
 If it is non-nil, headers that match the regular expressions will
 be placed first in the article buffer in the sequence specified by
 this list."
 If it is non-nil, headers that match the regular expressions will
 be placed first in the article buffer in the sequence specified by
 this list."
-  :type '(repeat string)
+  :type '(repeat regexp)
   :group 'article)
 
 (defcustom gnus-boring-article-headers '(empty followup-to reply-to)
   "Headers that are only to be displayed if they have interesting data.
 Possible values in this list are `empty', `newsgroups', `followup-to',
 `reply-to', and `date'."
   :group 'article)
 
 (defcustom gnus-boring-article-headers '(empty followup-to reply-to)
   "Headers that are only to be displayed if they have interesting data.
 Possible values in this list are `empty', `newsgroups', `followup-to',
 `reply-to', and `date'."
-  :type '(set (item :tag "Headers with no content." empty)
-             (item :tag "Newsgroups with only one group." newsgroups)
-             (item :tag "Followup-to identical to newsgroups." followup-to)
-             (item :tag "Reply-to identical to from." reply-to)
-             (item :tag "Date less than four days old." date))
+  :type '(set (const :tag "Headers with no content." empty)
+             (const :tag "Newsgroups with only one group." newsgroups)
+             (const :tag "Followup-to identical to newsgroups." followup-to)
+             (const :tag "Reply-to identical to from." reply-to)
+             (const :tag "Date less than four days old." date))
   :group 'article)
 
 (defcustom gnus-signature-separator '("^-- $" "^-- *$")
   :group 'article)
 
 (defcustom gnus-signature-separator '("^-- $" "^-- *$")
@@ -93,7 +97,7 @@ longer (in lines) than that number.  If it is a function, the function
 will be called without any parameters, and if it returns nil, there is
 no signature in the buffer.  If it is a string, it will be used as a
 regexp.  If it matches, the text in question is not a signature."
 will be called without any parameters, and if it returns nil, there is
 no signature in the buffer.  If it is a string, it will be used as a
 regexp.  If it matches, the text in question is not a signature."
-  :type '(choice integer number function string)
+  :type '(choice integer number function regexp)
   :group 'article)
 
 (defcustom gnus-hidden-properties '(invisible t intangible t)
   :group 'article)
 
 (defcustom gnus-hidden-properties '(invisible t intangible t)
@@ -476,8 +480,8 @@ always hide."
                                                (point-max))
          (subst-char-in-region (point-min) (point-max) ?_ ? )
          (goto-char (point-max)))
                                                (point-max))
          (subst-char-in-region (point-min) (point-max) ?_ ? )
          (goto-char (point-max)))
-       (if (looking-at "\\([ \t\n]+\\)=\\?")
-           (replace-match "" t t nil 1))
+       (when (looking-at "\\([ \t\n]+\\)=\\?")
+         (replace-match "" t t nil 1))
        (goto-char (point-min))))))
 
 (defun article-de-quoted-unreadable (&optional force)
        (goto-char (point-min))))))
 
 (defun article-de-quoted-unreadable (&optional force)
index ed7385f..1145a05 100644 (file)
@@ -607,7 +607,7 @@ Optional EVENT is the location for the menu."
         (child (car (widget-get widget :children))))
     (unless (get symbol 'saved-face)
       (error "No saved value for this face")
         (child (car (widget-get widget :children))))
     (unless (get symbol 'saved-face)
       (error "No saved value for this face")
-    (widget-value-set child (get symbol 'saved-face)))))
+      (widget-value-set child (get symbol 'saved-face)))))
 
 (defun custom-face-factory (widget)
   "Restore WIDGET to the face's factory settings."
 
 (defun custom-face-factory (widget)
   "Restore WIDGET to the face's factory settings."
index c04fda8..f3e4810 100644 (file)
@@ -36,7 +36,7 @@
 (defalias 'ange-ftp-re-read-dir 'ignore)
 
 (defun dgnushack-compile ()
 (defalias 'ange-ftp-re-read-dir 'ignore)
 
 (defun dgnushack-compile ()
-                                       ;(setq byte-compile-dynamic t)
+  ;;(setq byte-compile-dynamic t)
   (let ((files (directory-files "." nil ".el$"))
        (xemacs (string-match "XEmacs" emacs-version))
        ;;(byte-compile-generate-call-tree t)
   (let ((files (directory-files "." nil ".el$"))
        (xemacs (string-match "XEmacs" emacs-version))
        ;;(byte-compile-generate-call-tree t)
index 2ec6f15..5c46531 100644 (file)
@@ -361,9 +361,10 @@ displayed by the first non-nil matching CONTENT face."
                nil)
               (t file)))
             (gnus-number-of-articles-to-be-saved
                nil)
               (t file)))
             (gnus-number-of-articles-to-be-saved
-             (when (eq gnus-prompt-before-saving t) num))) ; Magic
+             (when (eq gnus-prompt-before-saving t)
+               num)))                  ; Magic
        (set-buffer gnus-summary-buffer)
        (set-buffer gnus-summary-buffer)
-       (funcall gnus-default-article-saver filename)))))
+       (funcall gnus-default-article-saver filename))))) 
 
 (defun gnus-read-save-file-name (prompt default-name &optional filename)
   (cond
 
 (defun gnus-read-save-file-name (prompt default-name &optional filename)
   (cond
@@ -509,8 +510,8 @@ The directory to save in defaults to `gnus-article-save-directory'."
        (save-restriction
          (widen)
          (goto-char (point-min))
        (save-restriction
          (widen)
          (goto-char (point-min))
-         (and (search-forward "\n\n" nil t)
-              (narrow-to-region (point) (point-max)))
+         (when (search-forward "\n\n" nil t)
+           (narrow-to-region (point) (point-max)))
          (gnus-output-to-file filename))))
     ;; Remember the directory name to save articles.
     (setq gnus-newsgroup-last-file filename)))
          (gnus-output-to-file filename))))
     ;; Remember the directory name to save articles.
     (setq gnus-newsgroup-last-file filename)))
@@ -525,8 +526,8 @@ The directory to save in defaults to `gnus-article-save-directory'."
              (command command)
              (t (read-string "Shell command on article: "
                              gnus-last-shell-command))))
              (command command)
              (t (read-string "Shell command on article: "
                              gnus-last-shell-command))))
-  (if (string-equal command "")
-      (setq command gnus-last-shell-command))
+  (when (string-equal command "")
+    (setq command gnus-last-shell-command))
   (gnus-eval-in-buffer-window gnus-article-buffer
     (save-restriction
       (widen)
   (gnus-eval-in-buffer-window gnus-article-buffer
     (save-restriction
       (widen)
@@ -537,9 +538,9 @@ The directory to save in defaults to `gnus-article-save-directory'."
 
 (defun gnus-capitalize-newsgroup (newsgroup)
   "Capitalize NEWSGROUP name."
 
 (defun gnus-capitalize-newsgroup (newsgroup)
   "Capitalize NEWSGROUP name."
-  (and (not (zerop (length newsgroup)))
-       (concat (char-to-string (upcase (aref newsgroup 0)))
-              (substring newsgroup 1))))
+  (when (not (zerop (length newsgroup)))
+    (concat (char-to-string (upcase (aref newsgroup 0)))
+           (substring newsgroup 1))))
 
 (defun gnus-Numeric-save-name (newsgroup headers &optional last-file)
   "Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
 
 (defun gnus-Numeric-save-name (newsgroup headers &optional last-file)
   "Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
@@ -806,41 +807,41 @@ If ALL-HEADERS is non-nil, no headers are hidden."
            ;; The result from the `request' was an actual article -
            ;; or at least some text that is now displayed in the
            ;; article buffer.
            ;; The result from the `request' was an actual article -
            ;; or at least some text that is now displayed in the
            ;; article buffer.
-           (if (and (numberp article)
-                    (not (eq article gnus-current-article)))
-               ;; Seems like a new article has been selected.
-               ;; `gnus-current-article' must be an article number.
-               (save-excursion
-                 (set-buffer summary-buffer)
-                 (setq gnus-last-article gnus-current-article
-                       gnus-newsgroup-history (cons gnus-current-article
-                                                    gnus-newsgroup-history)
-                       gnus-current-article article
-                       gnus-current-headers
-                       (gnus-summary-article-header gnus-current-article)
-                       gnus-article-current
-                       (cons gnus-newsgroup-name gnus-current-article))
-                 (unless (vectorp gnus-current-headers)
-                   (setq gnus-current-headers nil))
-                 (gnus-summary-show-thread)
-                 (run-hooks 'gnus-mark-article-hook)
-                 (gnus-set-mode-line 'summary)
-                 (and (gnus-visual-p 'article-highlight 'highlight)
-                      (run-hooks 'gnus-visual-mark-article-hook))
-                 ;; Set the global newsgroup variables here.
-                 ;; Suggested by Jim Sisolak
-                 ;; <sisolak@trans4.neep.wisc.edu>.
-                 (gnus-set-global-variables)
-                 (setq gnus-have-all-headers
-                       (or all-headers gnus-show-all-headers))
-                 (and gnus-use-cache
-                      (vectorp (gnus-summary-article-header article))
-                      (gnus-cache-possibly-enter-article
-                       group article
-                       (gnus-summary-article-header article)
-                       (memq article gnus-newsgroup-marked)
-                       (memq article gnus-newsgroup-dormant)
-                       (memq article gnus-newsgroup-unreads)))))
+           (when (and (numberp article)
+                      (not (eq article gnus-current-article)))
+             ;; Seems like a new article has been selected.
+             ;; `gnus-current-article' must be an article number.
+             (save-excursion
+               (set-buffer summary-buffer)
+               (setq gnus-last-article gnus-current-article
+                     gnus-newsgroup-history (cons gnus-current-article
+                                                  gnus-newsgroup-history)
+                     gnus-current-article article
+                     gnus-current-headers
+                     (gnus-summary-article-header gnus-current-article)
+                     gnus-article-current
+                     (cons gnus-newsgroup-name gnus-current-article))
+               (unless (vectorp gnus-current-headers)
+                 (setq gnus-current-headers nil))
+               (gnus-summary-show-thread)
+               (run-hooks 'gnus-mark-article-hook)
+               (gnus-set-mode-line 'summary)
+               (when (gnus-visual-p 'article-highlight 'highlight)
+                 (run-hooks 'gnus-visual-mark-article-hook))
+               ;; Set the global newsgroup variables here.
+               ;; Suggested by Jim Sisolak
+               ;; <sisolak@trans4.neep.wisc.edu>.
+               (gnus-set-global-variables)
+               (setq gnus-have-all-headers
+                     (or all-headers gnus-show-all-headers))
+               (and gnus-use-cache
+                    (vectorp (gnus-summary-article-header article))
+                    (gnus-cache-possibly-enter-article
+                     group article
+                     (gnus-summary-article-header article)
+                     (memq article gnus-newsgroup-marked)
+                     (memq article gnus-newsgroup-dormant)
+                     (memq article gnus-newsgroup-unreads)))))
            (when (or (numberp article)
                      (stringp article))
              ;; Hooks for getting information from the article.
            (when (or (numberp article)
                      (stringp article))
              ;; Hooks for getting information from the article.
@@ -849,16 +850,17 @@ If ALL-HEADERS is non-nil, no headers are hidden."
                (run-hooks 'internal-hook)
                (run-hooks 'gnus-article-prepare-hook)
                ;; Decode MIME message.
                (run-hooks 'internal-hook)
                (run-hooks 'gnus-article-prepare-hook)
                ;; Decode MIME message.
-               (if gnus-show-mime
-                   (if (or (not gnus-strict-mime)
-                           (gnus-fetch-field "Mime-Version"))
-                       (funcall gnus-show-mime-method)
-                     (funcall gnus-decode-encoded-word-method)))
+               (when gnus-show-mime
+                 (if (or (not gnus-strict-mime)
+                         (gnus-fetch-field "Mime-Version"))
+                     (funcall gnus-show-mime-method)
+                   (funcall gnus-decode-encoded-word-method)))
                ;; Perform the article display hooks.
                (run-hooks 'gnus-article-display-hook))
              ;; Do page break.
              (goto-char (point-min))
                ;; Perform the article display hooks.
                (run-hooks 'gnus-article-display-hook))
              ;; Do page break.
              (goto-char (point-min))
-             (and gnus-break-pages (gnus-narrow-to-page)))
+             (when gnus-break-pages
+               (gnus-narrow-to-page)))
            (gnus-set-mode-line 'article)
            (gnus-configure-windows 'article)
            (goto-char (point-min))
            (gnus-set-mode-line 'article)
            (gnus-configure-windows 'article)
            (goto-char (point-min))
@@ -913,7 +915,7 @@ Provided for backwards compatibility."
                  (set-buffer file-buffer)
                  (rmail-insert-rmail-file-header)
                  (let ((require-final-newline nil))
                  (set-buffer file-buffer)
                  (rmail-insert-rmail-file-header)
                  (let ((require-final-newline nil))
-                   (write-region (point-min) (point-max) file-name t 1)))
+                   (gnus-write-buffer file-name)))
                (kill-buffer file-buffer))
            (error "Output file does not exist")))
       (set-buffer tmpbuf)
                (kill-buffer file-buffer))
            (error "Output file does not exist")))
       (set-buffer tmpbuf)
@@ -931,19 +933,18 @@ Provided for backwards compatibility."
                (msg (and (boundp 'rmail-current-message)
                          (symbol-value 'rmail-current-message))))
            ;; If MSG is non-nil, buffer is in RMAIL mode.
                (msg (and (boundp 'rmail-current-message)
                          (symbol-value 'rmail-current-message))))
            ;; If MSG is non-nil, buffer is in RMAIL mode.
-           (if msg
-               (progn (widen)
-                      (narrow-to-region (point-max) (point-max))))
+           (when msg
+             (widen)
+             (narrow-to-region (point-max) (point-max)))
            (insert-buffer-substring tmpbuf)
            (insert-buffer-substring tmpbuf)
-           (if msg
-               (progn
-                 (goto-char (point-min))
-                 (widen)
-                 (search-backward "\^_")
-                 (narrow-to-region (point) (point-max))
-                 (goto-char (1+ (point-min)))
-                 (rmail-count-new-messages t)
-                 (rmail-show-message msg)))))))
+           (when msg
+             (goto-char (point-min))
+             (widen)
+             (search-backward "\^_")
+             (narrow-to-region (point) (point-max))
+             (goto-char (1+ (point-min)))
+             (rmail-count-new-messages t)
+             (rmail-show-message msg))))))
     (kill-buffer tmpbuf)))
 
 (defun gnus-output-to-file (file-name)
     (kill-buffer tmpbuf)))
 
 (defun gnus-output-to-file (file-name)
@@ -1173,8 +1174,8 @@ If given a prefix, show the hidden text instead."
 
 (defun gnus-article-maybe-highlight ()
   "Do some article highlighting if `article-visual' is non-nil."
 
 (defun gnus-article-maybe-highlight ()
   "Do some article highlighting if `article-visual' is non-nil."
-  (if (gnus-visual-p 'article-highlight 'highlight)
-      (gnus-article-highlight-some)))
+  (when (gnus-visual-p 'article-highlight 'highlight)
+    (gnus-article-highlight-some)))
 
 (defun gnus-request-article-this-buffer (article group)
   "Get an article and insert it into this buffer."
 
 (defun gnus-request-article-this-buffer (article group)
   "Get an article and insert it into this buffer."
@@ -1208,23 +1209,23 @@ If given a prefix, show the hidden text instead."
            (save-excursion
              (set-buffer gnus-summary-buffer)
              (let ((header (gnus-summary-article-header article)))
            (save-excursion
              (set-buffer gnus-summary-buffer)
              (let ((header (gnus-summary-article-header article)))
-               (if (< article 0)
-                   (cond 
-                    ((memq article gnus-newsgroup-sparse)
-                     ;; This is a sparse gap article.
-                     (setq do-update-line article)
-                     (setq article (mail-header-id header))
-                     (let ((gnus-override-method gnus-refer-article-method))
-                       (gnus-read-header article))
-                     (setq gnus-newsgroup-sparse
-                           (delq article gnus-newsgroup-sparse)))
-                    ((vectorp header)
-                     ;; It's a real article.
-                     (setq article (mail-header-id header)))
-                    (t
-                     ;; It is an extracted pseudo-article.
-                     (setq article 'pseudo)
-                     (gnus-request-pseudo-article header))))
+               (when (< article 0)
+                 (cond 
+                  ((memq article gnus-newsgroup-sparse)
+                   ;; This is a sparse gap article.
+                   (setq do-update-line article)
+                   (setq article (mail-header-id header))
+                   (let ((gnus-override-method gnus-refer-article-method))
+                     (gnus-read-header article))
+                   (setq gnus-newsgroup-sparse
+                         (delq article gnus-newsgroup-sparse)))
+                  ((vectorp header)
+                   ;; It's a real article.
+                   (setq article (mail-header-id header)))
+                  (t
+                   ;; It is an extracted pseudo-article.
+                   (setq article 'pseudo)
+                   (gnus-request-pseudo-article header))))
                
                (let ((method (gnus-find-method-for-group 
                               gnus-newsgroup-name)))
                
                (let ((method (gnus-find-method-for-group 
                               gnus-newsgroup-name)))
@@ -1232,10 +1233,9 @@ If given a prefix, show the hidden text instead."
                      ()
                    (let ((dir (concat (file-name-as-directory (nth 1 method))
                                       (mail-header-subject header))))
                      ()
                    (let ((dir (concat (file-name-as-directory (nth 1 method))
                                       (mail-header-subject header))))
-                     (if (file-directory-p dir)
-                         (progn
-                           (setq article 'nneething)
-                           (gnus-group-enter-directory dir)))))))))
+                     (when (file-directory-p dir)
+                       (setq article 'nneething)
+                       (gnus-group-enter-directory dir))))))))
 
          (cond
           ;; Refuse to select canceled articles.
 
          (cond
           ;; Refuse to select canceled articles.
@@ -1545,7 +1545,8 @@ call it with the value of the `gnus-data' text property."
   (let* ((pos (posn-point (event-start event)))
          (data (get-text-property pos 'gnus-data))
         (fun (get-text-property pos 'gnus-callback)))
   (let* ((pos (posn-point (event-start event)))
          (data (get-text-property pos 'gnus-data))
         (fun (get-text-property pos 'gnus-callback)))
-    (if fun (funcall fun data))))
+    (when fun
+      (funcall fun data))))
 
 (defun gnus-article-press-button ()
   "Check text at point for a callback function.
 
 (defun gnus-article-press-button ()
   "Check text at point for a callback function.
@@ -1554,7 +1555,8 @@ call it with the value of the `gnus-data' text property."
   (interactive)
   (let* ((data (get-text-property (point) 'gnus-data))
         (fun (get-text-property (point) 'gnus-callback)))
   (interactive)
   (let* ((data (get-text-property (point) 'gnus-data))
         (fun (get-text-property (point) 'gnus-callback)))
-    (if fun (funcall fun data))))
+    (when fun
+      (funcall fun data))))
 
 (defun gnus-article-prev-button (n)
   "Move point to N buttons backward.
 
 (defun gnus-article-prev-button (n)
   "Move point to N buttons backward.
@@ -1640,8 +1642,8 @@ do the highlighting.  See the documentation for those functions."
                        (not (eobp)))
              (beginning-of-line)
              (setq from (point))
                        (not (eobp)))
              (beginning-of-line)
              (setq from (point))
-             (or (search-forward ":" nil t)
-                 (forward-char 1))
+             (unless (search-forward ":" nil t)
+               (forward-char 1))
              (when (and header-face
                         (not (memq (point) hpoints)))
                (push (point) hpoints)
              (when (and header-face
                         (not (memq (point) hpoints)))
                (push (point) hpoints)
@@ -1742,11 +1744,11 @@ specified by `gnus-button-alist'."
                   (end (match-end (nth 1 entry)))
                   (form (nth 2 entry)))
              (goto-char (match-end 0))
                   (end (match-end (nth 1 entry)))
                   (form (nth 2 entry)))
              (goto-char (match-end 0))
-             (and (eval form)
-                  (gnus-article-add-button 
-                   start end (nth 3 entry)
-                   (buffer-substring (match-beginning (nth 4 entry))
-                                     (match-end (nth 4 entry)))))))
+             (when (eval form)
+               (gnus-article-add-button 
+                start end (nth 3 entry)
+                (buffer-substring (match-beginning (nth 4 entry))
+                                  (match-end (nth 4 entry)))))))
          (goto-char end))))
     (widen)))
 
          (goto-char end))))
     (widen)))
 
@@ -1754,9 +1756,9 @@ specified by `gnus-button-alist'."
 
 (defun gnus-article-add-button (from to fun &optional data)
   "Create a button between FROM and TO with callback FUN and data DATA."
 
 (defun gnus-article-add-button (from to fun &optional data)
   "Create a button between FROM and TO with callback FUN and data DATA."
-  (and gnus-article-button-face
-       (gnus-overlay-put (gnus-make-overlay from to)
-                        'face gnus-article-button-face))
+  (when gnus-article-button-face
+    (gnus-overlay-put (gnus-make-overlay from to)
+                     'face gnus-article-button-face))
   (gnus-add-text-properties 
    from to
    (nconc (and gnus-article-mouse-face
   (gnus-add-text-properties 
    from to
    (nconc (and gnus-article-mouse-face
@@ -1794,7 +1796,7 @@ specified by `gnus-button-alist'."
     (let* ((entry (gnus-button-entry))
           (inhibit-point-motion-hooks t)
           (fun (nth 3 entry))
     (let* ((entry (gnus-button-entry))
           (inhibit-point-motion-hooks t)
           (fun (nth 3 entry))
-          (args (mapcar (lambda (group) 
+          (args (mapcar (lambda (group)
                           (let ((string (buffer-substring
                                          (match-beginning group)
                                          (match-end group))))
                           (let ((string (buffer-substring
                                          (match-beginning group)
                                          (match-end group))))
@@ -1904,7 +1906,7 @@ specified by `gnus-button-alist'."
   (let ((win (selected-window)))
     (select-window (get-buffer-window gnus-article-buffer t))
     (gnus-article-prev-page)
   (let ((win (selected-window)))
     (select-window (get-buffer-window gnus-article-buffer t))
     (gnus-article-prev-page)
-    (select-window win)))
+    (select-window win))) 
 
 (provide 'gnus-art)
 
 
 (provide 'gnus-art)
 
index 013ff5a..0121066 100644 (file)
@@ -147,7 +147,7 @@ It should return non-nil if the article is to be prefetched.")
                   (data (gnus-data-find-list article))
                   d)
               (while (and (setq d (pop data))
                   (data (gnus-data-find-list article))
                   d)
               (while (and (setq d (pop data))
-                          (if (numberp n) 
+                          (if (numberp n)
                               (natnump (decf n))
                             n))
                 (unless (or (gnus-async-prefetched-article-entry
                               (natnump (decf n))
                             n))
                 (unless (or (gnus-async-prefetched-article-entry
index 2342bef..e72804a 100644 (file)
@@ -27,8 +27,8 @@
 ;; You can safely ignore most of it until Red Gnus.  **Evil Laugh**
 ;;; Code:
 
 ;; You can safely ignore most of it until Red Gnus.  **Evil Laugh**
 ;;; Code:
 
-(if (null (boundp 'running-xemacs))
-    (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)))
+(when (null (boundp 'running-xemacs))
+  (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)))
 
 (require 'nnheader)
 (eval-when-compile (require 'cl))
 
 (require 'nnheader)
 (eval-when-compile (require 'cl))
index 3024481..855ca66 100644 (file)
       (and (numberp gnus-keep-backlog)
           (>= (length gnus-backlog-articles) gnus-keep-backlog)
           (gnus-backlog-remove-oldest-article))
       (and (numberp gnus-keep-backlog)
           (>= (length gnus-backlog-articles) gnus-keep-backlog)
           (gnus-backlog-remove-oldest-article))
-      (setq gnus-backlog-articles (cons ident gnus-backlog-articles))
+      (push ident gnus-backlog-articles)
       ;; Insert the new article.
       (save-excursion
        (set-buffer (gnus-backlog-buffer))
        (let (buffer-read-only)
          (goto-char (point-max))
       ;; Insert the new article.
       (save-excursion
        (set-buffer (gnus-backlog-buffer))
        (let (buffer-read-only)
          (goto-char (point-max))
-         (or (bolp) (insert "\n"))
+         (unless (bolp)
+           (insert "\n"))
          (setq b (point))
          (insert-buffer-substring buffer)
          ;; Tag the beginning of the article with the ident.
          (setq b (point))
          (insert-buffer-substring buffer)
          ;; Tag the beginning of the article with the ident.
index cca9609..0480569 100644 (file)
@@ -90,32 +90,28 @@ variable to \"^nnml\".")
 (defun gnus-cache-save-buffers ()
   ;; save the overview buffer if it exists and has been modified
   ;; delete empty cache subdirectories
 (defun gnus-cache-save-buffers ()
   ;; save the overview buffer if it exists and has been modified
   ;; delete empty cache subdirectories
-  (if (null gnus-cache-buffer)
-      ()
+  (when gnus-cache-buffer
     (let ((buffer (cdr gnus-cache-buffer))
          (overview-file (gnus-cache-file-name
                          (car gnus-cache-buffer) ".overview")))
       ;; write the overview only if it was modified
     (let ((buffer (cdr gnus-cache-buffer))
          (overview-file (gnus-cache-file-name
                          (car gnus-cache-buffer) ".overview")))
       ;; write the overview only if it was modified
-      (if (buffer-modified-p buffer)
-         (save-excursion
-           (set-buffer buffer)
-           (if (> (buffer-size) 0)
-               ;; non-empty overview, write it out
-               (progn
-                 (gnus-make-directory (file-name-directory overview-file))
-                 (write-region (point-min) (point-max)
-                               overview-file nil 'quietly))
-             ;; empty overview file, remove it
-             (and (file-exists-p overview-file)
-                  (delete-file overview-file))
-             ;; if possible, remove group's cache subdirectory
-             (condition-case nil
-                 ;; FIXME: we can detect the error type and warn the user
-                 ;; of any inconsistencies (articles w/o nov entries?).
-                 ;; for now, just be conservative...delete only if safe -- sj
-                 (delete-directory (file-name-directory overview-file))
-               (error nil)))))
-      ;; kill the buffer, it's either unmodified or saved
+      (when (buffer-modified-p buffer)
+       (save-excursion
+         (set-buffer buffer)
+         (if (> (buffer-size) 0)
+             ;; Non-empty overview, write it to a file.
+             (gnus-write-buffer overview-file)
+           ;; Empty overview file, remove it
+           (when (file-exists-p overview-file)
+             (delete-file overview-file))
+           ;; If possible, remove group's cache subdirectory.
+           (condition-case nil
+               ;; FIXME: we can detect the error type and warn the user
+               ;; of any inconsistencies (articles w/o nov entries?).
+               ;; for now, just be conservative...delete only if safe -- sj
+               (delete-directory (file-name-directory overview-file))
+             (error nil)))))
+      ;; Kill the buffer -- it's either unmodified or saved.
       (gnus-kill-buffer buffer)
       (setq gnus-cache-buffer nil))))
 
       (gnus-kill-buffer buffer)
       (setq gnus-cache-buffer nil))))
 
@@ -124,7 +120,8 @@ variable to \"^nnml\".")
   (when (and (or force (not (eq gnus-use-cache 'passive)))
             (numberp article)
             (> article 0)
   (when (and (or force (not (eq gnus-use-cache 'passive)))
             (numberp article)
             (> article 0)
-            (vectorp headers))         ; This might be a dummy article.
+            (vectorp headers))
+                                       ; This might be a dummy article.
     ;; If this is a virtual group, we find the real group.
     (when (gnus-virtual-group-p group)
       (let ((result (nnvirtual-find-group-art 
     ;; If this is a virtual group, we find the real group.
     (when (gnus-virtual-group-p group)
       (let ((result (nnvirtual-find-group-art 
@@ -135,11 +132,12 @@ variable to \"^nnml\".")
     (let ((number (mail-header-number headers))
          file dir)
       (when (and (> number 0)          ; Reffed article.
     (let ((number (mail-header-number headers))
          file dir)
       (when (and (> number 0)          ; Reffed article.
-                (or (not gnus-uncacheable-groups)
-                    (not (string-match gnus-uncacheable-groups group)))
                 (or force
                 (or force
-                    (gnus-cache-member-of-class
-                     gnus-cache-enter-articles ticked dormant unread))
+                    (and (or (not gnus-uncacheable-groups)
+                             (not (string-match
+                                   gnus-uncacheable-groups group)))
+                         (gnus-cache-member-of-class
+                          gnus-cache-enter-articles ticked dormant unread)))
                 (not (file-exists-p (setq file (gnus-cache-file-name
                                                 group number)))))
        ;; Possibly create the cache directory.
                 (not (file-exists-p (setq file (gnus-cache-file-name
                                                 group number)))))
        ;; Possibly create the cache directory.
@@ -152,25 +150,25 @@ variable to \"^nnml\".")
            (let ((gnus-use-cache nil))
              (gnus-request-article-this-buffer number group))
            (when (> (buffer-size) 0)
            (let ((gnus-use-cache nil))
              (gnus-request-article-this-buffer number group))
            (when (> (buffer-size) 0)
-             (write-region (point-min) (point-max) file nil 'quiet)
+             (gnus-write-buffer file)
              (gnus-cache-change-buffer group)
              (set-buffer (cdr gnus-cache-buffer))
              (goto-char (point-max))
              (forward-line -1)
              (while (condition-case ()
              (gnus-cache-change-buffer group)
              (set-buffer (cdr gnus-cache-buffer))
              (goto-char (point-max))
              (forward-line -1)
              (while (condition-case ()
-                        (and (not (bobp))
-                             (> (read (current-buffer)) number))
+                        (when (not (bobp))
+                          (> (read (current-buffer)) number))
                       (error
                        ;; The line was malformed, so we just remove it!!
                        (gnus-delete-line)
                        t))
                (forward-line -1))
                       (error
                        ;; The line was malformed, so we just remove it!!
                        (gnus-delete-line)
                        t))
                (forward-line -1))
-             (if (bobp) 
+             (if (bobp)
                  (if (not (eobp))
                      (progn
                        (beginning-of-line)
                  (if (not (eobp))
                      (progn
                        (beginning-of-line)
-                       (if (< (read (current-buffer)) number)
-                           (forward-line 1)))
+                       (when (< (read (current-buffer)) number)
+                         (forward-line 1)))
                    (beginning-of-line))
                (forward-line 1))
              (beginning-of-line)
                    (beginning-of-line))
                (forward-line 1))
              (beginning-of-line)
@@ -219,14 +217,14 @@ variable to \"^nnml\".")
          article)
       (gnus-cache-change-buffer gnus-newsgroup-name)
       (while articles
          article)
       (gnus-cache-change-buffer gnus-newsgroup-name)
       (while articles
-       (if (memq (setq article (pop articles)) cache-articles)
-           ;; The article was in the cache, so we see whether we are
-           ;; supposed to remove it from the cache.
-           (gnus-cache-possibly-remove-article
-            article (memq article gnus-newsgroup-marked)
-            (memq article gnus-newsgroup-dormant)
-            (or (memq article gnus-newsgroup-unreads)
-                (memq article gnus-newsgroup-unselected))))))
+       (when (memq (setq article (pop articles)) cache-articles)
+         ;; The article was in the cache, so we see whether we are
+         ;; supposed to remove it from the cache.
+         (gnus-cache-possibly-remove-article
+          article (memq article gnus-newsgroup-marked)
+          (memq article gnus-newsgroup-dormant)
+          (or (memq article gnus-newsgroup-unreads)
+              (memq article gnus-newsgroup-unselected))))))
     ;; The overview file might have been modified, save it
     ;; safe because we're only called at group exit anyway.
     (gnus-cache-save-buffers)))
     ;; The overview file might have been modified, save it
     ;; safe because we're only called at group exit anyway.
     (gnus-cache-save-buffers)))
@@ -359,21 +357,21 @@ Returns the list of articles removed."
           ;; Another overview cache is current, save it.
           (gnus-cache-save-buffers)))
   ;; if gnus-cache buffer is nil, create it
           ;; Another overview cache is current, save it.
           (gnus-cache-save-buffers)))
   ;; if gnus-cache buffer is nil, create it
-  (or gnus-cache-buffer
-      ;; Create cache buffer
-      (save-excursion
-       (setq gnus-cache-buffer
-             (cons group
-                   (set-buffer (get-buffer-create " *gnus-cache-overview*"))))
-       (buffer-disable-undo (current-buffer))
-       ;; Insert the contents of this group's cache overview.
-       (erase-buffer)
-       (let ((file (gnus-cache-file-name group ".overview")))
-         (and (file-exists-p file)
-              (insert-file-contents file)))
-       ;; We have a fresh (empty/just loaded) buffer, 
-       ;; mark it as unmodified to save a redundant write later.
-       (set-buffer-modified-p nil))))
+  (unless gnus-cache-buffer
+    ;; Create cache buffer
+    (save-excursion
+      (setq gnus-cache-buffer
+           (cons group
+                 (set-buffer (get-buffer-create " *gnus-cache-overview*"))))
+      (buffer-disable-undo (current-buffer))
+      ;; Insert the contents of this group's cache overview.
+      (erase-buffer)
+      (let ((file (gnus-cache-file-name group ".overview")))
+       (when (file-exists-p file)
+         (insert-file-contents file)))
+      ;; We have a fresh (empty/just loaded) buffer, 
+      ;; mark it as unmodified to save a redundant write later.
+      (set-buffer-modified-p nil))))
 
 ;; Return whether an article is a member of a class.
 (defun gnus-cache-member-of-class (class ticked dormant unread)
 
 ;; Return whether an article is a member of a class.
 (defun gnus-cache-member-of-class (class ticked dormant unread)
@@ -423,11 +421,11 @@ Returns the list of articles removed."
        (delete-file file)
        (set-buffer (cdr gnus-cache-buffer))
        (goto-char (point-min))
        (delete-file file)
        (set-buffer (cdr gnus-cache-buffer))
        (goto-char (point-min))
-       (if (or (looking-at (concat (int-to-string number) "\t"))
-               (search-forward (concat "\n" (int-to-string number) "\t")
-                               (point-max) t))
-           (delete-region (progn (beginning-of-line) (point))
-                          (progn (forward-line 1) (point)))))
+       (when (or (looking-at (concat (int-to-string number) "\t"))
+                 (search-forward (concat "\n" (int-to-string number) "\t")
+                                 (point-max) t))
+         (delete-region (progn (beginning-of-line) (point))
+                        (progn (forward-line 1) (point)))))
       (setq gnus-newsgroup-cached
            (delq article gnus-newsgroup-cached))
       (gnus-summary-update-secondary-mark article)
       (setq gnus-newsgroup-cached
            (delq article gnus-newsgroup-cached))
       (gnus-summary-update-secondary-mark article)
@@ -437,7 +435,7 @@ Returns the list of articles removed."
   "Return a sorted list of cached articles in GROUP."
   (let ((dir (file-name-directory (gnus-cache-file-name group 1))))
     (when (file-exists-p dir)
   "Return a sorted list of cached articles in GROUP."
   (let ((dir (file-name-directory (gnus-cache-file-name group 1))))
     (when (file-exists-p dir)
-      (sort (mapcar (lambda (name) (string-to-int name)) 
+      (sort (mapcar (lambda (name) (string-to-int name))
                    (directory-files dir nil "^[0-9]+$" t))
            '<))))
 
                    (directory-files dir nil "^[0-9]+$" t))
            '<))))
 
@@ -467,8 +465,9 @@ Returns the list of articles removed."
            (setq beg (progn (beginning-of-line) (point))
                  end (progn (end-of-line) (point)))
          (setq beg nil)))
            (setq beg (progn (beginning-of-line) (point))
                  end (progn (end-of-line) (point)))
          (setq beg nil)))
-      (if beg (progn (insert-buffer-substring cache-buf beg end)
-                    (insert "\n")))
+      (when beg
+       (insert-buffer-substring cache-buf beg end)
+       (insert "\n"))
       (setq cached (cdr cached)))
     (kill-buffer cache-buf)))
 
       (setq cached (cdr cached)))
     (kill-buffer cache-buf)))
 
@@ -553,18 +552,14 @@ $ emacs -batch -l ~/.emacs -l gnus -f gnus-jog-cache"
   (when (or force
            (and gnus-cache-active-hashtb
                 gnus-cache-active-altered))
   (when (or force
            (and gnus-cache-active-hashtb
                 gnus-cache-active-altered))
-    (save-excursion
-      (gnus-set-work-buffer)
+    (nnheader-temp-write gnus-cache-active-file
       (mapatoms
        (lambda (sym)
         (when (and sym (boundp sym))
           (insert (format "%s %d %d y\n"
                           (symbol-name sym) (cdr (symbol-value sym))
                           (car (symbol-value sym))))))
       (mapatoms
        (lambda (sym)
         (when (and sym (boundp sym))
           (insert (format "%s %d %d y\n"
                           (symbol-name sym) (cdr (symbol-value sym))
                           (car (symbol-value sym))))))
-       gnus-cache-active-hashtb)
-      (gnus-make-directory (file-name-directory gnus-cache-active-file))
-      (write-region 
-       (point-min) (point-max) gnus-cache-active-file nil 'silent))
+       gnus-cache-active-hashtb))
     ;; Mark the active hashtb as unaltered.
     (setq gnus-cache-active-altered nil)))
 
     ;; Mark the active hashtb as unaltered.
     (setq gnus-cache-active-altered nil)))
 
index 42fcbfe..6da934e 100644 (file)
@@ -182,11 +182,11 @@ Lines matching `gnus-cite-attribution-suffix' and perhaps
              face (cdr (assoc prefix face-alist)))
        ;; Add attribution button.
        (goto-line number)
              face (cdr (assoc prefix face-alist)))
        ;; Add attribution button.
        (goto-line number)
-       (if (re-search-forward gnus-cite-attribution-suffix 
-                              (save-excursion (end-of-line 1) (point))
-                              t)
-           (gnus-article-add-button (match-beginning 1) (match-end 1)
-                                    'gnus-cite-toggle prefix))
+       (when (re-search-forward gnus-cite-attribution-suffix 
+                                (save-excursion (end-of-line 1) (point))
+                                t)
+         (gnus-article-add-button (match-beginning 1) (match-end 1)
+                                  'gnus-cite-toggle prefix))
        ;; Highlight attribution line.
        (gnus-cite-add-face number skip face)
        (gnus-cite-add-face number skip gnus-cite-attribution-face))
        ;; Highlight attribution line.
        (gnus-cite-add-face number skip face)
        (gnus-cite-add-face number skip gnus-cite-attribution-face))
@@ -377,23 +377,22 @@ See also the documentation for `gnus-article-highlight-citation'."
          (setq hiden (+ hiden (length (cdr (assoc (cdar atts)
                                                   gnus-cite-prefix-alist))))
                atts (cdr atts)))
          (setq hiden (+ hiden (length (cdr (assoc (cdar atts)
                                                   gnus-cite-prefix-alist))))
                atts (cdr atts)))
-       (if (or force
-               (and (> (* 100 hiden) (* gnus-cite-hide-percentage total))
-                    (> hiden gnus-cite-hide-absolute)))
-           (progn
-             (setq atts gnus-cite-attribution-alist)
-             (while atts
-               (setq total (cdr (assoc (cdar atts) gnus-cite-prefix-alist))
-                     atts (cdr atts))
-               (while total
-                 (setq hiden (car total)
-                       total (cdr total))
-                 (goto-line hiden)
-                 (or (assq hiden gnus-cite-attribution-alist)
-                     (gnus-add-text-properties 
-                      (point) (progn (forward-line 1) (point))
-                      (nconc (list 'article-type 'cite)
-                             gnus-hidden-properties)))))))))))
+       (when (or force
+                 (and (> (* 100 hiden) (* gnus-cite-hide-percentage total))
+                      (> hiden gnus-cite-hide-absolute)))
+         (setq atts gnus-cite-attribution-alist)
+         (while atts
+           (setq total (cdr (assoc (cdar atts) gnus-cite-prefix-alist))
+                 atts (cdr atts))
+           (while total
+             (setq hiden (car total)
+                   total (cdr total))
+             (goto-line hiden)
+             (unless (assq hiden gnus-cite-attribution-alist)
+               (gnus-add-text-properties 
+                (point) (progn (forward-line 1) (point))
+                (nconc (list 'article-type 'cite)
+                       gnus-hidden-properties))))))))))
 
 (defun gnus-article-hide-citation-in-followups ()
   "Hide cited text in non-root articles."
 
 (defun gnus-article-hide-citation-in-followups ()
   "Hide cited text in non-root articles."
@@ -418,7 +417,7 @@ See also the documentation for `gnus-article-highlight-citation'."
          gnus-cite-loose-prefix-alist nil
          gnus-cite-loose-attribution-alist nil)
     ;; Parse if not too large.
          gnus-cite-loose-prefix-alist nil
          gnus-cite-loose-attribution-alist nil)
     ;; Parse if not too large.
-    (if (and (not force) 
+    (if (and (not force)
             gnus-cite-parse-max-size
             (> (buffer-size) gnus-cite-parse-max-size))
        ()
             gnus-cite-parse-max-size
             (> (buffer-size) gnus-cite-parse-max-size))
        ()
@@ -431,8 +430,8 @@ See also the documentation for `gnus-article-highlight-citation'."
   
   ;; Parse current buffer searching for citation prefixes.
   (goto-char (point-min))
   
   ;; Parse current buffer searching for citation prefixes.
   (goto-char (point-min))
-  (or (search-forward "\n\n" nil t)
-      (goto-char (point-max)))
+  (unless (search-forward "\n\n" nil t)
+    (goto-char (point-max)))
   (let ((line (1+ (count-lines (point-min) (point))))
        (case-fold-search t)
        (max (save-excursion
   (let ((line (1+ (count-lines (point-min) (point))))
        (case-fold-search t)
        (max (save-excursion
@@ -448,13 +447,13 @@ See also the documentation for `gnus-article-highlight-citation'."
            start end)
       (goto-char begin)
       ;; Ignore standard Supercite attribution prefix.
            start end)
       (goto-char begin)
       ;; Ignore standard Supercite attribution prefix.
-      (if (looking-at gnus-supercite-regexp)
-         (if (match-end 1)
-             (setq end (1+ (match-end 1)))
-           (setq end (1+ begin))))
+      (when (looking-at gnus-supercite-regexp)
+       (if (match-end 1)
+           (setq end (1+ (match-end 1)))
+         (setq end (1+ begin))))
       ;; Ignore very long prefixes.
       ;; Ignore very long prefixes.
-      (if (> end (+ (point) gnus-cite-max-prefix))
-         (setq end (+ (point) gnus-cite-max-prefix)))
+      (when (> end (+ (point) gnus-cite-max-prefix))
+       (setq end (+ (point) gnus-cite-max-prefix)))
       (while (re-search-forward gnus-cite-prefix-regexp (1- end) t)
        ;; Each prefix.
        (setq end (match-end 0)
       (while (re-search-forward gnus-cite-prefix-regexp (1- end) t)
        ;; Each prefix.
        (setq end (match-end 0)
@@ -463,7 +462,7 @@ See also the documentation for `gnus-article-highlight-citation'."
        (setq entry (assoc prefix alist))
        (if entry 
            (setcdr entry (cons line (cdr entry)))
        (setq entry (assoc prefix alist))
        (if entry 
            (setcdr entry (cons line (cdr entry)))
-         (setq alist (cons (list prefix line) alist)))
+         (push (list prefix line) alist))
        (goto-char begin))
       (goto-char start)
       (setq line (1+ line)))
        (goto-char begin))
       (goto-char start)
       (setq line (1+ line)))
@@ -487,11 +486,10 @@ See also the documentation for `gnus-article-highlight-citation'."
             ;; longer in case it is an exact match for an attribution
             ;; line, but we don't remove the line from other
             ;; prefixes. 
             ;; longer in case it is an exact match for an attribution
             ;; line, but we don't remove the line from other
             ;; prefixes. 
-            (setq gnus-cite-prefix-alist
-                  (cons entry gnus-cite-prefix-alist)))
+            (push entry gnus-cite-prefix-alist))
            (t
            (t
-            (setq gnus-cite-prefix-alist (cons entry
-                                               gnus-cite-prefix-alist))
+            (push entry
+                  gnus-cite-prefix-alist)
             ;; Remove articles from other prefixes.
             (let ((loop alist)
                   current)
             ;; Remove articles from other prefixes.
             (let ((loop alist)
                   current)
@@ -514,9 +512,9 @@ See also the documentation for `gnus-article-highlight-citation'."
           ;; Check previous line for an attribution leader.
           (tag (progn
                  (beginning-of-line 1)
           ;; Check previous line for an attribution leader.
           (tag (progn
                  (beginning-of-line 1)
-                 (and (looking-at gnus-supercite-secondary-regexp)
-                      (buffer-substring (match-beginning 1)
-                                        (match-end 1)))))
+                 (when (looking-at gnus-supercite-secondary-regexp)
+                   (buffer-substring (match-beginning 1)
+                                     (match-end 1)))))
           (in (progn
                 (goto-char start)
                 (and (re-search-backward gnus-cite-attribution-prefix
           (in (progn
                 (goto-char start)
                 (and (re-search-backward gnus-cite-attribution-prefix
@@ -527,31 +525,32 @@ See also the documentation for `gnus-article-highlight-citation'."
                      (not (re-search-forward gnus-cite-attribution-suffix
                                              start t))
                      (count-lines (point-min) (1+ (point)))))))
                      (not (re-search-forward gnus-cite-attribution-suffix
                                              start t))
                      (count-lines (point-min) (1+ (point)))))))
-      (if (eq wrote in)
-         (setq in nil))
+      (when (eq wrote in)
+       (setq in nil))
       (goto-char end)
       (goto-char end)
-      (setq gnus-cite-loose-attribution-alist
-           (cons (list wrote in prefix tag)
-                 gnus-cite-loose-attribution-alist))))
+      (push (list wrote in prefix tag)
+           gnus-cite-loose-attribution-alist)))
   ;; Find exact supercite citations.
   (gnus-cite-match-attributions 'small nil
                                (lambda (prefix tag)
   ;; Find exact supercite citations.
   (gnus-cite-match-attributions 'small nil
                                (lambda (prefix tag)
-                                 (if tag
-                                     (concat "\\`" 
-                                             (regexp-quote prefix) "[ \t]*" 
-                                             (regexp-quote tag) ">"))))
+                                 (when tag
+                                   (concat "\\`" 
+                                           (regexp-quote prefix) "[ \t]*" 
+                                           (regexp-quote tag) ">"))))
   ;; Find loose supercite citations after attributions.
   (gnus-cite-match-attributions 'small t
                                (lambda (prefix tag)
   ;; Find loose supercite citations after attributions.
   (gnus-cite-match-attributions 'small t
                                (lambda (prefix tag)
-                                 (if tag (concat "\\<"
-                                                 (regexp-quote tag)
-                                                 "\\>"))))
+                                 (when tag
+                                   (concat "\\<"
+                                           (regexp-quote tag)
+                                           "\\>"))))
   ;; Find loose supercite citations anywhere.
   (gnus-cite-match-attributions 'small nil
                                (lambda (prefix tag)
   ;; Find loose supercite citations anywhere.
   (gnus-cite-match-attributions 'small nil
                                (lambda (prefix tag)
-                                 (if tag (concat "\\<"
-                                                 (regexp-quote tag)
-                                                 "\\>"))))
+                                 (when tag
+                                   (concat "\\<"
+                                           (regexp-quote tag)
+                                           "\\>"))))
   ;; Find nested citations after attributions.
   (gnus-cite-match-attributions 'small-if-unique t
                                (lambda (prefix tag)
   ;; Find nested citations after attributions.
   (gnus-cite-match-attributions 'small-if-unique t
                                (lambda (prefix tag)
@@ -566,11 +565,11 @@ See also the documentation for `gnus-article-highlight-citation'."
     (while alist
       (setq entry (car alist)
            alist (cdr alist))
     (while alist
       (setq entry (car alist)
            alist (cdr alist))
-      (if (< (length (cdr entry)) gnus-cite-minimum-match-count)
-         (setq gnus-cite-prefix-alist
-               (delq entry gnus-cite-prefix-alist)
-               gnus-cite-loose-prefix-alist
-               (delq entry gnus-cite-loose-prefix-alist)))))
+      (when (< (length (cdr entry)) gnus-cite-minimum-match-count)
+       (setq gnus-cite-prefix-alist
+             (delq entry gnus-cite-prefix-alist)
+             gnus-cite-loose-prefix-alist
+             (delq entry gnus-cite-loose-prefix-alist)))))
   ;; Find flat attributions.
   (gnus-cite-match-attributions 'first t nil)
   ;; Find any attributions (are we getting desperate yet?).
   ;; Find flat attributions.
   (gnus-cite-match-attributions 'first t nil)
   ;; Find any attributions (are we getting desperate yet?).
@@ -632,27 +631,25 @@ See also the documentation for `gnus-article-highlight-citation'."
          ()
        (setq gnus-cite-loose-attribution-alist
              (delq att gnus-cite-loose-attribution-alist))
          ()
        (setq gnus-cite-loose-attribution-alist
              (delq att gnus-cite-loose-attribution-alist))
-       (setq gnus-cite-attribution-alist 
-             (cons (cons wrote (car best)) gnus-cite-attribution-alist))
-       (if in
-           (setq gnus-cite-attribution-alist 
-                 (cons (cons in (car best)) gnus-cite-attribution-alist)))
-       (if (memq best gnus-cite-loose-prefix-alist)
-           (let ((loop gnus-cite-prefix-alist)
-                 (numbers (cdr best))
-                 current)
-             (setq gnus-cite-loose-prefix-alist
-                   (delq best gnus-cite-loose-prefix-alist))
-             (while loop
-               (setq current (car loop)
-                     loop (cdr loop))
-               (if (eq current best)
-                   ()
-                 (setcdr current (gnus-set-difference (cdr current) numbers))
-                 (if (null (cdr current))
-                     (setq gnus-cite-loose-prefix-alist
-                           (delq current gnus-cite-loose-prefix-alist)
-                           atts (delq current atts)))))))))))
+       (push (cons wrote (car best)) gnus-cite-attribution-alist)
+       (when in
+         (push (cons in (car best)) gnus-cite-attribution-alist))
+       (when (memq best gnus-cite-loose-prefix-alist)
+         (let ((loop gnus-cite-prefix-alist)
+               (numbers (cdr best))
+               current)
+           (setq gnus-cite-loose-prefix-alist
+                 (delq best gnus-cite-loose-prefix-alist))
+           (while loop
+             (setq current (car loop)
+                   loop (cdr loop))
+             (if (eq current best)
+                 ()
+               (setcdr current (gnus-set-difference (cdr current) numbers))
+               (when (null (cdr current))
+                 (setq gnus-cite-loose-prefix-alist
+                       (delq current gnus-cite-loose-prefix-alist)
+                       atts (delq current atts)))))))))))
 
 (defun gnus-cite-find-loose (prefix)
   ;; Return a list of loose attribution lines prefixed by PREFIX.
 
 (defun gnus-cite-find-loose (prefix)
   ;; Return a list of loose attribution lines prefixed by PREFIX.
@@ -662,8 +659,8 @@ See also the documentation for `gnus-article-highlight-citation'."
       (setq att (car atts)
            line (car att)
            atts (cdr atts))
       (setq att (car atts)
            line (car att)
            atts (cdr atts))
-      (if (string-equal (gnus-cite-find-prefix line) prefix)
-         (setq lines (cons line lines))))
+      (when (string-equal (gnus-cite-find-prefix line) prefix)
+       (push line lines)))
     lines))
 
 (defun gnus-cite-add-face (number prefix face)
     lines))
 
 (defun gnus-cite-add-face (number prefix face)
@@ -711,8 +708,8 @@ See also the documentation for `gnus-article-highlight-citation'."
     (while alist
       (setq entry (car alist)
            alist (cdr alist))
     (while alist
       (setq entry (car alist)
            alist (cdr alist))
-      (if (memq line (cdr entry))
-         (setq prefix (car entry))))
+      (when (memq line (cdr entry))
+       (setq prefix (car entry))))
     prefix))
 
 (gnus-add-shutdown 'gnus-cache-close 'gnus)
     prefix))
 
 (gnus-add-shutdown 'gnus-cache-close 'gnus)
index 3ee19b8..7c57075 100644 (file)
@@ -59,7 +59,7 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's.")
 (defvar gnus-demon-idle-time 0)
 (defvar gnus-demon-handler-state nil)
 (defvar gnus-demon-is-idle nil)
 (defvar gnus-demon-idle-time 0)
 (defvar gnus-demon-handler-state nil)
 (defvar gnus-demon-is-idle nil)
-(defvar gnus-demon-last-keys nil) 
+(defvar gnus-demon-last-keys nil)
 
 (eval-and-compile
   (autoload 'timezone-parse-date "timezone")
 
 (eval-and-compile
   (autoload 'timezone-parse-date "timezone")
@@ -80,7 +80,8 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's.")
   (setq gnus-demon-handlers 
        (delq (assq function gnus-demon-handlers)
              gnus-demon-handlers))
   (setq gnus-demon-handlers 
        (delq (assq function gnus-demon-handlers)
              gnus-demon-handlers))
-  (or no-init (gnus-demon-init)))
+  (unless no-init
+    (gnus-demon-init)))
 
 (defun gnus-demon-init ()
   "Initialize the Gnus daemon."
 
 (defun gnus-demon-init ()
   "Initialize the Gnus daemon."
@@ -108,8 +109,8 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's.")
 (defun gnus-demon-cancel ()
   "Cancel any Gnus daemons."
   (interactive)
 (defun gnus-demon-cancel ()
   "Cancel any Gnus daemons."
   (interactive)
-  (and gnus-demon-timer
-       (nnheader-cancel-timer gnus-demon-timer))
+  (when gnus-demon-timer
+    (nnheader-cancel-timer gnus-demon-timer))
   (setq gnus-demon-timer nil
        gnus-use-demon nil)
   (condition-case ()
   (setq gnus-demon-timer nil
        gnus-use-demon nil)
   (condition-case ()
@@ -145,7 +146,8 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's.")
       (round
        (/ (if (< nseconds 0)
              (+ nseconds (* 60 60 24))
       (round
        (/ (if (< nseconds 0)
              (+ nseconds (* 60 60 24))
-           nseconds) gnus-demon-timestep)))))
+           nseconds)
+         gnus-demon-timestep)))))
 
 (defun gnus-demon ()
   "The Gnus daemon that takes care of running all Gnus handlers."
 
 (defun gnus-demon ()
   "The Gnus daemon that takes care of running all Gnus handlers."
@@ -164,8 +166,8 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's.")
        ((numberp (setq time (nth 1 handler)))
        ;; These handlers use a regular timeout mechanism.  We decrease
        ;; the timer if it hasn't reached zero yet.
        ((numberp (setq time (nth 1 handler)))
        ;; These handlers use a regular timeout mechanism.  We decrease
        ;; the timer if it hasn't reached zero yet.
-       (or (zerop time)
-           (setcar (nthcdr 1 handler) (decf time)))
+       (unless (zerop time)
+         (setcar (nthcdr 1 handler) (decf time)))
        (and (zerop time)               ; If the timer now is zero...
             (or (not (setq idle (nth 2 handler))) ; Don't care about idle.
                 (and (numberp idle)    ; Numerical idle...
        (and (zerop time)               ; If the timer now is zero...
             (or (not (setq idle (nth 2 handler))) ; Don't care about idle.
                 (and (numberp idle)    ; Numerical idle...
index 8be4008..ab6c5ca 100644 (file)
 
 (defun gnus-mule-cite-add-face (number prefix face)
   ;; At line NUMBER, ignore PREFIX and add FACE to the rest of the line.
 
 (defun gnus-mule-cite-add-face (number prefix face)
   ;; At line NUMBER, ignore PREFIX and add FACE to the rest of the line.
-  (if face
-      (let ((inhibit-point-motion-hooks t)
-           from to)
-       (goto-line number)
-       (if (boundp 'MULE)
-           (forward-char (chars-in-string prefix))
-         (forward-char (length prefix)))
-       (skip-chars-forward " \t")
-       (setq from (point))
-       (end-of-line 1)
-       (skip-chars-backward " \t")
-       (setq to (point))
-       (if (< from to)
-           (gnus-overlay-put (gnus-make-overlay from to) 'face face)))))
+  (when face
+    (let ((inhibit-point-motion-hooks t)
+         from to)
+      (goto-line number)
+      (if (boundp 'MULE)
+         (forward-char (chars-in-string prefix))
+       (forward-char (length prefix)))
+      (skip-chars-forward " \t")
+      (setq from (point))
+      (end-of-line 1)
+      (skip-chars-backward " \t")
+      (setq to (point))
+      (when (< from to)
+       (gnus-overlay-put (gnus-make-overlay from to) 'face face)))))
 
 (defun gnus-mule-max-width-function (el max-width)
   (` (let* ((val (eval (, el)))
 
 (defun gnus-mule-max-width-function (el max-width)
   (` (let* ((val (eval (, el)))
@@ -131,14 +131,15 @@ pounce directly on the real variables themselves."))
    ((or (not (boundp 'emacs-minor-version))
        (< emacs-minor-version 30))
     ;; Remove the `intangible' prop.
    ((or (not (boundp 'emacs-minor-version))
        (< emacs-minor-version 30))
     ;; Remove the `intangible' prop.
-    (let ((props (and (boundp 'gnus-hidden-properties) 
+    (let ((props (and (boundp 'gnus-hidden-properties)
                      gnus-hidden-properties)))
       (while (and props (not (eq (car (cdr props)) 'intangible)))
        (setq props (cdr props)))
                      gnus-hidden-properties)))
       (while (and props (not (eq (car (cdr props)) 'intangible)))
        (setq props (cdr props)))
-      (and props (setcdr props (cdr (cdr (cdr props))))))
-    (or (fboundp 'buffer-substring-no-properties)
-       (defun buffer-substring-no-properties (beg end)
-         (format "%s" (buffer-substring beg end)))))
+      (when props
+       (setcdr props (cdr (cdr (cdr props))))))
+    (unless (fboundp 'buffer-substring-no-properties)
+      (defun buffer-substring-no-properties (beg end)
+       (format "%s" (buffer-substring beg end)))))
    
    ((boundp 'MULE)
     (provide 'gnusutil))))
    
    ((boundp 'MULE)
     (provide 'gnusutil))))
@@ -150,16 +151,16 @@ pounce directly on the real variables themselves."))
     (let ((funcs '(mouse-set-point set-face-foreground
                                   set-face-background x-popup-menu)))
       (while funcs
     (let ((funcs '(mouse-set-point set-face-foreground
                                   set-face-background x-popup-menu)))
       (while funcs
-       (or (fboundp (car funcs))
-           (fset (car funcs) 'gnus-dummy-func))
+       (unless (fboundp (car funcs))
+         (fset (car funcs) 'gnus-dummy-func))
        (setq funcs (cdr funcs))))))
        (setq funcs (cdr funcs))))))
-  (or (fboundp 'file-regular-p)
-      (defun file-regular-p (file)
-       (and (not (file-directory-p file))
-            (not (file-symlink-p file))
-            (file-exists-p file))))
-  (or (fboundp 'face-list)
-      (defun face-list (&rest args))))
+  (unless (fboundp 'file-regular-p)
+    (defun file-regular-p (file)
+      (and (not (file-directory-p file))
+          (not (file-symlink-p file))
+          (file-exists-p file))))
+  (unless (fboundp 'face-list)
+    (defun face-list (&rest args))))
 
 (eval-and-compile
   (let ((case-fold-search t))
 
 (eval-and-compile
   (let ((case-fold-search t))
@@ -194,10 +195,10 @@ pounce directly on the real variables themselves."))
     (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face)
     (fset 'gnus-max-width-function 'gnus-mule-max-width-function)
     
     (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face)
     (fset 'gnus-max-width-function 'gnus-mule-max-width-function)
     
-    (if (boundp 'gnus-check-before-posting)
-       (setq gnus-check-before-posting
-             (delq 'long-lines
-                   (delq 'control-chars gnus-check-before-posting))))
+    (when (boundp 'gnus-check-before-posting)
+      (setq gnus-check-before-posting
+           (delq 'long-lines
+                 (delq 'control-chars gnus-check-before-posting))))
 
     (defun gnus-summary-line-format-spec ()
       (insert gnus-tmp-unread gnus-tmp-replied 
 
     (defun gnus-summary-line-format-spec ()
       (insert gnus-tmp-unread gnus-tmp-replied 
@@ -209,8 +210,8 @@ pounce directly on the real variables themselves."))
          gnus-tmp-opening-bracket 
          (format "%4d: %-20s" 
                  gnus-tmp-lines 
          gnus-tmp-opening-bracket 
          (format "%4d: %-20s" 
                  gnus-tmp-lines 
-                 (if (> (length gnus-tmp-name) 20) 
-                     (truncate-string gnus-tmp-name 20) 
+                 (if (> (length gnus-tmp-name) 20)
+                     (truncate-string gnus-tmp-name 20)
                    gnus-tmp-name))
          gnus-tmp-closing-bracket)
         (point))
                    gnus-tmp-name))
          gnus-tmp-closing-bracket)
         (point))
index 194a815..2d4955e 100644 (file)
   "*The line format spec in summary GroupLens mode buffers.")
 
 (defvar grouplens-pseudonym ""
   "*The line format spec in summary GroupLens mode buffers.")
 
 (defvar grouplens-pseudonym ""
-  "User's pseudonym.  This pseudonym is obtained during the registration process")
+  "User's pseudonym.  
+This pseudonym is obtained during the registration process")
 
 (defvar grouplens-bbb-host "grouplens.cs.umn.edu"
   "Host where the bbbd is running" )
 
 
 (defvar grouplens-bbb-host "grouplens.cs.umn.edu"
   "Host where the bbbd is running" )
 
-(defvar grouplens-bbb-port 9000 
+(defvar grouplens-bbb-port 9000
   "Port where the bbbd is listening" )
 
 (defvar grouplens-newsgroups 
   "Port where the bbbd is listening" )
 
 (defvar grouplens-newsgroups 
     "comp.os.linux.help" "comp.os.linux.m68k" "comp.os.linux.misc"
     "comp.os.linux.networking" "comp.os.linux.setup" "comp.os.linux.x"
     "mn.general" "rec.arts.movies" "rec.arts.movies.current-films"
     "comp.os.linux.help" "comp.os.linux.m68k" "comp.os.linux.misc"
     "comp.os.linux.networking" "comp.os.linux.setup" "comp.os.linux.x"
     "mn.general" "rec.arts.movies" "rec.arts.movies.current-films"
-    "rec.food.recipes" "rec.humor") 
+    "rec.food.recipes" "rec.humor")
   "*Groups that are part of the GroupLens experiment.")
 
 (defvar grouplens-prediction-display 'prediction-spot
   "*Groups that are part of the GroupLens experiment.")
 
 (defvar grouplens-prediction-display 'prediction-spot
@@ -203,18 +204,12 @@ GroupLens scores can be combined with gnus scores in one of three ways.
 (defvar grouplens-rating-alist nil
   "Current set of  message-id rating pairs")
 
 (defvar grouplens-rating-alist nil
   "Current set of  message-id rating pairs")
 
-(defvar grouplens-current-hashtable (make-hash-table :test 'equal :size 100))
-;; this seems like a pretty ugly way to get around the problem, but If 
-;; I don't do this, then the compiler complains when I call gethash
-;;
-(eval-when-compile (setq grouplens-current-hashtable 
-                        (make-hash-table :test 'equal :size 100)))
+(defvar grouplens-current-hashtable nil
+  "A hashtable to hold predictions from the BBB")
 
 (defvar grouplens-current-group nil)
 
 
 (defvar grouplens-current-group nil)
 
-(defvar bbb-mid-list nil)
-
-(defvar bbb-alist nil)
+;;(defvar bbb-alist nil)
 
 (defvar bbb-timeout-secs 10
   "Number of seconds to wait for some response from the BBB.
 
 (defvar bbb-timeout-secs 10
   "Number of seconds to wait for some response from the BBB.
@@ -226,23 +221,39 @@ If this times out we give up and assume that something has died..." )
 (defvar bbb-read-point)
 (defvar bbb-response-point)
 
 (defvar bbb-read-point)
 (defvar bbb-response-point)
 
+(defun bbb-renew-hash-table ()
+  (setq grouplens-current-hashtable (make-vector 100 0)))
+
+(bbb-renew-hash-table)
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;  Utility Functions
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;  Utility Functions
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun bbb-connect-to-bbbd (host port)
 (defun bbb-connect-to-bbbd (host port)
-  (unless grouplens-bbb-buffer 
-    (setq grouplens-bbb-buffer 
+  (unless grouplens-bbb-buffer
+    (setq grouplens-bbb-buffer
          (get-buffer-create (format " *BBBD trace: %s*" host)))
     (save-excursion
       (set-buffer grouplens-bbb-buffer)
       (make-local-variable 'bbb-read-point)
          (get-buffer-create (format " *BBBD trace: %s*" host)))
     (save-excursion
       (set-buffer grouplens-bbb-buffer)
       (make-local-variable 'bbb-read-point)
+      (make-local-variable 'bbb-response-point)
       (setq bbb-read-point (point-min))))
       (setq bbb-read-point (point-min))))
+
+  ;; if an old process is still running for some reason, kill it
+  (when grouplens-bbb-process
+    (condition-case ()
+       (when (eq 'open (process-status grouplens-bbb-process))
+         (set-process-buffer grouplens-bbb-process nil)
+         (delete-process grouplens-bbb-process))
+      (error nil)))
+
   ;; clear the trace buffer of old output
   (save-excursion
     (set-buffer grouplens-bbb-buffer)
     (erase-buffer))
   ;; clear the trace buffer of old output
   (save-excursion
     (set-buffer grouplens-bbb-buffer)
     (erase-buffer))
+
   ;; open the connection to the server
   ;; open the connection to the server
-  (setq grouplens-bbb-process nil)
   (catch 'done
     (condition-case error
        (setq grouplens-bbb-process 
   (catch 'done
     (condition-case error
        (setq grouplens-bbb-process 
@@ -251,31 +262,27 @@ If this times out we give up and assume that something has died..." )
             nil))
     (and (null grouplens-bbb-process) 
         (throw 'done nil))
             nil))
     (and (null grouplens-bbb-process) 
         (throw 'done nil))
-    ;; (set-process-filter grouplens-bbb-process 'bbb-process-filter)
     (save-excursion
       (set-buffer grouplens-bbb-buffer)
       (setq bbb-read-point (point-min))
       (or (bbb-read-response grouplens-bbb-process)
          (throw 'done nil))))
     (save-excursion
       (set-buffer grouplens-bbb-buffer)
       (setq bbb-read-point (point-min))
       (or (bbb-read-response grouplens-bbb-process)
          (throw 'done nil))))
-  grouplens-bbb-process)
 
 
-;; (defun bbb-process-filter (process output)
-;;   (save-excursion
-;;     (set-buffer (bbb-process-buffer process))
-;;     (goto-char (point-max))
-;;     (insert output)))
+  ;; return the process
+  grouplens-bbb-process)
 
 (defun bbb-send-command (process command)
   (goto-char (point-max))
 
 (defun bbb-send-command (process command)
   (goto-char (point-max))
-  (insert command) 
+  (insert command)
   (insert "\r\n")
   (setq bbb-read-point (point))
   (setq bbb-response-point (point))
   (set-marker (process-mark process) (point)) ; process output also comes here
   (process-send-string process command)
   (insert "\r\n")
   (setq bbb-read-point (point))
   (setq bbb-response-point (point))
   (set-marker (process-mark process) (point)) ; process output also comes here
   (process-send-string process command)
-  (process-send-string process "\r\n"))
+  (process-send-string process "\r\n")
+  (process-send-eof process))
 
 
-(defun bbb-read-response (process)     ; &optional return-response-string)
+(defun bbb-read-response (process)
   "This function eats the initial response of OK or ERROR from the BBB."
   (let ((case-fold-search nil)
        match-end)
   "This function eats the initial response of OK or ERROR from the BBB."
   (let ((case-fold-search nil)
        match-end)
@@ -296,32 +303,32 @@ If this times out we give up and assume that something has died..." )
   (interactive)
   (setq grouplens-bbb-token nil)
   (if (not (equal grouplens-pseudonym ""))
   (interactive)
   (setq grouplens-bbb-token nil)
   (if (not (equal grouplens-pseudonym ""))
-      (let ((bbb-process 
+      (let ((bbb-process
             (bbb-connect-to-bbbd grouplens-bbb-host grouplens-bbb-port)))
        (if bbb-process
             (bbb-connect-to-bbbd grouplens-bbb-host grouplens-bbb-port)))
        (if bbb-process
-           (save-excursion 
+           (save-excursion
              (set-buffer (process-buffer bbb-process))
              (set-buffer (process-buffer bbb-process))
-             (bbb-send-command bbb-process 
+             (bbb-send-command bbb-process
                                (concat "login " grouplens-pseudonym))
              (if (bbb-read-response bbb-process)
                  (setq grouplens-bbb-token (bbb-extract-token-number))
                                (concat "login " grouplens-pseudonym))
              (if (bbb-read-response bbb-process)
                  (setq grouplens-bbb-token (bbb-extract-token-number))
-               (gnus-message 3 "Error: GroupLens login failed")))))
+             (gnus-message 3 "Error: GroupLens login failed")))))
     (gnus-message 3 "Error: you must set a pseudonym"))
   grouplens-bbb-token)
 
 (defun bbb-extract-token-number ()
   (let ((token-pos (search-forward "token=" nil t) ))
     (gnus-message 3 "Error: you must set a pseudonym"))
   grouplens-bbb-token)
 
 (defun bbb-extract-token-number ()
   (let ((token-pos (search-forward "token=" nil t) ))
-    (if (looking-at "[0-9]+")
-       (buffer-substring token-pos (match-end 0)))))
+    (when (looking-at "[0-9]+")
+      (buffer-substring token-pos (match-end 0)))))
 
 (gnus-add-shutdown 'bbb-logout 'gnus)
 
 (defun bbb-logout ()
   "logout of bbb session"
 
 (gnus-add-shutdown 'bbb-logout 'gnus)
 
 (defun bbb-logout ()
   "logout of bbb session"
-  (let ((bbb-process 
+  (let ((bbb-process
         (bbb-connect-to-bbbd grouplens-bbb-host grouplens-bbb-port)))
     (if bbb-process
         (bbb-connect-to-bbbd grouplens-bbb-host grouplens-bbb-port)))
     (if bbb-process
-       (save-excursion 
+       (save-excursion
          (set-buffer (process-buffer bbb-process))
          (bbb-send-command bbb-process (concat "logout " grouplens-bbb-token))
          (bbb-read-response bbb-process))
          (set-buffer (process-buffer bbb-process))
          (bbb-send-command bbb-process (concat "logout " grouplens-bbb-token))
          (bbb-read-response bbb-process))
@@ -333,126 +340,109 @@ If this times out we give up and assume that something has died..." )
 
 (defun bbb-build-mid-scores-alist (groupname)
   "this function can be called as part of the function to return the 
 
 (defun bbb-build-mid-scores-alist (groupname)
   "this function can be called as part of the function to return the 
-list of score files to use.  See the gnus variable 
+list of score files to use.  See the gnus variable
 gnus-score-find-score-files-function.  
 
 gnus-score-find-score-files-function.  
 
-*Note:*  If you want to use grouplens scores along with calculated scores, 
+*Note:*  If you want to use grouplens scores along with calculated scores,
 you should see the offset and scale variables.  At this point, I don't 
 recommend using both scores and grouplens predictions together."
   (setq grouplens-current-group groupname)
 you should see the offset and scale variables.  At this point, I don't 
 recommend using both scores and grouplens predictions together."
   (setq grouplens-current-group groupname)
-  (if (member groupname grouplens-newsgroups)
-      (let* ((mid-list (bbb-get-all-mids))
-            (predict-list (bbb-get-predictions mid-list groupname)))
-       (setq grouplens-previous-article nil)
-       ;; scores-alist should be a list of lists:
-       ;;  ((("message-id" ("<mid1>" score1 nil s) ("<mid2> score2 nil s))))
-       ;;`((("message-id" . ,predict-list))) ; Yes, this is the return value
-       (list (list (list (append (list "message-id") predict-list)))))
-    nil))
+  (when (member groupname grouplens-newsgroups)
+    (setq grouplens-previous-article nil)
+    ;; scores-alist should be a list of lists:
+    ;;  ((("message-id" ("<mid1>" score1 nil s) ("<mid2> score2 nil s))))
+    ;;`((("message-id" . ,predict-list))) ; Yes, this is the return value
+    (list
+     (list
+      (list (append (list "message-id")
+                   (bbb-get-predictions (bbb-get-all-mids) groupname)))))))
 
 (defun bbb-get-predictions (midlist groupname)
   "Ask the bbb for predictions, and build up the score alist."
   (if (or (null grouplens-bbb-token)
          (equal grouplens-bbb-token "0"))
 
 (defun bbb-get-predictions (midlist groupname)
   "Ask the bbb for predictions, and build up the score alist."
   (if (or (null grouplens-bbb-token)
          (equal grouplens-bbb-token "0"))
-      (progn 
+      (progn
        (gnus-message 3 "Error: You are not logged in to a BBB")
        (gnus-message 3 "Error: You are not logged in to a BBB")
-       nil)
+       (ding))
     (gnus-message 5 "Fetching Predictions...")
     (gnus-message 5 "Fetching Predictions...")
-    (let (predict-list
-         (predict-command (bbb-build-predict-command midlist groupname 
-                                                     grouplens-bbb-token))
-         (bbb-process (bbb-connect-to-bbbd grouplens-bbb-host 
+    (let ((bbb-process (bbb-connect-to-bbbd grouplens-bbb-host
                                            grouplens-bbb-port)))
                                            grouplens-bbb-port)))
-      (if bbb-process
-         (save-excursion 
-           (set-buffer (process-buffer bbb-process))
-           (bbb-send-command bbb-process predict-command)
-           (if (bbb-read-response bbb-process)
-               (setq predict-list (bbb-get-prediction-response bbb-process))
-             (gnus-message 1 "Invalid Token, login and try again")
-             (ding))))
-      (setq bbb-alist predict-list))))
+      (when bbb-process
+       (save-excursion
+         (set-buffer (process-buffer bbb-process))
+         (bbb-send-command bbb-process
+                           (bbb-build-predict-command midlist groupname
+                                                      grouplens-bbb-token))
+         (if (not (bbb-read-response bbb-process))
+             (progn
+               (gnus-message 1 "Invalid Token, login and try again")
+               (ding))
+           (bbb-get-prediction-response bbb-process)))))))
 
 (defun bbb-get-all-mids ()
 
 (defun bbb-get-all-mids ()
-  (let ((index (nth 1 (assoc "message-id" gnus-header-index)))
-       (articles gnus-newsgroup-headers)
-       art this)
-    (setq bbb-mid-list nil)
-    (while articles
-      (progn (setq art (car articles)
-                  this (aref art index)
-                  articles (cdr articles))
-            (setq bbb-mid-list (cons this bbb-mid-list))))
-    bbb-mid-list))
+  (mapcar (function (lambda (x) (mail-header-id x))) gnus-newsgroup-headers))
 
 (defun bbb-build-predict-command (mlist grpname token)
 
 (defun bbb-build-predict-command (mlist grpname token)
-  (let ((cmd (concat "getpredictions " token " " grpname "\r\n"))
-       art)
-    (while mlist
-      (setq art (car mlist)
-           cmd (concat cmd art "\r\n")
-           mlist (cdr mlist)))
-    (setq cmd (concat cmd ".\r\n"))
-    cmd))
+  (concat "getpredictions " token " " grpname "\r\n"
+         (mapconcat 'identity mlist "\r\n") "\r\n.\r\n"))
 
 (defun bbb-get-prediction-response (process)
 
 (defun bbb-get-prediction-response (process)
-  (let ((case-fold-search nil)
-       match-end)
+  (let ((case-fold-search nil))
     (goto-char bbb-read-point)
     (while (and (not (search-forward ".\r\n" nil t))
                (accept-process-output process bbb-timeout-secs))
       (goto-char bbb-read-point))
     (goto-char bbb-read-point)
     (while (and (not (search-forward ".\r\n" nil t))
                (accept-process-output process bbb-timeout-secs))
       (goto-char bbb-read-point))
-    (setq match-end (point))
     (goto-char (+ bbb-response-point 4));; we ought to be right before OK
     (bbb-build-response-alist)))
 
 ;; build-response-alist assumes that the cursor has been positioned at
     (goto-char (+ bbb-response-point 4));; we ought to be right before OK
     (bbb-build-response-alist)))
 
 ;; build-response-alist assumes that the cursor has been positioned at
-;; the first line of the list of mid/rating pairs.  For now we will
-;; use a prediction of 99 to signify no prediction.  Ultimately, we
-;; should just ignore messages with no predictions.
+;; the first line of the list of mid/rating pairs.
 (defun bbb-build-response-alist ()
 (defun bbb-build-response-alist ()
-  (let ((resp nil)
-       (match-end (point)))
-    (setq grouplens-current-hashtable (make-hash-table :test 'equal :size 100))
+  (let (resp mid pred)
     (while
     (while
-       (cond ((looking-at "\\(<.*>\\) :nopred=")
-              (push `(,(bbb-get-mid) ,gnus-summary-default-score nil s) resp)
-              (forward-line 1)
-              t)
-             ((looking-at "\\(<.*>\\) :pred=\\([0-9]\.[0-9][0-9]\\) :conflow=\\([0-9]\.[0-9][0-9]\\) :confhigh=\\([0-9]\.[0-9][0-9]\\)")
-              (push `(,(bbb-get-mid) ,(bbb-get-pred) nil s) resp)
-              (cl-puthash (bbb-get-mid)
-                          (list (bbb-get-pred) (bbb-get-confl) (bbb-get-confh))
-                          grouplens-current-hashtable)
-              (forward-line 1)
-              t)
-             ((looking-at "\\(<.*>\\) :pred=\\([0-9]\.[0-9][0-9]\\)")
-              (push `(,(bbb-get-mid) ,(bbb-get-pred) nil s) resp)
-              (cl-puthash (bbb-get-mid)
-                          (list (bbb-get-pred) 0 0)
-                          grouplens-current-hashtable)
-              (forward-line 1)
-              t)
-             (t nil)))
+       (cond
+        ((looking-at "\\(<.*>\\) :nopred=")
+         ;;(push `(,(bbb-get-mid) ,gnus-summary-default-score nil s) resp)
+         (forward-line 1)
+         t)
+        ((looking-at "\\(<.*>\\) :pred=\\([0-9]\.[0-9][0-9]\\) :conflow=\\([0-9]\.[0-9][0-9]\\) :confhigh=\\([0-9]\.[0-9][0-9]\\)")
+         (setq mid (bbb-get-mid)
+               pred (bbb-get-pred))
+         (push `(,mid ,pred nil s) resp)
+         (gnus-sethash mid (list pred (bbb-get-confl) (bbb-get-confh))
+                     grouplens-current-hashtable)
+         (forward-line 1)
+         t)
+        ((looking-at "\\(<.*>\\) :pred=\\([0-9]\.[0-9][0-9]\\)")
+         (setq mid (bbb-get-mid)
+               pred (bbb-get-pred))
+         (push `(,mid ,pred nil s) resp)
+         (gnus-sethash mid (list pred 0 0) grouplens-current-hashtable)
+         (forward-line 1)
+         t)
+        (t nil)))
     resp))
 
     resp))
 
-;; these two functions assume that there is an active match lying
+;; these "get" functions assume that there is an active match lying
 ;; around.  Where the first parenthesized expression is the
 ;; around.  Where the first parenthesized expression is the
-;; message-id, and the second is the prediction.  Since gnus assumes
-;; that scores are integer values?? we round the prediction.
+;; message-id, and the second is the prediction, the third and fourth
+;; are the confidence interval
+;; 
+;; Since gnus assumes that scores are integer values?? we round the
+;; prediction.
 (defun bbb-get-mid ()
   (buffer-substring (match-beginning 1) (match-end 1)))
 
 (defun bbb-get-pred ()
 (defun bbb-get-mid ()
   (buffer-substring (match-beginning 1) (match-end 1)))
 
 (defun bbb-get-pred ()
-  (let ((tpred (string-to-number (buffer-substring  
-                                 (match-beginning 2) 
-                                 (match-end 2)))))
+  (let ((tpred (string-to-number (buffer-substring (match-beginning 2) 
+                                                  (match-end 2)))))
     (if (> tpred 0)
     (if (> tpred 0)
-       (round (* grouplens-score-scale-factor (+ grouplens-score-offset  tpred)))
+       (round (* grouplens-score-scale-factor
+                 (+ grouplens-score-offset tpred)))
       1)))
 
 (defun bbb-get-confl ()
       1)))
 
 (defun bbb-get-confl ()
-  (string-to-number (buffer-substring (match-beginning 3) (match-end 3))))
+  (string-to-number (buffer-substring (match-beginning 4) (match-end 4))))
 
 (defun bbb-get-confh ()
   (string-to-number (buffer-substring (match-beginning 4) (match-end 4))))
 
 (defun bbb-get-confh ()
   (string-to-number (buffer-substring (match-beginning 4) (match-end 4))))
@@ -469,13 +459,13 @@ recommend using both scores and grouplens predictions together."
 (defun bbb-grouplens-score (header)
   (if (eq gnus-grouplens-override-scoring 'separate)
       (bbb-grouplens-other-score header)
 (defun bbb-grouplens-score (header)
   (if (eq gnus-grouplens-override-scoring 'separate)
       (bbb-grouplens-other-score header)
-    (let* ((rate-string (make-string 12 ? ))
-          (mid (aref header (nth 1 (assoc "message-id" gnus-header-index))))
-          (hashent (gethash mid grouplens-current-hashtable))
+    (let* ((rate-string (make-string 12 ?\ ))
+          (mid (mail-header-id header))
+          (hashent (gnus-gethash mid grouplens-current-hashtable))
           (iscore gnus-tmp-score)
           (low (car (cdr hashent)))
           (high (car (cdr (cdr hashent)))))
           (iscore gnus-tmp-score)
           (low (car (cdr hashent)))
           (high (car (cdr (cdr hashent)))))
-      (aset rate-string 0 ?|) 
+      (aset rate-string 0 ?|)
       (aset rate-string 11 ?|)
       (unless (member grouplens-current-group grouplens-newsgroups)
        (unless (equal grouplens-prediction-display 'prediction-num)
       (aset rate-string 11 ?|)
       (unless (member grouplens-current-group grouplens-newsgroups)
        (unless (equal grouplens-prediction-display 'prediction-num)
@@ -483,9 +473,9 @@ recommend using both scores and grouplens predictions together."
                 (setq iscore 1))
                ((> iscore 5)
                 (setq iscore 5))))
                 (setq iscore 1))
                ((> iscore 5)
                 (setq iscore 5))))
-       (setq low 0) 
+       (setq low 0)
        (setq high 0))
        (setq high 0))
-      (if (and (bbb-valid-score iscore) 
+      (if (and (bbb-valid-score iscore)
               (not (null mid)))
          (cond 
           ;; prediction-spot
               (not (null mid)))
          (cond 
           ;; prediction-spot
@@ -514,7 +504,6 @@ recommend using both scores and grouplens predictions together."
        (aset rate-string 5 ?N) (aset rate-string 6 ?A))
       rate-string)))
 
        (aset rate-string 5 ?N) (aset rate-string 6 ?A))
       rate-string)))
 
-;;
 ;; Gnus user format function that doesn't depend on
 ;; bbb-build-mid-scores-alist being used as the score function, but is
 ;; instead called from gnus-select-group-hook. -- LAB
 ;; Gnus user format function that doesn't depend on
 ;; bbb-build-mid-scores-alist being used as the score function, but is
 ;; instead called from gnus-select-group-hook. -- LAB
@@ -522,14 +511,14 @@ recommend using both scores and grouplens predictions together."
   (if (not (member grouplens-current-group grouplens-newsgroups))
       ;; Return an empty string
       ""
   (if (not (member grouplens-current-group grouplens-newsgroups))
       ;; Return an empty string
       ""
-    (let* ((rate-string (make-string 12 ? ))
-           (mid (aref header (nth 1 (assoc "message-id" gnus-header-index))))
-           (hashent (gethash mid grouplens-current-hashtable))
+    (let* ((rate-string (make-string 12 ?\ ))
+           (mid (mail-header-id header))
+           (hashent (gnus-gethash mid grouplens-current-hashtable))
            (pred (or (nth 0 hashent) 0))
            (low (nth 1 hashent))
            (high (nth 2 hashent)))
       ;; Init rate-string
            (pred (or (nth 0 hashent) 0))
            (low (nth 1 hashent))
            (high (nth 2 hashent)))
       ;; Init rate-string
-      (aset rate-string 0 ?|) 
+      (aset rate-string 0 ?|)
       (aset rate-string 11 ?|)
       (unless (equal grouplens-prediction-display 'prediction-num)
        (cond ((< pred 0)
       (aset rate-string 11 ?|)
       (unless (equal grouplens-prediction-display 'prediction-num)
        (cond ((< pred 0)
@@ -538,8 +527,8 @@ recommend using both scores and grouplens predictions together."
               (setq pred 5))))
       ;; If no entry in BBB hash mark rate string as NA and return
       (cond 
               (setq pred 5))))
       ;; If no entry in BBB hash mark rate string as NA and return
       (cond 
-       ((null hashent) 
-       (aset rate-string 5 ?N) 
+       ((null hashent)
+       (aset rate-string 5 ?N)
        (aset rate-string 6 ?A)
        rate-string)
 
        (aset rate-string 6 ?A)
        rate-string)
 
@@ -566,7 +555,7 @@ recommend using both scores and grouplens predictions together."
        
        (t 
        (gnus-message 3 "Invalid prediction display type")
        
        (t 
        (gnus-message 3 "Invalid prediction display type")
-       (aset rate-string 0 ?|) 
+       (aset rate-string 0 ?|)
        (aset rate-string 11 ?|)
        rate-string)))))
 
        (aset rate-string 11 ?|)
        rate-string)))))
 
@@ -602,14 +591,14 @@ recommend using both scores and grouplens predictions together."
     (bbb-fmt-prediction-num score)))
 
 (defun bbb-fmt-prediction-bar (rate-string score)
     (bbb-fmt-prediction-num score)))
 
 (defun bbb-fmt-prediction-bar (rate-string score)
-  (let* ((i 1) 
+  (let* ((i 1)
         (step (/ grplens-rating-range (- grplens-predstringsize 4)))
         (half-step (/ step 2))
         (loc (- grplens-minrating half-step)))
     (while (< i (- grplens-predstringsize 2))
       (if (> score loc)
          (aset rate-string i ?#)
         (step (/ grplens-rating-range (- grplens-predstringsize 4)))
         (half-step (/ step 2))
         (loc (- grplens-minrating half-step)))
     (while (< i (- grplens-predstringsize 2))
       (if (> score loc)
          (aset rate-string i ?#)
-       (aset rate-string i ? ))
+       (aset rate-string i ?\ ))
       (setq i (+ i 1))
       (setq loc (+ loc step)))
     )
       (setq i (+ i 1))
       (setq loc (+ loc step)))
     )
@@ -622,9 +611,6 @@ recommend using both scores and grouplens predictions together."
 ;;;;       Put Ratings
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;;;;       Put Ratings
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-;; The message-id for the current article can be found in
-;; (aref gnus-current-headers (nth 1 (assoc "message-id" gnus-header-index)))
-
 (defun bbb-put-ratings ()
   (if (and grouplens-rating-alist 
           (member gnus-newsgroup-name grouplens-newsgroups))
 (defun bbb-put-ratings ()
   (if (and grouplens-rating-alist 
           (member gnus-newsgroup-name grouplens-newsgroups))
@@ -646,15 +632,13 @@ recommend using both scores and grouplens predictions together."
     (setq grouplens-rating-alist nil)))
 
 (defun bbb-build-rate-command (rate-alist)
     (setq grouplens-rating-alist nil)))
 
 (defun bbb-build-rate-command (rate-alist)
-  (let (this
-       (cmd (concat "putratings " grouplens-bbb-token 
-                    " " grouplens-current-group " \r\n")))
-    (while rate-alist
-      (setq this (car rate-alist)
-           cmd (concat cmd (car this) " :rating=" (cadr this) ".00"
-                       " :time=" (cddr this) "\r\n")
-           rate-alist (cdr rate-alist)))
-    (concat cmd ".\r\n")))
+  (concat "putratings " grouplens-bbb-token " " grouplens-current-group " \r\n"
+         (mapconcat '(lambda (this)    ; form (mid . (score . time))
+                       (concat (car this)
+                               " :rating=" (cadr this) ".00"
+                               " :time=" (cddr this)))
+                    rate-alist "\r\n")
+         "\r\n.\r\n"))
 
 ;; Interactive rating functions.
 (defun bbb-summary-rate-article (rating &optional midin)
 
 ;; Interactive rating functions.
 (defun bbb-summary-rate-article (rating &optional midin)
@@ -662,26 +646,28 @@ recommend using both scores and grouplens predictions together."
   (when (member gnus-newsgroup-name grouplens-newsgroups)
     (let ((mid (or midin (bbb-get-current-id))))
       (if (and rating 
   (when (member gnus-newsgroup-name grouplens-newsgroups)
     (let ((mid (or midin (bbb-get-current-id))))
       (if (and rating 
-              (>= rating grplens-minrating) 
+              (>= rating grplens-minrating)
               (<= rating grplens-maxrating)
               mid)
          (let ((oldrating (assoc mid grouplens-rating-alist)))
            (if oldrating
                (setcdr oldrating (cons rating 0))
              (push `(,mid . (,rating . 0)) grouplens-rating-alist))
               (<= rating grplens-maxrating)
               mid)
          (let ((oldrating (assoc mid grouplens-rating-alist)))
            (if oldrating
                (setcdr oldrating (cons rating 0))
              (push `(,mid . (,rating . 0)) grouplens-rating-alist))
-           (gnus-summary-mark-article nil (int-to-string rating)))     
+           (gnus-summary-mark-article nil (int-to-string rating)))
        (gnus-message 3 "Invalid rating")))))
 
 (defun grouplens-next-unread-article (rating)
   "Select unread article after current one."
   (interactive "P")
        (gnus-message 3 "Invalid rating")))))
 
 (defun grouplens-next-unread-article (rating)
   "Select unread article after current one."
   (interactive "P")
-  (if rating (bbb-summary-rate-article rating))
+  (when rating
+    (bbb-summary-rate-article rating))
   (gnus-summary-next-unread-article))
 
 (defun grouplens-best-unread-article (rating)
   "Select unread article after current one."
   (interactive "P")
   (gnus-summary-next-unread-article))
 
 (defun grouplens-best-unread-article (rating)
   "Select unread article after current one."
   (interactive "P")
-  (if rating (bbb-summary-rate-article rating))
+  (when rating
+    (bbb-summary-rate-article rating))
   (gnus-summary-best-unread-article))
 
 (defun grouplens-summary-catchup-and-exit (rating)
   (gnus-summary-best-unread-article))
 
 (defun grouplens-summary-catchup-and-exit (rating)
@@ -689,8 +675,8 @@ recommend using both scores and grouplens predictions together."
     then exit.   If prefix argument ALL is non-nil, all articles are 
     marked as read."
   (interactive "P")
     then exit.   If prefix argument ALL is non-nil, all articles are 
     marked as read."
   (interactive "P")
-  (if rating
-      (bbb-summary-rate-article rating))
+  (when rating
+    (bbb-summary-rate-article rating))
   (if (numberp rating)
       (gnus-summary-catchup-and-exit)
     (gnus-summary-catchup-and-exit rating)))
   (if (numberp rating)
       (gnus-summary-catchup-and-exit)
     (gnus-summary-catchup-and-exit rating)))
@@ -700,15 +686,14 @@ recommend using both scores and grouplens predictions together."
   (interactive "nRating: ")
   (let (e)
     (save-excursion
   (interactive "nRating: ")
   (let (e)
     (save-excursion
-      (let ((articles (gnus-summary-articles-in-thread)))
-       (while articles
-         (gnus-summary-goto-subject (car articles))
+      (let ((articles (gnus-summary-articles-in-thread))
+           article)
+       (while (setq article (pop articles))
+         (gnus-summary-goto-subject article)
          (gnus-set-global-variables)
          (bbb-summary-rate-article score
                                    (mail-header-id 
          (gnus-set-global-variables)
          (bbb-summary-rate-article score
                                    (mail-header-id 
-                                    (gnus-summary-article-header 
-                                     (car articles))))
-         (setq articles (cdr articles))))
+                                    (gnus-summary-article-header article)))))
       (setq e (point)))
     (let ((gnus-summary-check-current t))
       (or (zerop (gnus-summary-next-subject 1 t))
       (setq e (point)))
     (let ((gnus-summary-check-current t))
       (or (zerop (gnus-summary-next-subject 1 t))
@@ -717,11 +702,13 @@ recommend using both scores and grouplens predictions together."
   (gnus-summary-position-point)
   (gnus-set-mode-line 'summary))
 
   (gnus-summary-position-point)
   (gnus-set-mode-line 'summary))
 
+(defun bbb-exit-group ()
+  (bbb-put-ratings)
+  (bbb-renew-hash-table))
 
 (defun bbb-get-current-id ()
   (if gnus-current-headers
 
 (defun bbb-get-current-id ()
   (if gnus-current-headers
-      (aref gnus-current-headers 
-           (nth 1 (assoc "message-id" gnus-header-index)))
+      (mail-header-id gnus-current-headers) 
     (gnus-message 3 "You must select an article before you rate it")))
 
 (defun bbb-grouplens-group-p (group)
     (gnus-message 3 "You must select an article before you rate it")))
 
 (defun bbb-grouplens-group-p (group)
@@ -741,7 +728,7 @@ recommend using both scores and grouplens predictions together."
     (- et (bbb-time-float grouplens-current-starting-time))))
 
 (defun bbb-time-float (timeval)
     (- et (bbb-time-float grouplens-current-starting-time))))
 
 (defun bbb-time-float (timeval)
-  (+ (* (car timeval) 65536) 
+  (+ (* (car timeval) 65536)
      (cadr timeval)))
 
 (defun grouplens-do-time ()
      (cadr timeval)))
 
 (defun grouplens-do-time ()
@@ -761,7 +748,7 @@ recommend using both scores and grouplens predictions together."
 ;;          BUG REPORTING
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;;          BUG REPORTING
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(defconst gnus-gl-version "gnus-gl.el 2.12")
+(defconst gnus-gl-version "gnus-gl.el 2.50")
 (defconst gnus-gl-maintainer-address "grouplens-bug@cs.umn.edu")
 (defun gnus-gl-submit-bug-report ()
   "Submit via mail a bug report on gnus-gl"
 (defconst gnus-gl-maintainer-address "grouplens-bug@cs.umn.edu")
 (defun gnus-gl-submit-bug-report ()
   "Submit via mail a bug report on gnus-gl"
@@ -776,22 +763,19 @@ recommend using both scores and grouplens predictions together."
                                    'grouplens-bbb-token
                                    'grouplens-bbb-process
                                    'grouplens-current-group
                                    'grouplens-bbb-token
                                    'grouplens-bbb-process
                                    'grouplens-current-group
-                                   'grouplens-previous-article
-                                   'grouplens-mid-list
-                                   'bbb-alist)
+                                   'grouplens-previous-article)
                              nil
                              'gnus-gl-get-trace))
 
 (defun gnus-gl-get-trace ()
   "Insert the contents of the BBBD trace buffer"
                              nil
                              'gnus-gl-get-trace))
 
 (defun gnus-gl-get-trace ()
   "Insert the contents of the BBBD trace buffer"
-  (if grouplens-bbb-buffer (insert-buffer grouplens-bbb-buffer)))
-
-;;;
-;;; Additions to make gnus-grouplens-mode  Warning Warning!!
-;;;      This version of the gnus-grouplens-mode does
-;;;      not work with gnus-5.x.  The "old" way of
-;;;      setting up GroupLens still works however.
-;;;
+  (when grouplens-bbb-buffer
+    (insert-buffer grouplens-bbb-buffer)))
+
+;;
+;; GroupLens minor mode
+;;
+
 (defvar gnus-grouplens-mode nil
   "Minor mode for providing a GroupLens interface in Gnus summary buffers.")
 
 (defvar gnus-grouplens-mode nil
   "Minor mode for providing a GroupLens interface in Gnus summary buffers.")
 
@@ -832,27 +816,31 @@ recommend using both scores and grouplens predictions together."
       (gnus-make-local-hook 'gnus-select-article-hook)
       (gnus-add-hook 'gnus-select-article-hook 'grouplens-do-time nil 'local)
       (gnus-make-local-hook 'gnus-exit-group-hook)
       (gnus-make-local-hook 'gnus-select-article-hook)
       (gnus-add-hook 'gnus-select-article-hook 'grouplens-do-time nil 'local)
       (gnus-make-local-hook 'gnus-exit-group-hook)
-      (gnus-add-hook 'gnus-exit-group-hook 'bbb-put-ratings nil 'local)
+      (gnus-add-hook 'gnus-exit-group-hook 'bbb-exit-group nil 'local)
       (make-local-variable 'gnus-score-find-score-files-function)
       (make-local-variable 'gnus-score-find-score-files-function)
-      (cond ((eq gnus-grouplens-override-scoring 'combine)
-            ;; either add bbb-buld-mid-scores-alist to a list
-             ;; or make a list
-            (if (listp gnus-score-find-score-files-function)
-                (setq gnus-score-find-score-files-function 
-                      (append 'bbb-build-mid-scores-alist      
-                              gnus-score-find-score-files-function ))
-              (setq gnus-score-find-score-files-function 
-                    (list gnus-score-find-score-files-function 
-                          'bbb-build-mid-scores-alist))))
-           ;; leave the gnus-score-find-score-files variable alone
-           ((eq gnus-grouplens-override-scoring 'separate)
-            (add-hook 'gnus-select-group-hook 
-                      '(lambda() 
-                         (bbb-build-mid-scores-alist gnus-newsgroup-name))))
-           ;; default is to override
-           (t (setq gnus-score-find-score-files-function 
-                    'bbb-build-mid-scores-alist)))
 
 
+      (cond 
+       ((eq gnus-grouplens-override-scoring 'combine)
+       ;; either add bbb-buld-mid-scores-alist to a list
+       ;; or make a list
+       (if (listp gnus-score-find-score-files-function)
+           (setq gnus-score-find-score-files-function 
+                 (append 'bbb-build-mid-scores-alist 
+                         gnus-score-find-score-files-function))
+         (setq gnus-score-find-score-files-function 
+               (list gnus-score-find-score-files-function 
+                     'bbb-build-mid-scores-alist))))
+       ;; leave the gnus-score-find-score-files variable alone
+       ((eq gnus-grouplens-override-scoring 'separate)
+       (add-hook 'gnus-select-group-hook 
+                 '(lambda ()
+                    (bbb-get-predictions (bbb-get-all-mids) 
+                                         gnus-newsgroup-name))))
+       ;; default is to override
+       (t 
+       (setq gnus-score-find-score-files-function 
+             'bbb-build-mid-scores-alist)))
+      
       ;; Change how summary lines look
       (make-local-variable 'gnus-summary-line-format)
       (make-local-variable 'gnus-summary-line-format-spec)
       ;; Change how summary lines look
       (make-local-variable 'gnus-summary-line-format)
       (make-local-variable 'gnus-summary-line-format-spec)
index da5047e..d368cce 100644 (file)
@@ -117,6 +117,7 @@ with some simple extensions.
 %p    Process mark (char)
 %O    Moderated group (string, \"(m)\" or \"\")
 %P    Topic indentation (string)
 %p    Process mark (char)
 %O    Moderated group (string, \"(m)\" or \"\")
 %P    Topic indentation (string)
+%m    Whether there is new(ish) mail in the group (char, \"%\")
 %l    Whether there are GroupLens predictions for this group (string)
 %n    Select from where (string)
 %z    A string that look like `<%s:%n>' if a foreign select method is used
 %l    Whether there are GroupLens predictions for this group (string)
 %n    Select from where (string)
 %z    A string that look like `<%s:%n>' if a foreign select method is used
@@ -273,6 +274,8 @@ level: The level of the group.
 score: The score of the group.
 ticked: The number of ticked articles.")
 
 score: The score of the group.
 ticked: The number of ticked articles.")
 
+(defvar gnus-new-mail-mark ?%
+  "Mark used for groups with new mail.")
 
 ;;; Internal variables
 
 
 ;;; Internal variables
 
@@ -295,7 +298,7 @@ ticked: The number of ticked articles.")
     (?S gnus-tmp-subscribed ?c)
     (?L gnus-tmp-level ?d)
     (?N (cond ((eq number t) "*" )
     (?S gnus-tmp-subscribed ?c)
     (?L gnus-tmp-level ?d)
     (?N (cond ((eq number t) "*" )
-             ((numberp number) 
+             ((numberp number)
               (int-to-string
                (+ number
                   (gnus-range-length (cdr (assq 'dormant gnus-tmp-marked)))
               (int-to-string
                (+ number
                   (gnus-range-length (cdr (assq 'dormant gnus-tmp-marked)))
@@ -320,6 +323,7 @@ ticked: The number of ticked articles.")
     (?P gnus-group-indentation ?s)
     (?l gnus-tmp-grouplens ?s)
     (?z gnus-tmp-news-method-string ?s)
     (?P gnus-group-indentation ?s)
     (?l gnus-tmp-grouplens ?s)
     (?z gnus-tmp-news-method-string ?s)
+    (?m (gnus-group-new-mail gnus-tmp-group) ?c)
     (?u gnus-tmp-user-defined ?s)))
 
 (defvar gnus-group-mode-line-format-alist
     (?u gnus-tmp-user-defined ?s)))
 
 (defvar gnus-group-mode-line-format-alist
@@ -821,35 +825,35 @@ If REGEXP, only list groups matching REGEXP."
        (lowest (or lowest 1))
        info clevel unread group params)
     (erase-buffer)
        (lowest (or lowest 1))
        info clevel unread group params)
     (erase-buffer)
-    (if (< lowest gnus-level-zombie)
-       ;; List living groups.
-       (while newsrc
-         (setq info (car newsrc)
-               group (gnus-info-group info)
-               params (gnus-info-params info)
-               newsrc (cdr newsrc)
-               unread (car (gnus-gethash group gnus-newsrc-hashtb)))
-         (and unread                   ; This group might be bogus
-              (or (not regexp)
-                  (string-match regexp group))
-              (<= (setq clevel (gnus-info-level info)) level)
-              (>= clevel lowest)
-              (or all                  ; We list all groups?
-                  (if (eq unread t)    ; Unactivated?
-                      gnus-group-list-inactive-groups ; We list unactivated 
-                    (> unread 0))      ; We list groups with unread articles
-                  (and gnus-list-groups-with-ticked-articles
-                       (cdr (assq 'tick (gnus-info-marks info))))
+    (when (< lowest gnus-level-zombie)
+      ;; List living groups.
+      (while newsrc
+       (setq info (car newsrc)
+             group (gnus-info-group info)
+             params (gnus-info-params info)
+             newsrc (cdr newsrc)
+             unread (car (gnus-gethash group gnus-newsrc-hashtb)))
+       (and unread                     ; This group might be bogus
+            (or (not regexp)
+                (string-match regexp group))
+            (<= (setq clevel (gnus-info-level info)) level)
+            (>= clevel lowest)
+            (or all                    ; We list all groups?
+                (if (eq unread t)      ; Unactivated?
+                    gnus-group-list-inactive-groups ; We list unactivated 
+                  (> unread 0))        ; We list groups with unread articles
+                (and gnus-list-groups-with-ticked-articles
+                     (cdr (assq 'tick (gnus-info-marks info))))
                                        ; And groups with tickeds
                                        ; And groups with tickeds
-                  ;; Check for permanent visibility.
-                  (and gnus-permanently-visible-groups
-                       (string-match gnus-permanently-visible-groups
-                                     group))
-                  (memq 'visible params)
-                  (cdr (assq 'visible params)))
-              (gnus-group-insert-group-line
-               group (gnus-info-level info)
-               (gnus-info-marks info) unread (gnus-info-method info)))))
+                ;; Check for permanent visibility.
+                (and gnus-permanently-visible-groups
+                     (string-match gnus-permanently-visible-groups
+                                   group))
+                (memq 'visible params)
+                (cdr (assq 'visible params)))
+            (gnus-group-insert-group-line
+             group (gnus-info-level info)
+             (gnus-info-marks info) unread (gnus-info-method info)))))
 
     ;; List dead groups.
     (and (>= level gnus-level-zombie) (<= lowest gnus-level-zombie)
 
     ;; List dead groups.
     (and (>= level gnus-level-zombie) (<= lowest gnus-level-zombie)
@@ -904,7 +908,8 @@ If REGEXP, only list groups matching REGEXP."
           (not (gnus-ephemeral-group-p group))
           (gnus-dribble-enter
            (concat "(gnus-group-set-info '"
           (not (gnus-ephemeral-group-p group))
           (gnus-dribble-enter
            (concat "(gnus-group-set-info '"
-                   (gnus-prin1-to-string (nth 2 entry)) ")")))
+                   (gnus-prin1-to-string (nth 2 entry))
+                   ")")))
       (setq gnus-group-indentation (gnus-group-group-indentation))
       (gnus-delete-line)
       (gnus-group-insert-group-line-info group)
       (setq gnus-group-indentation (gnus-group-group-indentation))
       (gnus-delete-line)
       (gnus-group-insert-group-line-info group)
@@ -1052,11 +1057,11 @@ already."
            found buffer-read-only)
        ;; Enter the current status into the dribble buffer.
        (let ((entry (gnus-gethash group gnus-newsrc-hashtb)))
            found buffer-read-only)
        ;; Enter the current status into the dribble buffer.
        (let ((entry (gnus-gethash group gnus-newsrc-hashtb)))
-         (if (and entry (not (gnus-ephemeral-group-p group)))
-             (gnus-dribble-enter
-              (concat "(gnus-group-set-info '" 
-                      (gnus-prin1-to-string (nth 2 entry))
-                      ")"))))
+         (when (and entry (not (gnus-ephemeral-group-p group)))
+           (gnus-dribble-enter
+            (concat "(gnus-group-set-info '" 
+                    (gnus-prin1-to-string (nth 2 entry))
+                    ")"))))
        ;; Find all group instances.  If topics are in use, each group
        ;; may be listed in more than once.
        (while (setq loc (text-property-any
        ;; Find all group instances.  If topics are in use, each group
        ;; may be listed in more than once.
        (while (setq loc (text-property-any
@@ -1152,6 +1157,11 @@ already."
   "Get the number of unread articles of the newsgroup on the current line."
   (get-text-property (gnus-point-at-bol) 'gnus-unread))
 
   "Get the number of unread articles of the newsgroup on the current line."
   (get-text-property (gnus-point-at-bol) 'gnus-unread))
 
+(defun gnus-group-new-mail (group)
+  (if (nnmail-new-mail-p group)
+      gnus-new-mail-mark
+    ? ))
+
 (defun gnus-group-search-forward (&optional backward all level first-too)
   "Find the next newsgroup with unread articles.
 If BACKWARD is non-nil, find the previous newsgroup instead.
 (defun gnus-group-search-forward (&optional backward all level first-too)
   "Find the next newsgroup with unread articles.
 If BACKWARD is non-nil, find the previous newsgroup instead.
@@ -1165,7 +1175,8 @@ If FIRST-TOO, the current line is also eligible as a target."
        pos found lev)
     (if (and backward (progn (beginning-of-line)) (bobp))
        nil
        pos found lev)
     (if (and backward (progn (beginning-of-line)) (bobp))
        nil
-      (or first-too (forward-line way))
+      (unless first-too
+       (forward-line way))
       (while (and
              (not (eobp))
              (not (setq
       (while (and
              (not (eobp))
              (not (setq
@@ -1210,7 +1221,7 @@ If FIRST-TOO, the current line is also eligible as a target."
        (beginning-of-line)
        (forward-char (or (cdr (assq 'process gnus-group-mark-positions)) 2))
        (subst-char-in-region
        (beginning-of-line)
        (forward-char (or (cdr (assq 'process gnus-group-mark-positions)) 2))
        (subst-char-in-region
-        (point) (1+ (point)) (following-char) 
+        (point) (1+ (point)) (following-char)
         (if unmark
             (progn
               (setq gnus-group-marked (delete group gnus-group-marked))
         (if unmark
             (progn
               (setq gnus-group-marked (delete group gnus-group-marked))
@@ -1277,7 +1288,7 @@ Return nil if the group isn't displayed."
 
 (defun gnus-group-set-mark (group)
   "Set the process mark on GROUP."
 
 (defun gnus-group-set-mark (group)
   "Set the process mark on GROUP."
-  (if (gnus-group-goto-group group) 
+  (if (gnus-group-goto-group group)
       (save-excursion
        (gnus-group-mark-group 1 nil t))
     (setq gnus-group-marked (cons group (delete group gnus-group-marked)))))
       (save-excursion
        (gnus-group-mark-group 1 nil t))
     (setq gnus-group-marked (cons group (delete group gnus-group-marked)))))
@@ -1312,7 +1323,7 @@ Take into consideration N (the prefix) and the list of marked groups."
       (save-excursion
        (while (and (> n 0)
                    (setq group (gnus-group-group-name)))
       (save-excursion
        (while (and (> n 0)
                    (setq group (gnus-group-group-name)))
-         (setq groups (cons group groups))
+         (push group groups)
          (setq n (1- n))
          (gnus-group-next-group way)))
       (nreverse groups)))
          (setq n (1- n))
          (gnus-group-next-group way)))
       (nreverse groups)))
@@ -1407,8 +1418,8 @@ buffer."
   "Start Gnus if necessary and enter GROUP.
 Returns whether the fetching was successful or not."
   (interactive "sGroup name: ")
   "Start Gnus if necessary and enter GROUP.
 Returns whether the fetching was successful or not."
   (interactive "sGroup name: ")
-  (or (get-buffer gnus-group-buffer)
-      (gnus))
+  (unless (get-buffer gnus-group-buffer)
+    (gnus))
   (gnus-group-read-group nil nil group))
 
 ;; Enter a group that is not in the group buffer.  Non-nil is returned
   (gnus-group-read-group nil nil group))
 
 ;; Enter a group that is not in the group buffer.  Non-nil is returned
@@ -1576,17 +1587,16 @@ If EXCLUDE-GROUP, do not go to that group."
        unread best-point)
     (while (not (eobp))
       (setq unread (get-text-property (point) 'gnus-unread))
        unread best-point)
     (while (not (eobp))
       (setq unread (get-text-property (point) 'gnus-unread))
-      (if (and (numberp unread) (> unread 0))
-         (progn
-           (if (and (get-text-property (point) 'gnus-level)
-                    (< (get-text-property (point) 'gnus-level) best)
-                    (or (not exclude-group)
-                        (not (equal exclude-group (gnus-group-group-name)))))
-               (progn
-                 (setq best (get-text-property (point) 'gnus-level))
-                 (setq best-point (point))))))
+      (when (and (numberp unread) (> unread 0))
+       (when (and (get-text-property (point) 'gnus-level)
+                  (< (get-text-property (point) 'gnus-level) best)
+                  (or (not exclude-group)
+                      (not (equal exclude-group (gnus-group-group-name)))))
+         (setq best (get-text-property (point) 'gnus-level))
+         (setq best-point (point))))
       (forward-line 1))
       (forward-line 1))
-    (if best-point (goto-char best-point))
+    (when best-point
+      (goto-char best-point))
     (gnus-summary-position-point)
     (and best-point (gnus-group-group-name))))
 
     (gnus-summary-position-point)
     (and best-point (gnus-group-group-name))))
 
@@ -1638,10 +1648,10 @@ ADDRESS."
      t)
     ;; Make it active.
     (gnus-set-active nname (cons 1 0))
      t)
     ;; Make it active.
     (gnus-set-active nname (cons 1 0))
-    (or (gnus-ephemeral-group-p name)
-       (gnus-dribble-enter
-        (concat "(gnus-group-set-info '" 
-                (gnus-prin1-to-string (cdr info)) ")")))
+    (unless (gnus-ephemeral-group-p name)
+      (gnus-dribble-enter
+       (concat "(gnus-group-set-info '" 
+              (gnus-prin1-to-string (cdr info)) ")")))
     ;; Insert the line.
     (gnus-group-insert-group-line-info nname)
     (forward-line -1)
     ;; Insert the line.
     (gnus-group-insert-group-line-info nname)
     (forward-line -1)
@@ -1654,8 +1664,8 @@ ADDRESS."
                 gnus-valid-select-methods)
       (require backend))
     (gnus-check-server meth)
                 gnus-valid-select-methods)
       (require backend))
     (gnus-check-server meth)
-    (and (gnus-check-backend-function 'request-create-group nname)
-        (gnus-request-create-group nname nil args))
+    (when (gnus-check-backend-function 'request-create-group nname)
+      (gnus-request-create-group nname nil args))
     t))
 
 (defun gnus-group-delete-group (group &optional force)
     t))
 
 (defun gnus-group-delete-group (group &optional force)
@@ -1667,9 +1677,10 @@ doing the deletion."
   (interactive
    (list (gnus-group-group-name)
         current-prefix-arg))
   (interactive
    (list (gnus-group-group-name)
         current-prefix-arg))
-  (or group (error "No group to rename"))
-  (or (gnus-check-backend-function 'request-delete-group group)
-      (error "This backend does not support group deletion"))
+  (unless group
+    (error "No group to rename"))
+  (unless (gnus-check-backend-function 'request-delete-group group)
+    (error "This backend does not support group deletion"))
   (prog1
       (if (not (gnus-yes-or-no-p
                (format
   (prog1
       (if (not (gnus-yes-or-no-p
                (format
@@ -1923,8 +1934,10 @@ directory will be used as a newsgroup.   The directory should contain
 mail messages or news articles in files that have numeric names."
   (interactive
    (list (read-file-name "Create group from directory: ")))
 mail messages or news articles in files that have numeric names."
   (interactive
    (list (read-file-name "Create group from directory: ")))
-  (or (file-exists-p dir) (error "No such directory"))
-  (or (file-directory-p dir) (error "Not a directory"))
+  (unless (file-exists-p dir)
+    (error "No such directory"))
+  (unless (file-directory-p dir)
+    (error "Not a directory"))
   (let ((ext "")
        (i 0)
        group)
   (let ((ext "")
        (i 0)
        group)
@@ -1958,8 +1971,8 @@ score file entries for articles to include in the group."
        (while (not (equal "" (setq regexp (read-string
                                            (format "Match on %s (string): "
                                                    header)))))
        (while (not (equal "" (setq regexp (read-string
                                            (format "Match on %s (string): "
                                                    header)))))
-         (setq regexps (cons (list regexp nil nil 'r) regexps)))
-       (setq scores (cons (cons header regexps) scores)))
+         (push (list regexp nil nil 'r) regexps))
+       (push (cons header regexps) scores))
       scores)))
   (gnus-group-make-group group "nnkiboze" address)
   (nnheader-temp-write (gnus-score-file-name (concat "nnkiboze:" group))
       scores)))
   (gnus-group-make-group group "nnkiboze" address)
   (nnheader-temp-write (gnus-score-file-name (concat "nnkiboze:" group))
@@ -1972,8 +1985,8 @@ score file entries for articles to include in the group."
    (list current-prefix-arg
         (completing-read "Add to virtual group: " gnus-newsrc-hashtb nil t
                          "nnvirtual:")))
    (list current-prefix-arg
         (completing-read "Add to virtual group: " gnus-newsrc-hashtb nil t
                          "nnvirtual:")))
-  (or (eq (car (gnus-find-method-for-group vgroup)) 'nnvirtual)
-      (error "%s is not an nnvirtual group" vgroup))
+  (unless (eq (car (gnus-find-method-for-group vgroup)) 'nnvirtual)
+    (error "%s is not an nnvirtual group" vgroup))
   (let* ((groups (gnus-group-process-prefix n))
         (method (gnus-info-method (gnus-get-info vgroup))))
     (setcar (cdr method)
   (let* ((groups (gnus-group-process-prefix n))
         (method (gnus-info-method (gnus-get-info vgroup))))
     (setcar (cdr method)
@@ -1992,8 +2005,8 @@ score file entries for articles to include in the group."
   (let* ((method (list 'nnvirtual "^$"))
         (pgroup (gnus-group-prefixed-name group method)))
     ;; Check whether it exists already.
   (let* ((method (list 'nnvirtual "^$"))
         (pgroup (gnus-group-prefixed-name group method)))
     ;; Check whether it exists already.
-    (and (gnus-gethash pgroup gnus-newsrc-hashtb)
-        (error "Group %s already exists." pgroup))
+    (when (gnus-gethash pgroup gnus-newsrc-hashtb)
+      (error "Group %s already exists." pgroup))
     ;; Subscribe the new group after the group on the current line.
     (gnus-subscribe-group pgroup (gnus-group-group-name) method)
     (gnus-group-update-group pgroup)
     ;; Subscribe the new group after the group on the current line.
     (gnus-subscribe-group pgroup (gnus-group-group-name) method)
     (gnus-group-update-group pgroup)
@@ -2246,9 +2259,9 @@ caught up is returned."
       (while groups
        ;; Virtual groups have to be given special treatment.
        (let ((method (gnus-find-method-for-group (car groups))))
       (while groups
        ;; Virtual groups have to be given special treatment.
        (let ((method (gnus-find-method-for-group (car groups))))
-         (if (eq 'nnvirtual (car method))
-             (nnvirtual-catchup-group
-              (gnus-group-real-name (car groups)) (nth 1 method) all)))
+         (when (eq 'nnvirtual (car method))
+           (nnvirtual-catchup-group
+            (gnus-group-real-name (car groups)) (nth 1 method) all)))
        (gnus-group-remove-mark (car groups))
        (if (>= (gnus-group-group-level) gnus-level-zombie)
            (gnus-message 2 "Dead groups can't be caught up")
        (gnus-group-remove-mark (car groups))
        (if (>= (gnus-group-group-level) gnus-level-zombie)
            (gnus-message 2 "Dead groups can't be caught up")
@@ -2349,14 +2362,14 @@ or nil if no action could be taken."
     (string-to-int
      (let ((s (read-string
               (format "Level (default %s): "
     (string-to-int
      (let ((s (read-string
               (format "Level (default %s): "
-                      (or (gnus-group-group-level) 
+                      (or (gnus-group-group-level)
                           gnus-level-default-subscribed)))))
        (if (string-match "^\\s-*$" s)
                           gnus-level-default-subscribed)))))
        (if (string-match "^\\s-*$" s)
-          (int-to-string (or (gnus-group-group-level) 
+          (int-to-string (or (gnus-group-group-level)
                              gnus-level-default-subscribed))
         s)))))
                              gnus-level-default-subscribed))
         s)))))
-  (or (and (>= level 1) (<= level gnus-level-killed))
-      (error "Illegal level: %d" level))
+  (unless (and (>= level 1) (<= level gnus-level-killed))
+    (error "Illegal level: %d" level))
   (let ((groups (gnus-group-process-prefix n))
        group)
     (while (setq group (pop groups))
   (let ((groups (gnus-group-process-prefix n))
        group)
     (while (setq group (pop groups))
@@ -2437,8 +2450,8 @@ group line."
        (or (and (member group gnus-zombie-list)
                gnus-level-zombie)
           gnus-level-killed)
        (or (and (member group gnus-zombie-list)
                gnus-level-zombie)
           gnus-level-killed)
-       (and (gnus-group-group-name)
-           (gnus-gethash (gnus-group-group-name) gnus-newsrc-hashtb)))
+       (when (gnus-group-group-name)
+        (gnus-gethash (gnus-group-group-name) gnus-newsrc-hashtb)))
       (unless silent
        (gnus-group-update-group group)))
      (t (error "No such newsgroup: %s" group)))
       (unless silent
        (gnus-group-update-group group)))
      (t (error "No such newsgroup: %s" group)))
@@ -2449,8 +2462,8 @@ group line."
 If given a negative prefix, move down instead. The difference between
 N and the number of steps taken is returned."
   (interactive "p")
 If given a negative prefix, move down instead. The difference between
 N and the number of steps taken is returned."
   (interactive "p")
-  (or (gnus-group-group-name)
-      (error "No group on current line"))
+  (unless (gnus-group-group-name)
+    (error "No group on current line"))
   (gnus-group-kill-group 1)
   (prog1
       (forward-line (- n))
   (gnus-group-kill-group 1)
   (prog1
       (forward-line (- n))
@@ -2547,8 +2560,8 @@ is returned."
   (setq arg (or arg 1))
   (let (info group prev out)
     (while (>= (decf arg) 0)
   (setq arg (or arg 1))
   (let (info group prev out)
     (while (>= (decf arg) 0)
-      (if (not (setq info (pop gnus-list-of-killed-groups)))
-         (error "No more newsgroups to yank"))
+      (when (not (setq info (pop gnus-list-of-killed-groups)))
+       (error "No more newsgroups to yank"))
       (push (setq group (nth 1 info)) out)
       ;; Find which newsgroup to insert this one before - search
       ;; backward until something suitable is found.  If there are no
       (push (setq group (nth 1 info)) out)
       ;; Find which newsgroup to insert this one before - search
       ;; backward until something suitable is found.  If there are no
@@ -2647,7 +2660,7 @@ entail asking the server for the groups."
             (lambda (sym)
               (and (boundp sym)
                    (symbol-value sym)
             (lambda (sym)
               (and (boundp sym)
                    (symbol-value sym)
-                   (setq list (cons (symbol-name sym) list))))
+                   (push (symbol-name sym) list)))
             gnus-active-hashtb)
            list)
          'string<))
             gnus-active-hashtb)
            list)
          'string<))
@@ -2703,7 +2716,8 @@ If N is negative, this group and the N-1 previous groups will be checked."
   (interactive "P")
   (let* ((groups (gnus-group-process-prefix n))
         (ret (if (numberp n) (- n (length groups)) 0))
   (interactive "P")
   (let* ((groups (gnus-group-process-prefix n))
         (ret (if (numberp n) (- n (length groups)) 0))
-        (beg (unless n (point)))
+        (beg (unless n
+               (point)))
         group)
     (while (setq group (pop groups))
       (gnus-group-remove-mark group)
         group)
     (while (setq group (pop groups))
       (gnus-group-remove-mark group)
@@ -2720,7 +2734,8 @@ If N is negative, this group and the N-1 previous groups will be checked."
                'denied)
            (gnus-error 3 "Server denied access")
          (gnus-error 3 "%s error: %s" group (gnus-status-message group)))))
                'denied)
            (gnus-error 3 "Server denied access")
          (gnus-error 3 "%s error: %s" group (gnus-status-message group)))))
-    (when beg (goto-char beg))
+    (when beg
+      (goto-char beg))
     (when gnus-goto-next-group-when-activating
       (gnus-group-next-unread-group 1 t))
     (gnus-summary-position-point)
     (when gnus-goto-next-group-when-activating
       (gnus-group-next-unread-group 1 t))
     (gnus-summary-position-point)
@@ -2762,25 +2777,27 @@ to use."
     (when (and force
               gnus-description-hashtb)
       (gnus-sethash mname nil gnus-description-hashtb))
     (when (and force
               gnus-description-hashtb)
       (gnus-sethash mname nil gnus-description-hashtb))
-    (or group (error "No group name given"))
-    (and (or (and gnus-description-hashtb
-                 ;; We check whether this group's method has been
-                 ;; queried for a description file.
-                 (gnus-gethash mname gnus-description-hashtb))
-            (setq desc (gnus-group-get-description group))
-            (gnus-read-descriptions-file method))
-        (gnus-message 1
-                      (or desc (gnus-gethash group gnus-description-hashtb)
-                          "No description available")))))
+    (unless group
+      (error "No group name given"))
+    (when (or (and gnus-description-hashtb
+                  ;; We check whether this group's method has been
+                  ;; queried for a description file.
+                  (gnus-gethash mname gnus-description-hashtb))
+             (setq desc (gnus-group-get-description group))
+             (gnus-read-descriptions-file method))
+      (gnus-message 1
+                   (or desc (gnus-gethash group gnus-description-hashtb)
+                       "No description available")))))
 
 ;; Suggested by Per Abrahamsen <amanda@iesd.auc.dk>.
 (defun gnus-group-describe-all-groups (&optional force)
   "Pop up a buffer with descriptions of all newsgroups."
   (interactive "P")
 
 ;; Suggested by Per Abrahamsen <amanda@iesd.auc.dk>.
 (defun gnus-group-describe-all-groups (&optional force)
   "Pop up a buffer with descriptions of all newsgroups."
   (interactive "P")
-  (and force (setq gnus-description-hashtb nil))
-  (if (not (or gnus-description-hashtb
-              (gnus-read-all-descriptions-files)))
-      (error "Couldn't request descriptions file"))
+  (when force
+    (setq gnus-description-hashtb nil))
+  (when (not (or gnus-description-hashtb
+                (gnus-read-all-descriptions-files)))
+    (error "Couldn't request descriptions file"))
   (let ((buffer-read-only nil)
        b)
     (erase-buffer)
   (let ((buffer-read-only nil)
        b)
     (erase-buffer)
@@ -2809,7 +2826,7 @@ to use."
      (lambda (group)
        (and (symbol-name group)
            (string-match regexp (symbol-name group))
      (lambda (group)
        (and (symbol-name group)
            (string-match regexp (symbol-name group))
-           (setq groups (cons (symbol-name group) groups))))
+           (push (symbol-name group) groups)))
      gnus-active-hashtb)
     ;; Also go through all descriptions that are known to Gnus.
     (when search-description
      gnus-active-hashtb)
     ;; Also go through all descriptions that are known to Gnus.
     (when search-description
@@ -2817,7 +2834,7 @@ to use."
        (lambda (group)
         (and (string-match regexp (symbol-value group))
              (gnus-active (symbol-name group))
        (lambda (group)
         (and (string-match regexp (symbol-value group))
              (gnus-active (symbol-name group))
-             (setq groups (cons (symbol-name group) groups))))
+             (push (symbol-name group) groups)))
        gnus-description-hashtb))
     (if (not groups)
        (gnus-message 3 "No groups matched \"%s\"." regexp)
        gnus-description-hashtb))
     (if (not groups)
        (gnus-message 3 "No groups matched \"%s\"." regexp)
@@ -2829,13 +2846,12 @@ to use."
        (setq groups (sort groups 'string<))
        (while groups
          ;; Groups may be entered twice into the list of groups.
        (setq groups (sort groups 'string<))
        (while groups
          ;; Groups may be entered twice into the list of groups.
-         (if (not (string= (car groups) prev))
-             (progn
-               (insert (setq prev (car groups)) "\n")
-               (if (and gnus-description-hashtb
-                        (setq des (gnus-gethash (car groups)
-                                                gnus-description-hashtb)))
-                   (insert "  " des "\n"))))
+         (when (not (string= (car groups) prev))
+           (insert (setq prev (car groups)) "\n")
+           (when (and gnus-description-hashtb
+                      (setq des (gnus-gethash (car groups)
+                                              gnus-description-hashtb)))
+             (insert "  " des "\n")))
          (setq groups (cdr groups)))
        (goto-char (point-min))))
     (pop-to-buffer obuf)))
          (setq groups (cdr groups)))
        (goto-char (point-min))))
     (pop-to-buffer obuf)))
@@ -2843,9 +2859,9 @@ to use."
 (defun gnus-group-description-apropos (regexp)
   "List all newsgroups that have names or descriptions that match a regexp."
   (interactive "sGnus description apropos (regexp): ")
 (defun gnus-group-description-apropos (regexp)
   "List all newsgroups that have names or descriptions that match a regexp."
   (interactive "sGnus description apropos (regexp): ")
-  (if (not (or gnus-description-hashtb
-              (gnus-read-all-descriptions-files)))
-      (error "Couldn't request descriptions file"))
+  (when (not (or gnus-description-hashtb
+                (gnus-read-all-descriptions-files)))
+    (error "Couldn't request descriptions file"))
   (gnus-group-apropos regexp t))
 
 ;; Suggested by Per Abrahamsen <amanda@iesd.auc.dk>.
   (gnus-group-apropos regexp t))
 
 ;; Suggested by Per Abrahamsen <amanda@iesd.auc.dk>.
index 44e65ac..5b2da01 100644 (file)
@@ -407,7 +407,7 @@ If GROUP is nil, all groups on METHOD are scanned."
   (let* ((elem (assoc method gnus-opened-servers))
         (status (cadr elem)))
     ;; If this hasn't been opened before, we add it to the list.
   (let* ((elem (assoc method gnus-opened-servers))
         (status (cadr elem)))
     ;; If this hasn't been opened before, we add it to the list.
-    (when (eq status 'denied)
+    (when (eq status 'denied) 
       ;; Set the status of this server.
       (setcar (cdr elem) 'closed))))
 
       ;; Set the status of this server.
       (setcar (cdr elem) 'closed))))
 
index 3f674d2..898ccfe 100644 (file)
@@ -187,8 +187,8 @@ If NEWSGROUP is nil, the global kill file is selected."
   ;; REGEXP: The string to kill.
   (save-excursion
     (let (string)
   ;; REGEXP: The string to kill.
   (save-excursion
     (let (string)
-      (or (eq major-mode 'gnus-kill-file-mode)
-         (gnus-kill-set-kill-buffer))
+      (unless (eq major-mode 'gnus-kill-file-mode)
+       (gnus-kill-set-kill-buffer))
       (unless dont-move
        (goto-char (point-max)))
       (insert (setq string (format "(gnus-kill %S %S)\n" field regexp)))
       (unless dont-move
        (goto-char (point-max)))
       (insert (setq string (format "(gnus-kill %S %S)\n" field regexp)))
@@ -202,7 +202,8 @@ If NEWSGROUP is nil, the global kill file is selected."
    (if (vectorp gnus-current-headers)
        (regexp-quote 
        (gnus-simplify-subject (mail-header-subject gnus-current-headers)))
    (if (vectorp gnus-current-headers)
        (regexp-quote 
        (gnus-simplify-subject (mail-header-subject gnus-current-headers)))
-     "") t))
+     "")
+   t))
   
 (defun gnus-kill-file-kill-by-author ()
   "Kill by author."
   
 (defun gnus-kill-file-kill-by-author ()
   "Kill by author."
@@ -225,19 +226,19 @@ If NEWSGROUP is nil, the global kill file is selected."
 (defun gnus-kill-file-kill-by-xref ()
   "Kill by Xref."
   (interactive)
 (defun gnus-kill-file-kill-by-xref ()
   "Kill by Xref."
   (interactive)
-  (let ((xref (and (vectorp gnus-current-headers) 
+  (let ((xref (and (vectorp gnus-current-headers)
                   (mail-header-xref gnus-current-headers)))
        (start 0)
        group)
     (if xref
        (while (string-match " \\([^ \t]+\\):" xref start)
          (setq start (match-end 0))
                   (mail-header-xref gnus-current-headers)))
        (start 0)
        group)
     (if xref
        (while (string-match " \\([^ \t]+\\):" xref start)
          (setq start (match-end 0))
-         (if (not (string= 
-                   (setq group 
-                         (substring xref (match-beginning 1) (match-end 1)))
-                   gnus-newsgroup-name))
-             (gnus-kill-file-enter-kill 
-              "Xref" (concat " " (regexp-quote group) ":") t)))
+         (when (not (string= 
+                     (setq group 
+                           (substring xref (match-beginning 1) (match-end 1)))
+                     gnus-newsgroup-name))
+           (gnus-kill-file-enter-kill 
+            "Xref" (concat " " (regexp-quote group) ":") t)))
       (gnus-kill-file-enter-kill "Xref" "" t))))
 
 (defun gnus-kill-file-raise-followups-to-author (level)
       (gnus-kill-file-enter-kill "Xref" "" t))))
 
 (defun gnus-kill-file-raise-followups-to-author (level)
@@ -300,13 +301,13 @@ If NEWSGROUP is nil, the global kill file is selected."
   (save-buffer)
   (let ((killbuf (current-buffer)))
     ;; We don't want to return to article buffer.
   (save-buffer)
   (let ((killbuf (current-buffer)))
     ;; We don't want to return to article buffer.
-    (and (get-buffer gnus-article-buffer)
-        (bury-buffer gnus-article-buffer))
+    (when (get-buffer gnus-article-buffer)
+      (bury-buffer gnus-article-buffer))
     ;; Delete the KILL file windows.
     (delete-windows-on killbuf)
     ;; Restore last window configuration if available.
     ;; Delete the KILL file windows.
     (delete-windows-on killbuf)
     ;; Restore last window configuration if available.
-    (and gnus-winconf-kill-file
-        (set-window-configuration gnus-winconf-kill-file))
+    (when gnus-winconf-kill-file
+      (set-window-configuration gnus-winconf-kill-file))
     (setq gnus-winconf-kill-file nil)
     ;; Kill the KILL file buffer.  Suggested by tale@pawl.rpi.edu.
     (kill-buffer killbuf)))
     (setq gnus-winconf-kill-file nil)
     ;; Kill the KILL file buffer.  Suggested by tale@pawl.rpi.edu.
     (kill-buffer killbuf)))
@@ -341,9 +342,9 @@ If NEWSGROUP is nil, return the global kill file instead."
   "Apply .KILL file, unless a .SCORE file for the same newsgroup exists."
   (cond ((file-exists-p (gnus-score-file-name gnus-newsgroup-name))
          ;; Ignores global KILL.
   "Apply .KILL file, unless a .SCORE file for the same newsgroup exists."
   (cond ((file-exists-p (gnus-score-file-name gnus-newsgroup-name))
          ;; Ignores global KILL.
-         (if (file-exists-p (gnus-newsgroup-kill-file gnus-newsgroup-name))
-             (gnus-message 3 "Note: Ignoring %s.KILL; preferring .SCORE"
-                          gnus-newsgroup-name))
+         (when (file-exists-p (gnus-newsgroup-kill-file gnus-newsgroup-name))
+          (gnus-message 3 "Note: Ignoring %s.KILL; preferring .SCORE"
+                        gnus-newsgroup-name))
          0)
         ((or (file-exists-p (gnus-newsgroup-kill-file nil))
              (file-exists-p (gnus-newsgroup-kill-file gnus-newsgroup-name)))
          0)
         ((or (file-exists-p (gnus-newsgroup-kill-file nil))
              (file-exists-p (gnus-newsgroup-kill-file gnus-newsgroup-name)))
@@ -374,12 +375,11 @@ Returns the number of articles marked as read."
                        (mapcar (lambda (header) (mail-header-number header))
                                headers))
                (while headers
                        (mapcar (lambda (header) (mail-header-number header))
                                headers))
                (while headers
-                 (or (gnus-member-of-range 
-                      (mail-header-number (car headers)) 
-                      gnus-newsgroup-killed)
-                     (setq gnus-newsgroup-kill-headers 
-                           (cons (mail-header-number (car headers))
-                                 gnus-newsgroup-kill-headers)))
+                 (unless (gnus-member-of-range 
+                          (mail-header-number (car headers))
+                          gnus-newsgroup-killed)
+                   (push (mail-header-number (car headers))
+                         gnus-newsgroup-kill-headers))
                  (setq headers (cdr headers))))
              (setq files nil))
          (setq files (cdr files)))))
                  (setq headers (cdr headers))))
              (setq files nil))
          (setq files (cdr files)))))
@@ -395,7 +395,7 @@ Returns the number of articles marked as read."
              (gnus-add-current-to-buffer-list)
              (goto-char (point-min))
 
              (gnus-add-current-to-buffer-list)
              (goto-char (point-min))
 
-             (if (consp (condition-case nil (read (current-buffer)) 
+             (if (consp (condition-case nil (read (current-buffer))
                           (error nil)))
                  (gnus-kill-parse-gnus-kill-file)
                (gnus-kill-parse-rn-kill-file))
                           (error nil)))
                  (gnus-kill-parse-gnus-kill-file)
                (gnus-kill-parse-rn-kill-file))
@@ -432,8 +432,8 @@ Returns the number of articles marked as read."
             (setq beg (point))
             (setq form (condition-case () (read (current-buffer))
                          (error nil))))
             (setq beg (point))
             (setq form (condition-case () (read (current-buffer))
                          (error nil))))
-      (or (listp form)
-         (error "Illegal kill entry (possibly rn kill file?): %s" form))
+      (unless (listp form)
+       (error "Illegal kill entry (possibly rn kill file?): %s" form))
       (if (or (eq (car form) 'gnus-kill)
              (eq (car form) 'gnus-raise)
              (eq (car form) 'gnus-lower))
       (if (or (eq (car form) 'gnus-kill)
              (eq (car form) 'gnus-raise)
              (eq (car form) 'gnus-lower))
@@ -443,7 +443,7 @@ Returns the number of articles marked as read."
        (save-excursion
          (set-buffer gnus-summary-buffer)
          (condition-case () (eval form) (error nil)))))
        (save-excursion
          (set-buffer gnus-summary-buffer)
          (condition-case () (eval form) (error nil)))))
-    (and (buffer-modified-p) 
+    (and (buffer-modified-p)
         gnus-kill-save-kill-file
         (save-buffer))
     (set-buffer-modified-p nil)))
         gnus-kill-save-kill-file
         (save-buffer))
     (set-buffer-modified-p nil)))
@@ -472,17 +472,16 @@ Returns the number of articles marked as read."
        ;; The "f:+" command marks everything *but* the matches as read,
        ;; so we simply first match everything as read, and then unmark
        ;; PATTERN later. 
        ;; The "f:+" command marks everything *but* the matches as read,
        ;; so we simply first match everything as read, and then unmark
        ;; PATTERN later. 
-       (and (string-match "\\+" commands)
-            (progn
-              (gnus-kill "from" ".")
-              (setq commands "m")))
+       (when (string-match "\\+" commands)
+         (gnus-kill "from" ".")
+         (setq commands "m"))
 
        (gnus-kill 
         (or (cdr (assq modifier mod-to-header)) "subject")
         pattern 
 
        (gnus-kill 
         (or (cdr (assq modifier mod-to-header)) "subject")
         pattern 
-        (if (string-match "m" commands) 
+        (if (string-match "m" commands)
             '(gnus-summary-mark-as-unread nil " ")
             '(gnus-summary-mark-as-unread nil " ")
-          '(gnus-summary-mark-as-read nil "X")) 
+          '(gnus-summary-mark-as-read nil "X"))
         nil t))
       (forward-line 1))))
 
         nil t))
       (forward-line 1))))
 
@@ -512,11 +511,11 @@ COMMAND must be a lisp expression or a string representing a key sequence."
              ;; It is a list.
              (if (not (consp (cdr kill-list)))
                  ;; It's on the form (regexp . date).
              ;; It is a list.
              (if (not (consp (cdr kill-list)))
                  ;; It's on the form (regexp . date).
-                 (if (zerop (gnus-execute field (car kill-list) 
+                 (if (zerop (gnus-execute field (car kill-list)
                                           command nil (not all)))
                                           command nil (not all)))
-                     (if (> (gnus-days-between date (cdr kill-list))
-                            gnus-kill-expiry-days)
-                         (setq regexp nil))
+                     (when (> (gnus-days-between date (cdr kill-list))
+                              gnus-kill-expiry-days)
+                       (setq regexp nil))
                    (setcdr kill-list date))
                (while (setq kill (car kill-list))
                  (if (consp kill)
                    (setcdr kill-list date))
                (while (setq kill (car kill-list))
                  (if (consp kill)
@@ -525,13 +524,13 @@ COMMAND must be a lisp expression or a string representing a key sequence."
                        (setq kdate (cdr kill))
                        (if (zerop (gnus-execute 
                                    field (car kill) command nil (not all)))
                        (setq kdate (cdr kill))
                        (if (zerop (gnus-execute 
                                    field (car kill) command nil (not all)))
-                           (if (> (gnus-days-between date kdate)
-                                  gnus-kill-expiry-days)
-                               ;; Time limit has been exceeded, so we
-                               ;; remove the match.
-                               (if prev
-                                   (setcdr prev (cdr kill-list))
-                                 (setq regexp (cdr regexp))))
+                           (when (> (gnus-days-between date kdate)
+                                    gnus-kill-expiry-days)
+                             ;; Time limit has been exceeded, so we
+                             ;; remove the match.
+                             (if prev
+                                 (setcdr prev (cdr kill-list))
+                               (setq regexp (cdr regexp))))
                          ;; Successful kill.  Set the date to today.
                          (setcdr kill date)))
                    ;; It's a permanent kill.
                          ;; Successful kill.  Set the date to today.
                          (setcdr kill date)))
                    ;; It's a permanent kill.
@@ -540,12 +539,13 @@ COMMAND must be a lisp expression or a string representing a key sequence."
                  (setq kill-list (cdr kill-list))))
            (gnus-execute field kill-list command nil (not all))))))
     (switch-to-buffer old-buffer)
                  (setq kill-list (cdr kill-list))))
            (gnus-execute field kill-list command nil (not all))))))
     (switch-to-buffer old-buffer)
-    (if (and (eq major-mode 'gnus-kill-file-mode) regexp (not silent))
-       (gnus-pp-gnus-kill
-        (nconc (list 'gnus-kill field 
-                     (if (consp regexp) (list 'quote regexp) regexp))
-               (if (or exe-command all) (list (list 'quote exe-command)))
-               (if all (list t) nil))))))
+    (when (and (eq major-mode 'gnus-kill-file-mode) regexp (not silent))
+      (gnus-pp-gnus-kill
+       (nconc (list 'gnus-kill field 
+                   (if (consp regexp) (list 'quote regexp) regexp))
+             (when (or exe-command all)
+               (list (list 'quote exe-command)))
+             (if all (list t) nil))))))
 
 (defun gnus-pp-gnus-kill (object)
   (if (or (not (consp (nth 2 object)))
 
 (defun gnus-pp-gnus-kill (object)
   (if (or (not (consp (nth 2 object)))
@@ -568,11 +568,11 @@ COMMAND must be a lisp expression or a string representing a key sequence."
       (and (nth 3 object)
           (insert "\n  " 
                   (if (and (consp (nth 3 object))
       (and (nth 3 object)
           (insert "\n  " 
                   (if (and (consp (nth 3 object))
-                           (not (eq 'quote (car (nth 3 object))))) 
+                           (not (eq 'quote (car (nth 3 object)))))
                       "'" "")
                   (gnus-prin1-to-string (nth 3 object))))
                       "'" "")
                   (gnus-prin1-to-string (nth 3 object))))
-      (and (nth 4 object)
-          (insert "\n  t"))
+      (when (nth 4 object)
+       (insert "\n  t"))
       (insert ")")
       (prog1
          (buffer-substring (point-min) (point-max))
       (insert ")")
       (prog1
          (buffer-substring (point-min) (point-max))
@@ -590,8 +590,8 @@ COMMAND must be a lisp expression or a string representing a key sequence."
                   (progn
                     (setq value (funcall function header))
                     ;; Number (Lines:) or symbol must be converted to string.
                   (progn
                     (setq value (funcall function header))
                     ;; Number (Lines:) or symbol must be converted to string.
-                    (or (stringp value)
-                        (setq value (gnus-prin1-to-string value)))
+                    (unless (stringp value)
+                      (setq value (gnus-prin1-to-string value)))
                     (setq did-kill (string-match regexp value)))
                   (cond ((stringp form) ;Keyboard macro.
                          (execute-kbd-macro form))
                     (setq did-kill (string-match regexp value)))
                   (cond ((stringp form) ;Keyboard macro.
                          (execute-kbd-macro form))
@@ -608,13 +608,13 @@ COMMAND must be a lisp expression or a string representing a key sequence."
             6 "Searching for article: %d..." (mail-header-number header))
            (gnus-article-setup-buffer)
            (gnus-article-prepare (mail-header-number header) t)
             6 "Searching for article: %d..." (mail-header-number header))
            (gnus-article-setup-buffer)
            (gnus-article-prepare (mail-header-number header) t)
-           (if (save-excursion
-                 (set-buffer gnus-article-buffer)
-                 (goto-char (point-min))
-                 (setq did-kill (re-search-forward regexp nil t)))
-               (if (stringp form)      ;Keyboard macro.
-                   (execute-kbd-macro form)
-                 (eval form))))))
+           (when (save-excursion
+                   (set-buffer gnus-article-buffer)
+                   (goto-char (point-min))
+                   (setq did-kill (re-search-forward regexp nil t)))
+             (if (stringp form)        ;Keyboard macro.
+                 (execute-kbd-macro form)
+               (eval form))))))
       did-kill)))
 
 (defun gnus-execute (field regexp form &optional backward ignore-marked)
       did-kill)))
 
 (defun gnus-execute (field regexp form &optional backward ignore-marked)
@@ -628,7 +628,7 @@ marked as read or ticked are ignored."
          function article header)
       (cond 
        ;; Search body.
          function article header)
       (cond 
        ;; Search body.
-       ((or (null field) 
+       ((or (null field)
            (string-equal field ""))
        (setq function nil))
        ;; Get access function of header field.
            (string-equal field ""))
        (setq function nil))
        ;; Get access function of header field.
index d95ac6b..6c6bd55 100644 (file)
@@ -83,9 +83,9 @@ used to 899, you would say something along these lines:
    (list 'nntp (or (condition-case ()
                       (gnus-getenv-nntpserver)
                     (error nil))
    (list 'nntp (or (condition-case ()
                       (gnus-getenv-nntpserver)
                     (error nil))
-                  (if (and gnus-default-nntp-server
-                           (not (string= gnus-default-nntp-server "")))
-                      gnus-default-nntp-server)
+                  (when (and gnus-default-nntp-server
+                             (not (string= gnus-default-nntp-server "")))
+                    gnus-default-nntp-server)
                   (system-name)))
    (if (or (null gnus-nntp-service)
           (equal gnus-nntp-service "nntp"))
                   (system-name)))
    (if (or (null gnus-nntp-service)
           (equal gnus-nntp-service "nntp"))
@@ -651,6 +651,7 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.")
      ("rmailout" rmail-output)
      ("rmail" rmail-insert-rmail-file-header rmail-count-new-messages
       rmail-show-message)
      ("rmailout" rmail-output)
      ("rmail" rmail-insert-rmail-file-header rmail-count-new-messages
       rmail-show-message)
+     ("gnus-xmas" gnus-xmas-splash)
      ("gnus-soup" :interactive t
       gnus-group-brew-soup gnus-brew-soup gnus-soup-add-article
       gnus-soup-send-replies gnus-soup-save-areas gnus-soup-pack-packet)
      ("gnus-soup" :interactive t
       gnus-group-brew-soup gnus-brew-soup gnus-soup-add-article
       gnus-soup-send-replies gnus-soup-save-areas gnus-soup-pack-packet)
@@ -744,7 +745,7 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.")
       gnus-group-setup-buffer gnus-group-get-new-news
       gnus-group-make-help-group gnus-group-update-group)
      ("gnus-bcklg" gnus-backlog-request-article gnus-backlog-enter-article
       gnus-group-setup-buffer gnus-group-get-new-news
       gnus-group-make-help-group gnus-group-update-group)
      ("gnus-bcklg" gnus-backlog-request-article gnus-backlog-enter-article
-      gnus-backlog-remove-article) 
+      gnus-backlog-remove-article)
      ("gnus-art" gnus-article-read-summary-keys gnus-article-save
       gnus-article-prepare gnus-article-set-window-start
       gnus-article-show-all-headers gnus-article-next-page
      ("gnus-art" gnus-article-read-summary-keys gnus-article-save
       gnus-article-prepare gnus-article-set-window-start
       gnus-article-show-all-headers gnus-article-next-page
index af33a36..c26faab 100644 (file)
     ("subject" 1 gnus-advanced-string)
     ("from" 2 gnus-advanced-string)
     ("date" 3 gnus-advanced-date)
     ("subject" 1 gnus-advanced-string)
     ("from" 2 gnus-advanced-string)
     ("date" 3 gnus-advanced-date)
-    ("message-id" 4 gnus-advanced-string) 
-    ("references" 5 gnus-advanced-string) 
-    ("chars" 6 gnus-advanced-integer) 
-    ("lines" 7 gnus-advanced-integer) 
+    ("message-id" 4 gnus-advanced-string)
+    ("references" 5 gnus-advanced-string)
+    ("chars" 6 gnus-advanced-integer)
+    ("lines" 7 gnus-advanced-integer)
     ("xref" 8 gnus-advanced-string)
     ("head" nil gnus-advanced-body)
     ("body" nil gnus-advanced-body)
     ("xref" 8 gnus-advanced-string)
     ("head" nil gnus-advanced-body)
     ("body" nil gnus-advanced-body)
@@ -65,7 +65,7 @@
        (if (setq score (assq (mail-header-number gnus-advanced-headers)
                              gnus-newsgroup-scored))
            (setcdr score
        (if (setq score (assq (mail-header-number gnus-advanced-headers)
                              gnus-newsgroup-scored))
            (setcdr score
-                   (+ (cdr score) 
+                   (+ (cdr score)
                       (or (nth 1 rule)
                           gnus-score-interactive-default-score)))
          (push (cons (mail-header-number gnus-advanced-headers)
                       (or (nth 1 rule)
                           gnus-score-interactive-default-score)))
          (push (cons (mail-header-number gnus-advanced-headers)
        ;; If just parts of the article is to be searched and the
        ;; backend didn't support partial fetching, we just narrow
        ;; to the relevant parts.
        ;; If just parts of the article is to be searched and the
        ;; backend didn't support partial fetching, we just narrow
        ;; to the relevant parts.
-       (if ofunc
-           (if (eq ofunc 'gnus-request-head)
-               (narrow-to-region
-                (point)
-                (or (search-forward "\n\n" nil t) (point-max)))
+       (when ofunc
+         (if (eq ofunc 'gnus-request-head)
              (narrow-to-region
              (narrow-to-region
-              (or (search-forward "\n\n" nil t) (point))
-              (point-max))))
+              (point)
+              (or (search-forward "\n\n" nil t) (point-max)))
+           (narrow-to-region
+            (or (search-forward "\n\n" nil t) (point))
+            (point-max))))
        (let* ((case-fold-search (not (eq (downcase (symbol-name type))
                                          (symbol-name type))))
               (search-func 
        (let* ((case-fold-search (not (eq (downcase (symbol-name type))
                                          (symbol-name type))))
               (search-func 
index ac64106..9e669cc 100644 (file)
@@ -56,7 +56,7 @@ Update the .newsrc.eld file to reflect the change of nntp server."
        (when (gnus-group-native-p (gnus-info-group info))
          (gnus-move-group-to-server info from-server to-server))))))
 
        (when (gnus-group-native-p (gnus-info-group info))
          (gnus-move-group-to-server info from-server to-server))))))
 
-(defun gnus-move-group-to-server (info from-server to-server)      
+(defun gnus-move-group-to-server (info from-server to-server)
   "Move group INFO from FROM-SERVER to TO-SERVER."
   (let ((group (gnus-info-group info))
        to-active hashtb type mark marks
   "Move group INFO from FROM-SERVER to TO-SERVER."
   (let ((group (gnus-info-group info))
        to-active hashtb type mark marks
index adc2a70..dee6966 100644 (file)
@@ -242,7 +242,7 @@ If prefix argument YANK is non-nil, original article is yanked automatically."
 
 (defun gnus-inews-yank-articles (articles)
   (let (beg article)
 
 (defun gnus-inews-yank-articles (articles)
   (let (beg article)
-    (message-goto-body)      
+    (message-goto-body)
     (while (setq article (pop articles))
       (save-window-excursion
        (set-buffer gnus-summary-buffer)
     (while (setq article (pop articles))
       (save-window-excursion
        (set-buffer gnus-summary-buffer)
@@ -253,7 +253,8 @@ If prefix argument YANK is non-nil, original article is yanked automatically."
            (message-reply-headers gnus-current-headers))
        (message-yank-original)
        (setq beg (or beg (mark t))))
            (message-reply-headers gnus-current-headers))
        (message-yank-original)
        (setq beg (or beg (mark t))))
-      (when articles (insert "\n")))
+      (when articles
+       (insert "\n")))
     (push-mark)
     (goto-char beg)))
 
     (push-mark)
     (goto-char beg)))
 
@@ -301,7 +302,7 @@ header line with the old Message-ID."
   (setq gnus-article-copy (get-buffer-create " *gnus article copy*"))
   (buffer-disable-undo gnus-article-copy)
   (or (memq gnus-article-copy gnus-buffer-list)
   (setq gnus-article-copy (get-buffer-create " *gnus article copy*"))
   (buffer-disable-undo gnus-article-copy)
   (or (memq gnus-article-copy gnus-buffer-list)
-      (setq gnus-buffer-list (cons gnus-article-copy gnus-buffer-list)))
+      (push gnus-article-copy gnus-buffer-list))
   (let ((article-buffer (or article-buffer gnus-article-buffer))
        end beg contents)
     (when (and (get-buffer article-buffer)
   (let ((article-buffer (or article-buffer gnus-article-buffer))
        end beg contents)
     (when (and (get-buffer article-buffer)
@@ -593,15 +594,15 @@ The current group name will be inserted at \"%s\".")
 (defun gnus-summary-mail-nastygram (n)
   "Send a nastygram to the author of the current article."
   (interactive "P")
 (defun gnus-summary-mail-nastygram (n)
   "Send a nastygram to the author of the current article."
   (interactive "P")
-  (if (or gnus-expert-user
-         (gnus-y-or-n-p 
-          "Really send a nastygram to the author of the current article? "))
-      (let ((group gnus-newsgroup-name))
-       (gnus-summary-reply-with-original n)
-       (set-buffer gnus-message-buffer)
-       (message-goto-body)
-       (insert (format gnus-nastygram-message group))
-       (message-send-and-exit))))
+  (when (or gnus-expert-user
+           (gnus-y-or-n-p 
+            "Really send a nastygram to the author of the current article? "))
+    (let ((group gnus-newsgroup-name))
+      (gnus-summary-reply-with-original n)
+      (set-buffer gnus-message-buffer)
+      (message-goto-body)
+      (insert (format gnus-nastygram-message group))
+      (message-send-and-exit))))
 
 (defun gnus-summary-mail-crosspost-complaint (n)
   "Send a complaint about crossposting to the current article(s)."
 
 (defun gnus-summary-mail-crosspost-complaint (n)
   "Send a complaint about crossposting to the current article(s)."
@@ -658,13 +659,13 @@ The current group name will be inserted at \"%s\".")
                    (logand (progn
                              (while (search-forward "\"" nil t)
                                (incf i))
                    (logand (progn
                              (while (search-forward "\"" nil t)
                                (incf i))
-                             (if (zerop i) 2 i)) 2)))))
+                             (if (zerop i) 2 i))
+                           2)))))
        (skip-chars-forward ",")
        (skip-chars-forward "^,"))
       (skip-chars-backward " ")
        (skip-chars-forward ",")
        (skip-chars-forward "^,"))
       (skip-chars-backward " ")
-      (setq accumulated
-           (cons (buffer-substring beg (point))
-                 accumulated))
+      (push (buffer-substring beg (point))
+           accumulated)
       (skip-chars-forward "^,")
       (skip-chars-forward ", "))
     accumulated))
       (skip-chars-forward "^,")
       (skip-chars-forward ", "))
     accumulated))
@@ -687,8 +688,8 @@ The current group name will be inserted at \"%s\".")
     (or (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))))
-    (and (gnus-gethash group gnus-newsrc-hashtb)
-        (error "No such group: %s" group))
+    (when (gnus-gethash group gnus-newsrc-hashtb)
+      (error "No such group: %s" group))
 
     (save-excursion
       (save-restriction
 
     (save-excursion
       (save-restriction
@@ -704,15 +705,14 @@ The current group name will be inserted at \"%s\".")
 
     (gnus-inews-do-gcc)
 
 
     (gnus-inews-do-gcc)
 
-    (if (get-buffer gnus-group-buffer)
-       (progn
-         (if (gnus-buffer-exists-p (car-safe reply))
-             (progn
-               (set-buffer (car reply))
-               (and (cdr reply)
-                    (gnus-summary-mark-article-as-replied 
-                     (cdr reply)))))
-         (and winconf (set-window-configuration winconf))))))
+    (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)))))
 
 (defun gnus-article-mail (yank)
   "Send a reply to the address near point.
 
 (defun gnus-article-mail (yank)
   "Send a reply to the address near point.
@@ -753,8 +753,8 @@ If YANK is non-nil, include the original article."
     (message "")))
 
 (defun gnus-bug-kill-buffer ()
     (message "")))
 
 (defun gnus-bug-kill-buffer ()
-  (and (get-buffer "*Gnus Help Bug*")
-       (kill-buffer "*Gnus Help Bug*")))
+  (when (get-buffer "*Gnus Help Bug*")
+    (kill-buffer "*Gnus Help Bug*")))
 
 (defun gnus-debug ()
   "Attempts to go through the Gnus source file and report what variables have been changed.
 
 (defun gnus-debug ()
   "Attempts to go through the Gnus source file and report what variables have been changed.
@@ -780,7 +780,7 @@ The source file has to be in the Emacs load path."
              (gnus-message 4 "Malformed sources in file %s" file)
            (narrow-to-region (point-min) (point))
            (goto-char (point-min))
              (gnus-message 4 "Malformed sources in file %s" file)
            (narrow-to-region (point-min) (point))
            (goto-char (point-min))
-           (while (setq expr (condition-case () 
+           (while (setq expr (condition-case ()
                                  (read (current-buffer)) (error nil)))
              (condition-case ()
                  (and (eq (car expr) 'defvar)
                                  (read (current-buffer)) (error nil)))
              (condition-case ()
                  (and (eq (car expr) 'defvar)
@@ -810,7 +810,7 @@ The source file has to be in the Emacs load path."
       (setq olist (cdr olist)))
     (insert "\n\n")
     ;; Remove any null chars - they seem to cause trouble for some
       (setq olist (cdr olist)))
     (insert "\n\n")
     ;; Remove any null chars - they seem to cause trouble for some
-    ;; mailers.  (Byte-compiled output from the stuff above.) 
+    ;; mailers.  (Byte-compiled output from the stuff above.)
     (goto-char (point-min))
     (while (re-search-forward "[\000\200]" nil t)
       (replace-match "" t t))))
     (goto-char (point-min))
     (while (re-search-forward "[\000\200]" nil t)
       (replace-match "" t t))))
@@ -971,7 +971,8 @@ this is a reply."
                          name
                        (gnus-group-prefixed-name 
                         name gnus-message-archive-method)))
                          name
                        (gnus-group-prefixed-name 
                         name gnus-message-archive-method)))
-             (if groups (insert " ")))
+             (when groups
+               (insert " ")))
            (insert "\n")))))))
 
 (defun gnus-summary-send-draft ()
            (insert "\n")))))))
 
 (defun gnus-summary-send-draft ()
index ce78e1d..94de18a 100644 (file)
@@ -106,7 +106,7 @@ isn't bound, the message will be used unconditionally.")
                               (setq articles
                                     (gnus-uncompress-range
                                      (cons 
                               (setq articles
                                     (gnus-uncompress-range
                                      (cons 
-                                      (if active (1+ (cdr active)) 
+                                      (if active (1+ (cdr active))
                                         (car gactive))
                                       (cdr gactive))))
                               group))
                                         (car gactive))
                                       (cdr gactive))))
                               group))
@@ -121,7 +121,7 @@ isn't bound, the message will be used unconditionally.")
                    (gnus-nocem-check-article group (car headers)))
                  (setq headers (cdr headers)))))))
        (setq gnus-nocem-active
                    (gnus-nocem-check-article group (car headers)))
                  (setq headers (cdr headers)))))))
        (setq gnus-nocem-active
-             (cons (list group gactive) 
+             (cons (list group gactive)
                    (delq (assoc group gnus-nocem-active)
                          gnus-nocem-active)))))
     ;; Save the results, if any.
                    (delq (assoc group gnus-nocem-active)
                          gnus-nocem-active)))))
     ;; Save the results, if any.
@@ -190,7 +190,7 @@ isn't bound, the message will be used unconditionally.")
       (when ncm
        (setq gnus-nocem-touched-alist t)
        (push (cons (let ((time (current-time))) (setcdr (cdr time) nil) time)
       (when ncm
        (setq gnus-nocem-touched-alist t)
        (push (cons (let ((time (current-time))) (setcdr (cdr time) nil) time)
-                   ncm) 
+                   ncm)
              gnus-nocem-alist)))))
 
 (defun gnus-nocem-load-cache ()
              gnus-nocem-alist)))))
 
 (defun gnus-nocem-load-cache ()
index 1c4ece0..f52bf89 100644 (file)
@@ -95,8 +95,8 @@ This has only an effect if `gnus-picons-display-where' hs value article.")
 (defun gnus-picons-remove (plist)
   (let ((listitem (car plist)))
     (while (setq listitem (car plist))
 (defun gnus-picons-remove (plist)
   (let ((listitem (car plist)))
     (while (setq listitem (car plist))
-      (if (annotationp listitem)
-          (delete-annotation listitem))
+      (when (annotationp listitem)
+       (delete-annotation listitem))
       (setq plist (cdr plist)))))
 
 (defun gnus-picons-remove-all ()
       (setq plist (cdr plist)))))
 
 (defun gnus-picons-remove-all ()
@@ -108,8 +108,8 @@ This has only an effect if `gnus-picons-display-where' hs value article.")
   (setq gnus-article-annotations nil
         gnus-group-annotations nil
        gnus-x-face-annotations nil)
   (setq gnus-article-annotations nil
         gnus-group-annotations nil
        gnus-x-face-annotations nil)
-  (if (bufferp gnus-picons-buffer)
-      (kill-buffer gnus-picons-buffer)))
+  (when (bufferp gnus-picons-buffer)
+    (kill-buffer gnus-picons-buffer)))
 
 (defun gnus-get-buffer-name (variable)
   "Returns the buffer name associated with the contents of a variable."
 
 (defun gnus-get-buffer-name (variable)
   "Returns the buffer name associated with the contents of a variable."
@@ -172,7 +172,7 @@ To use:  (setq gnus-article-x-face-command 'gnus-picons-display-x-face)"
     (sit-for 0))
   (let ((first t)
        from at-idx databases)
     (sit-for 0))
   (let ((first t)
        from at-idx databases)
-    (when (and (featurep 'xpm) 
+    (when (and (featurep 'xpm)
               (or (not (fboundp 'device-type)) (equal (device-type) 'x))
               (setq from (mail-fetch-field "from"))
               (setq from (downcase 
               (or (not (fboundp 'device-type)) (equal (device-type) 'x))
               (setq from (mail-fetch-field "from"))
               (setq from (downcase 
@@ -249,7 +249,7 @@ To use:  (setq gnus-article-x-face-command 'gnus-picons-display-x-face)"
   ;; let display catch up so far
   (when gnus-picons-refresh-before-display
     (sit-for 0))
   ;; let display catch up so far
   (when gnus-picons-refresh-before-display
     (sit-for 0))
-  (when (and (featurep 'xpm) 
+  (when (and (featurep 'xpm)
             (or (not (fboundp 'device-type)) (equal (device-type) 'x)))
     (save-excursion
       (set-buffer (get-buffer-create
             (or (not (fboundp 'device-type)) (equal (device-type) 'x)))
     (save-excursion
       (set-buffer (get-buffer-create
@@ -258,14 +258,15 @@ To use:  (setq gnus-article-x-face-command 'gnus-picons-display-x-face)"
       (goto-char (point-min))
       (if (and (eq gnus-picons-display-where 'article)
               gnus-picons-display-article-move-p)
       (goto-char (point-min))
       (if (and (eq gnus-picons-display-where 'article)
               gnus-picons-display-article-move-p)
-         (if (search-forward "\n\n" nil t)
-             (forward-line -1))
+         (when (search-forward "\n\n" nil t)
+           (forward-line -1))
        (unless (eolp)
          (push (make-annotation "\n" (point) 'text)
                gnus-group-annotations)))
       (cond
        ((listp gnus-group-annotations)
        (unless (eolp)
          (push (make-annotation "\n" (point) 'text)
                gnus-group-annotations)))
       (cond
        ((listp gnus-group-annotations)
-       (mapc #'(lambda (ext) (if (extent-live-p ext) (delete-annotation ext)))
+       (mapc #'(lambda (ext) (when (extent-live-p ext)
+                               (delete-annotation ext)))
              gnus-group-annotations)
        (setq gnus-group-annotations nil))
        ((annotationp gnus-group-annotations)
              gnus-group-annotations)
        (setq gnus-group-annotations nil))
        ((annotationp gnus-group-annotations)
@@ -310,8 +311,8 @@ To use:  (setq gnus-article-x-face-command 'gnus-picons-display-x-face)"
                      database "/"))
        (domainp (and gnus-picons-display-as-address dots))
        picons found bar-ann cur first)
                      database "/"))
        (domainp (and gnus-picons-display-as-address dots))
        picons found bar-ann cur first)
-    (if (string-match "/MISC" database)
-       (setq addrs '("")))
+    (when (string-match "/MISC" database)
+      (setq addrs '("")))
     (while (and addrs
                (file-accessible-directory-p path))
       (setq cur (pop addrs)
     (while (and addrs
                (file-accessible-directory-p path))
       (setq cur (pop addrs)
@@ -328,14 +329,15 @@ To use:  (setq gnus-article-x-face-command 'gnus-picons-display-x-face)"
            (setq picons (nconc (when (and domainp first)
                                  (list (make-annotation
                                         "." (point) 'text 
            (setq picons (nconc (when (and domainp first)
                                  (list (make-annotation
                                         "." (point) 'text 
-                                        nil nil nil t) picons))
+                                        nil nil nil t)
+                                       picons))
                                (gnus-picons-try-to-find-face 
                                 found nil (if domainp cur filename))
                                picons)))
        (when domainp
          (setq picons 
                (nconc (list (make-annotation (if first (concat cur ".") cur)
                                (gnus-picons-try-to-find-face 
                                 found nil (if domainp cur filename))
                                picons)))
        (when domainp
          (setq picons 
                (nconc (list (make-annotation (if first (concat cur ".") cur)
-                                             (point) 'text nil nil nil t)) 
+                                             (point) 'text nil nil nil t))
                       picons))))
       (setq first t))
     (when (and addrs domainp)
                       picons))))
       (setq first t))
     (when (and addrs domainp)
index cb352ba..ed615ed 100644 (file)
@@ -73,8 +73,8 @@ Both lists have to be sorted over <."
 (defun gnus-intersection (list1 list2)
   (let ((result nil))
     (while list2
 (defun gnus-intersection (list1 list2)
   (let ((result nil))
     (while list2
-      (if (memq (car list2) list1)
-         (setq result (cons (car list2) result)))
+      (when (memq (car list2) list1)
+       (setq result (cons (car list2) result)))
       (setq list2 (cdr list2)))
     result))
 
       (setq list2 (cdr list2)))
     result))
 
@@ -128,7 +128,8 @@ ranges."
                (t                      ;End of one sequence
                 (setq result
                       (cons (if (= first last) first
                (t                      ;End of one sequence
                 (setq result
                       (cons (if (= first last) first
-                              (cons first last)) result))
+                              (cons first last))
+                            result))
                 (setq first (car numbers))
                 (setq last  (car numbers))))
          (setq numbers (cdr numbers)))
                 (setq first (car numbers))
                 (setq last  (car numbers))))
          (setq numbers (cdr numbers)))
@@ -156,8 +157,8 @@ these ranges."
      (t
       (while ranges
        (if (atom (car ranges))
      (t
       (while ranges
        (if (atom (car ranges))
-           (if (numberp (car ranges))
-               (setq result (cons (car ranges) result)))
+           (when (numberp (car ranges))
+             (setq result (cons (car ranges) result)))
          (setq first (caar ranges))
          (setq last  (cdar ranges))
          (while (<= first last)
          (setq first (caar ranges))
          (setq last  (cdar ranges))
          (while (<= first last)
@@ -172,8 +173,8 @@ Note: LIST has to be sorted over `<'."
   (if (not ranges)
       (gnus-compress-sequence list t)
     (setq list (copy-sequence list))
   (if (not ranges)
       (gnus-compress-sequence list t)
     (setq list (copy-sequence list))
-    (or (listp (cdr ranges))
-       (setq ranges (list ranges)))
+    (unless (listp (cdr ranges))
+      (setq ranges (list ranges)))
     (let ((out ranges)
          ilist lowest highest temp)
       (while (and ranges list)
     (let ((out ranges)
          ilist lowest highest temp)
       (while (and ranges list)
@@ -182,47 +183,42 @@ Note: LIST has to be sorted over `<'."
                         (caar ranges)))
        (while (and list (cdr list) (< (cadr list) lowest))
          (setq list (cdr list)))
                         (caar ranges)))
        (while (and list (cdr list) (< (cadr list) lowest))
          (setq list (cdr list)))
-       (if (< (car ilist) lowest)
-           (progn
-             (setq temp list)
-             (setq list (cdr list))
-             (setcdr temp nil)
-             (setq out (nconc (gnus-compress-sequence ilist t) out))))
+       (when (< (car ilist) lowest)
+         (setq temp list)
+         (setq list (cdr list))
+         (setcdr temp nil)
+         (setq out (nconc (gnus-compress-sequence ilist t) out)))
        (setq highest (or (and (atom (car ranges)) (car ranges))
                          (cdar ranges)))
        (while (and list (<= (car list) highest))
          (setq list (cdr list)))
        (setq ranges (cdr ranges)))
        (setq highest (or (and (atom (car ranges)) (car ranges))
                          (cdar ranges)))
        (while (and list (<= (car list) highest))
          (setq list (cdr list)))
        (setq ranges (cdr ranges)))
-      (if list
-         (setq out (nconc (gnus-compress-sequence list t) out)))
+      (when list
+       (setq out (nconc (gnus-compress-sequence list t) out)))
       (setq out (sort out (lambda (r1 r2)
                            (< (or (and (atom r1) r1) (car r1))
                               (or (and (atom r2) r2) (car r2))))))
       (setq ranges out)
       (while ranges
        (if (atom (car ranges))
       (setq out (sort out (lambda (r1 r2)
                            (< (or (and (atom r1) r1) (car r1))
                               (or (and (atom r2) r2) (car r2))))))
       (setq ranges out)
       (while ranges
        (if (atom (car ranges))
-           (if (cdr ranges)
-               (if (atom (cadr ranges))
-                   (if (= (1+ (car ranges)) (cadr ranges))
-                       (progn
-                         (setcar ranges (cons (car ranges)
-                                              (cadr ranges)))
-                         (setcdr ranges (cddr ranges))))
-                 (if (= (1+ (car ranges)) (caadr ranges))
-                     (progn
-                       (setcar (cadr ranges) (car ranges))
-                       (setcar ranges (cadr ranges))
-                       (setcdr ranges (cddr ranges))))))
-         (if (cdr ranges)
+           (when (cdr ranges)
              (if (atom (cadr ranges))
              (if (atom (cadr ranges))
-                 (if (= (1+ (cdar ranges)) (cadr ranges))
-                     (progn
-                       (setcdr (car ranges) (cadr ranges))
-                       (setcdr ranges (cddr ranges))))
-               (if (= (1+ (cdar ranges)) (caadr ranges))
-                   (progn
-                     (setcdr (car ranges) (cdadr ranges))
-                     (setcdr ranges (cddr ranges)))))))
+                 (when (= (1+ (car ranges)) (cadr ranges))
+                   (setcar ranges (cons (car ranges)
+                                        (cadr ranges)))
+                   (setcdr ranges (cddr ranges)))
+               (when (= (1+ (car ranges)) (caadr ranges))
+                 (setcar (cadr ranges) (car ranges))
+                 (setcar ranges (cadr ranges))
+                 (setcdr ranges (cddr ranges)))))
+         (when (cdr ranges)
+           (if (atom (cadr ranges))
+               (when (= (1+ (cdar ranges)) (cadr ranges))
+                 (setcdr (car ranges) (cadr ranges))
+                 (setcdr ranges (cddr ranges)))
+             (when (= (1+ (cdar ranges)) (caadr ranges))
+               (setcdr (car ranges) (cdadr ranges))
+               (setcdr ranges (cddr ranges))))))
        (setq ranges (cdr ranges)))
       out)))
 
        (setq ranges (cdr ranges)))
       out)))
 
@@ -244,11 +240,11 @@ Note: LIST has to be sorted over `<'."
                      (>= number (car ranges))
                    (>= number (caar ranges)))
                  not-stop)
                      (>= number (car ranges))
                    (>= number (caar ranges)))
                  not-stop)
-       (if (if (numberp (car ranges))
-               (= number (car ranges))
-             (and (>= number (caar ranges))
-                  (<= number (cdar ranges))))
-           (setq not-stop nil))
+       (when (if (numberp (car ranges))
+                 (= number (car ranges))
+               (and (>= number (caar ranges))
+                    (<= number (cdar ranges))))
+         (setq not-stop nil))
        (setq ranges (cdr ranges)))
       (not not-stop))))
 
        (setq ranges (cdr ranges)))
       (not not-stop))))
 
index 3cbbf14..451a69c 100644 (file)
@@ -145,7 +145,9 @@ If given a prefix, mark all unpicked articles as read."
         (gnus-configure-windows 
         (if gnus-pick-display-summary 'article 'pick) t))
     (if gnus-pick-elegant-flow
         (gnus-configure-windows 
         (if gnus-pick-display-summary 'article 'pick) t))
     (if gnus-pick-elegant-flow
-        (gnus-summary-next-group)
+       (if (gnus-group-quit-config gnus-newsgroup-name)
+           (gnus-summary-exit)
+         (gnus-summary-next-group))
       (error "No articles have been picked"))))
 
 (defun gnus-pick-article (&optional arg)
       (error "No articles have been picked"))))
 
 (defun gnus-pick-article (&optional arg)
@@ -192,8 +194,8 @@ This must be bound to a button-down mouse event."
     (mouse-set-point start-event)
     ;; In case the down click is in the middle of some intangible text,
     ;; use the end of that text, and put it in START-POINT.
     (mouse-set-point start-event)
     ;; In case the down click is in the middle of some intangible text,
     ;; use the end of that text, and put it in START-POINT.
-    (if (< (point) start-point)
-       (goto-char start-point))
+    (when (< (point) start-point)
+      (goto-char start-point))
     (gnus-pick-article)
     (setq start-point (point))
     ;; end-of-range is used only in the single-click case.
     (gnus-pick-article)
     (setq start-point (point))
     ;; end-of-range is used only in the single-click case.
@@ -201,64 +203,64 @@ This must be bound to a button-down mouse event."
     ;; (but not outside the window where the drag started).
     (let (event end end-point last-end-point (end-of-range (point)))
       (track-mouse
     ;; (but not outside the window where the drag started).
     (let (event end end-point last-end-point (end-of-range (point)))
       (track-mouse
-       (while (progn
-                (setq event (read-event))
-                (or (mouse-movement-p event)
-                    (eq (car-safe event) 'switch-frame)))
-         (if (eq (car-safe event) 'switch-frame)
-             nil
-           (setq end (event-end event)
-                 end-point (posn-point end))
-           (if end-point
-               (setq last-end-point end-point))
-
-           (cond
-            ;; Are we moving within the original window?
-            ((and (eq (posn-window end) start-window)
-                  (integer-or-marker-p end-point))
-             ;; Go to START-POINT first, so that when we move to END-POINT,
-             ;; if it's in the middle of intangible text,
-             ;; point jumps in the direction away from START-POINT.
-             (goto-char start-point)
-             (goto-char end-point)
-              (gnus-pick-article)
-              ;; In case the user moved his mouse really fast, pick
-              ;; articles on the line between this one and the last one.
-              (let* ((this-line (1+ (count-lines 1 end-point)))
-                     (min-line (min this-line start-line))
-                     (max-line (max this-line start-line)))
-                (while (< min-line max-line)
-                  (goto-line min-line)
-                  (gnus-pick-article)
-                  (setq min-line (1+ min-line)))
-                (setq start-line this-line))
-             (if (zerop (% click-count 3))
-                 (setq end-of-range (point))))
-             (t
-             (let ((mouse-row (cdr (cdr (mouse-position)))))
-               (cond
-                ((null mouse-row))
-                ((< mouse-row top)
-                 (mouse-scroll-subr start-window (- mouse-row top)))
-                ((>= mouse-row bottom)
-                 (mouse-scroll-subr start-window
-                                     (1+ (- mouse-row bottom)))))))))))
-      (if (consp event)
-         (let ((fun (key-binding (vector (car event)))))
-           ;; Run the binding of the terminating up-event, if possible.
-           ;; In the case of a multiple click, it gives the wrong results,
-           ;; because it would fail to set up a region.
-           (if nil ;; (and (= (mod mouse-selection-click-count 3) 0) (fboundp fun))
-               ;; In this case, we can just let the up-event execute normally.
-               (let ((end (event-end event)))
-                 ;; Set the position in the event before we replay it,
-                 ;; because otherwise it may have a position in the wrong
-                 ;; buffer.
-                 (setcar (cdr end) end-of-range)
-                 ;; Delete the overlay before calling the function,
-                 ;; because delete-overlay increases buffer-modified-tick.
-                 (setq unread-command-events
-                       (cons event unread-command-events)))))))))
+       (while (progn
+               (setq event (read-event))
+               (or (mouse-movement-p event)
+                   (eq (car-safe event) 'switch-frame)))
+        (if (eq (car-safe event) 'switch-frame)
+            nil
+          (setq end (event-end event)
+                end-point (posn-point end))
+          (when end-point
+            (setq last-end-point end-point))
+
+          (cond
+           ;; Are we moving within the original window?
+           ((and (eq (posn-window end) start-window)
+                 (integer-or-marker-p end-point))
+            ;; Go to START-POINT first, so that when we move to END-POINT,
+            ;; if it's in the middle of intangible text,
+            ;; point jumps in the direction away from START-POINT.
+            (goto-char start-point)
+            (goto-char end-point)
+            (gnus-pick-article)
+            ;; In case the user moved his mouse really fast, pick
+            ;; articles on the line between this one and the last one.
+            (let* ((this-line (1+ (count-lines 1 end-point)))
+                   (min-line (min this-line start-line))
+                   (max-line (max this-line start-line)))
+              (while (< min-line max-line)
+                (goto-line min-line)
+                (gnus-pick-article)
+                (setq min-line (1+ min-line)))
+              (setq start-line this-line))
+            (when (zerop (% click-count 3))
+              (setq end-of-range (point))))
+           (t
+            (let ((mouse-row (cdr (cdr (mouse-position)))))
+              (cond
+               ((null mouse-row))
+               ((< mouse-row top)
+                (mouse-scroll-subr start-window (- mouse-row top)))
+               ((>= mouse-row bottom)
+                (mouse-scroll-subr start-window
+                                   (1+ (- mouse-row bottom)))))))))))
+      (when (consp event)
+       (let ((fun (key-binding (vector (car event)))))
+         ;; Run the binding of the terminating up-event, if possible.
+         ;; In the case of a multiple click, it gives the wrong results,
+         ;; because it would fail to set up a region.
+         (when nil
+           ;; (and (= (mod mouse-selection-click-count 3) 0) (fboundp fun))
+           ;; In this case, we can just let the up-event execute normally.
+           (let ((end (event-end event)))
+             ;; Set the position in the event before we replay it,
+             ;; because otherwise it may have a position in the wrong
+             ;; buffer.
+             (setcar (cdr end) end-of-range)
+             ;; Delete the overlay before calling the function,
+             ;; because delete-overlay increases buffer-modified-tick.
+             (push event unread-command-events))))))))
 
 (defun gnus-pick-next-page ()
   "Go to the next page.  If at the end of the buffer, start reading articles."
 
 (defun gnus-pick-next-page ()
   "Go to the next page.  If at the end of the buffer, start reading articles."
@@ -485,7 +487,7 @@ Two predefined functions are available:
        (goto-char (or (gnus-overlay-end gnus-selected-tree-overlay) 1)))
       (let* ((top (cond ((< (window-height) 4) 0)
                        ((< (window-height) 7) 1)
        (goto-char (or (gnus-overlay-end gnus-selected-tree-overlay) 1)))
       (let* ((top (cond ((< (window-height) 4) 0)
                        ((< (window-height) 7) 1)
-                       (t 2))) 
+                       (t 2)))
             (height (1- (window-height)))
             (bottom (save-excursion (goto-char (point-max))
                                     (forward-line (- height))
             (height (1- (window-height)))
             (bottom (save-excursion (goto-char (point-max))
                                     (forward-line (- height))
@@ -514,7 +516,7 @@ Two predefined functions are available:
          tot-win-height)
       (walk-windows (lambda (window) (incf windows)))
       (setq tot-win-height 
          tot-win-height)
       (walk-windows (lambda (window) (incf windows)))
       (setq tot-win-height 
-           (- (frame-height) 
+           (- (frame-height)
               (* window-min-height (1- windows))
               2))
       (let* ((window-min-height 2)
               (* window-min-height (1- windows))
               2))
       (let* ((window-min-height 2)
@@ -562,7 +564,7 @@ Two predefined functions are available:
            "***")
           (t gnus-tmp-from)))
         (gnus-tmp-open-bracket
            "***")
           (t gnus-tmp-from)))
         (gnus-tmp-open-bracket
-         (cond ((memq gnus-tmp-number sparse) 
+         (cond ((memq gnus-tmp-number sparse)
                 (caadr gnus-tree-brackets))
                (dummy (caaddr gnus-tree-brackets))
                (adopted (car (nth 3 gnus-tree-brackets)))
                 (caadr gnus-tree-brackets))
                (dummy (caaddr gnus-tree-brackets))
                (adopted (car (nth 3 gnus-tree-brackets)))
@@ -662,11 +664,11 @@ Two predefined functions are available:
       ;; Recurse downwards in all children of this article.
       (while thread
        (gnus-generate-horizontal-tree
       ;; Recurse downwards in all children of this article.
       (while thread
        (gnus-generate-horizontal-tree
-        (pop thread) (if do (1+ level) level) 
+        (pop thread) (if do (1+ level) level)
         (or dummyp dummy) dummy)))))
 
 (defsubst gnus-tree-indent-vertical ()
         (or dummyp dummy) dummy)))))
 
 (defsubst gnus-tree-indent-vertical ()
-  (let ((len (- (* (1+ gnus-tree-node-length) gnus-tmp-indent) 
+  (let ((len (- (* (1+ gnus-tree-node-length) gnus-tmp-indent)
                (- (point) (gnus-point-at-bol)))))
     (when (> len 0)
       (insert (make-string len ? )))))
                (- (point) (gnus-point-at-bol)))))
     (when (> len 0)
       (insert (make-string len ? )))))
@@ -723,7 +725,7 @@ Two predefined functions are available:
       ;; Recurse downwards in all children of this article.
       (while thread
        (gnus-generate-vertical-tree
       ;; Recurse downwards in all children of this article.
       (while thread
        (gnus-generate-vertical-tree
-        (pop thread) (if do (1+ level) level) 
+        (pop thread) (if do (1+ level) level)
         (or dummyp dummy) dummy)))))
 
 ;;; Interface functions.
         (or dummyp dummy) dummy)))))
 
 ;;; Interface functions.
@@ -741,7 +743,8 @@ Two predefined functions are available:
                   (gnus-cut-thread
                    (gnus-remove-thread 
                     (mail-header-id 
                   (gnus-cut-thread
                    (gnus-remove-thread 
                     (mail-header-id 
-                     (gnus-summary-article-header article)) t))))
+                     (gnus-summary-article-header article))
+                    t))))
            (gnus-tmp-limit gnus-newsgroup-limit)
            (gnus-tmp-sparse gnus-newsgroup-sparse))
        (when (or force
            (gnus-tmp-limit gnus-newsgroup-limit)
            (gnus-tmp-sparse gnus-newsgroup-sparse))
        (when (or force
@@ -946,7 +949,7 @@ The following commands are available:
                     gnus-mouse-face-prop 'highlight))))
          (let ((fill-column (- (window-width) 2)))
            (fill-region (point-min) (point-max)))
                     gnus-mouse-face-prop 'highlight))))
          (let ((fill-column (- (window-width) 2)))
            (fill-region (point-min) (point-max)))
-         (set-window-point (get-buffer-window (current-buffer)) 
+         (set-window-point (get-buffer-window (current-buffer))
                            (point-min)))))))
 
 (defun gnus-carpal-select ()
                            (point-min)))))))
 
 (defun gnus-carpal-select ()
index 8194647..5ee09d3 100644 (file)
@@ -297,7 +297,7 @@ expunge: Automatically expunge articles below this.
 files:   List of other score files to load when loading this one.
 eval:    Sexp to be evaluated when the score file is loaded.
 
 files:   List of other score files to load when loading this one.
 eval:    Sexp to be evaluated when the score file is loaded.
 
-String entries have the form (HEADER (MATCH TYPE SCORE DATE) ...) 
+String entries have the form (HEADER (MATCH TYPE SCORE DATE) ...)
 where HEADER is the header being scored, MATCH is the string we are
 looking for, TYPE is a flag indicating whether it should use regexp or
 substring matching, SCORE is the score to add and DATE is the date
 where HEADER is the header being scored, MATCH is the string we are
 looking for, TYPE is a flag indicating whether it should use regexp or
 substring matching, SCORE is the score to add and DATE is the date
@@ -314,10 +314,10 @@ of the last successful match.")
     ("subject" 1 gnus-score-string)
     ("from" 2 gnus-score-string)
     ("date" 3 gnus-score-date)
     ("subject" 1 gnus-score-string)
     ("from" 2 gnus-score-string)
     ("date" 3 gnus-score-date)
-    ("message-id" 4 gnus-score-string) 
-    ("references" 5 gnus-score-string) 
-    ("chars" 6 gnus-score-integer) 
-    ("lines" 7 gnus-score-integer) 
+    ("message-id" 4 gnus-score-string)
+    ("references" 5 gnus-score-string)
+    ("chars" 6 gnus-score-integer)
+    ("lines" 7 gnus-score-integer)
     ("xref" 8 gnus-score-string)
     ("head" -1 gnus-score-body)
     ("body" -1 gnus-score-body)
     ("xref" 8 gnus-score-string)
     ("head" -1 gnus-score-body)
     ("body" -1 gnus-score-body)
@@ -370,8 +370,8 @@ used as score."
 (defun gnus-score-kill-help-buffer ()
   (when (get-buffer "*Score Help*")
     (kill-buffer "*Score Help*")
 (defun gnus-score-kill-help-buffer ()
   (when (get-buffer "*Score Help*")
     (kill-buffer "*Score Help*")
-    (and gnus-score-help-winconf
-        (set-window-configuration gnus-score-help-winconf))))
+    (when gnus-score-help-winconf
+      (set-window-configuration gnus-score-help-winconf))))
 
 (defun gnus-summary-increase-score (&optional score)
   "Make a score entry based on the current article.
 
 (defun gnus-summary-increase-score (&optional score)
   "Make a score entry based on the current article.
@@ -403,13 +403,13 @@ used as score."
            (?z s "substring" body-string)
            (?p r "regexp string" body-string)
            (?b before "before date" date)
            (?z s "substring" body-string)
            (?p r "regexp string" body-string)
            (?b before "before date" date)
-           (?a at "at date" date) 
+           (?a at "at date" date)
            (?n now "this date" date)
            (?< < "less than number" number)
            (?n now "this date" date)
            (?< < "less than number" number)
-           (?> > "greater than number" number) 
+           (?> > "greater than number" number)
            (?= = "equal to number" number)))
         (char-to-perm
            (?= = "equal to number" number)))
         (char-to-perm
-         (list (list ?t (current-time-string) "temporary") 
+         (list (list ?t (current-time-string) "temporary")
                '(?p perm "permanent") '(?i now "immediate")))
         (mimic gnus-score-mimic-keymap)
         (hchar (and gnus-score-default-header 
                '(?p perm "permanent") '(?i now "immediate")))
         (mimic gnus-score-mimic-keymap)
         (hchar (and gnus-score-default-header 
@@ -455,8 +455,8 @@ used as score."
              (message "%s header '%s' with match type (%s?): "
                       (if increase "Increase" "Lower")
                       (nth 1 entry)
              (message "%s header '%s' with match type (%s?): "
                       (if increase "Increase" "Lower")
                       (nth 1 entry)
-                      (mapconcat (lambda (s) 
-                                   (if (eq (nth 4 entry) 
+                      (mapconcat (lambda (s)
+                                   (if (eq (nth 4 entry)
                                            (nth 3 s))
                                        (char-to-string (car s))
                                      ""))
                                            (nth 3 s))
                                        (char-to-string (car s))
                                      ""))
@@ -467,8 +467,8 @@ used as score."
              (gnus-score-insert-help
               "Match type"
               (delq nil
              (gnus-score-insert-help
               "Match type"
               (delq nil
-                    (mapcar (lambda (s) 
-                              (if (eq (nth 4 entry) 
+                    (mapcar (lambda (s)
+                              (if (eq (nth 4 entry)
                                       (nth 3 s))
                                   s nil))
                             char-to-type ))
                                       (nth 3 s))
                                   s nil))
                             char-to-type ))
@@ -548,8 +548,8 @@ used as score."
       ;; find the longest string to display
       (while list
        (setq n (length (nth idx (car list))))
       ;; find the longest string to display
       (while list
        (setq n (length (nth idx (car list))))
-       (or (> max n)
-           (setq max n))
+       (unless (> max n)
+         (setq max n))
        (setq list (cdr list)))
       (setq max (+ max 4))             ; %c, `:', SPACE, a SPACE at end
       (setq n (/ (1- (window-width)) max)) ; items per line
        (setq list (cdr list)))
       (setq max (+ max 4))             ; %c, `:', SPACE, a SPACE at end
       (setq n (/ (1- (window-width)) max)) ; items per line
@@ -631,7 +631,8 @@ If optional argument `SILENT' is nil, show effect of score entry."
                (current-time-string))
               (t nil))))
   ;; Regexp is the default type.
                (current-time-string))
               (t nil))))
   ;; Regexp is the default type.
-  (if (eq type t) (setq type 'r))
+  (when (eq type t)
+    (setq type 'r))
   ;; Simplify matches...
   (cond ((or (eq type 'r) (eq type 's) (eq type nil))
         (setq match (if match (gnus-simplify-subject-re match) "")))
   ;; Simplify matches...
   (cond ((or (eq type 'r) (eq type 's) (eq type nil))
         (setq match (if match (gnus-simplify-subject-re match) "")))
@@ -658,8 +659,8 @@ If optional argument `SILENT' is nil, show effect of score entry."
     (setq match (format "%s" match))
 
     ;; If this is an integer comparison, we transform from string to int. 
     (setq match (format "%s" match))
 
     ;; If this is an integer comparison, we transform from string to int. 
-    (and (eq (nth 2 (assoc header gnus-header-index)) 'gnus-score-integer)
-        (setq match (string-to-int match)))
+    (when (eq (nth 2 (assoc header gnus-header-index)) 'gnus-score-integer)
+      (setq match (string-to-int match)))
 
     (unless (eq date 'now)
       ;; Add the score entry to the score file.
 
     (unless (eq date 'now)
       ;; Add the score entry to the score file.
@@ -686,7 +687,7 @@ If optional argument `SILENT' is nil, show effect of score entry."
                 (or (and (numberp (nth 2 elem)) (numberp (nth 2 new)))
                     (and (not (nth 2 elem)) (not (nth 2 new)))))
            ;; Yup, we just add this new score to the old elem.
                 (or (and (numberp (nth 2 elem)) (numberp (nth 2 new)))
                     (and (not (nth 2 elem)) (not (nth 2 new)))))
            ;; Yup, we just add this new score to the old elem.
-           (setcar (cdr elem) (+ (or (nth 1 elem) 
+           (setcar (cdr elem) (+ (or (nth 1 elem)
                                      gnus-score-interactive-default-score)
                                  (or (nth 1 new)
                                      gnus-score-interactive-default-score)))
                                      gnus-score-interactive-default-score)
                                  (or (nth 1 new)
                                      gnus-score-interactive-default-score)))
@@ -719,12 +720,12 @@ SCORE is the score to add."
                     (y-or-n-p "Use regexp match? ")
                     (prefix-numeric-value current-prefix-arg)))
   (save-excursion
                     (y-or-n-p "Use regexp match? ")
                     (prefix-numeric-value current-prefix-arg)))
   (save-excursion
-    (or (and (stringp match) (> (length match) 0))
-       (error "No match"))
+    (unless (and (stringp match) (> (length match) 0))
+      (error "No match"))
     (goto-char (point-min))
     (let ((regexp (cond ((eq type 'f)
                         (gnus-simplify-subject-fuzzy match))
     (goto-char (point-min))
     (let ((regexp (cond ((eq type 'f)
                         (gnus-simplify-subject-fuzzy match))
-                       ((eq type 'r) 
+                       ((eq type 'r)
                         match)
                        ((eq type 'e)
                         (concat "\\`" (regexp-quote match) "\\'"))
                         match)
                        ((eq type 'e)
                         (concat "\\`" (regexp-quote match) "\\'"))
@@ -734,11 +735,11 @@ SCORE is the score to add."
        (let ((content (gnus-summary-header header 'noerr))
              (case-fold-search t))
          (and content
        (let ((content (gnus-summary-header header 'noerr))
              (case-fold-search t))
          (and content
-              (if (if (eq type 'f)
-                      (string-equal (gnus-simplify-subject-fuzzy content)
-                                    regexp)
-                    (string-match regexp content))
-                  (gnus-summary-raise-score score))))
+              (when (if (eq type 'f)
+                        (string-equal (gnus-simplify-subject-fuzzy content)
+                                      regexp)
+                      (string-match regexp content))
+                (gnus-summary-raise-score score))))
        (beginning-of-line 2)))))
 
 (defun gnus-summary-score-crossposting (score date)
        (beginning-of-line 2)))))
 
 (defun gnus-summary-score-crossposting (score date)
@@ -748,15 +749,16 @@ SCORE is the score to add."
   (let ((xref (gnus-summary-header "xref"))
        (start 0)
        group)
   (let ((xref (gnus-summary-header "xref"))
        (start 0)
        group)
-    (or xref (error "This article is not crossposted"))
+    (unless xref
+      (error "This article is not crossposted"))
     (while (string-match " \\([^ \t]+\\):" xref start)
       (setq start (match-end 0))
     (while (string-match " \\([^ \t]+\\):" xref start)
       (setq start (match-end 0))
-      (if (not (string= 
-               (setq group 
-                     (substring xref (match-beginning 1) (match-end 1)))
-               gnus-newsgroup-name))
-         (gnus-summary-score-entry
-          "xref" (concat " " group ":") nil score date t)))))
+      (when (not (string= 
+                 (setq group 
+                       (substring xref (match-beginning 1) (match-end 1)))
+                 gnus-newsgroup-name))
+       (gnus-summary-score-entry
+        "xref" (concat " " group ":") nil score date t)))))
 
 \f
 ;;;
 
 \f
 ;;;
@@ -861,7 +863,7 @@ SCORE is the score to add."
   "Raise the score of the current article by N."
   (interactive "p")
   (gnus-set-global-variables)
   "Raise the score of the current article by N."
   (interactive "p")
   (gnus-set-global-variables)
-  (gnus-summary-set-score (+ (gnus-summary-article-score) 
+  (gnus-summary-set-score (+ (gnus-summary-article-score)
                             (or n gnus-score-interactive-default-score ))))
 
 (defun gnus-summary-set-score (n)
                             (or n gnus-score-interactive-default-score ))))
 
 (defun gnus-summary-set-score (n)
@@ -875,12 +877,12 @@ SCORE is the score to add."
       (gnus-summary-update-mark
        (if (= n (or gnus-summary-default-score 0)) ? 
         (if (< n (or gnus-summary-default-score 0))
       (gnus-summary-update-mark
        (if (= n (or gnus-summary-default-score 0)) ? 
         (if (< n (or gnus-summary-default-score 0))
-            gnus-score-below-mark gnus-score-over-mark)) 'score))
+            gnus-score-below-mark gnus-score-over-mark))
+       'score))
     (let* ((article (gnus-summary-article-number))
           (score (assq article gnus-newsgroup-scored)))
       (if score (setcdr score n)
     (let* ((article (gnus-summary-article-number))
           (score (assq article gnus-newsgroup-scored)))
       (if score (setcdr score n)
-       (setq gnus-newsgroup-scored
-             (cons (cons article n) gnus-newsgroup-scored))))
+       (push (cons article n) gnus-newsgroup-scored)))
     (gnus-summary-update-line)))
 
 (defun gnus-summary-current-score ()
     (gnus-summary-update-line)))
 
 (defun gnus-summary-current-score ()
@@ -901,7 +903,8 @@ SCORE is the score to add."
   "Edit the current score alist."
   (interactive (list gnus-current-score-file))
   (let ((winconf (current-window-configuration)))
   "Edit the current score alist."
   (interactive (list gnus-current-score-file))
   (let ((winconf (current-window-configuration)))
-    (and (buffer-name gnus-summary-buffer) (gnus-score-save))
+    (when (buffer-name gnus-summary-buffer)
+      (gnus-score-save))
     (gnus-make-directory (file-name-directory file))
     (setq gnus-score-edit-buffer (find-file-noselect file))
     (gnus-configure-windows 'edit-score)
     (gnus-make-directory (file-name-directory file))
     (setq gnus-score-edit-buffer (find-file-noselect file))
     (gnus-configure-windows 'edit-score)
@@ -918,7 +921,8 @@ SCORE is the score to add."
   (interactive 
    (list (read-file-name "Edit score file: " gnus-kill-files-directory)))
   (gnus-make-directory (file-name-directory file))
   (interactive 
    (list (read-file-name "Edit score file: " gnus-kill-files-directory)))
   (gnus-make-directory (file-name-directory file))
-  (and (buffer-name gnus-summary-buffer) (gnus-score-save))
+  (when (buffer-name gnus-summary-buffer)
+    (gnus-score-save))
   (let ((winconf (current-window-configuration)))
     (setq gnus-score-edit-buffer (find-file-noselect file))
     (gnus-configure-windows 'edit-score)
   (let ((winconf (current-window-configuration)))
     (setq gnus-score-edit-buffer (find-file-noselect file))
     (gnus-configure-windows 'edit-score)
@@ -935,7 +939,7 @@ SCORE is the score to add."
   (let* ((file (expand-file-name 
                (or (and (string-match
                          (concat "^" (expand-file-name
   (let* ((file (expand-file-name 
                (or (and (string-match
                          (concat "^" (expand-file-name
-                                      gnus-kill-files-directory)) 
+                                      gnus-kill-files-directory))
                          (expand-file-name file))
                         file)
                    (concat (file-name-as-directory gnus-kill-files-directory)
                          (expand-file-name file))
                         file)
                    (concat (file-name-as-directory gnus-kill-files-directory)
@@ -951,13 +955,13 @@ SCORE is the score to add."
       (setq alist (gnus-score-load-score-alist file))
       ;; We add '(touched) to the alist to signify that it hasn't been
       ;; touched (yet). 
       (setq alist (gnus-score-load-score-alist file))
       ;; We add '(touched) to the alist to signify that it hasn't been
       ;; touched (yet). 
-      (or (assq 'touched alist) (setq alist (cons (list 'touched nil) alist)))
+      (unless (assq 'touched alist)
+       (push (list 'touched nil) alist))
       ;; If it is a global score file, we make it read-only.
       (and global
           (not (assq 'read-only alist))
       ;; If it is a global score file, we make it read-only.
       (and global
           (not (assq 'read-only alist))
-          (setq alist (cons (list 'read-only t) alist)))
-      (setq gnus-score-cache
-           (cons (cons file alist) gnus-score-cache)))
+          (push (list 'read-only t) alist))
+      (push (cons file alist) gnus-score-cache))
     (let ((a alist)
          found)
       (while a
     (let ((a alist)
          found)
       (while a
@@ -995,7 +999,7 @@ SCORE is the score to add."
       (and files (not global)
           (setq lists (apply 'append lists
                              (mapcar (lambda (file)
       (and files (not global)
           (setq lists (apply 'append lists
                              (mapcar (lambda (file)
-                                       (gnus-score-load-file file)) 
+                                       (gnus-score-load-file file))
                                      (if adapt-file (cons adapt-file files)
                                        files)))))
       (and eval (not global) (eval eval))
                                      (if adapt-file (cons adapt-file files)
                                        files)))))
       (and eval (not global) (eval eval))
@@ -1003,9 +1007,10 @@ SCORE is the score to add."
       (setq gnus-scores-exclude-files 
            (nconc 
             (mapcar 
       (setq gnus-scores-exclude-files 
            (nconc 
             (mapcar 
-             (lambda (sfile) 
+             (lambda (sfile)
                (expand-file-name sfile (file-name-directory file)))
                (expand-file-name sfile (file-name-directory file)))
-             exclude-files) gnus-scores-exclude-files))
+             exclude-files)
+            gnus-scores-exclude-files))
       (if (not local)
          ()
        (save-excursion
       (if (not local)
          ()
        (save-excursion
@@ -1017,7 +1022,8 @@ SCORE is the score to add."
                   (make-local-variable (caar local))
                   (set (caar local) (nth 1 (car local)))))
            (setq local (cdr local)))))
                   (make-local-variable (caar local))
                   (set (caar local) (nth 1 (car local)))))
            (setq local (cdr local)))))
-      (if orphan (setq gnus-orphan-score orphan))
+      (when orphan
+       (setq gnus-orphan-score orphan))
       (setq gnus-adaptive-score-alist
            (cond ((equal adapt '(t))
                   (setq gnus-newsgroup-adaptive t)
       (setq gnus-adaptive-score-alist
            (cond ((equal adapt '(t))
                   (setq gnus-newsgroup-adaptive t)
@@ -1049,10 +1055,9 @@ SCORE is the score to add."
        (setq gnus-score-alist (cdr cache))
       (setq gnus-score-alist nil)
       (gnus-score-load-score-alist file)
        (setq gnus-score-alist (cdr cache))
       (setq gnus-score-alist nil)
       (gnus-score-load-score-alist file)
-      (or gnus-score-alist
-         (setq gnus-score-alist (copy-alist '((touched nil)))))
-      (setq gnus-score-cache
-           (cons (cons file gnus-score-alist) gnus-score-cache)))))
+      (unless gnus-score-alist
+       (setq gnus-score-alist (copy-alist '((touched nil)))))
+      (push (cons file gnus-score-alist) gnus-score-cache))))
 
 (defun gnus-score-remove-from-cache (file)
   (setq gnus-score-cache 
 
 (defun gnus-score-remove-from-cache (file)
   (setq gnus-score-cache 
@@ -1131,18 +1136,18 @@ SCORE is the score to add."
            (gnus-message 3 err)
            (sit-for 2)
            nil)
            (gnus-message 3 err)
            (sit-for 2)
            nil)
-       alist)))))    
+       alist)))))
 
 (defun gnus-score-transform-old-to-new (alist)
   (let* ((alist (nth 2 alist))
         out entry)
 
 (defun gnus-score-transform-old-to-new (alist)
   (let* ((alist (nth 2 alist))
         out entry)
-    (if (eq (car alist) 'quote)
-       (setq alist (nth 1 alist)))
+    (when (eq (car alist) 'quote)
+      (setq alist (nth 1 alist)))
     (while alist
       (setq entry (car alist))
       (if (stringp (car entry))
          (let ((scor (cdr entry)))
     (while alist
       (setq entry (car alist))
       (if (stringp (car entry))
          (let ((scor (cdr entry)))
-           (setq out (cons entry out))
+           (push entry out)
            (while scor
              (setcar scor
                      (list (caar scor) (nth 2 (car scor))
            (while scor
              (setcar scor
                      (list (caar scor) (nth 2 (car scor))
@@ -1150,10 +1155,10 @@ SCORE is the score to add."
                                 (gnus-day-number (nth 3 (car scor))))
                            (if (nth 1 (car scor)) 'r 's)))
              (setq scor (cdr scor))))
                                 (gnus-day-number (nth 3 (car scor))))
                            (if (nth 1 (car scor)) 'r 's)))
              (setq scor (cdr scor))))
-       (setq out (cons (if (not (listp (cdr entry))) 
-                           (list (car entry) (cdr entry))
-                         entry)
-                       out)))
+       (push (if (not (listp (cdr entry)))
+                 (list (car entry) (cdr entry))
+               entry)
+             out))
       (setq alist (cdr alist)))
     (cons (list 'touched t) (nreverse out))))
   
       (setq alist (cdr alist)))
     (cons (list 'touched t) (nreverse out))))
   
@@ -1179,7 +1184,8 @@ SCORE is the score to add."
          (let (emacs-lisp-mode-hook)
            (if (string-match 
                 (concat (regexp-quote gnus-adaptive-file-suffix)
          (let (emacs-lisp-mode-hook)
            (if (string-match 
                 (concat (regexp-quote gnus-adaptive-file-suffix)
-                        "$") file)
+                        "$")
+                file)
                ;; This is an adaptive score file, so we do not run
                ;; it through `pp'.  These files can get huge, and
                ;; are not meant to be edited by human hands.
                ;; This is an adaptive score file, so we do not run
                ;; it through `pp'.  These files can get huge, and
                ;; are not meant to be edited by human hands.
@@ -1193,7 +1199,7 @@ SCORE is the score to add."
              (delete-file file)
            ;; There are scores, so we write the file. 
            (when (file-writable-p file)
              (delete-file file)
            ;; There are scores, so we write the file. 
            (when (file-writable-p file)
-             (write-region (point-min) (point-max) file nil 'silent)
+             (gnus-write-buffer file)
              (when gnus-score-after-write-file-function
                (funcall gnus-score-after-write-file-function file)))))
        (and gnus-score-uncacheable-files
              (when gnus-score-after-write-file-function
                (funcall gnus-score-after-write-file-function file)))))
        (and gnus-score-uncacheable-files
@@ -1253,10 +1259,10 @@ SCORE is the score to add."
            ;; WARNING: The assq makes the function O(N*S) while it could
            ;; be written as O(N+S), where N is (length gnus-newsgroup-headers)
            ;; and S is (length gnus-newsgroup-scored).
            ;; WARNING: The assq makes the function O(N*S) while it could
            ;; be written as O(N+S), where N is (length gnus-newsgroup-headers)
            ;; and S is (length gnus-newsgroup-scored).
-           (or (assq (mail-header-number header) gnus-newsgroup-scored)
-               (setq gnus-scores-articles ;Total of 2 * N cons-cells used.
-                     (cons (cons header (or gnus-summary-default-score 0))
-                           gnus-scores-articles))))
+           (unless (assq (mail-header-number header) gnus-newsgroup-scored)
+             (setq gnus-scores-articles ;Total of 2 * N cons-cells used.
+                   (cons (cons header (or gnus-summary-default-score 0))
+                         gnus-scores-articles))))
 
          (save-excursion
            (set-buffer (get-buffer-create "*Headers*"))
 
          (save-excursion
            (set-buffer (get-buffer-create "*Headers*"))
@@ -1314,8 +1320,8 @@ SCORE is the score to add."
             this (aref (car art) index)
             tref (aref (car art) refind)
             articles (cdr articles))
             this (aref (car art) index)
             tref (aref (car art) refind)
             articles (cdr articles))
-      (if (string-equal tref "")        ;no references line
-          (setq id-list (cons this id-list))))
+      (when (string-equal tref "")     ;no references line
+       (push this id-list)))
     id-list))
 
 ;; Orphan functions written by plm@atcmp.nl (Peter Mutsaers).
     id-list))
 
 ;; Orphan functions written by plm@atcmp.nl (Peter Mutsaers).
@@ -1333,24 +1339,22 @@ SCORE is the score to add."
             this (aref (car art) gnus-score-index)
             articles (cdr articles))
       ;;completely skip if this is empty (not a child, so not an orphan)
             this (aref (car art) gnus-score-index)
             articles (cdr articles))
       ;;completely skip if this is empty (not a child, so not an orphan)
-      (if (not (string= this ""))
-          (if (equal last this)
-              ;; O(N*H) cons-cells used here, where H is the number of
-              ;; headers.
-              (setq alike (cons art alike))
-            (if last
-                (progn
-                  ;; Insert the line, with a text property on the
-                  ;; terminating newline referring to the articles with
-                  ;; this line.
-                  (insert last ?\n)
-                  (put-text-property (1- (point)) (point) 'articles alike)))
-            (setq alike (list art)
-                  last this))))
-    (and last                           ; Bwadr, duplicate code.
-         (progn
-           (insert last ?\n)                    
-           (put-text-property (1- (point)) (point) 'articles alike)))
+      (when (not (string= this ""))
+       (if (equal last this)
+           ;; O(N*H) cons-cells used here, where H is the number of
+           ;; headers.
+           (push art alike)
+         (when last
+           ;; Insert the line, with a text property on the
+           ;; terminating newline referring to the articles with
+           ;; this line.
+           (insert last ?\n)
+           (put-text-property (1- (point)) (point) 'articles alike))
+         (setq alike (list art)
+               last this))))
+    (when last                         ; Bwadr, duplicate code.
+      (insert last ?\n)
+      (put-text-property (1- (point)) (point) 'articles alike))
 
     ;; PLM: now delete those lines that contain an entry from new-thread-ids
     (while new-thread-ids
 
     ;; PLM: now delete those lines that contain an entry from new-thread-ids
     (while new-thread-ids
@@ -1385,7 +1389,7 @@ SCORE is the score to add."
            scores (cdr scores)
            entries (assoc header alist))
       (while (cdr entries)             ;First entry is the header index.
            scores (cdr scores)
            entries (assoc header alist))
       (while (cdr entries)             ;First entry is the header index.
-       (let* ((rest (cdr entries))             
+       (let* ((rest (cdr entries))
               (kill (car rest))
               (match (nth 0 kill))
               (type (or (nth 3 kill) '>))
               (kill (car rest))
               (match (nth 0 kill))
               (type (or (nth 3 kill) '>))
@@ -1434,7 +1438,7 @@ SCORE is the score to add."
            scores (cdr scores)
            entries (assoc header alist))
       (while (cdr entries)             ;First entry is the header index.
            scores (cdr scores)
            entries (assoc header alist))
       (while (cdr entries)             ;First entry is the header index.
-       (let* ((rest (cdr entries))             
+       (let* ((rest (cdr entries))
               (kill (car rest))
               (type (or (nth 3 kill) 'before))
               (score (or (nth 1 kill) gnus-score-interactive-default-score))
               (kill (car rest))
               (type (or (nth 3 kill) 'before))
               (score (or (nth 1 kill) gnus-score-interactive-default-score))
@@ -1534,11 +1538,11 @@ SCORE is the score to add."
                (setq alist (pop scores)
                      entries (assoc header alist))
                (while (cdr entries)    ;First entry is the header index.
                (setq alist (pop scores)
                      entries (assoc header alist))
                (while (cdr entries)    ;First entry is the header index.
-                 (let* ((rest (cdr entries))           
+                 (let* ((rest (cdr entries))
                         (kill (car rest))
                         (match (nth 0 kill))
                         (type (or (nth 3 kill) 's))
                         (kill (car rest))
                         (match (nth 0 kill))
                         (type (or (nth 3 kill) 's))
-                        (score (or (nth 1 kill) 
+                        (score (or (nth 1 kill)
                                    gnus-score-interactive-default-score))
                         (date (nth 2 kill))
                         (found nil)
                                    gnus-score-interactive-default-score))
                         (date (nth 2 kill))
                         (found nil)
@@ -1609,17 +1613,15 @@ SCORE is the score to add."
            this (aref (car art) gnus-score-index)
            articles (cdr articles))
       (if (equal last this)
            this (aref (car art) gnus-score-index)
            articles (cdr articles))
       (if (equal last this)
-         (setq alike (cons art alike))
-       (if last
-           (progn
-             (insert last ?\n)
-             (put-text-property (1- (point)) (point) 'articles alike)))
+         (push art alike)
+       (when last
+         (insert last ?\n)
+         (put-text-property (1- (point)) (point) 'articles alike))
        (setq alike (list art)
              last this)))
        (setq alike (list art)
              last this)))
-    (and last                          ; Bwadr, duplicate code.
-        (progn
-          (insert last ?\n)                    
-          (put-text-property (1- (point)) (point) 'articles alike)))
+    (when last                         ; Bwadr, duplicate code.
+      (insert last ?\n)
+      (put-text-property (1- (point)) (point) 'articles alike))
   
     ;; Find matches.
     (while scores
   
     ;; Find matches.
     (while scores
@@ -1627,7 +1629,7 @@ SCORE is the score to add."
            scores (cdr scores)
            entries (assoc header alist))
       (while (cdr entries)             ;First entry is the header index.
            scores (cdr scores)
            entries (assoc header alist))
       (while (cdr entries)             ;First entry is the header index.
-       (let* ((rest (cdr entries))             
+       (let* ((rest (cdr entries))
               (kill (car rest))
               (match (nth 0 kill))
               (type (or (nth 3 kill) 's))
               (kill (car rest))
               (match (nth 0 kill))
               (type (or (nth 3 kill) 's))
@@ -1729,7 +1731,7 @@ SCORE is the score to add."
       (if (equal last this)
          ;; O(N*H) cons-cells used here, where H is the number of
          ;; headers.
       (if (equal last this)
          ;; O(N*H) cons-cells used here, where H is the number of
          ;; headers.
-         (setq alike (cons art alike))
+         (push art alike)
        (when last
          ;; Insert the line, with a text property on the
          ;; terminating newline referring to the articles with
        (when last
          ;; Insert the line, with a text property on the
          ;; terminating newline referring to the articles with
@@ -1739,7 +1741,7 @@ SCORE is the score to add."
        (setq alike (list art)
              last this)))
     (when last                         ; Bwadr, duplicate code.
        (setq alike (list art)
              last this)))
     (when last                         ; Bwadr, duplicate code.
-      (insert last ?\n)                        
+      (insert last ?\n)
       (put-text-property (1- (point)) (point) 'articles alike))
 
     ;; Go through all the score alists and pick out the entries
       (put-text-property (1- (point)) (point) 'articles alike))
 
     ;; Go through all the score alists and pick out the entries
@@ -1775,7 +1777,7 @@ SCORE is the score to add."
           ((= dmt ?e)
            ;; Do exact matching.
            (goto-char (point-min))
           ((= dmt ?e)
            ;; Do exact matching.
            (goto-char (point-min))
-           (while (and (not (eobp)) 
+           (while (and (not (eobp))
                        (funcall search-func match nil t))
              ;; Is it really exact?
              (and (eolp)
                        (funcall search-func match nil t))
              ;; Is it really exact?
              (and (eolp)
@@ -1848,7 +1850,7 @@ SCORE is the score to add."
               (case-fold-search (not (= mt ?F)))
               found)
          (goto-char (point-min))
               (case-fold-search (not (= mt ?F)))
               found)
          (goto-char (point-min))
-         (while (and (not (eobp)) 
+         (while (and (not (eobp))
                      (search-forward match nil t))
            (when (and (= (gnus-point-at-bol) (match-beginning 0))
                       (eolp))
                      (search-forward match nil t))
            (when (and (= (gnus-point-at-bol) (match-beginning 0))
                       (eolp))
@@ -1873,7 +1875,7 @@ SCORE is the score to add."
            (gnus-score-set 'touched '(t) alist)
            (setcar (nthcdr 2 kill) now))
           ;; Old entry, remove.
            (gnus-score-set 'touched '(t) alist)
            (setcar (nthcdr 2 kill) now))
           ;; Old entry, remove.
-          ((and expire (< date expire)) 
+          ((and expire (< date expire))
            (gnus-score-set 'touched '(t) alist)
            (setcdr (car fuzzies) (cddar fuzzies))))
          (setq fuzzies (cdr fuzzies)))))
            (gnus-score-set 'touched '(t) alist)
            (setcdr (car fuzzies) (cddar fuzzies))))
          (setq fuzzies (cdr fuzzies)))))
@@ -1908,7 +1910,7 @@ SCORE is the score to add."
              (gnus-score-set 'touched '(t) alist)
              (setcar (nthcdr 2 kill) now))
             ;; Old entry, remove.
              (gnus-score-set 'touched '(t) alist)
              (setcar (nthcdr 2 kill) now))
             ;; Old entry, remove.
-            ((and expire (< date expire)) 
+            ((and expire (< date expire))
              (gnus-score-set 'touched '(t) alist)
              (setcdr (car words) (cddar words))))
            (setq words (cdr words))))))
              (gnus-score-set 'touched '(t) alist)
              (setcdr (car words) (cddar words))))
            (setq words (cdr words))))))
@@ -1969,23 +1971,23 @@ SCORE is the score to add."
       (save-excursion
        (let* ((malist (gnus-copy-sequence gnus-adaptive-score-alist))
               (alist malist)
       (save-excursion
        (let* ((malist (gnus-copy-sequence gnus-adaptive-score-alist))
               (alist malist)
-              (date (current-time-string)) 
+              (date (current-time-string))
               (data gnus-newsgroup-data)
               elem headers match)
          ;; First we transform the adaptive rule alist into something
          ;; that's faster to process.
          (while malist
            (setq elem (car malist))
               (data gnus-newsgroup-data)
               elem headers match)
          ;; First we transform the adaptive rule alist into something
          ;; that's faster to process.
          (while malist
            (setq elem (car malist))
-           (if (symbolp (car elem))
-               (setcar elem (symbol-value (car elem))))
+           (when (symbolp (car elem))
+             (setcar elem (symbol-value (car elem))))
            (setq elem (cdr elem))
            (while elem
            (setq elem (cdr elem))
            (while elem
-             (setcdr (car elem) 
+             (setcdr (car elem)
                      (cons (if (eq (caar elem) 'followup)
                                "references"
                              (symbol-name (caar elem)))
                            (cdar elem)))
                      (cons (if (eq (caar elem) 'followup)
                                "references"
                              (symbol-name (caar elem)))
                            (cdar elem)))
-             (setcar (car elem) 
+             (setcar (car elem)
                      `(lambda (h)
                         (,(intern 
                            (concat "mail-header-" 
                      `(lambda (h)
                         (,(intern 
                            (concat "mail-header-" 
@@ -2074,7 +2076,8 @@ SCORE is the score to add."
 (defun gnus-score-edit-done ()
   (let ((bufnam (buffer-file-name (current-buffer)))
        (winconf gnus-prev-winconf))
 (defun gnus-score-edit-done ()
   (let ((bufnam (buffer-file-name (current-buffer)))
        (winconf gnus-prev-winconf))
-    (and winconf (set-window-configuration winconf))
+    (when winconf
+      (set-window-configuration winconf))
     (gnus-score-remove-from-cache bufnam)
     (gnus-score-load-file bufnam)))
 
     (gnus-score-remove-from-cache bufnam)
     (gnus-score-load-file bufnam)))
 
@@ -2187,7 +2190,7 @@ SCORE is the score to add."
     (gnus-summary-next-subject 1 t)))
 
 (defun gnus-score-default (level)
     (gnus-summary-next-subject 1 t)))
 
 (defun gnus-score-default (level)
-  (if level (prefix-numeric-value level) 
+  (if level (prefix-numeric-value level)
     gnus-score-interactive-default-score))
 
 (defun gnus-summary-raise-thread (&optional score)
     gnus-score-interactive-default-score))
 
 (defun gnus-summary-raise-thread (&optional score)
@@ -2203,8 +2206,8 @@ SCORE is the score to add."
          (setq articles (cdr articles))))
       (setq e (point)))
     (let ((gnus-summary-check-current t))
          (setq articles (cdr articles))))
       (setq e (point)))
     (let ((gnus-summary-check-current t))
-      (or (zerop (gnus-summary-next-subject 1 t))
-         (goto-char e))))
+      (unless (zerop (gnus-summary-next-subject 1 t))
+       (goto-char e))))
   (gnus-summary-recenter)
   (gnus-summary-position-point)
   (gnus-set-mode-line 'summary))
   (gnus-summary-recenter)
   (gnus-summary-position-point)
   (gnus-set-mode-line 'summary))
@@ -2229,9 +2232,9 @@ SCORE is the score to add."
 (defun gnus-score-score-files (group)
   "Return a list of all possible score files."
   ;; Search and set any global score files.
 (defun gnus-score-score-files (group)
   "Return a list of all possible score files."
   ;; Search and set any global score files.
-  (and gnus-global-score-files 
-       (or gnus-internal-global-score-files
-          (gnus-score-search-global-directories gnus-global-score-files)))
+  (when gnus-global-score-files 
+    (unless gnus-internal-global-score-files
+      (gnus-score-search-global-directories gnus-global-score-files)))
   ;; Fix the kill-file dir variable.
   (setq gnus-kill-files-directory 
        (file-name-as-directory gnus-kill-files-directory))
   ;; Fix the kill-file dir variable.
   (setq gnus-kill-files-directory 
        (file-name-as-directory gnus-kill-files-directory))
@@ -2312,7 +2315,7 @@ GROUP using BNews sys file syntax."
        (goto-char (point-min))
        ;; First remove the suffix itself.
        (when (re-search-forward (concat "." score-regexp) nil t)
        (goto-char (point-min))
        ;; First remove the suffix itself.
        (when (re-search-forward (concat "." score-regexp) nil t)
-         (replace-match "" t t) 
+         (replace-match "" t t)
          (goto-char (point-min))
          (if (looking-at (regexp-quote kill-dir))
              ;; If the file name was just "SCORE", `klen' is one character
          (goto-char (point-min))
          (if (looking-at (regexp-quote kill-dir))
              ;; If the file name was just "SCORE", `klen' is one character
@@ -2329,11 +2332,11 @@ GROUP using BNews sys file syntax."
              (replace-match "." t t)))
          ;; Kludge to get rid of "nntp+" problems.
          (goto-char (point-min))
              (replace-match "." t t)))
          ;; Kludge to get rid of "nntp+" problems.
          (goto-char (point-min))
-         (and (looking-at "nn[a-z]+\\+")
-              (progn
-                (search-forward "+")
-                (forward-char -1)
-                (insert "\\")))
+         (when (looking-at "nn[a-z]+\\+")
+           (progn
+             (search-forward "+")
+             (forward-char -1)
+             (insert "\\")))
          ;; Kludge to deal with "++".
          (goto-char (point-min))
          (while (search-forward "++" nil t)
          ;; Kludge to deal with "++".
          (goto-char (point-min))
          (while (search-forward "++" nil t)
@@ -2353,11 +2356,11 @@ GROUP using BNews sys file syntax."
          ;; Finally - if this resulting regexp matches the group name,
          ;; we add this score file to the list of score files
          ;; applicable to this group.
          ;; Finally - if this resulting regexp matches the group name,
          ;; we add this score file to the list of score files
          ;; applicable to this group.
-         (if (or (and not-match
-                      (not (string-match regexp group)))
-                 (and (not not-match)
-                      (string-match regexp group)))
-             (setq ofiles (cons (car sfiles) ofiles))))
+         (when (or (and not-match
+                        (not (string-match regexp group)))
+                   (and (not not-match)
+                        (string-match regexp group)))
+           (push (car sfiles) ofiles)))
        (setq sfiles (cdr sfiles)))
       (kill-buffer (current-buffer))
       ;; Slight kludge here - the last score file returned should be
        (setq sfiles (cdr sfiles)))
       (kill-buffer (current-buffer))
       ;; Slight kludge here - the last score file returned should be
@@ -2381,8 +2384,8 @@ This includes the score file for the group and all its parents."
        (start 0))
     (while (string-match "\\." group (1+ start))
       (setq start (match-beginning 0))
        (start 0))
     (while (string-match "\\." group (1+ start))
       (setq start (match-beginning 0))
-      (setq all (cons (substring group 0 start) all)))
-    (setq all (cons group all))
+      (push (substring group 0 start) all))
+    (push group all)
     (nconc
      (mapcar (lambda (newsgroup)
               (gnus-score-file-name newsgroup gnus-adaptive-file-suffix))
     (nconc
      (mapcar (lambda (newsgroup)
               (gnus-score-file-name newsgroup gnus-adaptive-file-suffix))
@@ -2403,7 +2406,7 @@ Destroys the current buffer."
   (let ((beg (point))
        elems)
     (while (re-search-forward "[./]" nil t)
   (let ((beg (point))
        elems)
     (while (re-search-forward "[./]" nil t)
-      (push (buffer-substring beg (1- (point))) 
+      (push (buffer-substring beg (1- (point)))
            elems))
     (erase-buffer)
     (setq elems (delete "all" elems))
            elems))
     (erase-buffer)
     (setq elems (delete "all" elems))
@@ -2431,26 +2434,24 @@ The list is determined from the variable gnus-score-file-alist."
        (cdr score-files)               ;ensures caching groups with no matches
       ;; handle the multiple match alist
       (while alist
        (cdr score-files)               ;ensures caching groups with no matches
       ;; handle the multiple match alist
       (while alist
-       (and (string-match (caar alist) group)
-            (setq score-files
-                  (nconc score-files (copy-sequence (cdar alist)))))
+       (when (string-match (caar alist) group)
+         (setq score-files
+               (nconc score-files (copy-sequence (cdar alist)))))
        (setq alist (cdr alist)))
       (setq alist gnus-score-file-single-match-alist)
       ;; handle the single match alist
       (while alist
        (setq alist (cdr alist)))
       (setq alist gnus-score-file-single-match-alist)
       ;; handle the single match alist
       (while alist
-       (and (string-match (caar 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 (cdar alist))))
-              (setq alist nil)))
+       (when (string-match (caar 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 
+         (setq score-files
+               (nconc score-files (copy-sequence (cdar alist))))
+         (setq alist nil))
        (setq alist (cdr alist)))
       ;; cache the score files
        (setq alist (cdr alist)))
       ;; cache the score files
-      (setq gnus-score-file-alist-cache
-           (cons (cons group score-files) gnus-score-file-alist-cache))
+      (push (cons group score-files) gnus-score-file-alist-cache)
       score-files)))
 
 (defun gnus-all-score-files ()
       score-files)))
 
 (defun gnus-all-score-files ()
@@ -2493,7 +2494,9 @@ The list is determined from the variable gnus-score-file-alist."
     ;; Expand all files names.
     (let ((files score-files))
       (while files
     ;; Expand all files names.
     (let ((files score-files))
       (while files
-       (setcar files (expand-file-name (pop files)))))
+       (when (stringp (car files))
+         (setcar files (expand-file-name (car files))))
+       (pop files)))
     ;; Remove any duplicate score files.
     (while (and score-files
                (member (car score-files) (cdr score-files)))
     ;; Remove any duplicate score files.
     (while (and score-files
                (member (car score-files) (cdr score-files)))
@@ -2544,7 +2547,7 @@ The list is determined from the variable gnus-score-file-alist."
          (setq out (nconc (directory-files 
                            (car files) t
                            (concat (gnus-score-file-regexp) "$"))))
          (setq out (nconc (directory-files 
                            (car files) t
                            (concat (gnus-score-file-regexp) "$"))))
-       (setq out (cons (car files) out)))
+       (push (car files) out))
       (setq files (cdr files)))
     (setq gnus-internal-global-score-files out)))
 
       (setq files (cdr files)))
     (setq gnus-internal-global-score-files out)))
 
index a564c1a..b84f35e 100644 (file)
@@ -80,8 +80,8 @@
 (let ((gnus-directory (if gnus-use-september
                          gnus-sgnus-lisp-directory
                        gnus-gnus-lisp-directory)))
 (let ((gnus-directory (if gnus-use-september
                          gnus-sgnus-lisp-directory
                        gnus-gnus-lisp-directory)))
-  (if (null (member gnus-directory load-path))
-      (setq load-path (cons gnus-directory load-path))))
+  (when (null (member gnus-directory load-path))
+    (push gnus-directory load-path)))
 
 ;;; We can't do this until we know where Gnus is.
 (require 'message)
 
 ;;; We can't do this until we know where Gnus is.
 (require 'message)
 ;;; UMEDA Masanobu <umerin@mse.kyutech.ac.jp>
 ;;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
 
 ;;; UMEDA Masanobu <umerin@mse.kyutech.ac.jp>
 ;;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
 
-(if gnus-use-tm
-    (progn
-      (if (null (member gnus-tm-lisp-directory load-path))
-         (setq load-path (cons gnus-tm-lisp-directory load-path)))
-       (load "mime-setup")))
+(when gnus-use-tm
+  (when (null (member gnus-tm-lisp-directory load-path))
+    (setq load-path (cons gnus-tm-lisp-directory load-path)))
+  (load "mime-setup"))
 
 ;;; Mailcrypt by
 ;;; Jin Choi <jin@atype.com>
 ;;; Patrick LoPresti <patl@lcs.mit.edu>
 
 
 ;;; Mailcrypt by
 ;;; Jin Choi <jin@atype.com>
 ;;; Patrick LoPresti <patl@lcs.mit.edu>
 
-(if gnus-use-mailcrypt
-    (progn
-      (if (null (member gnus-mailcrypt-lisp-directory load-path))
-         (setq load-path (cons gnus-mailcrypt-lisp-directory load-path)))
-      (autoload 'mc-install-write-mode "mailcrypt" nil t)
-      (autoload 'mc-install-read-mode "mailcrypt" nil t)
-      (add-hook 'message-mode-hook 'mc-install-write-mode)
-      (add-hook 'gnus-summary-mode-hook 'mc-install-read-mode)
-      (if gnus-use-mhe
-         (progn
-           (add-hook 'mh-folder-mode-hook 'mc-install-read-mode)
-           (add-hook 'mh-letter-mode-hook 'mc-install-write-mode)))))
+(when gnus-use-mailcrypt
+  (when (null (member gnus-mailcrypt-lisp-directory load-path))
+    (setq load-path (cons gnus-mailcrypt-lisp-directory load-path)))
+  (autoload 'mc-install-write-mode "mailcrypt" nil t)
+  (autoload 'mc-install-read-mode "mailcrypt" nil t)
+  (add-hook 'message-mode-hook 'mc-install-write-mode)
+  (add-hook 'gnus-summary-mode-hook 'mc-install-read-mode)
+  (when gnus-use-mhe
+    (add-hook 'mh-folder-mode-hook 'mc-install-read-mode)
+    (add-hook 'mh-letter-mode-hook 'mc-install-write-mode)))
 
 ;;; BBDB by
 ;;; Jamie Zawinski <jwz@lucid.com>
 
 
 ;;; BBDB by
 ;;; Jamie Zawinski <jwz@lucid.com>
 
-(if gnus-use-bbdb
-    (progn
-      (if (null (member gnus-bbdb-lisp-directory load-path))
-         (setq load-path (cons gnus-bbdb-lisp-directory load-path)))
-      (autoload 'bbdb "bbdb-com"
-       "Insidious Big Brother Database" t)
-      (autoload 'bbdb-name "bbdb-com"
-       "Insidious Big Brother Database" t)
-      (autoload 'bbdb-company "bbdb-com"
-       "Insidious Big Brother Database" t)
-      (autoload 'bbdb-net "bbdb-com"
-       "Insidious Big Brother Database" t)
-      (autoload 'bbdb-notes "bbdb-com"
-       "Insidious Big Brother Database" t)
-
-      (if gnus-use-vm
-         (progn
-           (autoload 'bbdb-insinuate-vm "bbdb-vm"
-             "Hook BBDB into VM" t)))
-
-      (if gnus-use-rmail
-         (progn
-           (autoload 'bbdb-insinuate-rmail "bbdb-rmail"
-             "Hook BBDB into RMAIL" t)
-           (add-hook 'rmail-mode-hook 'bbdb-insinuate-rmail)))
-
-      (if gnus-use-mhe
-         (progn
-           (autoload 'bbdb-insinuate-mh "bbdb-mh"
-             "Hook BBDB into MH-E" t)
-           (add-hook 'mh-folder-mode-hook 'bbdb-insinuate-mh)))
-
-      (autoload 'bbdb-insinuate-gnus "bbdb-gnus"
-       "Hook BBDB into Gnus" t)
-      (add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus)
-
-      (if gnus-use-sendmail
-         (progn
-           (autoload 'bbdb-insinuate-sendmail "bbdb"
-             "Insidious Big Brother Database" t)
-           (add-hook 'mail-setup-hook 'bbdb-insinuate-sendmail)
-           (add-hook 'message-setup-hook 'bbdb-insinuate-sendmail)))))
-
-(if gnus-use-sc
-    (progn
-      (add-hook 'mail-citation-hook 'sc-cite-original)
-      (setq message-cite-function 'sc-cite-original)
-      (autoload 'sc-cite-original "supercite")))
+(when gnus-use-bbdb
+  (when (null (member gnus-bbdb-lisp-directory load-path))
+    (setq load-path (cons gnus-bbdb-lisp-directory load-path)))
+  (autoload 'bbdb "bbdb-com"
+    "Insidious Big Brother Database" t)
+  (autoload 'bbdb-name "bbdb-com"
+    "Insidious Big Brother Database" t)
+  (autoload 'bbdb-company "bbdb-com"
+    "Insidious Big Brother Database" t)
+  (autoload 'bbdb-net "bbdb-com"
+    "Insidious Big Brother Database" t)
+  (autoload 'bbdb-notes "bbdb-com"
+    "Insidious Big Brother Database" t)
+
+  (when gnus-use-vm
+    (autoload 'bbdb-insinuate-vm "bbdb-vm"
+      "Hook BBDB into VM" t))
+
+  (when gnus-use-rmail
+    (autoload 'bbdb-insinuate-rmail "bbdb-rmail"
+      "Hook BBDB into RMAIL" t)
+    (add-hook 'rmail-mode-hook 'bbdb-insinuate-rmail))
+
+  (when gnus-use-mhe
+    (autoload 'bbdb-insinuate-mh "bbdb-mh"
+      "Hook BBDB into MH-E" t)
+    (add-hook 'mh-folder-mode-hook 'bbdb-insinuate-mh))
+
+  (autoload 'bbdb-insinuate-gnus "bbdb-gnus"
+    "Hook BBDB into Gnus" t)
+  (add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus)
+
+  (when gnus-use-sendmail
+    (autoload 'bbdb-insinuate-sendmail "bbdb"
+      "Insidious Big Brother Database" t)
+    (add-hook 'mail-setup-hook 'bbdb-insinuate-sendmail)
+    (add-hook 'message-setup-hook 'bbdb-insinuate-sendmail)))
+
+(when gnus-use-sc
+  (add-hook 'mail-citation-hook 'sc-cite-original)
+  (setq message-cite-function 'sc-cite-original)
+  (autoload 'sc-cite-original "supercite"))
 \f
 ;;;### (autoloads (gnus-batch-score gnus-fetch-group gnus gnus-slave gnus-no-server gnus-update-format) "gnus" "lisp/gnus.el" (12473 2137))
 ;;; Generated autoloads from lisp/gnus.el
 \f
 ;;;### (autoloads (gnus-batch-score gnus-fetch-group gnus gnus-slave gnus-no-server gnus-update-format) "gnus" "lisp/gnus.el" (12473 2137))
 ;;; Generated autoloads from lisp/gnus.el
index cfeb1ef..7b29fc8 100644 (file)
@@ -73,7 +73,7 @@ format.")
 (defvar gnus-soup-index-type ?c
   "*Soup index type.
 `n' means no index file and `c' means standard Cnews overview
 (defvar gnus-soup-index-type ?c
   "*Soup index type.
 `n' means no index file and `c' means standard Cnews overview
-format.") 
+format.")
 
 (defvar gnus-soup-areas nil)
 (defvar gnus-soup-last-prefix nil)
 
 (defvar gnus-soup-areas nil)
 (defvar gnus-soup-last-prefix nil)
@@ -119,8 +119,8 @@ format.")
   (let ((packets (directory-files
                  gnus-soup-packet-directory t gnus-soup-packet-regexp)))
     (while packets
   (let ((packets (directory-files
                  gnus-soup-packet-directory t gnus-soup-packet-regexp)))
     (while packets
-      (and (gnus-soup-send-packet (car packets))
-          (delete-file (car packets)))
+      (when (gnus-soup-send-packet (car packets))
+       (delete-file (car packets)))
       (setq packets (cdr packets)))))
 
 (defun gnus-soup-add-article (n)
       (setq packets (cdr packets)))))
 
 (defun gnus-soup-add-article (n)
@@ -185,8 +185,8 @@ Uses the process/prefix convention."
   (let ((level (or level gnus-level-subscribed))
        (newsrc (cdr gnus-newsrc-alist)))
     (while newsrc
   (let ((level (or level gnus-level-subscribed))
        (newsrc (cdr gnus-newsrc-alist)))
     (while newsrc
-      (and (<= (nth 1 (car newsrc)) level)
-          (gnus-soup-group-brew (caar newsrc) t))
+      (when (<= (nth 1 (car newsrc)) level)
+       (gnus-soup-group-brew (caar newsrc) t))
       (setq newsrc (cdr newsrc)))
     (gnus-soup-save-areas)))
 
       (setq newsrc (cdr newsrc)))
     (gnus-soup-save-areas)))
 
@@ -219,15 +219,14 @@ $ emacs -batch -f gnus-batch-brew-soup ^nnml \".*emacs.*\""
         from head-line beg type)
     (setq gnus-soup-buffers (cons msg-buf (delq msg-buf gnus-soup-buffers)))
     (buffer-disable-undo msg-buf)
         from head-line beg type)
     (setq gnus-soup-buffers (cons msg-buf (delq msg-buf gnus-soup-buffers)))
     (buffer-disable-undo msg-buf)
-    (and idx-buf 
-        (progn
-          (setq gnus-soup-buffers (cons idx-buf gnus-soup-buffers))
-          (buffer-disable-undo idx-buf)))
+    (when idx-buf 
+      (push idx-buf gnus-soup-buffers)
+      (buffer-disable-undo idx-buf))
     (save-excursion
       ;; Make sure the last char in the buffer is a newline.
       (goto-char (point-max))
     (save-excursion
       ;; Make sure the last char in the buffer is a newline.
       (goto-char (point-max))
-      (or (= (current-column) 0)
-         (insert "\n"))
+      (unless (= (current-column) 0)
+       (insert "\n"))
       ;; Find the "from".
       (goto-char (point-min))
       (setq from
       ;; Find the "from".
       (goto-char (point-min))
       (setq from
@@ -302,7 +301,7 @@ If NOT-ALL, don't pack ticked articles."
                        (lambda (time) (int-to-string time))
                        (current-time) "-")))
           (or (mail-header-references header) "")
                        (lambda (time) (int-to-string time))
                        (current-time) "-")))
           (or (mail-header-references header) "")
-          (or (mail-header-chars header) 0) 
+          (or (mail-header-chars header) 0)
           (or (mail-header-lines header) "0"))))
 
 (defun gnus-soup-save-areas ()
           (or (mail-header-lines header) "0"))))
 
 (defun gnus-soup-save-areas ()
@@ -315,21 +314,20 @@ If NOT-ALL, don't pack ticked articles."
        (if (not (buffer-name buf))
            ()
          (set-buffer buf)
        (if (not (buffer-name buf))
            ()
          (set-buffer buf)
-         (and (buffer-modified-p) (save-buffer))
+         (when (buffer-modified-p)
+           (save-buffer))
          (kill-buffer (current-buffer)))))
     (gnus-soup-write-prefixes)))
 
 (defun gnus-soup-write-prefixes ()
          (kill-buffer (current-buffer)))))
     (gnus-soup-write-prefixes)))
 
 (defun gnus-soup-write-prefixes ()
-  (let ((prefix gnus-soup-last-prefix))
+  (let ((prefixes gnus-soup-last-prefix)
+       prefix)
     (save-excursion
     (save-excursion
-      (while prefix
-       (gnus-set-work-buffer)
-       (insert (format "(setq gnus-soup-prev-prefix %d)\n" (cdar prefix)))
-       (gnus-make-directory (caar prefix))
-       (write-region (point-min) (point-max)
-                     (concat (caar prefix) gnus-soup-prefix-file) 
-                     nil 'nomesg)
-       (setq prefix (cdr prefix))))))
+      (gnus-set-work-buffer)
+      (while (setq prefix (pop prefixes))
+       (erase-buffer)
+       (insert (format "(setq gnus-soup-prev-prefix %d)\n" (cdr prefix)))
+       (gnus-write-buffer (concat (car prefix) gnus-soup-prefix-file))))))
 
 (defun gnus-soup-pack (dir packer)
   (let* ((files (mapconcat 'identity
 
 (defun gnus-soup-pack (dir packer)
   (let* ((files (mapconcat 'identity
@@ -368,17 +366,16 @@ though the two last may be nil if they are missing."
       (buffer-disable-undo (current-buffer))
       (goto-char (point-min))
       (while (not (eobp))
       (buffer-disable-undo (current-buffer))
       (goto-char (point-min))
       (while (not (eobp))
-       (setq areas
-             (cons (vector (gnus-soup-field) 
-                           (gnus-soup-field)
-                           (gnus-soup-field)
-                           (and (eq (preceding-char) ?\t)
-                                (gnus-soup-field))
-                           (and (eq (preceding-char) ?\t)
-                                (string-to-int (gnus-soup-field))))
-                   areas))
-       (if (eq (preceding-char) ?\t)
-           (beginning-of-line 2)))
+       (push (vector (gnus-soup-field)
+                     (gnus-soup-field)
+                     (gnus-soup-field)
+                     (and (eq (preceding-char) ?\t)
+                          (gnus-soup-field))
+                     (and (eq (preceding-char) ?\t)
+                          (string-to-int (gnus-soup-field))))
+             areas)
+       (when (eq (preceding-char) ?\t)
+         (beginning-of-line 2)))
       (kill-buffer (current-buffer)))
     areas))
 
       (kill-buffer (current-buffer)))
     areas))
 
@@ -392,12 +389,11 @@ file.  The vector contain three strings, [prefix name encoding]."
       (buffer-disable-undo (current-buffer))
       (goto-char (point-min))
       (while (not (eobp))
       (buffer-disable-undo (current-buffer))
       (goto-char (point-min))
       (while (not (eobp))
-       (setq replies
-             (cons (vector (gnus-soup-field) (gnus-soup-field)
-                           (gnus-soup-field))
-                   replies))
-       (if (eq (preceding-char) ?\t)
-           (beginning-of-line 2)))
+       (push (vector (gnus-soup-field) (gnus-soup-field)
+                     (gnus-soup-field))
+             replies)
+       (when (eq (preceding-char) ?\t)
+         (beginning-of-line 2)))
       (kill-buffer (current-buffer)))
     replies))
 
       (kill-buffer (current-buffer)))
     replies))
 
@@ -423,9 +419,9 @@ file.  The vector contain three strings, [prefix name encoding]."
           (format 
            "%s\t%s\t%s%s\n"
            (gnus-soup-area-prefix area)
           (format 
            "%s\t%s\t%s%s\n"
            (gnus-soup-area-prefix area)
-           (gnus-soup-area-name area) 
+           (gnus-soup-area-name area)
            (gnus-soup-area-encoding area)
            (gnus-soup-area-encoding area)
-           (if (or (gnus-soup-area-description area) 
+           (if (or (gnus-soup-area-description area)
                    (gnus-soup-area-number area))
                (concat "\t" (or (gnus-soup-area-description
                                  area) "")
                    (gnus-soup-area-number area))
                (concat "\t" (or (gnus-soup-area-description
                                  area) "")
@@ -441,7 +437,7 @@ file.  The vector contain three strings, [prefix name encoding]."
       (while (setq area (pop areas))
        (insert (format "%s\t%s\t%s\n"
                        (gnus-soup-reply-prefix area)
       (while (setq area (pop areas))
        (insert (format "%s\t%s\t%s\n"
                        (gnus-soup-reply-prefix area)
-                       (gnus-soup-reply-kind area) 
+                       (gnus-soup-reply-kind area)
                        (gnus-soup-reply-encoding area)))))))
 
 (defun gnus-soup-area (group)
                        (gnus-soup-reply-encoding area)))))))
 
 (defun gnus-soup-area (group)
@@ -452,18 +448,18 @@ file.  The vector contain three strings, [prefix name encoding]."
     (while areas
       (setq area (car areas)
            areas (cdr areas))
     (while areas
       (setq area (car areas)
            areas (cdr areas))
-      (if (equal (gnus-soup-area-name area) real-group)
-         (setq result area)))
-    (or result
-       (setq result
-             (vector (gnus-soup-unique-prefix)
-                     real-group 
-                     (format "%c%c%c"
-                             gnus-soup-encoding-type
-                             gnus-soup-index-type
-                             (if (gnus-member-of-valid 'mail group) ?m ?n))
-                     nil nil)
-             gnus-soup-areas (cons result gnus-soup-areas)))
+      (when (equal (gnus-soup-area-name area) real-group)
+       (setq result area)))
+    (unless result
+      (setq result
+           (vector (gnus-soup-unique-prefix)
+                   real-group 
+                   (format "%c%c%c"
+                           gnus-soup-encoding-type
+                           gnus-soup-index-type
+                           (if (gnus-member-of-valid 'mail group) ?m ?n))
+                   nil nil)
+           gnus-soup-areas (cons result gnus-soup-areas)))
     result))
 
 (defun gnus-soup-unique-prefix (&optional dir)
     result))
 
 (defun gnus-soup-unique-prefix (&optional dir)
@@ -472,13 +468,12 @@ file.  The vector contain three strings, [prefix name encoding]."
         gnus-soup-prev-prefix)
     (if entry
        ()
         gnus-soup-prev-prefix)
     (if entry
        ()
-      (and (file-exists-p (concat dir gnus-soup-prefix-file))
-          (condition-case nil
-              (load (concat dir gnus-soup-prefix-file) nil t t)
-            (error nil)))
-      (setq gnus-soup-last-prefix 
-           (cons (setq entry (cons dir (or gnus-soup-prev-prefix 0)))
-                 gnus-soup-last-prefix)))
+      (when (file-exists-p (concat dir gnus-soup-prefix-file))
+       (condition-case nil
+           (load (concat dir gnus-soup-prefix-file) nil t t)
+         (error nil)))
+      (push (setq entry (cons dir (or gnus-soup-prev-prefix 0)))
+           gnus-soup-last-prefix))
     (setcdr entry (1+ (cdr entry)))
     (gnus-soup-write-prefixes)
     (int-to-string (cdr entry))))
     (setcdr entry (1+ (cdr entry)))
     (gnus-soup-write-prefixes)
     (int-to-string (cdr entry))))
@@ -491,7 +486,7 @@ Return whether the unpacking was successful."
   (prog1
       (zerop (call-process
              shell-file-name nil nil nil shell-command-switch
   (prog1
       (zerop (call-process
              shell-file-name nil nil nil shell-command-switch
-             (format "cd %s ; %s" (expand-file-name dir) 
+             (format "cd %s ; %s" (expand-file-name dir)
                      (format unpacker packet))))
     (gnus-message 4 "Unpacking...done")))
 
                      (format unpacker packet))))
     (gnus-message 4 "Unpacking...done")))
 
@@ -511,7 +506,8 @@ Return whether the unpacking was successful."
               beg end)
          (cond 
           ((/= (gnus-soup-encoding-format 
               beg end)
          (cond 
           ((/= (gnus-soup-encoding-format 
-                (gnus-soup-reply-encoding (car replies))) ?n)
+                (gnus-soup-reply-encoding (car replies)))
+               ?n)
            (error "Unsupported encoding"))
           ((null msg-buf)
            t)
            (error "Unsupported encoding"))
           ((null msg-buf)
            t)
@@ -521,8 +517,8 @@ Return whether the unpacking was successful."
            (set-buffer msg-buf)
            (goto-char (point-min))
            (while (not (eobp))
            (set-buffer msg-buf)
            (goto-char (point-min))
            (while (not (eobp))
-             (or (looking-at "#! *rnews +\\([0-9]+\\)")
-                 (error "Bad header."))
+             (unless (looking-at "#! *rnews +\\([0-9]+\\)")
+               (error "Bad header."))
              (forward-line 1)
              (setq beg (point)
                    end (+ (point) (string-to-int 
              (forward-line 1)
              (setq beg (point)
                    end (+ (point) (string-to-int 
index e23b911..ec2efe6 100644 (file)
                  (list
                   (list (intern (format "gnus-user-format-function-%c"
                                         user-defined))
                  (list
                   (list (intern (format "gnus-user-format-function-%c"
                                         user-defined))
-                        'gnus-tmp-header) ?s)))
+                        'gnus-tmp-header)
+                  ?s)))
           ;; Find the specification from `spec-alist'.
           ((setq elem (cdr (assq spec spec-alist))))
           (t
           ;; Find the specification from `spec-alist'.
           ((setq elem (cdr (assq spec spec-alist))))
           (t
index 6f9f9c0..f492757 100644 (file)
@@ -240,7 +240,8 @@ The following commands are available:
       (when entry
        (gnus-dribble-enter 
         (concat "(gnus-server-set-info \"" server "\" '"
       (when entry
        (gnus-dribble-enter 
         (concat "(gnus-server-set-info \"" server "\" '"
-                (prin1-to-string (cdr entry)) ")")))
+                (prin1-to-string (cdr entry)) ")
+")))
       (when (or entry oentry)
        ;; Buffer may be narrowed.
        (save-restriction
       (when (or entry oentry)
        ;; Buffer may be narrowed.
        (save-restriction
@@ -279,8 +280,7 @@ The following commands are available:
   (gnus-dribble-enter "")
   (let ((buffer-read-only nil))
     (gnus-delete-line))
   (gnus-dribble-enter "")
   (let ((buffer-read-only nil))
     (gnus-delete-line))
-  (setq gnus-server-killed-servers 
-       (cons (assoc server gnus-server-alist) gnus-server-killed-servers))
+  (push (assoc server gnus-server-alist) gnus-server-killed-servers)
   (setq gnus-server-alist (delq (car gnus-server-killed-servers)
                                gnus-server-alist))
   (gnus-server-position-point))
   (setq gnus-server-alist (delq (car gnus-server-killed-servers)
                                gnus-server-alist))
   (gnus-server-position-point))
@@ -288,15 +288,15 @@ The following commands are available:
 (defun gnus-server-yank-server ()
   "Yank the previously killed server."
   (interactive)
 (defun gnus-server-yank-server ()
   "Yank the previously killed server."
   (interactive)
-  (or gnus-server-killed-servers
-      (error "No killed servers to be yanked"))
+  (unless gnus-server-killed-servers
+    (error "No killed servers to be yanked"))
   (let ((alist gnus-server-alist)
        (server (gnus-server-server-name))
        (killed (car gnus-server-killed-servers)))
   (let ((alist gnus-server-alist)
        (server (gnus-server-server-name))
        (killed (car gnus-server-killed-servers)))
-    (if (not server) 
+    (if (not server)
        (setq gnus-server-alist (nconc gnus-server-alist (list killed)))
       (if (string= server (caar gnus-server-alist))
        (setq gnus-server-alist (nconc gnus-server-alist (list killed)))
       (if (string= server (caar gnus-server-alist))
-         (setq gnus-server-alist (cons killed gnus-server-alist))
+         (push killed gnus-server-alist)
        (while (and (cdr alist)
                    (not (string= server (caadr alist))))
          (setq alist (cdr alist)))
        (while (and (cdr alist)
                    (not (string= server (caadr alist))))
          (setq alist (cdr alist)))
@@ -340,7 +340,8 @@ The following commands are available:
   "Force an open of SERVER."
   (interactive (list (gnus-server-server-name)))
   (let ((method (gnus-server-to-method server)))
   "Force an open of SERVER."
   (interactive (list (gnus-server-server-name)))
   (let ((method (gnus-server-to-method server)))
-    (or method (error "No such server: %s" server))
+    (unless method
+      (error "No such server: %s" server))
     (gnus-server-set-status method 'ok)
     (prog1
        (or (gnus-open-server method)
     (gnus-server-set-status method 'ok)
     (prog1
        (or (gnus-open-server method)
@@ -359,7 +360,8 @@ The following commands are available:
   "Close SERVER."
   (interactive (list (gnus-server-server-name)))
   (let ((method (gnus-server-to-method server)))
   "Close SERVER."
   (interactive (list (gnus-server-server-name)))
   (let ((method (gnus-server-to-method server)))
-    (or method (error "No such server: %s" server))
+    (unless method
+      (error "No such server: %s" server))
     (gnus-server-set-status method 'closed)
     (prog1
        (gnus-close-server method)
     (gnus-server-set-status method 'closed)
     (prog1
        (gnus-close-server method)
@@ -377,7 +379,8 @@ The following commands are available:
   "Make sure SERVER will never be attempted opened."
   (interactive (list (gnus-server-server-name)))
   (let ((method (gnus-server-to-method server)))
   "Make sure SERVER will never be attempted opened."
   (interactive (list (gnus-server-server-name)))
   (let ((method (gnus-server-to-method server)))
-    (or method (error "No such server: %s" server))
+    (unless method
+      (error "No such server: %s" server))
     (gnus-server-set-status method 'denied))
   (gnus-server-update-server server)
   (gnus-server-position-point)
     (gnus-server-set-status method 'denied))
   (gnus-server-update-server server)
   (gnus-server-position-point)
@@ -396,19 +399,21 @@ The following commands are available:
 (defun gnus-server-copy-server (from to)
   (interactive
    (list
 (defun gnus-server-copy-server (from to)
   (interactive
    (list
-    (or (gnus-server-server-name)
-       (error "No server on the current line"))
+    (unless (gnus-server-server-name)
+      (error "No server on the current line"))
     (read-string "Copy to: ")))
     (read-string "Copy to: ")))
-  (or from (error "No server on current line"))
-  (or (and to (not (string= to ""))) (error "No name to copy to"))
-  (and (assoc to gnus-server-alist) (error "%s already exists" to))
-  (or (assoc from gnus-server-alist) 
-      (error "%s: no such server" from))
+  (unless from
+    (error "No server on current line"))
+  (unless (and to (not (string= to "")))
+    (error "No name to copy to"))
+  (when (assoc to gnus-server-alist)
+    (error "%s already exists" to))
+  (unless (assoc from gnus-server-alist)
+    (error "%s: no such server" from))
   (let ((to-entry (gnus-copy-sequence (assoc from gnus-server-alist))))
     (setcar to-entry to)
     (setcar (nthcdr 2 to-entry) to)
   (let ((to-entry (gnus-copy-sequence (assoc from gnus-server-alist))))
     (setcar to-entry to)
     (setcar (nthcdr 2 to-entry) to)
-    (setq gnus-server-killed-servers 
-         (cons to-entry gnus-server-killed-servers))
+    (push to-entry gnus-server-killed-servers)
     (gnus-server-yank-server)))
 
 (defun gnus-server-add-server (how where)
     (gnus-server-yank-server)))
 
 (defun gnus-server-add-server (how where)
@@ -416,20 +421,18 @@ The following commands are available:
    (list (intern (completing-read "Server method: "
                                  gnus-valid-select-methods nil t))
         (read-string "Server name: ")))
    (list (intern (completing-read "Server method: "
                                  gnus-valid-select-methods nil t))
         (read-string "Server name: ")))
-  (setq gnus-server-killed-servers 
-       (cons (list where how where) gnus-server-killed-servers))
+  (push (list where how where) gnus-server-killed-servers)
   (gnus-server-yank-server))
 
 (defun gnus-server-goto-server (server)
   "Jump to a server line."
   (interactive
    (list (completing-read "Goto server: " gnus-server-alist nil t)))
   (gnus-server-yank-server))
 
 (defun gnus-server-goto-server (server)
   "Jump to a server line."
   (interactive
    (list (completing-read "Goto server: " gnus-server-alist nil t)))
-  (let ((to (text-property-any (point-min) (point-max) 
+  (let ((to (text-property-any (point-min) (point-max)
                               'gnus-server (intern server))))
                               'gnus-server (intern server))))
-    (and to
-        (progn
-          (goto-char to) 
-          (gnus-server-position-point)))))
+    (when to
+      (goto-char to)
+      (gnus-server-position-point))))
 
 (defun gnus-server-edit-server (server)
   "Edit the server on the current line."
 
 (defun gnus-server-edit-server (server)
   "Edit the server on the current line."
@@ -547,7 +550,8 @@ The following commands are available:
      (t
       (get-buffer-create gnus-browse-buffer)
       (gnus-add-current-to-buffer-list)
      (t
       (get-buffer-create gnus-browse-buffer)
       (gnus-add-current-to-buffer-list)
-      (and gnus-carpal (gnus-carpal-setup-buffer 'browse))
+      (when gnus-carpal
+       (gnus-carpal-setup-buffer 'browse))
       (gnus-configure-windows 'browse)
       (buffer-disable-undo (current-buffer))
       (let ((buffer-read-only nil))
       (gnus-configure-windows 'browse)
       (buffer-disable-undo (current-buffer))
       (let ((buffer-read-only nil))
@@ -561,14 +565,14 @@ The following commands are available:
        (set-buffer nntp-server-buffer)
        (let ((cur (current-buffer)))
          (goto-char (point-min))
        (set-buffer nntp-server-buffer)
        (let ((cur (current-buffer)))
          (goto-char (point-min))
-         (or (string= gnus-ignored-newsgroups "")
-             (delete-matching-lines gnus-ignored-newsgroups))
+         (unless (string= gnus-ignored-newsgroups "")
+           (delete-matching-lines gnus-ignored-newsgroups))
          (while (re-search-forward
                  "\\(^[^ \t]+\\)[ \t]+[0-9]+[ \t]+[0-9]+" nil t)
            (goto-char (match-end 1))
          (while (re-search-forward
                  "\\(^[^ \t]+\\)[ \t]+[0-9]+[ \t]+[0-9]+" nil t)
            (goto-char (match-end 1))
-           (setq groups (cons (cons (match-string 1)
-                                    (max 0 (- (1+ (read cur)) (read cur))))
-                              groups)))))
+           (push (cons (match-string 1)
+                       (max 0 (- (1+ (read cur)) (read cur))))
+                 groups))))
       (setq groups (sort groups
                         (lambda (l1 l2)
                           (string< (car l1) (car l2)))))
       (setq groups (sort groups
                         (lambda (l1 l2)
                           (string< (car l1) (car l2)))))
@@ -654,7 +658,8 @@ buffer.
                (zerop (gnus-browse-next-group ward)))
       (decf arg))
     (gnus-group-position-point)
                (zerop (gnus-browse-next-group ward)))
       (decf arg))
     (gnus-group-position-point)
-    (if (/= 0 arg) (gnus-message 7 "No more newsgroups"))
+    (when (/= 0 arg)
+      (gnus-message 7 "No more newsgroups"))
     arg))
 
 (defun gnus-browse-group-name ()
     arg))
 
 (defun gnus-browse-group-name ()
@@ -671,7 +676,8 @@ buffer.
     (save-excursion
       (beginning-of-line)
       ;; If this group it killed, then we want to subscribe it.
     (save-excursion
       (beginning-of-line)
       ;; If this group it killed, then we want to subscribe it.
-      (if (= (following-char) ?K) (setq sub t))
+      (when (= (following-char) ?K)
+       (setq sub t))
       (setq group (gnus-browse-group-name))
       ;; Make sure the group has been properly removed before we
       ;; subscribe to it.
       (setq group (gnus-browse-group-name))
       ;; Make sure the group has been properly removed before we
       ;; subscribe to it.
index 57a9dde..287746b 100644 (file)
@@ -333,7 +333,7 @@ Can be used to turn version control on or off.")
                       (concat "^" (substring (car groups) 0 (match-end 0))))
                 (string-match prefix (cadr groups)))
            (progn
                       (concat "^" (substring (car groups) 0 (match-end 0))))
                 (string-match prefix (cadr groups)))
            (progn
-             (setq prefixes (cons prefix prefixes))
+             (push prefix prefixes)
              (message "Descend hierarchy %s? ([y]nsq): "
                       (substring prefix 1 (1- (length prefix))))
              (while (not (memq (setq ans (read-char)) '(?y ?\n ?n ?s ?q)))
              (message "Descend hierarchy %s? ([y]nsq): "
                       (substring prefix 1 (1- (length prefix))))
              (while (not (memq (setq ans (read-char)) '(?y ?\n ?n ?s ?q)))
@@ -344,8 +344,7 @@ Can be used to turn version control on or off.")
                     (while (and groups
                                 (string-match prefix
                                               (setq group (car groups))))
                     (while (and groups
                                 (string-match prefix
                                               (setq group (car groups))))
-                      (setq gnus-killed-list
-                            (cons group gnus-killed-list))
+                      (push group gnus-killed-list)
                       (gnus-sethash group group gnus-killed-hashtb)
                       (setq groups (cdr groups)))
                     (setq starts (cdr starts)))
                       (gnus-sethash group group gnus-killed-hashtb)
                       (setq groups (cdr groups)))
                     (setq starts (cdr starts)))
@@ -360,7 +359,7 @@ Can be used to turn version control on or off.")
                    ((= ans ?q)
                     (while groups
                       (setq group (car groups))
                    ((= ans ?q)
                     (while groups
                       (setq group (car groups))
-                      (setq gnus-killed-list (cons group gnus-killed-list))
+                      (push group gnus-killed-list)
                       (gnus-sethash group group gnus-killed-hashtb)
                       (setq groups (cdr groups))))
                    (t nil)))
                       (gnus-sethash group group gnus-killed-hashtb)
                       (setq groups (cdr groups))))
                    (t nil)))
@@ -375,11 +374,11 @@ Can be used to turn version control on or off.")
                ((= ans ?q)
                 (while groups
                   (setq group (car groups))
                ((= ans ?q)
                 (while groups
                   (setq group (car groups))
-                  (setq gnus-killed-list (cons group gnus-killed-list))
+                  (push group gnus-killed-list)
                   (gnus-sethash group group gnus-killed-hashtb)
                   (setq groups (cdr groups))))
                (t
                   (gnus-sethash group group gnus-killed-hashtb)
                   (setq groups (cdr groups))))
                (t
-                (setq gnus-killed-list (cons group gnus-killed-list))
+                (push group gnus-killed-list)
                 (gnus-sethash group group gnus-killed-hashtb)))
          (setq groups (cdr groups)))))))
 
                 (gnus-sethash group group gnus-killed-hashtb)))
          (setq groups (cdr groups)))))))
 
@@ -414,8 +413,8 @@ Can be used to turn version control on or off.")
                        (string< before newgroup)))))
        ;; Remove tail of newsgroup name (eg. a.b.c -> a.b)
        (setq groupkey
                        (string< before newgroup)))))
        ;; Remove tail of newsgroup name (eg. a.b.c -> a.b)
        (setq groupkey
-             (if (string-match "^\\(.*\\)\\.[^.]+$" groupkey)
-                 (substring groupkey (match-beginning 1) (match-end 1)))))
+             (when (string-match "^\\(.*\\)\\.[^.]+$" groupkey)
+               (substring groupkey (match-beginning 1) (match-end 1)))))
       (gnus-subscribe-newsgroup newgroup before))
     (kill-buffer (current-buffer))))
 
       (gnus-subscribe-newsgroup newgroup before))
     (kill-buffer (current-buffer))))
 
@@ -547,15 +546,15 @@ prompt the user for the name of an NNTP server to use."
     (setq gnus-slave slave)
 
     (when (string-match "XEmacs" (emacs-version))
     (setq gnus-slave slave)
 
     (when (string-match "XEmacs" (emacs-version))
-      (gnus-splash))
+      (gnus-xmas-splash))
 
     (let ((level (and (numberp arg) (> arg 0) arg))
          did-connect)
       (unwind-protect
          (progn
 
     (let ((level (and (numberp arg) (> arg 0) arg))
          did-connect)
       (unwind-protect
          (progn
-           (or dont-connect
-               (setq did-connect
-                     (gnus-start-news-server (and arg (not level))))))
+           (unless dont-connect
+             (setq did-connect
+                   (gnus-start-news-server (and arg (not level))))))
        (if (and (not dont-connect)
                 (not did-connect))
            (gnus-group-quit)
        (if (and (not dont-connect)
                 (not did-connect))
            (gnus-group-quit)
@@ -587,8 +586,8 @@ prompt the user for the name of an NNTP server to use."
 (defun gnus-unload ()
   "Unload all Gnus features."
   (interactive)
 (defun gnus-unload ()
   "Unload all Gnus features."
   (interactive)
-  (or (boundp 'load-history)
-      (error "Sorry, `gnus-unload' is not implemented in this Emacs version."))
+  (unless (boundp 'load-history)
+    (error "Sorry, `gnus-unload' is not implemented in this Emacs version."))
   (let ((history load-history)
        feature)
     (while history
   (let ((history load-history)
        feature)
     (while history
@@ -616,15 +615,15 @@ prompt the user for the name of an NNTP server to use."
 
 (defun gnus-dribble-enter (string)
   "Enter STRING into the dribble buffer."
 
 (defun gnus-dribble-enter (string)
   "Enter STRING into the dribble buffer."
-  (if (and (not gnus-dribble-ignore)
-          gnus-dribble-buffer
-          (buffer-name gnus-dribble-buffer))
-      (let ((obuf (current-buffer)))
-       (set-buffer gnus-dribble-buffer)
-       (insert string "\n")
-       (set-window-point (get-buffer-window (current-buffer)) (point-max))
-       (bury-buffer gnus-dribble-buffer)
-       (set-buffer obuf))))
+  (when (and (not gnus-dribble-ignore)
+            gnus-dribble-buffer
+            (buffer-name gnus-dribble-buffer))
+    (let ((obuf (current-buffer)))
+      (set-buffer gnus-dribble-buffer)
+      (insert string "\n")
+      (set-window-point (get-buffer-window (current-buffer)) (point-max))
+      (bury-buffer gnus-dribble-buffer)
+      (set-buffer obuf))))
 
 (defun gnus-dribble-read-file ()
   "Read the dribble file from disk."
 
 (defun gnus-dribble-read-file ()
   "Read the dribble file from disk."
@@ -676,8 +675,8 @@ prompt the user for the name of an NNTP server to use."
     (save-excursion
       (set-buffer gnus-dribble-buffer)
       (let ((auto (make-auto-save-file-name)))
     (save-excursion
       (set-buffer gnus-dribble-buffer)
       (let ((auto (make-auto-save-file-name)))
-       (if (file-exists-p auto)
-           (delete-file auto))
+       (when (file-exists-p auto)
+         (delete-file auto))
        (erase-buffer)
        (set-buffer-modified-p nil)))))
 
        (erase-buffer)
        (set-buffer-modified-p nil)))))
 
@@ -827,7 +826,7 @@ the server for new groups."
                   (setq groups (1+ groups))
                   (gnus-sethash group group gnus-killed-hashtb)
                   (if gnus-subscribe-hierarchical-interactive
                   (setq groups (1+ groups))
                   (gnus-sethash group group gnus-killed-hashtb)
                   (if gnus-subscribe-hierarchical-interactive
-                      (setq new-newsgroups (cons group new-newsgroups))
+                      (push group new-newsgroups)
                     (funcall gnus-subscribe-newsgroup-method group)))))))
           gnus-active-hashtb)
          (when new-newsgroups
                     (funcall gnus-subscribe-newsgroup-method group)))))))
           gnus-active-hashtb)
          (when new-newsgroups
@@ -928,7 +927,8 @@ the server for new groups."
     (when (> groups 0)
       (gnus-message 6 "%d new newsgroup%s arrived."
                    groups (if (> groups 1) "s have" " has")))
     (when (> groups 0)
       (gnus-message 6 "%d new newsgroup%s arrived."
                    groups (if (> groups 1) "s have" " has")))
-    (and got-new (setq gnus-newsrc-last-checked-date new-date))
+    (when got-new
+      (setq gnus-newsrc-last-checked-date new-date))
     got-new))
 
 (defun gnus-check-first-time-used ()
     got-new))
 
 (defun gnus-check-first-time-used ()
@@ -958,16 +958,16 @@ the server for new groups."
                ((eq do-sub 'ignore)
                 nil)
                (t
                ((eq do-sub 'ignore)
                 nil)
                (t
-                (setq gnus-killed-list (cons group gnus-killed-list)))))))
+                (push group gnus-killed-list))))))
         gnus-active-hashtb)
        (while groups
         gnus-active-hashtb)
        (while groups
-         (if (gnus-active (car groups))
-             (gnus-group-change-level
-              (car groups) gnus-level-default-subscribed gnus-level-killed))
+         (when (gnus-active (car groups))
+           (gnus-group-change-level
+            (car groups) gnus-level-default-subscribed gnus-level-killed))
          (setq groups (cdr groups)))
        (gnus-group-make-help-group)
          (setq groups (cdr groups)))
        (gnus-group-make-help-group)
-       (and gnus-novice-user
-            (gnus-message 7 "`A k' to list killed groups"))))))
+       (when gnus-novice-user
+         (gnus-message 7 "`A k' to list killed groups"))))))
 
 (defun gnus-subscribe-group (group previous &optional method)
   (gnus-group-change-level
 
 (defun gnus-subscribe-group (group previous &optional method)
   (gnus-group-change-level
@@ -1000,16 +1000,16 @@ the server for new groups."
        (if fromkilled (setq group (nth 1 entry))
          (setq group (car (nth 2 entry))))
       (setq group entry))
        (if fromkilled (setq group (nth 1 entry))
          (setq group (car (nth 2 entry))))
       (setq group entry))
-    (if (and (stringp entry)
-            oldlevel
-            (< oldlevel gnus-level-zombie))
-       (setq entry (gnus-gethash entry gnus-newsrc-hashtb)))
+    (when (and (stringp entry)
+              oldlevel
+              (< oldlevel gnus-level-zombie))
+      (setq entry (gnus-gethash entry gnus-newsrc-hashtb)))
     (if (and (not oldlevel)
             (consp entry))
        (setq oldlevel (gnus-info-level (nth 2 entry)))
       (setq oldlevel (or oldlevel 9)))
     (if (and (not oldlevel)
             (consp entry))
        (setq oldlevel (gnus-info-level (nth 2 entry)))
       (setq oldlevel (or oldlevel 9)))
-    (if (stringp previous)
-       (setq previous (gnus-gethash previous gnus-newsrc-hashtb)))
+    (when (stringp previous)
+      (setq previous (gnus-gethash previous gnus-newsrc-hashtb)))
 
     (if (and (>= oldlevel gnus-level-zombie)
             (gnus-gethash group gnus-newsrc-hashtb))
 
     (if (and (>= oldlevel gnus-level-zombie)
             (gnus-gethash group gnus-newsrc-hashtb))
@@ -1017,10 +1017,10 @@ the server for new groups."
        ;; subscribed.
        ()                              ; Do nothing.
 
        ;; subscribed.
        ()                              ; Do nothing.
 
-      (or (gnus-ephemeral-group-p group)
-         (gnus-dribble-enter
-          (format "(gnus-group-change-level %S %S %S %S %S)"
-                  group level oldlevel (car (nth 2 previous)) fromkilled)))
+      (unless (gnus-ephemeral-group-p group)
+       (gnus-dribble-enter
+        (format "(gnus-group-change-level %S %S %S %S %S)"
+                group level oldlevel (car (nth 2 previous)) fromkilled)))
 
       ;; Then we remove the newgroup from any old structures, if needed.
       ;; If the group was killed, we remove it from the killed or zombie
 
       ;; Then we remove the newgroup from any old structures, if needed.
       ;; If the group was killed, we remove it from the killed or zombie
@@ -1032,15 +1032,14 @@ the server for new groups."
            (setq gnus-zombie-list (delete group gnus-zombie-list))
          (setq gnus-killed-list (delete group gnus-killed-list))))
        (t
            (setq gnus-zombie-list (delete group gnus-zombie-list))
          (setq gnus-killed-list (delete group gnus-killed-list))))
        (t
-       (if (and (>= level gnus-level-zombie)
-                entry)
-           (progn
-             (gnus-sethash (car (nth 2 entry)) nil gnus-newsrc-hashtb)
-             (if (nth 3 entry)
-                 (setcdr (gnus-gethash (car (nth 3 entry))
-                                       gnus-newsrc-hashtb)
-                         (cdr entry)))
-             (setcdr (cdr entry) (cdddr entry))))))
+       (when (and (>= level gnus-level-zombie)
+                  entry)
+         (gnus-sethash (car (nth 2 entry)) nil gnus-newsrc-hashtb)
+         (when (nth 3 entry)
+           (setcdr (gnus-gethash (car (nth 3 entry))
+                                 gnus-newsrc-hashtb)
+                   (cdr entry)))
+         (setcdr (cdr entry) (cdddr entry)))))
 
       ;; Finally we enter (if needed) the list where it is supposed to
       ;; go, and change the subscription level.  If it is to be killed,
 
       ;; Finally we enter (if needed) the list where it is supposed to
       ;; go, and change the subscription level.  If it is to be killed,
@@ -1053,8 +1052,8 @@ the server for new groups."
        ;; groups.
        (unless (gnus-group-foreign-p group)
          (if (= level gnus-level-zombie)
        ;; groups.
        (unless (gnus-group-foreign-p group)
          (if (= level gnus-level-zombie)
-             (setq gnus-zombie-list (cons group gnus-zombie-list))
-           (setq gnus-killed-list (cons group gnus-killed-list)))))
+             (push group gnus-zombie-list)
+           (push group gnus-killed-list))))
        (t
        ;; If the list is to be entered into the newsrc assoc, and
        ;; it was killed, we have to create an entry in the newsrc
        (t
        ;; If the list is to be entered into the newsrc assoc, and
        ;; it was killed, we have to create an entry in the newsrc
@@ -1219,9 +1218,9 @@ newsgroup."
                        (cdadr range))))
          (setcdr range (cddr range)))
        ;; Adjust the first element to be the same as the lower limit.
                        (cdadr range))))
          (setcdr range (cddr range)))
        ;; Adjust the first element to be the same as the lower limit.
-       (if (and (not (atom (car range)))
-                (< (cdar range) (car active)))
-           (setcdr (car range) (1- (car active))))
+       (when (and (not (atom (car range)))
+                  (< (cdar range) (car active)))
+         (setcdr (car range) (1- (car active))))
        ;; Then we want to peel off any elements that are higher
        ;; than the upper active limit.
        (let ((srange range))
        ;; Then we want to peel off any elements that are higher
        ;; than the upper active limit.
        (let ((srange range))
@@ -1229,16 +1228,17 @@ newsgroup."
          (while (and (cdr srange)
                      (<= (or (and (atom (cadr srange))
                                   (cadr srange))
          (while (and (cdr srange)
                      (<= (or (and (atom (cadr srange))
                                   (cadr srange))
-                             (caadr srange)) (cdr active)))
+                             (caadr srange))
+                         (cdr active)))
            (setq srange (cdr srange)))
            (setq srange (cdr srange)))
-         (if (cdr srange)
-             ;; Nuke all remaining illegal elements.
-             (setcdr srange nil))
+         (when (cdr srange)
+           ;; Nuke all remaining illegal elements.
+           (setcdr srange nil))
 
          ;; Adjust the final element.
 
          ;; Adjust the final element.
-         (if (and (not (atom (car srange)))
-                  (> (cdar srange) (cdr active)))
-             (setcdr (car srange) (cdr active))))
+         (when (and (not (atom (car srange)))
+                    (> (cdar srange) (cdr active)))
+           (setcdr (car srange) (cdr active))))
        ;; Compute the number of unread articles.
        (while range
          (setq num (+ num (- (1+ (or (and (atom (car range)) (car range))
        ;; Compute the number of unread articles.
        (while range
          (setq num (+ num (- (1+ (or (and (atom (car range)) (car range))
@@ -1384,7 +1384,7 @@ newsgroup."
     (while articles
       (when (gnus-member-of-range
             (setq article (pop articles)) ranges)
     (while articles
       (when (gnus-member-of-range
             (setq article (pop articles)) ranges)
-       (setq news (cons article news))))
+       (push article news)))
     (when news
       (gnus-info-set-read
        info (gnus-remove-from-range (gnus-info-read info) (nreverse news)))
     (when news
       (gnus-info-set-read
        info (gnus-remove-from-range (gnus-info-read info) (nreverse news)))
@@ -1408,7 +1408,8 @@ newsgroup."
   (unless (gnus-read-active-file-p)
     (let ((gnus-read-active-file t))
       (gnus-read-active-file)))
   (unless (gnus-read-active-file-p)
     (let ((gnus-read-active-file t))
       (gnus-read-active-file)))
-  (or gnus-killed-hashtb (gnus-make-hashtable-from-killed))
+  (unless gnus-killed-hashtb
+    (gnus-make-hashtable-from-killed))
   ;; Go through all newsgroups that are known to Gnus - enlarge kill list.
   (mapatoms
    (lambda (sym)
   ;; Go through all newsgroups that are known to Gnus - enlarge kill list.
   (mapatoms
    (lambda (sym)
@@ -1422,8 +1423,7 @@ newsgroup."
           (if (or (eq do-sub 'subscribe) (eq do-sub 'ignore))
               ()
             (setq groups (1+ groups))
           (if (or (eq do-sub 'subscribe) (eq do-sub 'ignore))
               ()
             (setq groups (1+ groups))
-            (setq gnus-killed-list
-                  (cons group gnus-killed-list))
+            (push group gnus-killed-list)
             (gnus-sethash group group gnus-killed-hashtb))))))
    gnus-active-hashtb)
   (gnus-dribble-enter ""))
             (gnus-sethash group group gnus-killed-hashtb))))))
    gnus-active-hashtb)
   (gnus-dribble-enter ""))
@@ -1458,8 +1458,8 @@ newsgroup."
          (gnus-message 5 mesg)
          (when (gnus-check-server method)
            ;; Request that the backend scan its incoming messages.
          (gnus-message 5 mesg)
          (when (gnus-check-server method)
            ;; Request that the backend scan its incoming messages.
-           (and (gnus-check-backend-function 'request-scan (car method))
-                (gnus-request-scan nil method))
+           (when (gnus-check-backend-function 'request-scan (car method))
+             (gnus-request-scan nil method))
            (cond
             ((and (eq gnus-read-active-file 'some)
                   (gnus-check-backend-function 'retrieve-groups (car method)))
            (cond
             ((and (eq gnus-read-active-file 'some)
                   (gnus-check-backend-function 'retrieve-groups (car method)))
@@ -1471,7 +1471,7 @@ newsgroup."
                         (gnus-find-method-for-group 
                          (gnus-info-group info) info)
                         gmethod)
                         (gnus-find-method-for-group 
                          (gnus-info-group info) info)
                         gmethod)
-                   (push (gnus-group-real-name (gnus-info-group info)) 
+                   (push (gnus-group-real-name (gnus-info-group info))
                          groups)))
                (when groups
                  (gnus-check-server method)
                          groups)))
                (when groups
                  (gnus-check-server method)
@@ -1516,10 +1516,9 @@ newsgroup."
     (while (search-forward "\nto." nil t)
       (delete-region (1+ (match-beginning 0))
                     (progn (forward-line 1) (point))))
     (while (search-forward "\nto." nil t)
       (delete-region (1+ (match-beginning 0))
                     (progn (forward-line 1) (point))))
-    (or (string= gnus-ignored-newsgroups "")
-       (progn
-         (goto-char (point-min))
-         (delete-matching-lines gnus-ignored-newsgroups)))
+    (unless (string= gnus-ignored-newsgroups "")
+      (goto-char (point-min))
+      (delete-matching-lines gnus-ignored-newsgroups))
     ;; Make the group names readable as a lisp expression even if they
     ;; contain special characters.
     ;; Fix by Luc Van Eycken <Luc.VanEycken@esat.kuleuven.ac.be>.
     ;; Make the group names readable as a lisp expression even if they
     ;; contain special characters.
     ;; Fix by Luc Van Eycken <Luc.VanEycken@esat.kuleuven.ac.be>.
@@ -1561,9 +1560,8 @@ newsgroup."
                      (set group (cons min max))
                    (set group nil))
                  ;; Enter moderated groups into a list.
                      (set group (cons min max))
                    (set group nil))
                  ;; Enter moderated groups into a list.
-                 (if (eq (let ((obarray mod-hashtb)) (read cur)) m)
-                     (setq gnus-moderated-list
-                           (cons (symbol-name group) gnus-moderated-list))))
+                 (when (eq (let ((obarray mod-hashtb)) (read cur)) m)
+                   (push (symbol-name group) gnus-moderated-list)))
              (error
               (and group
                    (symbolp group)
              (error
               (and group
                    (symbolp group)
@@ -1595,10 +1593,10 @@ newsgroup."
               (and group
                    (symbolp group)
                    (set group nil))
               (and group
                    (symbolp group)
                    (set group nil))
-              (or ignore-errors
-                  (gnus-message 3 "Warning - illegal active: %s"
-                                (buffer-substring
-                                 (gnus-point-at-bol) (gnus-point-at-eol)))))))
+              (unless ignore-errors
+                (gnus-message 3 "Warning - illegal active: %s"
+                              (buffer-substring
+                               (gnus-point-at-bol) (gnus-point-at-eol)))))))
          (widen)
          (forward-line 1))))))
 
          (widen)
          (forward-line 1))))))
 
@@ -1639,13 +1637,12 @@ newsgroup."
       (let (min max group)
        (while (not (eobp))
          (condition-case ()
       (let (min max group)
        (while (not (eobp))
          (condition-case ()
-             (if (= (following-char) ?2)
-                 (progn
-                   (read cur) (read cur)
-                   (setq min (read cur)
-                         max (read cur))
-                   (set (setq group (let ((obarray hashtb)) (read cur)))
-                        (cons min max))))
+             (when (= (following-char) ?2)
+               (read cur) (read cur)
+               (setq min (read cur)
+                     max (read cur))
+               (set (setq group (let ((obarray hashtb)) (read cur)))
+                    (cons min max)))
            (error (and group (symbolp group) (set group nil))))
          (forward-line 1))))))
 
            (error (and group (symbolp group) (set group nil))))
          (forward-line 1))))))
 
@@ -1665,26 +1662,26 @@ If FORCE is non-nil, the .newsrc file is read."
       ;; file (ticked articles, killed groups, foreign methods, etc.)
       (gnus-read-newsrc-el-file quick-file)
 
       ;; file (ticked articles, killed groups, foreign methods, etc.)
       (gnus-read-newsrc-el-file quick-file)
 
-      (if (and (file-exists-p gnus-current-startup-file)
-              (or force
-                  (and (file-newer-than-file-p newsrc-file quick-file)
-                       (file-newer-than-file-p newsrc-file
-                                               (concat quick-file "d")))
-                  (not gnus-newsrc-alist)))
-         ;; We read the .newsrc file.  Note that if there if a
-         ;; .newsrc.eld file exists, it has already been read, and
-         ;; the `gnus-newsrc-hashtb' has been created.  While reading
-         ;; the .newsrc file, Gnus will only use the information it
-         ;; can find there for changing the data already read -
-         ;; i. e., reading the .newsrc file will not trash the data
-         ;; already read (except for read articles).
-         (save-excursion
-           (gnus-message 5 "Reading %s..." newsrc-file)
-           (set-buffer (find-file-noselect newsrc-file))
-           (buffer-disable-undo (current-buffer))
-           (gnus-newsrc-to-gnus-format)
-           (kill-buffer (current-buffer))
-           (gnus-message 5 "Reading %s...done" newsrc-file)))
+      (when (and (file-exists-p gnus-current-startup-file)
+                (or force
+                    (and (file-newer-than-file-p newsrc-file quick-file)
+                         (file-newer-than-file-p newsrc-file
+                                                 (concat quick-file "d")))
+                    (not gnus-newsrc-alist)))
+       ;; We read the .newsrc file.  Note that if there if a
+       ;; .newsrc.eld file exists, it has already been read, and
+       ;; the `gnus-newsrc-hashtb' has been created.  While reading
+       ;; the .newsrc file, Gnus will only use the information it
+       ;; can find there for changing the data already read -
+       ;; i. e., reading the .newsrc file will not trash the data
+       ;; already read (except for read articles).
+       (save-excursion
+         (gnus-message 5 "Reading %s..." newsrc-file)
+         (set-buffer (find-file-noselect newsrc-file))
+         (buffer-disable-undo (current-buffer))
+         (gnus-newsrc-to-gnus-format)
+         (kill-buffer (current-buffer))
+         (gnus-message 5 "Reading %s...done" newsrc-file)))
       
       ;; Convert old to new.
       (gnus-convert-old-newsrc))))
       
       ;; Convert old to new.
       (gnus-convert-old-newsrc))))
@@ -1755,7 +1752,7 @@ If FORCE is non-nil, the .newsrc file is read."
              (gnus-info-set-level
               info (if (nth 1 group) gnus-level-default-subscribed
                      gnus-level-default-unsubscribed))
              (gnus-info-set-level
               info (if (nth 1 group) gnus-level-default-subscribed
                      gnus-level-default-unsubscribed))
-             (setq gnus-newsrc-alist (cons info gnus-newsrc-alist)))
+             (push info gnus-newsrc-alist))
          (push (setq info
                      (list (car group)
                            (if (nth 1 group) gnus-level-default-subscribed
          (push (setq info
                      (list (car group)
                            (if (nth 1 group) gnus-level-default-subscribed
@@ -1777,16 +1774,15 @@ If FORCE is non-nil, the .newsrc file is read."
     ;; The .el file version of this variable does not begin with
     ;; "options", while the .eld version does, so we just add it if it
     ;; isn't there.
     ;; The .el file version of this variable does not begin with
     ;; "options", while the .eld version does, so we just add it if it
     ;; isn't there.
-    (and
-     gnus-newsrc-options
-     (progn
-       (and (not (string-match "^ *options" gnus-newsrc-options))
-           (setq gnus-newsrc-options (concat "options " gnus-newsrc-options)))
-       (and (not (string-match "\n$" gnus-newsrc-options))
-           (setq gnus-newsrc-options (concat gnus-newsrc-options "\n")))
-       ;; Finally, if we read some options lines, we parse them.
-       (or (string= gnus-newsrc-options "")
-          (gnus-newsrc-parse-options gnus-newsrc-options))))
+    (when
+       gnus-newsrc-options
+      (when (not (string-match "^ *options" gnus-newsrc-options))
+       (setq gnus-newsrc-options (concat "options " gnus-newsrc-options)))
+      (when (not (string-match "\n$" gnus-newsrc-options))
+       (setq gnus-newsrc-options (concat gnus-newsrc-options "\n")))
+      ;; Finally, if we read some options lines, we parse them.
+      (unless (string= gnus-newsrc-options "")
+       (gnus-newsrc-parse-options gnus-newsrc-options)))
 
     (setq gnus-newsrc-alist (nreverse gnus-newsrc-alist))
     (gnus-make-hashtable-from-newsrc-alist)))
 
     (setq gnus-newsrc-alist (nreverse gnus-newsrc-alist))
     (gnus-make-hashtable-from-newsrc-alist)))
@@ -1804,8 +1800,8 @@ If FORCE is non-nil, the .newsrc file is read."
   (setq gnus-newsrc-options "")
   (setq gnus-newsrc-options-n nil)
 
   (setq gnus-newsrc-options "")
   (setq gnus-newsrc-options-n nil)
 
-  (or gnus-active-hashtb
-      (setq gnus-active-hashtb (make-vector 4095 0)))
+  (unless gnus-active-hashtb
+    (setq gnus-active-hashtb (make-vector 4095 0)))
   (let ((buf (current-buffer))
        (already-read (> (length gnus-newsrc-alist) 1))
        group subscribed options-symbol newsrc Options-symbol
   (let ((buf (current-buffer))
        (already-read (> (length gnus-newsrc-alist) 1))
        group subscribed options-symbol newsrc Options-symbol
@@ -1849,9 +1845,10 @@ If FORCE is non-nil, the .newsrc file is read."
        (forward-line -1))
        (symbol
        ;; Group names can be just numbers.  
        (forward-line -1))
        (symbol
        ;; Group names can be just numbers.  
-       (when (numberp symbol) 
+       (when (numberp symbol)
          (setq symbol (intern (int-to-string symbol) gnus-active-hashtb)))
          (setq symbol (intern (int-to-string symbol) gnus-active-hashtb)))
-       (or (boundp symbol) (set symbol nil))
+       (unless (boundp symbol)
+         (set symbol nil))
        ;; It was a group name.
        (setq subscribed (= (following-char) ?:)
              group (symbol-name symbol)
        ;; It was a group name.
        (setq subscribed (= (following-char) ?:)
              group (symbol-name symbol)
@@ -1885,19 +1882,18 @@ If FORCE is non-nil, the .newsrc file is read."
                        ;; This is a buggy line, by we pretend that
                        ;; it's kinda OK.  Perhaps the user should be
                        ;; dinged?
                        ;; This is a buggy line, by we pretend that
                        ;; it's kinda OK.  Perhaps the user should be
                        ;; dinged?
-                       (setq reads (cons num1 reads))
-                     (setq reads
-                           (cons
-                            (cons num1
-                                  (progn
-                                    (narrow-to-region (match-beginning 0)
-                                                      (match-end 0))
-                                    (read buf)))
-                            reads))
+                       (push num1 reads)
+                     (push
+                      (cons num1
+                            (progn
+                              (narrow-to-region (match-beginning 0)
+                                                (match-end 0))
+                              (read buf)))
+                      reads)
                      (widen)))
                ;; It was just a simple number, so we add it to the
                ;; list of ranges.
                      (widen)))
                ;; It was just a simple number, so we add it to the
                ;; list of ranges.
-               (setq reads (cons num1 reads)))
+               (push num1 reads))
              ;; If the next char in ?\n, then we have reached the end
              ;; of the line and return nil.
              (/= (following-char) ?\n))
              ;; If the next char in ?\n, then we have reached the end
              ;; of the line and return nil.
              (/= (following-char) ?\n))
@@ -1907,14 +1903,13 @@ If FORCE is non-nil, the .newsrc file is read."
             (t
              ;; Not numbers and not eol, so this might be a buggy
              ;; line...
             (t
              ;; Not numbers and not eol, so this might be a buggy
              ;; line...
-             (or (eobp)
-                 ;; If it was eob instead of ?\n, we allow it.
-                 (progn
-                   ;; The line was buggy.
-                   (setq group nil)
-                   (gnus-error 3.1 "Mangled line: %s"
-                               (buffer-substring (gnus-point-at-bol)
-                                                 (gnus-point-at-eol)))))
+             (unless (eobp)
+               ;; If it was eob instead of ?\n, we allow it.
+               ;; The line was buggy.
+               (setq group nil)
+               (gnus-error 3.1 "Mangled line: %s"
+                           (buffer-substring (gnus-point-at-bol)
+                                             (gnus-point-at-eol))))
              nil))
          ;; Skip past ", ".  Spaces are illegal in these ranges, but
          ;; we allow them, because it's a common mistake to put a
              nil))
          ;; Skip past ", ".  Spaces are illegal in these ranges, but
          ;; we allow them, because it's a common mistake to put a
@@ -1951,7 +1946,7 @@ If FORCE is non-nil, the .newsrc file is read."
                                     (1+ gnus-level-subscribed)
                                   gnus-level-default-unsubscribed))
                               (nreverse reads))))
                                     (1+ gnus-level-subscribed)
                                   gnus-level-default-unsubscribed))
                               (nreverse reads))))
-           (setq newsrc (cons info newsrc))))))
+           (push info newsrc)))))
       (forward-line 1))
 
     (setq newsrc (nreverse newsrc))
       (forward-line 1))
 
     (setq newsrc (nreverse newsrc))
@@ -1972,7 +1967,7 @@ If FORCE is non-nil, the .newsrc file is read."
              (if (setq entry (assoc (caar prev) newsrc))
                  (setcdr (setq mentry (memq entry newsrc))
                          (cons (car rc) (cdr mentry)))
              (if (setq entry (assoc (caar prev) newsrc))
                  (setcdr (setq mentry (memq entry newsrc))
                          (cons (car rc) (cdr mentry)))
-               (setq newsrc (cons (car rc) newsrc))))
+               (push (car rc) newsrc)))
          (setq prev rc
                rc (cdr rc)))))
 
          (setq prev rc
                rc (cdr rc)))))
 
@@ -1981,8 +1976,8 @@ If FORCE is non-nil, the .newsrc file is read."
     (gnus-make-hashtable-from-newsrc-alist)
 
     ;; Finally, if we read some options lines, we parse them.
     (gnus-make-hashtable-from-newsrc-alist)
 
     ;; Finally, if we read some options lines, we parse them.
-    (or (string= gnus-newsrc-options "")
-       (gnus-newsrc-parse-options gnus-newsrc-options))))
+    (unless (string= gnus-newsrc-options "")
+      (gnus-newsrc-parse-options gnus-newsrc-options))))
 
 ;; Parse options lines to find "options -n !all rec.all" and stuff.
 ;; The return value will be a list on the form
 
 ;; Parse options lines to find "options -n !all rec.all" and stuff.
 ;; The return value will be a list on the form
@@ -2032,14 +2027,16 @@ If FORCE is non-nil, the .newsrc file is read."
              ;; If the word begins with a bang (!), this is a "not"
              ;; spec.  We put this spec (minus the bang) and the
              ;; symbol `ignore' into the list.
              ;; If the word begins with a bang (!), this is a "not"
              ;; spec.  We put this spec (minus the bang) and the
              ;; symbol `ignore' into the list.
-             (setq out (cons (cons (concat
-                                    "^" (buffer-substring
-                                         (1+ (match-beginning 0))
-                                         (match-end 0)))
-                                   'ignore) out))
+             (push (cons (concat
+                          "^" (buffer-substring
+                               (1+ (match-beginning 0))
+                               (match-end 0)))
+                         'ignore)
+                   out)
            ;; There was no bang, so this is a "yes" spec.
            ;; There was no bang, so this is a "yes" spec.
-           (setq out (cons (cons (concat "^" (match-string 0))
-                                 'subscribe) out)))))
+           (push (cons (concat "^" (match-string 0))
+                       'subscribe)
+                 out))))
 
       (setq gnus-newsrc-options-n out))))
 
 
       (setq gnus-newsrc-options-n out))))
 
@@ -2138,7 +2135,8 @@ If FORCE is non-nil, the .newsrc file is read."
       (buffer-disable-undo (current-buffer))
       (erase-buffer)
       ;; Write options.
       (buffer-disable-undo (current-buffer))
       (erase-buffer)
       ;; Write options.
-      (if gnus-newsrc-options (insert gnus-newsrc-options))
+      (when gnus-newsrc-options
+       (insert gnus-newsrc-options))
       ;; Write subscribed and unsubscribed.
       (while (setq info (pop newsrc))
        ;; Don't write foreign groups to .newsrc.
       ;; Write subscribed and unsubscribed.
       (while (setq info (pop newsrc))
        ;; Don't write foreign groups to .newsrc.
@@ -2162,7 +2160,8 @@ If FORCE is non-nil, the .newsrc file is read."
                  (princ (car range))
                  (insert "-")
                  (princ (cdr range)))
                  (princ (car range))
                  (insert "-")
                  (princ (cdr range)))
-               (if ranges (insert ",")))))
+               (when ranges
+                 (insert ",")))))
          (insert "\n")))
       (make-local-variable 'version-control)
       (setq version-control 'never)
          (insert "\n")))
       (make-local-variable 'version-control)
       (setq version-control 'never)
@@ -2190,7 +2189,7 @@ If FORCE is non-nil, the .newsrc file is read."
     (set-buffer gnus-dribble-buffer)
     (let ((slave-name
           (make-temp-name (concat gnus-current-startup-file "-slave-"))))
     (set-buffer gnus-dribble-buffer)
     (let ((slave-name
           (make-temp-name (concat gnus-current-startup-file "-slave-"))))
-      (write-region (point-min) (point-max) slave-name nil 'nomesg))))
+      (gnus-write-buffer slave-name))))
 
 (defun gnus-master-read-slave-newsrc ()
   (let ((slave-files
 
 (defun gnus-master-read-slave-newsrc ()
   (let ((slave-files
@@ -2220,17 +2219,17 @@ If FORCE is non-nil, the .newsrc file is read."
          (erase-buffer)
          (setq file (nth 1 (car slave-files)))
          (insert-file-contents file)
          (erase-buffer)
          (setq file (nth 1 (car slave-files)))
          (insert-file-contents file)
-         (if (condition-case ()
-                 (progn
-                   (eval-buffer (current-buffer))
-                   t)
-               (error
-                (gnus-error 3.2 "Possible error in %s" file)
-                nil))
-             (or gnus-slave            ; Slaves shouldn't delete these files.
-                 (condition-case ()
-                     (delete-file file)
-                   (error nil))))
+         (when (condition-case ()
+                   (progn
+                     (eval-buffer (current-buffer))
+                     t)
+                 (error
+                  (gnus-error 3.2 "Possible error in %s" file)
+                  nil))
+           (unless gnus-slave          ; Slaves shouldn't delete these files.
+             (condition-case ()
+                 (delete-file file)
+               (error nil))))
          (setq slave-files (cdr slave-files))))
       (gnus-message 7 "Reading slave newsrcs...done"))))
 
          (setq slave-files (cdr slave-files))))
       (gnus-message 7 "Reading slave newsrcs...done"))))
 
@@ -2257,9 +2256,9 @@ If FORCE is non-nil, the .newsrc file is read."
       (setq method (gnus-server-to-method method)))
     ;; We create the hashtable whether we manage to read the desc file
     ;; to avoid trying to re-read after a failed read.
       (setq method (gnus-server-to-method method)))
     ;; We create the hashtable whether we manage to read the desc file
     ;; to avoid trying to re-read after a failed read.
-    (or gnus-description-hashtb
-       (setq gnus-description-hashtb
-             (gnus-make-hashtable (length gnus-active-hashtb))))
+    (unless gnus-description-hashtb
+      (setq gnus-description-hashtb
+           (gnus-make-hashtable (length gnus-active-hashtb))))
     ;; Mark this method's desc file as read.
     (gnus-sethash (gnus-group-prefixed-name "" method) "Has read"
                  gnus-description-hashtb)
     ;; Mark this method's desc file as read.
     (gnus-sethash (gnus-group-prefixed-name "" method) "Has read"
                  gnus-description-hashtb)
@@ -2304,9 +2303,9 @@ If FORCE is non-nil, the .newsrc file is read."
                    (error 0)))
            (skip-chars-forward " \t")
            ;; ...  which leads to this line being effectively ignored.
                    (error 0)))
            (skip-chars-forward " \t")
            ;; ...  which leads to this line being effectively ignored.
-           (and (symbolp group)
-                (set group (buffer-substring
-                            (point) (progn (end-of-line) (point)))))
+           (when (symbolp group)
+             (set group (buffer-substring
+                         (point) (progn (end-of-line) (point)))))
            (forward-line 1))))
       (gnus-message 5 "Reading descriptions file...done")
       t))))
            (forward-line 1))))
       (gnus-message 5 "Reading descriptions file...done")
       t))))
index 4443c15..8b0ef0c 100644 (file)
@@ -436,12 +436,12 @@ automatically when it is selected.")
       '(= mark gnus-canceled-mark)
       (custom-face-lookup "yellow" "black" nil
                          nil nil nil))
       '(= mark gnus-canceled-mark)
       (custom-face-lookup "yellow" "black" nil
                          nil nil nil))
-     (cons '(and (> score default) 
+     (cons '(and (> score default)
                 (or (= mark gnus-dormant-mark)
                     (= mark gnus-ticked-mark)))
           (custom-face-lookup 
            "pink" nil nil t nil nil))
                 (or (= mark gnus-dormant-mark)
                     (= mark gnus-ticked-mark)))
           (custom-face-lookup 
            "pink" nil nil t nil nil))
-     (cons '(and (< score default) 
+     (cons '(and (< score default)
                 (or (= mark gnus-dormant-mark)
                     (= mark gnus-ticked-mark)))
           (custom-face-lookup "pink" nil nil 
                 (or (= mark gnus-dormant-mark)
                     (= mark gnus-ticked-mark)))
           (custom-face-lookup "pink" nil nil 
@@ -481,12 +481,12 @@ automatically when it is selected.")
       '(= mark gnus-canceled-mark)
       (custom-face-lookup
        "yellow" "black" nil nil nil nil))
       '(= mark gnus-canceled-mark)
       (custom-face-lookup
        "yellow" "black" nil nil nil nil))
-     (cons '(and (> score default) 
+     (cons '(and (> score default)
                 (or (= mark gnus-dormant-mark)
                     (= mark gnus-ticked-mark)))
           (custom-face-lookup "firebrick" nil nil
                               t nil nil))
                 (or (= mark gnus-dormant-mark)
                     (= mark gnus-ticked-mark)))
           (custom-face-lookup "firebrick" nil nil
                               t nil nil))
-     (cons '(and (< score default) 
+     (cons '(and (< score default)
                 (or (= mark gnus-dormant-mark)
                     (= mark gnus-ticked-mark)))
           (custom-face-lookup "firebrick" nil nil
                 (or (= mark gnus-dormant-mark)
                     (= mark gnus-ticked-mark)))
           (custom-face-lookup "firebrick" nil nil
@@ -788,10 +788,10 @@ If RE-ONLY is non-nil, strip leading `Re:'s only."
     (when (string-match "\\`\\(re\\([[(^][0-9]+[])]?\\)?:[ \t]*\\)+" subject)
       (setq subject (substring subject (match-end 0))))
     ;; Remove uninteresting prefixes.
     (when (string-match "\\`\\(re\\([[(^][0-9]+[])]?\\)?:[ \t]*\\)+" subject)
       (setq subject (substring subject (match-end 0))))
     ;; Remove uninteresting prefixes.
-    (if (and (not re-only)
-            gnus-simplify-ignored-prefixes
-            (string-match gnus-simplify-ignored-prefixes subject))
-       (setq subject (substring subject (match-end 0))))
+    (when (and (not re-only)
+              gnus-simplify-ignored-prefixes
+              (string-match gnus-simplify-ignored-prefixes subject))
+      (setq subject (substring subject (match-end 0))))
     ;; Remove words in parentheses from end.
     (unless re-only
       (while (string-match "[ \t\n]*([^()]*)[ \t\n]*\\'" subject)
     ;; Remove words in parentheses from end.
     (unless re-only
       (while (string-match "[ \t\n]*([^()]*)[ \t\n]*\\'" subject)
@@ -1551,7 +1551,7 @@ increase the score of each group you read."
        ["Go to subject number..." gnus-summary-goto-subject t]
        ["Go to article number..." gnus-summary-goto-article t]
        ["Go to the last article" gnus-summary-goto-last-article t]
        ["Go to subject number..." gnus-summary-goto-subject t]
        ["Go to article number..." gnus-summary-goto-article t]
        ["Go to the last article" gnus-summary-goto-last-article t]
-       ["Pop article off history" gnus-summary-pop-article t]) 
+       ["Pop article off history" gnus-summary-pop-article t])
        ("Sort"
        ["Sort by number" gnus-summary-sort-by-number t]
        ["Sort by author" gnus-summary-sort-by-author t]
        ("Sort"
        ["Sort by number" gnus-summary-sort-by-number t]
        ["Sort by author" gnus-summary-sort-by-author t]
@@ -1648,11 +1648,11 @@ increase the score of each group you read."
                                    (setq outp
                                          (cons
                                           (vector
                                    (setq outp
                                          (cons
                                           (vector
-                                           (caar ps) 
+                                           (caar ps)
                                            (list
                                             'gnus-summary-score-entry
                                             (nth 1 header)
                                            (list
                                             'gnus-summary-score-entry
                                             (nth 1 header)
-                                            (if (or (string= (nth 1 header) 
+                                            (if (or (string= (nth 1 header)
                                                              "head")
                                                     (string= (nth 1 header)
                                                              "body"))
                                                              "head")
                                                     (string= (nth 1 header)
                                                              "body"))
@@ -1801,7 +1801,8 @@ The following commands are available:
 
 (defun gnus-data-enter (after-article number mark pos header level offset)
   (let ((data (gnus-data-find-list after-article)))
 
 (defun gnus-data-enter (after-article number mark pos header level offset)
   (let ((data (gnus-data-find-list after-article)))
-    (or data (error "No such article: %d" after-article))
+    (unless data
+      (error "No such article: %d" after-article))
     (setcdr data (cons (gnus-data-make number mark pos header level)
                       (cdr data)))
     (setq gnus-newsgroup-data-reverse nil)
     (setcdr data (cons (gnus-data-make number mark pos header level)
                       (cdr data)))
     (setq gnus-newsgroup-data-reverse nil)
@@ -1820,10 +1821,12 @@ The following commands are available:
          (progn
            (setcdr list gnus-newsgroup-data)
            (setq gnus-newsgroup-data ilist)
          (progn
            (setcdr list gnus-newsgroup-data)
            (setq gnus-newsgroup-data ilist)
-           (and offset (gnus-data-update-list (cdr list) offset)))
+           (when offset
+             (gnus-data-update-list (cdr list) offset)))
        (setcdr list (cdr data))
        (setcdr data ilist)
        (setcdr list (cdr data))
        (setcdr data ilist)
-       (and offset (gnus-data-update-list (cdr data) offset)))
+       (when offset
+         (gnus-data-update-list (cdr data) offset)))
       (setq gnus-newsgroup-data-reverse nil))))
 
 (defun gnus-data-remove (article &optional offset)
       (setq gnus-newsgroup-data-reverse nil))))
 
 (defun gnus-data-remove (article &optional offset)
@@ -1832,12 +1835,12 @@ The following commands are available:
        (setq gnus-newsgroup-data (cdr gnus-newsgroup-data)
              gnus-newsgroup-data-reverse nil)
       (while (cdr data)
        (setq gnus-newsgroup-data (cdr gnus-newsgroup-data)
              gnus-newsgroup-data-reverse nil)
       (while (cdr data)
-       (and (= (gnus-data-number (cadr data)) article)
-            (progn
-              (setcdr data (cddr data))
-              (and offset (gnus-data-update-list (cdr data) offset))
-              (setq data nil
-                    gnus-newsgroup-data-reverse nil)))
+       (when (= (gnus-data-number (cadr data)) article)
+         (setcdr data (cddr data))
+         (when offset
+           (gnus-data-update-list (cdr data) offset))
+         (setq data nil
+               gnus-newsgroup-data-reverse nil))
        (setq data (cdr data))))))
 
 (defmacro gnus-data-list (backward)
        (setq data (cdr data))))))
 
 (defmacro gnus-data-list (backward)
@@ -1958,8 +1961,8 @@ article number."
     (while (and (setq data (cdr data))
                (> (setq l (gnus-data-level (car data))) level))
       (and (= (1+ level) l)
     (while (and (setq data (cdr data))
                (> (setq l (gnus-data-level (car data))) level))
       (and (= (1+ level) l)
-          (setq children (cons (gnus-data-number (car data))
-                               children))))
+          (push (gnus-data-number (car data))
+                children)))
     (nreverse children)))
 
 (defun gnus-summary-article-parent (&optional number)
     (nreverse children)))
 
 (defun gnus-summary-article-parent (&optional number)
@@ -2131,7 +2134,7 @@ This is all marks except unread, ticked, dormant, and expirable."
          (setq pos (list (cons 'unread (and (search-forward "\200" nil t)
                                             (- (point) 2)))))
          (goto-char (point-min))
          (setq pos (list (cons 'unread (and (search-forward "\200" nil t)
                                             (- (point) 2)))))
          (goto-char (point-min))
-         (push (cons 'replied (and (search-forward "\201" nil t) 
+         (push (cons 'replied (and (search-forward "\201" nil t)
                                    (- (point) 2)))
                pos)
          (goto-char (point-min))
                                    (- (point) 2)))
                pos)
          (goto-char (point-min))
@@ -2158,16 +2161,18 @@ This is all marks except unread, ticked, dormant, and expirable."
         (gnus-tmp-score-char
          (if (or (null gnus-summary-default-score)
                  (<= (abs (- gnus-tmp-score gnus-summary-default-score))
         (gnus-tmp-score-char
          (if (or (null gnus-summary-default-score)
                  (<= (abs (- gnus-tmp-score gnus-summary-default-score))
-                     gnus-summary-zcore-fuzz)) ? 
+                     gnus-summary-zcore-fuzz))
+             ? 
            (if (< gnus-tmp-score gnus-summary-default-score)
                gnus-score-below-mark gnus-score-over-mark)))
            (if (< gnus-tmp-score gnus-summary-default-score)
                gnus-score-below-mark gnus-score-over-mark)))
-        (gnus-tmp-replied (cond (gnus-tmp-process gnus-process-mark)
-                                ((memq gnus-tmp-current gnus-newsgroup-cached)
-                                 gnus-cached-mark)
-                                (gnus-tmp-replied gnus-replied-mark)
-                                ((memq gnus-tmp-current gnus-newsgroup-saved)
-                                 gnus-saved-mark)
-                                (t gnus-unread-mark)))
+        (gnus-tmp-replied
+         (cond (gnus-tmp-process gnus-process-mark)
+               ((memq gnus-tmp-current gnus-newsgroup-cached)
+                gnus-cached-mark)
+               (gnus-tmp-replied gnus-replied-mark)
+               ((memq gnus-tmp-current gnus-newsgroup-saved)
+                gnus-saved-mark)
+               (t gnus-unread-mark)))
         (gnus-tmp-from (mail-header-from gnus-tmp-header))
         (gnus-tmp-name
          (cond
         (gnus-tmp-from (mail-header-from gnus-tmp-header))
         (gnus-tmp-name
          (cond
@@ -2188,7 +2193,8 @@ This is all marks except unread, ticked, dormant, and expirable."
         (buffer-read-only nil))
     (when (string= gnus-tmp-name "")
       (setq gnus-tmp-name gnus-tmp-from))
         (buffer-read-only nil))
     (when (string= gnus-tmp-name "")
       (setq gnus-tmp-name gnus-tmp-from))
-    (or (numberp gnus-tmp-lines) (setq gnus-tmp-lines 0))
+    (unless (numberp gnus-tmp-lines)
+      (setq gnus-tmp-lines 0))
     (gnus-put-text-property
      (point)
      (progn (eval gnus-summary-line-format-spec) (point))
     (gnus-put-text-property
      (point)
      (progn (eval gnus-summary-line-format-spec) (point))
@@ -2220,9 +2226,11 @@ This is all marks except unread, ticked, dormant, and expirable."
        (gnus-summary-update-mark
         (if (or (null gnus-summary-default-score)
                 (<= (abs (- score gnus-summary-default-score))
        (gnus-summary-update-mark
         (if (or (null gnus-summary-default-score)
                 (<= (abs (- score gnus-summary-default-score))
-                    gnus-summary-zcore-fuzz)) ? 
+                    gnus-summary-zcore-fuzz))
+            ? 
           (if (< score gnus-summary-default-score)
           (if (< score gnus-summary-default-score)
-              gnus-score-below-mark gnus-score-over-mark)) 'score))
+              gnus-score-below-mark gnus-score-over-mark))
+        'score))
       ;; Do visual highlighting.
       (when (gnus-visual-p 'summary-highlight 'highlight)
        (run-hooks 'gnus-summary-update-hook)))))
       ;; Do visual highlighting.
       (when (gnus-visual-p 'summary-highlight 'highlight)
        (run-hooks 'gnus-summary-update-hook)))))
@@ -2267,7 +2275,7 @@ the thread are to be displayed."
       (and (consp elem)                        ; Has to be a cons.
           (consp (cdr elem))           ; The cdr has to be a list.
           (symbolp (car elem))         ; Has to be a symbol in there.
       (and (consp elem)                        ; Has to be a cons.
           (consp (cdr elem))           ; The cdr has to be a list.
           (symbolp (car elem))         ; Has to be a symbol in there.
-          (not (memq (car elem) 
+          (not (memq (car elem)
                      '(quit-config to-address to-list to-group)))
           (progn                       ; So we set it.
             (make-local-variable (car elem))
                      '(quit-config to-address to-list to-group)))
           (progn                       ; So we set it.
             (make-local-variable (car elem))
@@ -2304,12 +2312,7 @@ If NO-DISPLAY, don't generate a summary buffer."
              (set-buffer gnus-group-buffer)
              (gnus-group-jump-to-group group)
              (gnus-group-next-unread-group 1))
              (set-buffer gnus-group-buffer)
              (gnus-group-jump-to-group group)
              (gnus-group-next-unread-group 1))
-         (if (not (buffer-name (car quit-config)))
-             (gnus-configure-windows 'group 'force)
-           (set-buffer (car quit-config))
-           (and (eq major-mode 'gnus-summary-mode)
-                (gnus-set-global-variables))
-           (gnus-configure-windows (cdr quit-config)))))
+         (gnus-handle-ephemeral-exit quit-config)))
       (gnus-message 3 "Can't select group")
       nil)
      ;; The user did a `C-g' while prompting for number of articles,
       (gnus-message 3 "Can't select group")
       nil)
      ;; The user did a `C-g' while prompting for number of articles,
@@ -2326,12 +2329,7 @@ If NO-DISPLAY, don't generate a summary buffer."
            (gnus-group-jump-to-group group)
            (gnus-group-next-unread-group 1)
            (gnus-configure-windows 'group 'force))
            (gnus-group-jump-to-group group)
            (gnus-group-next-unread-group 1)
            (gnus-configure-windows 'group 'force))
-       (if (not (buffer-name (car quit-config)))
-           (gnus-configure-windows 'group 'force)
-         (set-buffer (car quit-config))
-         (and (eq major-mode 'gnus-summary-mode)
-              (gnus-set-global-variables))
-         (gnus-configure-windows (cdr quit-config))))
+       (gnus-handle-ephemeral-exit quit-config))
       ;; Finally signal the quit.
       (signal 'quit nil))
      ;; The group was successfully selected.
       ;; Finally signal the quit.
       (signal 'quit nil))
      ;; The group was successfully selected.
@@ -2490,22 +2488,22 @@ If NO-DISPLAY, don't generate a summary buffer."
        (setq subject (gnus-general-simplify-subject
                       (setq whole-subject (mail-header-subject 
                                            (caar threads)))))
        (setq subject (gnus-general-simplify-subject
                       (setq whole-subject (mail-header-subject 
                                            (caar threads)))))
-       (if subject
-           (if (setq hthread (gnus-gethash subject hashtb))
-               (progn
-                 ;; We enter a dummy root into the thread, if we
-                 ;; haven't done that already.
-                 (unless (stringp (caar hthread))
-                   (setcar hthread (list whole-subject (car hthread))))
-                 ;; We add this new gathered thread to this gathered
-                 ;; thread.
-                 (setcdr (car hthread)
-                         (nconc (cdar hthread) (list (car threads))))
-                 ;; Remove it from the list of threads.
-                 (setcdr prev (cdr threads))
-                 (setq threads prev))
-             ;; Enter this thread into the hash table.
-             (gnus-sethash subject threads hashtb)))
+       (when subject
+         (if (setq hthread (gnus-gethash subject hashtb))
+             (progn
+               ;; We enter a dummy root into the thread, if we
+               ;; haven't done that already.
+               (unless (stringp (caar hthread))
+                 (setcar hthread (list whole-subject (car hthread))))
+               ;; We add this new gathered thread to this gathered
+               ;; thread.
+               (setcdr (car hthread)
+                       (nconc (cdar hthread) (list (car threads))))
+               ;; Remove it from the list of threads.
+               (setcdr prev (cdr threads))
+               (setq threads prev))
+           ;; Enter this thread into the hash table.
+           (gnus-sethash subject threads hashtb)))
        (setq prev threads)
        (setq threads (cdr threads)))
       result)))
        (setq prev threads)
        (setq threads (cdr threads)))
       result)))
@@ -2592,7 +2590,7 @@ If NO-DISPLAY, don't generate a summary buffer."
          (while (search-backward ">" nil t)
            (setq end (1+ (point)))
            (when (search-backward "<" nil t)
          (while (search-backward ">" nil t)
            (setq end (1+ (point)))
            (when (search-backward "<" nil t)
-             (push (list (incf generation) 
+             (push (list (incf generation)
                          child (setq child (buffer-substring (point) end))
                          subject)
                    relations)))
                          child (setq child (buffer-substring (point) end))
                          subject)
                    relations)))
@@ -2607,13 +2605,13 @@ If NO-DISPLAY, don't generate a summary buffer."
                  ;; Make this article the parent of these threads.
                  (setcar (symbol-value cthread)
                          (vector gnus-reffed-article-number 
                  ;; Make this article the parent of these threads.
                  (setcar (symbol-value cthread)
                          (vector gnus-reffed-article-number 
-                                 (cadddr relation) 
+                                 (cadddr relation)
                                  "" ""
                                  "" ""
-                                 (cadr relation) 
+                                 (cadr relation)
                                  (or (caddr relation) "") 0 0 "")))
              (set cthread (list (vector gnus-reffed-article-number
                                  (or (caddr relation) "") 0 0 "")))
              (set cthread (list (vector gnus-reffed-article-number
-                                        (cadddr relation) 
-                                        "" "" (cadr relation) 
+                                        (cadddr relation)
+                                        "" "" (cadr relation)
                                         (or (caddr relation) "") 0 0 ""))))
        (push gnus-reffed-article-number gnus-newsgroup-limit)
        (push gnus-reffed-article-number gnus-newsgroup-sparse)
                                         (or (caddr relation) "") 0 0 ""))))
        (push gnus-reffed-article-number gnus-newsgroup-limit)
        (push gnus-reffed-article-number gnus-newsgroup-sparse)
@@ -2721,9 +2719,9 @@ If NO-DISPLAY, don't generate a summary buffer."
         (parent
          (gnus-id-to-thread
           (or (gnus-parent-id 
         (parent
          (gnus-id-to-thread
           (or (gnus-parent-id 
-               (if (and references
-                        (not (equal "" references)))
-                   references))
+               (when (and references
+                          (not (equal "" references)))
+                 references))
               "none")))
         (buffer-read-only nil)
         (old (car thread))
               "none")))
         (buffer-read-only nil)
         (old (car thread))
@@ -2772,7 +2770,9 @@ If NO-DISPLAY, don't generate a summary buffer."
     (let (threads)
       ;; We then insert this thread into the summary buffer.
       (let (gnus-newsgroup-data gnus-newsgroup-threads)
     (let (threads)
       ;; We then insert this thread into the summary buffer.
       (let (gnus-newsgroup-data gnus-newsgroup-threads)
-       (gnus-summary-prepare-threads (gnus-cut-threads (list thread)))
+       (if gnus-show-threads
+           (gnus-summary-prepare-threads (gnus-cut-threads (list thread)))
+         (gnus-summary-prepare-unthreaded thread))
        (setq data (nreverse gnus-newsgroup-data))
        (setq threads gnus-newsgroup-threads))
       ;; We splice the new data into the data structure.
        (setq data (nreverse gnus-newsgroup-data))
        (setq threads gnus-newsgroup-threads))
       ;; We splice the new data into the data structure.
@@ -3026,10 +3026,10 @@ Unscored articles will be counted as having a score of zero."
              (mapcar 'gnus-thread-total-score
                      (cdr (gnus-gethash (mail-header-id root)
                                         gnus-newsgroup-dependencies)))
              (mapcar 'gnus-thread-total-score
                      (cdr (gnus-gethash (mail-header-id root)
                                         gnus-newsgroup-dependencies)))
-             (if (> (mail-header-number root) 0)
-                 (list (or (cdr (assq (mail-header-number root) 
-                                      gnus-newsgroup-scored))
-                           gnus-summary-default-score 0))))
+             (when (> (mail-header-number root) 0)
+               (list (or (cdr (assq (mail-header-number root)
+                                    gnus-newsgroup-scored))
+                         gnus-summary-default-score 0))))
             (list gnus-summary-default-score)
             '(0))))
 
             (list gnus-summary-default-score)
             '(0))))
 
@@ -3082,10 +3082,10 @@ or a straight list of headers."
                      thread (list (car gnus-tmp-new-adopts))
                      gnus-tmp-header (caar thread)
                      gnus-tmp-new-adopts (cdr gnus-tmp-new-adopts))
                      thread (list (car gnus-tmp-new-adopts))
                      gnus-tmp-header (caar thread)
                      gnus-tmp-new-adopts (cdr gnus-tmp-new-adopts))
-             (if new-roots
-                 (setq thread (list (car new-roots))
-                       gnus-tmp-header (caar thread)
-                       new-roots (cdr new-roots))))
+             (when new-roots
+               (setq thread (list (car new-roots))
+                     gnus-tmp-header (caar thread)
+                     new-roots (cdr new-roots))))
 
          (if threads
              ;; If there are some threads, we do them before the
 
          (if threads
              ;; If there are some threads, we do them before the
@@ -3234,7 +3234,8 @@ or a straight list of headers."
             gnus-tmp-score-char
             (if (or (null gnus-summary-default-score)
                     (<= (abs (- gnus-tmp-score gnus-summary-default-score))
             gnus-tmp-score-char
             (if (or (null gnus-summary-default-score)
                     (<= (abs (- gnus-tmp-score gnus-summary-default-score))
-                        gnus-summary-zcore-fuzz)) ? 
+                        gnus-summary-zcore-fuzz))
+                ? 
               (if (< gnus-tmp-score gnus-summary-default-score)
                   gnus-score-below-mark gnus-score-over-mark))
             gnus-tmp-replied
               (if (< gnus-tmp-score gnus-summary-default-score)
                   gnus-score-below-mark gnus-score-over-mark))
             gnus-tmp-replied
@@ -3262,7 +3263,8 @@ or a straight list of headers."
              (t gnus-tmp-from)))
            (when (string= gnus-tmp-name "")
              (setq gnus-tmp-name gnus-tmp-from))
              (t gnus-tmp-from)))
            (when (string= gnus-tmp-name "")
              (setq gnus-tmp-name gnus-tmp-from))
-           (or (numberp gnus-tmp-lines) (setq gnus-tmp-lines 0))
+           (unless (numberp gnus-tmp-lines)
+             (setq gnus-tmp-lines 0))
            (gnus-put-text-property
             (point)
             (progn (eval gnus-summary-line-format-spec) (point))
            (gnus-put-text-property
             (point)
             (progn (eval gnus-summary-line-format-spec) (point))
@@ -3305,11 +3307,11 @@ or a straight list of headers."
                  gnus-newsgroup-reads)))
 
        (setq mark (gnus-article-mark number))
                  gnus-newsgroup-reads)))
 
        (setq mark (gnus-article-mark number))
-       (setq gnus-newsgroup-data
-             (cons (gnus-data-make number mark (1+ (point)) header 0)
-                   gnus-newsgroup-data))
+       (push (gnus-data-make number mark (1+ (point)) header 0)
+             gnus-newsgroup-data)
        (gnus-summary-insert-line
        (gnus-summary-insert-line
-        header 0 nil mark (memq number gnus-newsgroup-replied)
+        header 0 number
+        mark (memq number gnus-newsgroup-replied)
         (memq number gnus-newsgroup-expirable)
         (mail-header-subject header) nil
         (cdr (assq number gnus-newsgroup-scored))
         (memq number gnus-newsgroup-expirable)
         (mail-header-subject header) nil
         (cdr (assq number gnus-newsgroup-scored))
@@ -3322,9 +3324,9 @@ If READ-ALL is non-nil, all articles in the group are selected."
         (info (nth 2 entry))
         articles fetched-articles cached)
 
         (info (nth 2 entry))
         articles fetched-articles cached)
 
-    (or (gnus-check-server
-        (setq gnus-current-select-method (gnus-find-method-for-group group)))
-       (error "Couldn't open server"))
+    (unless (gnus-check-server
+            (setq gnus-current-select-method (gnus-find-method-for-group group)))
+      (error "Couldn't open server"))
 
     (or (and entry (not (eq (car entry) t))) ; Either it's active...
        (gnus-activate-group group)     ; Or we can activate it...
 
     (or (and entry (not (eq (car entry) t))) ; Either it's active...
        (gnus-activate-group group)     ; Or we can activate it...
@@ -3338,7 +3340,7 @@ If READ-ALL is non-nil, all articles in the group are selected."
       (when (equal major-mode 'gnus-summary-mode)
        (kill-buffer (current-buffer)))
       (error "Couldn't request group %s: %s"
       (when (equal major-mode 'gnus-summary-mode)
        (kill-buffer (current-buffer)))
       (error "Couldn't request group %s: %s"
-            group (gnus-status-message group)))      
+            group (gnus-status-message group)))
 
     (setq gnus-newsgroup-name group)
     (setq gnus-newsgroup-unselected nil)
 
     (setq gnus-newsgroup-name group)
     (setq gnus-newsgroup-unselected nil)
@@ -3483,12 +3485,12 @@ If READ-ALL is non-nil, all articles in the group are selected."
            (setq number (length articles)))
        (setq articles (copy-sequence articles)))
 
            (setq number (length articles)))
        (setq articles (copy-sequence articles)))
 
-      (if (< (abs select) number)
-         (if (< select 0)
-             ;; Select the N oldest articles.
-             (setcdr (nthcdr (1- (abs select)) articles) nil)
-           ;; Select the N most recent articles.
-           (setq articles (nthcdr (- number select) articles))))
+      (when (< (abs select) number)
+       (if (< select 0)
+           ;; Select the N oldest articles.
+           (setcdr (nthcdr (1- (abs select)) articles) nil)
+         ;; Select the N most recent articles.
+         (setq articles (nthcdr (- number select) articles))))
       (setq gnus-newsgroup-unselected
            (gnus-sorted-intersection
             gnus-newsgroup-unreads
       (setq gnus-newsgroup-unselected
            (gnus-sorted-intersection
             gnus-newsgroup-unreads
@@ -3498,8 +3500,8 @@ If READ-ALL is non-nil, all articles in the group are selected."
 (defun gnus-killed-articles (killed articles)
   (let (out)
     (while articles
 (defun gnus-killed-articles (killed articles)
   (let (out)
     (while articles
-      (if (inline (gnus-member-of-range (car articles) killed))
-         (setq out (cons (car articles) out)))
+      (when (inline (gnus-member-of-range (car articles) killed))
+       (push (car articles) out))
       (setq articles (cdr articles)))
     out))
 
       (setq articles (cdr articles)))
     out))
 
@@ -3620,7 +3622,8 @@ If WHERE is `summary', the summary mode line format will be used."
               (gnus-tmp-unselected (length gnus-newsgroup-unselected))
               (gnus-tmp-unread-and-unselected
                (cond ((and (zerop gnus-tmp-unread-and-unticked)
               (gnus-tmp-unselected (length gnus-newsgroup-unselected))
               (gnus-tmp-unread-and-unselected
                (cond ((and (zerop gnus-tmp-unread-and-unticked)
-                           (zerop gnus-tmp-unselected)) "")
+                           (zerop gnus-tmp-unselected))
+                      "")
                      ((zerop gnus-tmp-unselected)
                       (format "{%d more}" gnus-tmp-unread-and-unticked))
                      (t (format "{%d(+%d) more}"
                      ((zerop gnus-tmp-unselected)
                       (format "{%d more}" gnus-tmp-unread-and-unticked))
                      (t (format "{%d(+%d) more}"
@@ -3630,7 +3633,8 @@ If WHERE is `summary', the summary mode line format will be used."
                (if (and gnus-current-headers
                         (vectorp gnus-current-headers))
                    (gnus-mode-string-quote
                (if (and gnus-current-headers
                         (vectorp gnus-current-headers))
                    (gnus-mode-string-quote
-                    (mail-header-subject gnus-current-headers)) ""))
+                    (mail-header-subject gnus-current-headers))
+                 ""))
               max-len
               gnus-tmp-header);; passed as argument to any user-format-funcs
          (setq mode-string (eval mformat))
               max-len
               gnus-tmp-header);; passed as argument to any user-format-funcs
          (setq mode-string (eval mformat))
@@ -3694,8 +3698,8 @@ The resulting hash table is returned, or nil if no Xrefs were found."
             (and (prog1
                      (setq entry (gnus-gethash name gnus-newsrc-hashtb)
                            info (nth 2 entry))
             (and (prog1
                      (setq entry (gnus-gethash name gnus-newsrc-hashtb)
                            info (nth 2 entry))
-                   (if (stringp (setq nth4 (gnus-info-method info)))
-                       (setq nth4 (gnus-server-to-method nth4))))
+                   (when (stringp (setq nth4 (gnus-info-method info)))
+                     (setq nth4 (gnus-server-to-method nth4))))
                  ;; Only do the xrefs if the group has the same
                  ;; select method as the group we have just read.
                  (or (gnus-methods-equal-p
                  ;; Only do the xrefs if the group has the same
                  ;; select method as the group we have just read.
                  (or (gnus-methods-equal-p
@@ -3913,7 +3917,8 @@ The resulting hash table is returned, or nil if no Xrefs were found."
                    (mail-header-set-xref
                     (car (symbol-value id-dep))
                     (concat (or (mail-header-xref
                    (mail-header-set-xref
                     (car (symbol-value id-dep))
                     (concat (or (mail-header-xref
-                                 (car (symbol-value id-dep))) "")
+                                 (car (symbol-value id-dep)))
+                                "")
                             (or (mail-header-xref header) "")))
                    (setq header nil))
                (setcar (symbol-value id-dep) header))
                             (or (mail-header-xref header) "")))
                    (setq header nil))
                (setcar (symbol-value id-dep) header))
@@ -3924,7 +3929,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
                        (nconc (cdr (symbol-value ref-dep))
                               (list (symbol-value id-dep))))
              (set ref-dep (list nil (symbol-value id-dep))))
                        (nconc (cdr (symbol-value ref-dep))
                               (list (symbol-value id-dep))))
              (set ref-dep (list nil (symbol-value id-dep))))
-           (setq headers (cons header headers)))
+           (push header headers))
          (goto-char (point-max))
          (widen))
        (nreverse headers)))))
          (goto-char (point-max))
          (widen))
        (nreverse headers)))))
@@ -3938,7 +3943,8 @@ The resulting hash table is returned, or nil if no Xrefs were found."
           0
         (let ((num (condition-case nil (read buffer) (error nil))))
           (if (numberp num) num 0)))
           0
         (let ((num (condition-case nil (read buffer) (error nil))))
           (if (numberp num) num 0)))
-     (or (eobp) (forward-char 1))))
+     (unless (eobp)
+       (forward-char 1))))
 
 (defmacro gnus-nov-skip-field ()
   '(search-forward "\t" eol 'move))
 
 (defmacro gnus-nov-skip-field ()
   '(search-forward "\t" eol 'move))
@@ -3957,7 +3963,8 @@ The resulting hash table is returned, or nil if no Xrefs were found."
 
     ;; overview: [num subject from date id refs chars lines misc]
     (narrow-to-region (point) eol)
 
     ;; overview: [num subject from date id refs chars lines misc]
     (narrow-to-region (point) eol)
-    (or (eobp) (forward-char))
+    (unless (eobp)
+      (forward-char))
 
     (setq header
          (vector
 
     (setq header
          (vector
@@ -4004,7 +4011,8 @@ The resulting hash table is returned, or nil if no Xrefs were found."
              (mail-header-set-xref
               (car (symbol-value id-dep))
               (concat (or (mail-header-xref
              (mail-header-set-xref
               (car (symbol-value id-dep))
               (concat (or (mail-header-xref
-                           (car (symbol-value id-dep))) "")
+                           (car (symbol-value id-dep)))
+                          "")
                       (or (mail-header-xref header) "")))
              (setq header nil))
          (setcar (symbol-value id-dep) header))
                       (or (mail-header-xref header) "")))
              (setq header nil))
          (setcar (symbol-value id-dep) header))
@@ -4068,14 +4076,13 @@ This is meant to be called in `gnus-article-internal-prepare-hook'."
          (save-restriction
            (nnheader-narrow-to-headers)
            (goto-char (point-min))
          (save-restriction
            (nnheader-narrow-to-headers)
            (goto-char (point-min))
-           (if (or (and (eq (downcase (following-char)) ?x)
-                        (looking-at "Xref:"))
-                   (search-forward "\nXref:" nil t))
-               (progn
-                 (goto-char (1+ (match-end 0)))
-                 (setq xref (buffer-substring (point)
-                                              (progn (end-of-line) (point))))
-                 (mail-header-set-xref headers xref))))))))
+           (when (or (and (eq (downcase (following-char)) ?x)
+                          (looking-at "Xref:"))
+                     (search-forward "\nXref:" nil t))
+             (goto-char (1+ (match-end 0)))
+             (setq xref (buffer-substring (point)
+                                          (progn (end-of-line) (point))))
+             (mail-header-set-xref headers xref)))))))
 
 (defun gnus-summary-insert-subject (id &optional old-header use-old-header)
   "Find article ID and insert the summary line for that article."
 
 (defun gnus-summary-insert-subject (id &optional old-header use-old-header)
   "Find article ID and insert the summary line for that article."
@@ -4097,7 +4104,7 @@ This is meant to be called in `gnus-article-internal-prepare-hook'."
       (when old-header
        (mail-header-set-number header (mail-header-number old-header)))
       (setq gnus-newsgroup-sparse
       (when old-header
        (mail-header-set-number header (mail-header-number old-header)))
       (setq gnus-newsgroup-sparse
-           (delq (setq number (mail-header-number header)) 
+           (delq (setq number (mail-header-number header))
                  gnus-newsgroup-sparse))
       (setq gnus-newsgroup-ancient (delq number gnus-newsgroup-ancient))
       (gnus-rebuild-thread (mail-header-id header))
                  gnus-newsgroup-sparse))
       (setq gnus-newsgroup-ancient (delq number gnus-newsgroup-ancient))
       (gnus-rebuild-thread (mail-header-id header))
@@ -4108,10 +4115,10 @@ This is meant to be called in `gnus-article-internal-prepare-hook'."
       ;; article if ID is a number -- so that the next `P' or `N'
       ;; command will fetch the previous (or next) article even
       ;; if the one we tried to fetch this time has been canceled.
       ;; article if ID is a number -- so that the next `P' or `N'
       ;; command will fetch the previous (or next) article even
       ;; if the one we tried to fetch this time has been canceled.
-      (and (> number gnus-newsgroup-end)
-          (setq gnus-newsgroup-end number))
-      (and (< number gnus-newsgroup-begin)
-          (setq gnus-newsgroup-begin number))
+      (when (> number gnus-newsgroup-end)
+       (setq gnus-newsgroup-end number))
+      (when (< number gnus-newsgroup-begin)
+       (setq gnus-newsgroup-begin number))
       (setq gnus-newsgroup-unselected
            (delq number gnus-newsgroup-unselected)))
     ;; Report back a success?
       (setq gnus-newsgroup-unselected
            (delq number gnus-newsgroup-unselected)))
     ;; Report back a success?
@@ -4195,9 +4202,9 @@ taken into consideration."
 If optional argument BACKWARD is non-nil, search backward instead."
   (save-excursion
     (set-buffer gnus-group-buffer)
 If optional argument BACKWARD is non-nil, search backward instead."
   (save-excursion
     (set-buffer gnus-group-buffer)
-    (if (gnus-group-search-forward
-        backward nil (if use-level (gnus-group-group-level) nil))
-       (gnus-group-group-name))))
+    (when (gnus-group-search-forward
+          backward nil (if use-level (gnus-group-group-level) nil))
+      (gnus-group-group-name))))
 
 (defun gnus-summary-best-group (&optional exclude-group)
   "Find the name of the best unread group.
 
 (defun gnus-summary-best-group (&optional exclude-group)
   "Find the name of the best unread group.
@@ -4241,19 +4248,18 @@ If EXCLUDE-GROUP, do not go to this group."
                   (not unread)
                   (not (gnus-data-unread-p (car arts)))))
       (setq arts (cdr arts)))
                   (not unread)
                   (not (gnus-data-unread-p (car arts)))))
       (setq arts (cdr arts)))
-    (if (setq result
-             (if unread
-                 (progn
-                   (while arts
-                     (and (gnus-data-unread-p (car arts))
-                          (setq result (car arts)
-                                arts nil))
-                     (setq arts (cdr arts)))
-                   result)
-               (car arts)))
-       (progn
-         (goto-char (gnus-data-pos result))
-         (gnus-data-number result)))))
+    (when (setq result
+               (if unread
+                   (progn
+                     (while arts
+                       (when (gnus-data-unread-p (car arts))
+                         (setq result (car arts)
+                               arts nil))
+                       (setq arts (cdr arts)))
+                     result)
+                 (car arts)))
+      (goto-char (gnus-data-pos result))
+      (gnus-data-number result))))
 
 (defun gnus-summary-find-subject (subject &optional unread backward article)
   (let* ((simp-subject (gnus-simplify-subject-fully subject))
 
 (defun gnus-summary-find-subject (subject &optional unread backward article)
   (let* ((simp-subject (gnus-simplify-subject-fully subject))
@@ -4334,8 +4340,8 @@ displayed, no centering will be performed."
   (if (eq (current-buffer) (get-buffer gnus-group-buffer))
       (save-window-excursion
        ;; Take care of tree window mode.
   (if (eq (current-buffer) (get-buffer gnus-group-buffer))
       (save-window-excursion
        ;; Take care of tree window mode.
-       (if (get-buffer-window gnus-group-buffer)
-           (pop-to-buffer gnus-group-buffer))
+       (when (get-buffer-window gnus-group-buffer)
+         (pop-to-buffer gnus-group-buffer))
        (gnus-group-jump-to-group newsgroup))
     (save-excursion
       ;; Take care of tree window mode.
        (gnus-group-jump-to-group newsgroup))
     (save-excursion
       ;; Take care of tree window mode.
@@ -4361,20 +4367,21 @@ displayed, no centering will be performed."
       (if (not (listp (cdr read)))
          (setq first (1+ (cdr read)))
        ;; `read' is a list of ranges.
       (if (not (listp (cdr read)))
          (setq first (1+ (cdr read)))
        ;; `read' is a list of ranges.
-       (if (/= (setq nlast (or (and (numberp (car read)) (car read))
-                               (caar read))) 1)
-           (setq first 1))
+       (when (/= (setq nlast (or (and (numberp (car read)) (car read))
+                                 (caar read)))
+                 1)
+         (setq first 1))
        (while read
        (while read
-         (if first
-             (while (< first nlast)
-               (setq unread (cons first unread))
-               (setq first (1+ first))))
+         (when first
+           (while (< first nlast)
+             (push first unread)
+             (setq first (1+ first))))
          (setq first (1+ (if (atom (car read)) (car read) (cdar read))))
          (setq nlast (if (atom (cadr read)) (cadr read) (caadr read)))
          (setq read (cdr read)))))
     ;; And add the last unread articles.
     (while (<= first last)
          (setq first (1+ (if (atom (car read)) (car read) (cdar read))))
          (setq nlast (if (atom (cadr read)) (cadr read) (caadr read)))
          (setq read (cdr read)))))
     ;; And add the last unread articles.
     (while (<= first last)
-      (setq unread (cons first unread))
+      (push first unread)
       (setq first (1+ first)))
     ;; Return the list of unread articles.
     (nreverse unread)))
       (setq first (1+ first)))
     ;; Return the list of unread articles.
     (nreverse unread)))
@@ -4464,7 +4471,8 @@ The prefix argument ALL means to select all articles."
               (setq gnus-newsgroup-unselected
                     (sort gnus-newsgroup-unselected '<)))
              (setq gnus-newsgroup-unreads
               (setq gnus-newsgroup-unselected
                     (sort gnus-newsgroup-unselected '<)))
              (setq gnus-newsgroup-unreads
-                   (sort gnus-newsgroup-unreads '<))) t)))
+                   (sort gnus-newsgroup-unreads '<)))
+            t)))
     (unless (listp (cdr gnus-newsgroup-killed))
       (setq gnus-newsgroup-killed (list gnus-newsgroup-killed)))
     (let ((headers gnus-newsgroup-headers))
     (unless (listp (cdr gnus-newsgroup-killed))
       (setq gnus-newsgroup-killed (list gnus-newsgroup-killed)))
     (let ((headers gnus-newsgroup-headers))
@@ -4486,8 +4494,8 @@ The prefix argument ALL means to select all articles."
        (gnus-score-save))
       ;; Do not switch windows but change the buffer to work.
       (set-buffer gnus-group-buffer)
        (gnus-score-save))
       ;; Do not switch windows but change the buffer to work.
       (set-buffer gnus-group-buffer)
-      (or (gnus-ephemeral-group-p gnus-newsgroup-name)
-         (gnus-group-update-group group)))))
+      (unless (gnus-ephemeral-group-p gnus-newsgroup-name)
+       (gnus-group-update-group group)))))
 
 (defun gnus-summary-exit (&optional temporary)
   "Exit reading current newsgroup, and then return to group selection mode.
 
 (defun gnus-summary-exit (&optional temporary)
   "Exit reading current newsgroup, and then return to group selection mode.
@@ -4545,8 +4553,8 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
        (set-buffer gnus-group-buffer)
        (gnus-summary-clear-local-variables)
        ;; Return to group mode buffer.
        (set-buffer gnus-group-buffer)
        (gnus-summary-clear-local-variables)
        ;; Return to group mode buffer.
-       (if (eq mode 'gnus-summary-mode)
-           (gnus-kill-buffer buf)))
+       (when (eq mode 'gnus-summary-mode)
+         (gnus-kill-buffer buf)))
       (setq gnus-current-select-method gnus-select-method)
       (pop-to-buffer gnus-group-buffer)
       ;; Clear the current group name.
       (setq gnus-current-select-method gnus-select-method)
       (pop-to-buffer gnus-group-buffer)
       ;; Clear the current group name.
@@ -4555,21 +4563,7 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
            (gnus-group-jump-to-group group)
            (gnus-group-next-unread-group 1)
            (gnus-configure-windows 'group 'force))
            (gnus-group-jump-to-group group)
            (gnus-group-next-unread-group 1)
            (gnus-configure-windows 'group 'force))
-       (if (not (buffer-name (car quit-config)))
-           (gnus-configure-windows 'group 'force)
-         (set-buffer (car quit-config))
-         (cond ((eq major-mode 'gnus-summary-mode)
-                (gnus-set-global-variables))
-               ((eq major-mode 'gnus-article-mode)
-                (save-excursion
-                  ;; The `gnus-summary-buffer' variable may point
-                  ;; to the old summary buffer when using a single
-                  ;; article buffer.
-                  (unless (gnus-buffer-live-p gnus-summary-buffer)
-                    (set-buffer gnus-group-buffer))
-                  (set-buffer gnus-summary-buffer)
-                  (gnus-set-global-variables))))
-         (gnus-configure-windows (cdr quit-config) 'force)))
+       (gnus-handle-ephemeral-exit quit-config))
       (unless quit-config
        (setq gnus-newsgroup-name nil)))))
 
       (unless quit-config
        (setq gnus-newsgroup-name nil)))))
 
@@ -4610,12 +4604,35 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
       (when (equal (gnus-group-group-name) group)
        (gnus-group-next-unread-group 1))
       (when quit-config
       (when (equal (gnus-group-group-name) group)
        (gnus-group-next-unread-group 1))
       (when quit-config
-       (if (not (buffer-name (car quit-config)))
-           (gnus-configure-windows 'group 'force)
-         (set-buffer (car quit-config))
-         (when (eq major-mode 'gnus-summary-mode)
-           (gnus-set-global-variables))
-         (gnus-configure-windows (cdr quit-config)))))))
+        (gnus-handle-ephemeral-exit quit-config)))))
+
+(defun gnus-handle-ephemeral-exit (quit-config)
+  "Handle movement when leaving an ephemeral group.  The state
+which existed when entering the ephemeral is reset."
+  (if (not (buffer-name (car quit-config)))
+      (gnus-configure-windows 'group 'force)
+    (set-buffer (car quit-config))
+    (cond ((eq major-mode 'gnus-summary-mode)
+           (gnus-set-global-variables))
+          ((eq major-mode 'gnus-article-mode)
+           (save-excursion
+             ;; The `gnus-summary-buffer' variable may point
+             ;; to the old summary buffer when using a single
+             ;; article buffer.
+             (unless (gnus-buffer-live-p gnus-summary-buffer)
+               (set-buffer gnus-group-buffer))
+             (set-buffer gnus-summary-buffer)
+             (gnus-set-global-variables))))
+    (if (or (eq (cdr quit-config) 'article)
+            (eq (cdr quit-config) 'pick))
+        (progn
+          ;; The current article may be from the ephemeral group
+          ;; thus it is best that we reload this article
+          (gnus-summary-show-article)
+          (if (and (boundp 'gnus-pick-mode) (symbol-value 'gnus-pick-mode))
+              (gnus-configure-windows 'pick 'force)
+            (gnus-configure-windows (cdr quit-config) 'force)))
+      (gnus-configure-windows (cdr quit-config) 'force))))
 
 ;;; Dead summaries.
 
 
 ;;; Dead summaries.
 
@@ -4665,7 +4682,8 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
     (when (string-match "Summary" name)
       (rename-buffer
        (concat (substring name 0 (match-beginning 0)) "Dead "
     (when (string-match "Summary" name)
       (rename-buffer
        (concat (substring name 0 (match-beginning 0)) "Dead "
-              (substring name (match-beginning 0))) t))))
+              (substring name (match-beginning 0)))
+       t))))
 
 (defun gnus-kill-or-deaden-summary (buffer)
   "Kill or deaden the summary BUFFER."
 
 (defun gnus-kill-or-deaden-summary (buffer)
   "Kill or deaden the summary BUFFER."
@@ -4697,7 +4715,8 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
     (when (string-match "Dead " name)
       (rename-buffer
        (concat (substring name 0 (match-beginning 0))
     (when (string-match "Dead " name)
       (rename-buffer
        (concat (substring name 0 (match-beginning 0))
-              (substring name (match-end 0))) t)))
+              (substring name (match-end 0)))
+       t)))
   (gnus-message 3 "This dead summary is now alive again"))
 
 ;; Suggested by Andrew Eskilsson <pi92ae@pt.hk-r.se>.
   (gnus-message 3 "This dead summary is now alive again"))
 
 ;; Suggested by Andrew Eskilsson <pi92ae@pt.hk-r.se>.
@@ -4707,14 +4726,14 @@ If FAQ-DIR (the prefix), prompt for a directory to search for the faq
 in."
   (interactive
    (list
 in."
   (interactive
    (list
-    (if current-prefix-arg
-       (completing-read
-        "Faq dir: " (and (listp gnus-group-faq-directory)
-                         gnus-group-faq-directory)))))
+    (when current-prefix-arg
+      (completing-read
+       "Faq dir: " (and (listp gnus-group-faq-directory)
+                       gnus-group-faq-directory)))))
   (let (gnus-faq-buffer)
   (let (gnus-faq-buffer)
-    (and (setq gnus-faq-buffer
-              (gnus-group-fetch-faq gnus-newsgroup-name faq-dir))
-        (gnus-configure-windows 'summary-faq))))
+    (when (setq gnus-faq-buffer
+               (gnus-group-fetch-faq gnus-newsgroup-name faq-dir))
+      (gnus-configure-windows 'summary-faq))))
 
 ;; Suggested by Per Abrahamsen <amanda@iesd.auc.dk>.
 (defun gnus-summary-describe-group (&optional force)
 
 ;; Suggested by Per Abrahamsen <amanda@iesd.auc.dk>.
 (defun gnus-summary-describe-group (&optional force)
@@ -4807,10 +4826,9 @@ Returns the article selected or nil if there are no unread articles."
          (while (and data
                      (not (gnus-data-unread-p (car data))))
            (setq data (cdr data)))
          (while (and data
                      (not (gnus-data-unread-p (car data))))
            (setq data (cdr data)))
-         (if data
-             (progn
-               (goto-char (gnus-data-pos (car data)))
-               (gnus-data-number (car data)))))))
+         (when data
+           (goto-char (gnus-data-pos (car data)))
+           (gnus-data-number (car data))))))
     (gnus-summary-position-point)))
 
 (defun gnus-summary-next-subject (n &optional unread dont-display)
     (gnus-summary-position-point)))
 
 (defun gnus-summary-next-subject (n &optional unread dont-display)
@@ -4827,8 +4845,9 @@ returned."
                    (gnus-summary-find-prev unread)
                  (gnus-summary-find-next unread)))
       (setq n (1- n)))
                    (gnus-summary-find-prev unread)
                  (gnus-summary-find-next unread)))
       (setq n (1- n)))
-    (if (/= 0 n) (gnus-message 7 "No more%s articles"
-                              (if unread " unread" "")))
+    (when (/= 0 n)
+      (gnus-message 7 "No more%s articles"
+                   (if unread " unread" "")))
     (unless dont-display
       (gnus-summary-recenter)
       (gnus-summary-position-point))
     (unless dont-display
       (gnus-summary-recenter)
       (gnus-summary-position-point))
@@ -4936,12 +4955,12 @@ be displayed."
              (prog1
                  (gnus-summary-display-article article all-headers)
                (setq did article))
              (prog1
                  (gnus-summary-display-article article all-headers)
                (setq did article))
-           (if (or all-headers gnus-show-all-headers)
-               (gnus-article-show-all-headers))
+           (when (or all-headers gnus-show-all-headers)
+             (gnus-article-show-all-headers))
            'old))
            'old))
-      (if did
-         (gnus-article-set-window-start
-          (cdr (assq article gnus-newsgroup-bookmarks)))))))
+      (when did
+       (gnus-article-set-window-start
+        (cdr (assq article gnus-newsgroup-bookmarks)))))))
 
 (defun gnus-summary-set-current-mark (&optional current-mark)
   "Obsolete function."
 
 (defun gnus-summary-set-current-mark (&optional current-mark)
   "Obsolete function."
@@ -4979,8 +4998,8 @@ If BACKWARD, the previous article is selected instead of the next."
      nil t))
    ;; Go to next/previous group.
    (t
      nil t))
    ;; Go to next/previous group.
    (t
-    (or (gnus-ephemeral-group-p gnus-newsgroup-name)
-       (gnus-summary-jump-to-group gnus-newsgroup-name))
+    (unless (gnus-ephemeral-group-p gnus-newsgroup-name)
+      (gnus-summary-jump-to-group gnus-newsgroup-name))
     (let ((cmd last-command-char)
          (group
           (if (eq gnus-keep-same-level 'best)
     (let ((cmd last-command-char)
          (group
           (if (eq gnus-keep-same-level 'best)
@@ -5041,8 +5060,8 @@ If BACKWARD, the previous article is selected instead of the next."
        ((assq key keystrokes)
        (let ((obuf (current-buffer)))
          (switch-to-buffer gnus-group-buffer)
        ((assq key keystrokes)
        (let ((obuf (current-buffer)))
          (switch-to-buffer gnus-group-buffer)
-         (and group
-              (gnus-group-jump-to-group group))
+         (when group
+           (gnus-group-jump-to-group group))
          (eval (cadr (assq key keystrokes)))
          (setq group (gnus-group-group-name))
          (switch-to-buffer obuf))
          (eval (cadr (assq key keystrokes)))
          (setq group (gnus-group-group-name))
          (switch-to-buffer obuf))
@@ -5141,8 +5160,8 @@ Argument LINES specifies lines to be scrolled up (or down if negative)."
   (when (eq (gnus-summary-select-article nil nil 'pseudo) 'old)
     (gnus-eval-in-buffer-window gnus-article-buffer
       (cond ((> lines 0)
   (when (eq (gnus-summary-select-article nil nil 'pseudo) 'old)
     (gnus-eval-in-buffer-window gnus-article-buffer
       (cond ((> lines 0)
-            (if (gnus-article-next-page lines)
-                (gnus-message 3 "End of message")))
+            (when (gnus-article-next-page lines)
+              (gnus-message 3 "End of message")))
            ((< lines 0)
             (gnus-article-prev-page (- lines))))))
   (gnus-summary-recenter)
            ((< lines 0)
             (gnus-article-prev-page (- lines))))))
   (gnus-summary-recenter)
@@ -5233,8 +5252,8 @@ If ALL-HEADERS is non-nil, no header lines are hidden."
   "Go to the previously read article."
   (interactive)
   (prog1
   "Go to the previously read article."
   (interactive)
   (prog1
-      (and gnus-last-article
-          (gnus-summary-goto-article gnus-last-article))
+      (when gnus-last-article
+       (gnus-summary-goto-article gnus-last-article))
     (gnus-summary-position-point)))
 
 (defun gnus-summary-pop-article (number)
     (gnus-summary-position-point)))
 
 (defun gnus-summary-pop-article (number)
@@ -5286,7 +5305,8 @@ If given a prefix, remove all limits."
     (prog1
        (let ((articles (gnus-summary-find-matching
                         (or header "subject") subject 'all)))
     (prog1
        (let ((articles (gnus-summary-find-matching
                         (or header "subject") subject 'all)))
-         (or articles (error "Found no matches for \"%s\"" subject))
+         (unless articles
+           (error "Found no matches for \"%s\"" subject))
          (gnus-summary-limit articles))
       (gnus-summary-position-point))))
 
          (gnus-summary-limit articles))
       (gnus-summary-position-point))))
 
@@ -5331,9 +5351,9 @@ Returns how many articles were removed."
                     (append marks nil))) ; Transform to list.
            articles)
        (while data
                     (append marks nil))) ; Transform to list.
            articles)
        (while data
-         (and (if reverse (not (memq (gnus-data-mark (car data)) marks))
-                (memq (gnus-data-mark (car data)) marks))
-              (setq articles (cons (gnus-data-number (car data)) articles)))
+         (when (if reverse (not (memq (gnus-data-mark (car data)) marks))
+                 (memq (gnus-data-mark (car data)) marks))
+           (push (gnus-data-number (car data)) articles))
          (setq data (cdr data)))
        (gnus-summary-limit articles))
     (gnus-summary-position-point)))
          (setq data (cdr data)))
        (gnus-summary-limit articles))
     (gnus-summary-position-point)))
@@ -5360,8 +5380,8 @@ Returns how many articles were removed."
   "Display all the hidden articles that are marked as dormant."
   (interactive)
   (gnus-set-global-variables)
   "Display all the hidden articles that are marked as dormant."
   (interactive)
   (gnus-set-global-variables)
-  (or gnus-newsgroup-dormant
-      (error "There are no dormant articles in this group"))
+  (unless gnus-newsgroup-dormant
+    (error "There are no dormant articles in this group"))
   (prog1
       (gnus-summary-limit (append gnus-newsgroup-dormant gnus-newsgroup-limit))
     (gnus-summary-position-point)))
   (prog1
       (gnus-summary-limit (append gnus-newsgroup-dormant gnus-newsgroup-limit))
     (gnus-summary-position-point)))
@@ -5429,8 +5449,7 @@ If ALL, mark even excluded ticked and dormants as read."
       (setq articles (car gnus-newsgroup-limits)
            gnus-newsgroup-limits (cdr gnus-newsgroup-limits))
     ;; We use the new limit, so we push the old limit on the stack.
       (setq articles (car gnus-newsgroup-limits)
            gnus-newsgroup-limits (cdr gnus-newsgroup-limits))
     ;; We use the new limit, so we push the old limit on the stack.
-    (setq gnus-newsgroup-limits
-         (cons gnus-newsgroup-limit gnus-newsgroup-limits)))
+    (push gnus-newsgroup-limit gnus-newsgroup-limits))
   ;; Set the limit.
   (setq gnus-newsgroup-limit articles)
   (let ((total (length gnus-newsgroup-data))
   ;; Set the limit.
   (setq gnus-newsgroup-limit articles)
   (let ((total (length gnus-newsgroup-data))
@@ -5595,7 +5614,7 @@ fetch-old-headers verbiage, and so on."
          0
        ;; Ok, this article is to be visible, so we add it to the limit
        ;; and return 1.
          0
        ;; Ok, this article is to be visible, so we add it to the limit
        ;; and return 1.
-       (setq gnus-newsgroup-limit (cons number gnus-newsgroup-limit))
+       (push number gnus-newsgroup-limit)
        1))))
 
 (defun gnus-expunge-thread (thread)
        1))))
 
 (defun gnus-expunge-thread (thread)
@@ -5746,22 +5765,18 @@ to guess what the document format is."
        (delete-matching-lines "^\\(Path\\):\\|^From ")
        (widen))
       (unwind-protect
        (delete-matching-lines "^\\(Path\\):\\|^From ")
        (widen))
       (unwind-protect
-         (let ((gnus-current-window-configuration
-                (if (and (boundp 'gnus-pick-mode)
-                         (symbol-value (intern "gnus-pick-mode")))
-                    'pick 'summary)))
-           (if (gnus-group-read-ephemeral-group
-                name `(nndoc ,name (nndoc-address ,(get-buffer dig))
-                             (nndoc-article-type 
-                              ,(if force 'digest 'guess))) t)
-               ;; Make all postings to this group go to the parent group.
-               (nconc (gnus-info-params (gnus-get-info name))
-                      params)
-             ;; Couldn't select this doc group.
-             (switch-to-buffer buf)
-             (gnus-set-global-variables)
-             (gnus-configure-windows 'summary)
-             (gnus-message 3 "Article couldn't be entered?")))
+          (if (gnus-group-read-ephemeral-group
+               name `(nndoc ,name (nndoc-address ,(get-buffer dig))
+                            (nndoc-article-type 
+                             ,(if force 'digest 'guess))) t)
+              ;; Make all postings to this group go to the parent group.
+              (nconc (gnus-info-params (gnus-get-info name))
+                     params)
+            ;; Couldn't select this doc group.
+            (switch-to-buffer buf)
+            (gnus-set-global-variables)
+            (gnus-configure-windows 'summary)
+            (gnus-message 3 "Article couldn't be entered?"))
        (kill-buffer dig)))))
 
 (defun gnus-summary-read-document (n)
        (kill-buffer dig)))))
 
 (defun gnus-summary-read-document (n)
@@ -5917,15 +5932,15 @@ in the comparisons."
        (func `(lambda (h) (,(intern (concat "mail-header-" header)) h)))
        (case-fold-search (not not-case-fold))
        articles d)
        (func `(lambda (h) (,(intern (concat "mail-header-" header)) h)))
        (case-fold-search (not not-case-fold))
        articles d)
-    (or (fboundp (intern (concat "mail-header-" header)))
-       (error "%s is not a valid header" header))
+    (unless (fboundp (intern (concat "mail-header-" header)))
+      (error "%s is not a valid header" header))
     (while data
       (setq d (car data))
       (and (or (not unread)            ; We want all articles...
               (gnus-data-unread-p d))  ; Or just unreads.
           (vectorp (gnus-data-header d)) ; It's not a pseudo.
           (string-match regexp (funcall func (gnus-data-header d))) ; Match.
     (while data
       (setq d (car data))
       (and (or (not unread)            ; We want all articles...
               (gnus-data-unread-p d))  ; Or just unreads.
           (vectorp (gnus-data-header d)) ; It's not a pseudo.
           (string-match regexp (funcall func (gnus-data-header d))) ; Match.
-          (setq articles (cons (gnus-data-number d) articles))) ; Success!
+          (push (gnus-data-number d) articles)) ; Success!
       (setq data (cdr data)))
     (nreverse articles)))
 
       (setq data (cdr data)))
     (nreverse articles)))
 
@@ -5968,7 +5983,8 @@ article.  If BACKWARD (the prefix) is non-nil, search backward instead."
   (gnus-eval-in-buffer-window gnus-article-buffer
     (widen)
     (goto-char (point-min))
   (gnus-eval-in-buffer-window gnus-article-buffer
     (widen)
     (goto-char (point-min))
-    (and gnus-break-pages (gnus-narrow-to-page))))
+    (when gnus-break-pages
+      (gnus-narrow-to-page))))
 
 (defun gnus-summary-end-of-article ()
   "Scroll to the end of the article."
 
 (defun gnus-summary-end-of-article ()
   "Scroll to the end of the article."
@@ -5980,7 +5996,8 @@ article.  If BACKWARD (the prefix) is non-nil, search backward instead."
     (widen)
     (goto-char (point-max))
     (recenter -3)
     (widen)
     (goto-char (point-max))
     (recenter -3)
-    (and gnus-break-pages (gnus-narrow-to-page))))
+    (when gnus-break-pages
+      (gnus-narrow-to-page))))
 
 (defun gnus-summary-show-article (&optional arg)
   "Force re-fetching of the current article.
 
 (defun gnus-summary-show-article (&optional arg)
   "Force re-fetching of the current article.
@@ -6041,8 +6058,8 @@ If ARG is a negative number, hide the unwanted header lines."
       (insert-buffer-substring gnus-original-article-buffer 1 e)
       (let ((article-inhibit-hiding t))
        (run-hooks 'gnus-article-display-hook))
       (insert-buffer-substring gnus-original-article-buffer 1 e)
       (let ((article-inhibit-hiding t))
        (run-hooks 'gnus-article-display-hook))
-      (if (or (not hidden) (and (numberp arg) (< arg 0)))
-         (gnus-article-hide-headers)))))
+      (when (or (not hidden) (and (numberp arg) (< arg 0)))
+       (gnus-article-hide-headers)))))
 
 (defun gnus-summary-show-all-headers ()
   "Make all header lines visible."
 
 (defun gnus-summary-show-all-headers ()
   "Make all header lines visible."
@@ -6098,7 +6115,8 @@ For this function to work, both the current newsgroup and the
 newsgroup that you want to move to have to support the `request-move'
 and `request-accept' functions."
   (interactive "P")
 newsgroup that you want to move to have to support the `request-move'
 and `request-accept' functions."
   (interactive "P")
-  (unless action (setq action 'move))
+  (unless action
+    (setq action 'move))
   (gnus-set-global-variables)
   ;; Check whether the source group supports the required functions.
   (cond ((and (eq action 'move)
   (gnus-set-global-variables)
   ;; Check whether the source group supports the required functions.
   (cond ((and (eq action 'move)
@@ -6131,10 +6149,10 @@ and `request-accept' functions."
     (setq to-method (or select-method 
                        (gnus-group-name-to-method to-newsgroup)))
     ;; Check the method we are to move this article to...
     (setq to-method (or select-method 
                        (gnus-group-name-to-method to-newsgroup)))
     ;; Check the method we are to move this article to...
-    (or (gnus-check-backend-function 'request-accept-article (car to-method))
-       (error "%s does not support article copying" (car to-method)))
-    (or (gnus-check-server to-method)
-       (error "Can't open server %s" (car to-method)))
+    (unless (gnus-check-backend-function 'request-accept-article (car to-method))
+      (error "%s does not support article copying" (car to-method)))
+    (unless (gnus-check-server to-method)
+      (error "Can't open server %s" (car to-method)))
     (gnus-message 6 "%s to %s: %s..."
                  (caddr (assq action names))
                  (or (car select-method) to-newsgroup) articles)
     (gnus-message 6 "%s to %s: %s..."
                  (caddr (assq action names))
                  (or (car select-method) to-newsgroup) articles)
@@ -6328,8 +6346,8 @@ latter case, they will be copied into the relevant groups."
   (let ((group gnus-newsgroup-name)
        (now (current-time))
        atts lines)
   (let ((group gnus-newsgroup-name)
        (now (current-time))
        atts lines)
-    (or (gnus-check-backend-function 'request-accept-article group)
-       (error "%s does not support article importing" group))
+    (unless (gnus-check-backend-function 'request-accept-article group)
+      (error "%s does not support article importing" group))
     (or (file-readable-p file)
        (not (file-regular-p file))
        (error "Can't read %s" file))
     (or (file-readable-p file)
        (not (file-regular-p file))
        (error "Can't read %s" file))
@@ -6348,7 +6366,8 @@ latter case, they will be copied into the relevant groups."
                "Date: " (timezone-make-date-arpa-standard
                          (current-time-string (nth 5 atts))
                          (current-time-zone now)
                "Date: " (timezone-make-date-arpa-standard
                          (current-time-string (nth 5 atts))
                          (current-time-zone now)
-                         (current-time-zone now)) "\n"
+                         (current-time-zone now))
+               "\n"
                "Message-ID: " (message-make-message-id) "\n"
                "Lines: " (int-to-string lines) "\n"
                "Chars: " (int-to-string (nth 7 atts)) "\n\n"))
                "Message-ID: " (message-make-message-id) "\n"
                "Lines: " (int-to-string lines) "\n"
                "Chars: " (int-to-string (nth 7 atts)) "\n\n"))
@@ -6434,16 +6453,16 @@ If N is nil and articles have been marked with the process mark,
 delete these instead."
   (interactive "P")
   (gnus-set-global-variables)
 delete these instead."
   (interactive "P")
   (gnus-set-global-variables)
-  (or (gnus-check-backend-function 'request-expire-articles
-                                  gnus-newsgroup-name)
-      (error "The current newsgroup does not support article deletion."))
+  (unless (gnus-check-backend-function 'request-expire-articles
+                                      gnus-newsgroup-name)
+    (error "The current newsgroup does not support article deletion."))
   ;; Compute the list of articles to delete.
   (let ((articles (gnus-summary-work-articles n))
        not-deleted)
     (if (and gnus-novice-user
             (not (gnus-y-or-n-p
                   (format "Do you really want to delete %s forever? "
   ;; Compute the list of articles to delete.
   (let ((articles (gnus-summary-work-articles n))
        not-deleted)
     (if (and gnus-novice-user
             (not (gnus-y-or-n-p
                   (format "Do you really want to delete %s forever? "
-                          (if (> (length articles) 1) 
+                          (if (> (length articles) 1)
                               (format "these %s articles" (length articles))
                             "this article")))))
        ()
                               (format "these %s articles" (length articles))
                             "this article")))))
        ()
@@ -6454,8 +6473,8 @@ delete these instead."
        (gnus-summary-remove-process-mark (car articles))
        ;; The backend might not have been able to delete the article
        ;; after all.
        (gnus-summary-remove-process-mark (car articles))
        ;; The backend might not have been able to delete the article
        ;; after all.
-       (or (memq (car articles) not-deleted)
-           (gnus-summary-mark-article (car articles) gnus-canceled-mark))
+       (unless (memq (car articles) not-deleted)
+         (gnus-summary-mark-article (car articles) gnus-canceled-mark))
        (setq articles (cdr articles))))
     (gnus-summary-position-point)
     (gnus-set-mode-line 'summary)
        (setq articles (cdr articles))))
     (gnus-summary-position-point)
     (gnus-set-mode-line 'summary)
@@ -6555,8 +6574,8 @@ If UNMARK is positive, remove any kind of mark.
 If UNMARK is negative, tick articles."
   (interactive "P")
   (gnus-set-global-variables)
 If UNMARK is negative, tick articles."
   (interactive "P")
   (gnus-set-global-variables)
-  (if unmark
-      (setq unmark (prefix-numeric-value unmark)))
+  (when unmark
+    (setq unmark (prefix-numeric-value unmark)))
   (let ((count
         (gnus-summary-mark-same-subject
          (gnus-summary-article-subject) unmark)))
   (let ((count
         (gnus-summary-mark-same-subject
          (gnus-summary-article-subject) unmark)))
@@ -6574,15 +6593,15 @@ If UNMARK is positive, remove any kind of mark.
 If UNMARK is negative, tick articles."
   (interactive "P")
   (gnus-set-global-variables)
 If UNMARK is negative, tick articles."
   (interactive "P")
   (gnus-set-global-variables)
-  (if unmark
-      (setq unmark (prefix-numeric-value unmark)))
+  (when unmark
+    (setq unmark (prefix-numeric-value unmark)))
   (let ((count
         (gnus-summary-mark-same-subject
          (gnus-summary-article-subject) unmark)))
     ;; If marked as read, go to next unread subject.
   (let ((count
         (gnus-summary-mark-same-subject
          (gnus-summary-article-subject) unmark)))
     ;; If marked as read, go to next unread subject.
-    (if (null unmark)
-       ;; Go to next unread subject.
-       (gnus-summary-next-subject 1 t))
+    (when (null unmark)
+      ;; Go to next unread subject.
+      (gnus-summary-next-subject 1 t))
     (gnus-message 7 "%d articles are marked as %s"
                  count (if unmark "unread" "read"))))
 
     (gnus-message 7 "%d articles are marked as %s"
                  count (if unmark "unread" "read"))))
 
@@ -6635,7 +6654,8 @@ number of articles marked is returned."
              (gnus-summary-set-process-mark (gnus-summary-article-number)))
            (zerop (gnus-summary-next-subject (if backward -1 1) nil t)))
       (setq n (1- n)))
              (gnus-summary-set-process-mark (gnus-summary-article-number)))
            (zerop (gnus-summary-next-subject (if backward -1 1) nil t)))
       (setq n (1- n)))
-    (if (/= 0 n) (gnus-message 7 "No more articles"))
+    (when (/= 0 n)
+      (gnus-message 7 "No more articles"))
     (gnus-summary-recenter)
     (gnus-summary-position-point)
     n))
     (gnus-summary-recenter)
     (gnus-summary-position-point)
     n))
@@ -6667,7 +6687,7 @@ the actual number of articles marked is returned."
 
 (defun gnus-summary-mark-article-as-replied (article)
   "Mark ARTICLE replied and update the summary line."
 
 (defun gnus-summary-mark-article-as-replied (article)
   "Mark ARTICLE replied and update the summary line."
-  (setq gnus-newsgroup-replied (cons article gnus-newsgroup-replied))
+  (push article gnus-newsgroup-replied)
   (let ((buffer-read-only nil))
     (when (gnus-summary-goto-subject article)
       (gnus-summary-update-secondary-mark article))))
   (let ((buffer-read-only nil))
     (when (gnus-summary-goto-subject article)
       (gnus-summary-update-secondary-mark article))))
@@ -6676,30 +6696,30 @@ the actual number of articles marked is returned."
   "Set a bookmark in current article."
   (interactive (list (gnus-summary-article-number)))
   (gnus-set-global-variables)
   "Set a bookmark in current article."
   (interactive (list (gnus-summary-article-number)))
   (gnus-set-global-variables)
-  (if (or (not (get-buffer gnus-article-buffer))
-         (not gnus-current-article)
-         (not gnus-article-current)
-         (not (equal gnus-newsgroup-name (car gnus-article-current))))
-      (error "No current article selected"))
+  (when (or (not (get-buffer gnus-article-buffer))
+           (not gnus-current-article)
+           (not gnus-article-current)
+           (not (equal gnus-newsgroup-name (car gnus-article-current))))
+    (error "No current article selected"))
   ;; Remove old bookmark, if one exists.
   (let ((old (assq article gnus-newsgroup-bookmarks)))
   ;; Remove old bookmark, if one exists.
   (let ((old (assq article gnus-newsgroup-bookmarks)))
-    (if old (setq gnus-newsgroup-bookmarks
-                 (delq old gnus-newsgroup-bookmarks))))
+    (when old
+      (setq gnus-newsgroup-bookmarks
+           (delq old gnus-newsgroup-bookmarks))))
   ;; Set the new bookmark, which is on the form
   ;; (article-number . line-number-in-body).
   ;; Set the new bookmark, which is on the form
   ;; (article-number . line-number-in-body).
-  (setq gnus-newsgroup-bookmarks
-       (cons
-        (cons article
-              (save-excursion
-                (set-buffer gnus-article-buffer)
-                (count-lines
-                 (min (point)
-                      (save-excursion
-                        (goto-char (point-min))
-                        (search-forward "\n\n" nil t)
-                        (point)))
-                 (point))))
-        gnus-newsgroup-bookmarks))
+  (push
+   (cons article
+        (save-excursion
+          (set-buffer gnus-article-buffer)
+          (count-lines
+           (min (point)
+                (save-excursion
+                  (goto-char (point-min))
+                  (search-forward "\n\n" nil t)
+                  (point)))
+           (point))))
+   gnus-newsgroup-bookmarks)
   (gnus-message 6 "A bookmark has been added to the current article."))
 
 (defun gnus-summary-remove-bookmark (article)
   (gnus-message 6 "A bookmark has been added to the current article."))
 
 (defun gnus-summary-remove-bookmark (article)
@@ -6769,7 +6789,8 @@ returned."
                             (not (eq gnus-summary-goto-unread 'never)))
                        t)))
       (setq n (1- n)))
                             (not (eq gnus-summary-goto-unread 'never)))
                        t)))
       (setq n (1- n)))
-    (if (/= 0 n) (gnus-message 7 "No more %sarticles" (if mark "" "unread ")))
+    (when (/= 0 n)
+      (gnus-message 7 "No more %sarticles" (if mark "" "unread ")))
     (gnus-summary-recenter)
     (gnus-summary-position-point)
     (gnus-set-mode-line 'summary)
     (gnus-summary-recenter)
     (gnus-summary-position-point)
     (gnus-set-mode-line 'summary)
@@ -6781,10 +6802,10 @@ returned."
     (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-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))
+    (push (cons article mark) gnus-newsgroup-reads)
     ;; Possibly remove from cache, if that is used.
     ;; Possibly remove from cache, if that is used.
-    (and gnus-use-cache (gnus-cache-enter-remove-article article))
+    (when gnus-use-cache
+      (gnus-cache-enter-remove-article article))
     ;; Allow the backend to change the mark.
     (setq mark (gnus-request-update-mark gnus-newsgroup-name article mark))
     ;; Check for auto-expiry.
     ;; Allow the backend to change the mark.
     (setq mark (gnus-request-update-mark gnus-newsgroup-name article mark))
     ;; Check for auto-expiry.
@@ -6841,8 +6862,8 @@ If MARK is nil, then the default character `?D' is used.
 If ARTICLE is nil, then the article on the current line will be
 marked."
   ;; The mark might be a string.
 If ARTICLE is nil, then the article on the current line will be
 marked."
   ;; The mark might be a string.
-  (and (stringp mark)
-       (setq mark (aref mark 0)))
+  (when (stringp mark)
+    (setq mark (aref mark 0)))
   ;; If no mark is given, then we check auto-expiring.
   (and (not no-expire)
        gnus-newsgroup-auto-expire
   ;; If no mark is given, then we check auto-expiring.
   (and (not no-expire)
        gnus-newsgroup-auto-expire
@@ -6855,7 +6876,8 @@ marked."
        (setq mark gnus-expirable-mark))
   (let* ((mark (or mark gnus-del-mark))
         (article (or article (gnus-summary-article-number))))
        (setq mark gnus-expirable-mark))
   (let* ((mark (or mark gnus-del-mark))
         (article (or article (gnus-summary-article-number))))
-    (or article (error "No article on current line"))
+    (unless article
+      (error "No article on current line"))
     (if (or (= mark gnus-unread-mark)
            (= mark gnus-ticked-mark)
            (= mark gnus-dormant-mark))
     (if (or (= mark gnus-unread-mark)
            (= mark gnus-ticked-mark)
            (= mark gnus-dormant-mark))
@@ -6873,12 +6895,12 @@ marked."
            (= mark gnus-ticked-mark)
            (= mark gnus-dormant-mark) (= mark gnus-unread-mark))))
 
            (= mark gnus-ticked-mark)
            (= mark gnus-dormant-mark) (= mark gnus-unread-mark))))
 
-    (if (gnus-summary-goto-subject article nil t)
-       (let ((buffer-read-only nil))
-         (gnus-summary-show-thread)
-         ;; Fix the mark.
-         (gnus-summary-update-mark mark 'unread)
-         t))))
+    (when (gnus-summary-goto-subject article nil t)
+      (let ((buffer-read-only nil))
+       (gnus-summary-show-thread)
+       ;; Fix the mark.
+       (gnus-summary-update-mark mark 'unread)
+       t))))
 
 (defun gnus-summary-update-secondary-mark (article)
   "Update the secondary (read, process, cache) mark."
 
 (defun gnus-summary-update-secondary-mark (article)
   "Update the secondary (read, process, cache) mark."
@@ -6901,7 +6923,7 @@ marked."
   (let ((forward (cdr (assq type gnus-summary-mark-positions)))
         (buffer-read-only nil))
     (re-search-backward "[\n\r]" (gnus-point-at-bol) 'move-to-limit)
   (let ((forward (cdr (assq type gnus-summary-mark-positions)))
         (buffer-read-only nil))
     (re-search-backward "[\n\r]" (gnus-point-at-bol) 'move-to-limit)
-    (when (looking-at "\r") 
+    (when (looking-at "\r")
       (incf forward))
     (when (and forward
                (<= (+ forward (point)) (point-max)))
       (incf forward))
     (when (and forward
                (<= (+ forward (point)) (point-max)))
@@ -6920,7 +6942,7 @@ marked."
   ;; Make the article expirable.
   (let ((mark (or mark gnus-del-mark)))
     (if (= mark gnus-expirable-mark)
   ;; Make the article expirable.
   (let ((mark (or mark gnus-del-mark)))
     (if (= mark gnus-expirable-mark)
-       (setq gnus-newsgroup-expirable (cons article gnus-newsgroup-expirable))
+       (push article gnus-newsgroup-expirable)
       (setq gnus-newsgroup-expirable (delq article gnus-newsgroup-expirable)))
     ;; Remove from unread and marked lists.
     (setq gnus-newsgroup-unreads (delq article gnus-newsgroup-unreads))
       (setq gnus-newsgroup-expirable (delq article gnus-newsgroup-expirable)))
     ;; Remove from unread and marked lists.
     (setq gnus-newsgroup-unreads (delq article gnus-newsgroup-unreads))
@@ -7094,8 +7116,8 @@ even ticked and dormant ones."
     (set-buffer gnus-summary-buffer)
     (goto-char (point-min))
     (while (and (progn
     (set-buffer gnus-summary-buffer)
     (goto-char (point-min))
     (while (and (progn
-                 (if (> (gnus-summary-article-score) score)
-                     (gnus-summary-mark-article nil mark))
+                 (when (> (gnus-summary-article-score) score)
+                   (gnus-summary-mark-article nil mark))
                  t)
                (gnus-summary-find-next)))))
 
                  t)
                (gnus-summary-find-next)))))
 
@@ -7109,10 +7131,10 @@ even ticked and dormant ones."
     (let ((scored gnus-newsgroup-scored)
          headers h)
       (while scored
     (let ((scored gnus-newsgroup-scored)
          headers h)
       (while scored
-       (or (gnus-summary-goto-subject (caar scored))
-           (and (setq h (gnus-summary-article-header (caar scored)))
-                (< (cdar scored) gnus-summary-expunge-below)
-                (setq headers (cons h headers))))
+       (unless (gnus-summary-goto-subject (caar scored))
+         (and (setq h (gnus-summary-article-header (caar scored)))
+              (< (cdar scored) gnus-summary-expunge-below)
+              (push h headers)))
        (setq scored (cdr scored)))
       (if (not headers)
          (when (not no-error)
        (setq scored (cdr scored)))
       (if (not headers)
          (when (not no-error)
@@ -7231,7 +7253,7 @@ with that article."
                  (mail-header-subject (gnus-data-header (car data)))))
                (t nil)))
         (end-point (save-excursion
                  (mail-header-subject (gnus-data-header (car data)))))
                (t nil)))
         (end-point (save-excursion
-                     (if (gnus-summary-go-to-next-thread) 
+                     (if (gnus-summary-go-to-next-thread)
                          (point) (point-max))))
         articles)
     (while (and data
                          (point) (point-max))))
         articles)
     (while (and data
@@ -7271,10 +7293,10 @@ with that article."
 Note that the re-threading will only work if `gnus-thread-ignore-subject'
 is non-nil or the Subject: of both articles are the same."
   (interactive)
 Note that the re-threading will only work if `gnus-thread-ignore-subject'
 is non-nil or the Subject: of both articles are the same."
   (interactive)
-  (or (not (gnus-group-read-only-p))
-      (error "The current newsgroup does not support article editing."))
-  (or (<= (length gnus-newsgroup-processable) 1)
-      (error "No more than one article may be marked."))
+  (unless (not (gnus-group-read-only-p))
+    (error "The current newsgroup does not support article editing."))
+  (unless (<= (length gnus-newsgroup-processable) 1)
+    (error "No more than one article may be marked."))
   (save-window-excursion
     (let ((gnus-article-buffer " *reparent*")
          (current-article (gnus-summary-article-number))
   (save-window-excursion
     (let ((gnus-article-buffer " *reparent*")
          (current-article (gnus-summary-article-number))
@@ -7285,12 +7307,12 @@ is non-nil or the Subject: of both articles are the same."
                              (if (eq (forward-line -1) 0)
                                  (gnus-summary-article-number)
                                (error "Beginning of summary buffer."))))))
                              (if (eq (forward-line -1) 0)
                                  (gnus-summary-article-number)
                                (error "Beginning of summary buffer."))))))
-      (or (not (eq current-article parent-article))
-         (error "An article may not be self-referential."))
+      (unless (not (eq current-article parent-article))
+       (error "An article may not be self-referential."))
       (let ((message-id (mail-header-id 
                         (gnus-summary-article-header parent-article))))
       (let ((message-id (mail-header-id 
                         (gnus-summary-article-header parent-article))))
-       (or (and message-id (not (equal message-id "")))
-           (error "No message-id in desired parent."))
+       (unless (and message-id (not (equal message-id "")))
+         (error "No message-id in desired parent."))
        (gnus-summary-select-article t t nil current-article)
        (set-buffer gnus-article-buffer)
        (setq buffer-read-only nil)
        (gnus-summary-select-article t t nil current-article)
        (set-buffer gnus-article-buffer)
        (setq buffer-read-only nil)
@@ -7301,10 +7323,10 @@ is non-nil or the Subject: of both articles are the same."
        (if (search-forward-regexp "^References: " nil t)
            (insert message-id " " )
          (insert "References: " message-id "\n"))
        (if (search-forward-regexp "^References: " nil t)
            (insert message-id " " )
          (insert "References: " message-id "\n"))
-       (or (gnus-request-replace-article current-article
-                                         (car gnus-article-current)
-                                         gnus-article-buffer)
-           (error "Couldn't replace article."))
+       (unless (gnus-request-replace-article current-article
+                                             (car gnus-article-current)
+                                             gnus-article-buffer)
+         (error "Couldn't replace article."))
        (set-buffer gnus-summary-buffer)
        (gnus-summary-unmark-all-processable)
        (gnus-summary-rethread-current)
        (set-buffer gnus-summary-buffer)
        (gnus-summary-unmark-all-processable)
        (gnus-summary-rethread-current)
@@ -7438,14 +7460,14 @@ done."
 (defun gnus-summary-go-down-thread ()
   "Go down one level in the current thread."
   (let ((children (gnus-summary-article-children)))
 (defun gnus-summary-go-down-thread ()
   "Go down one level in the current thread."
   (let ((children (gnus-summary-article-children)))
-    (and children
-        (gnus-summary-goto-subject (car children)))))
+    (when children
+      (gnus-summary-goto-subject (car children)))))
 
 (defun gnus-summary-go-up-thread ()
   "Go up one level in the current thread."
   (let ((parent (gnus-summary-article-parent)))
 
 (defun gnus-summary-go-up-thread ()
   "Go up one level in the current thread."
   (let ((parent (gnus-summary-article-parent)))
-    (and parent
-        (gnus-summary-goto-subject parent))))
+    (when parent
+      (gnus-summary-goto-subject parent))))
 
 (defun gnus-summary-down-thread (n)
   "Go down thread N steps.
 
 (defun gnus-summary-down-thread (n)
   "Go down thread N steps.
@@ -7461,7 +7483,8 @@ taken."
                  (gnus-summary-go-down-thread)))
       (setq n (1- n)))
     (gnus-summary-position-point)
                  (gnus-summary-go-down-thread)))
       (setq n (1- n)))
     (gnus-summary-position-point)
-    (if (/= 0 n) (gnus-message 7 "Can't go further"))
+    (when (/= 0 n)
+      (gnus-message 7 "Can't go further"))
     n))
 
 (defun gnus-summary-up-thread (n)
     n))
 
 (defun gnus-summary-up-thread (n)
@@ -7507,9 +7530,9 @@ If the prefix argument is negative, tick articles instead."
         gnus-thread-hide-killed
         (gnus-summary-hide-thread))
     ;; If marked as read, go to next unread subject.
         gnus-thread-hide-killed
         (gnus-summary-hide-thread))
     ;; If marked as read, go to next unread subject.
-    (if (null unmark)
-       ;; Go to next unread subject.
-       (gnus-summary-next-subject 1 t)))
+    (when (null unmark)
+      ;; Go to next unread subject.
+      (gnus-summary-next-subject 1 t)))
   (gnus-set-mode-line 'summary))
 
 ;; Summary sorting commands
   (gnus-set-mode-line 'summary))
 
 ;; Summary sorting commands
@@ -7707,7 +7730,7 @@ save those articles instead."
         (minibuffer-confirm-incomplete nil) ; XEmacs
         group-map
         (dum (mapatoms
         (minibuffer-confirm-incomplete nil) ; XEmacs
         group-map
         (dum (mapatoms
-              (lambda (g) 
+              (lambda (g)
                 (and (boundp g)
                      (symbol-name g)
                      (memq 'respool
                 (and (boundp g)
                      (symbol-name g)
                      (memq 'respool
@@ -7740,19 +7763,19 @@ save those articles instead."
                                  nil nil nil
                                  'gnus-group-history)))))
     (when to-newsgroup
                                  nil nil nil
                                  'gnus-group-history)))))
     (when to-newsgroup
-      (if (or (string= to-newsgroup "")
-             (string= to-newsgroup prefix))
-         (setq to-newsgroup (or default "")))
+      (when (or (string= to-newsgroup "")
+               (string= to-newsgroup prefix))
+       (setq to-newsgroup (or default "")))
       (or (gnus-active to-newsgroup)
          (gnus-activate-group to-newsgroup)
       (or (gnus-active to-newsgroup)
          (gnus-activate-group to-newsgroup)
-         (if (gnus-y-or-n-p (format "No such group: %s.  Create it? "
-                                    to-newsgroup))
-             (or (and (gnus-request-create-group 
-                       to-newsgroup (gnus-group-name-to-method to-newsgroup))
-                      (gnus-activate-group to-newsgroup nil nil
-                                           (gnus-group-name-to-method
-                                            to-newsgroup)))
-                 (error "Couldn't create group %s" to-newsgroup)))
+         (when (gnus-y-or-n-p (format "No such group: %s.  Create it? "
+                                      to-newsgroup))
+           (or (and (gnus-request-create-group 
+                     to-newsgroup (gnus-group-name-to-method to-newsgroup))
+                    (gnus-activate-group to-newsgroup nil nil
+                                         (gnus-group-name-to-method
+                                          to-newsgroup)))
+               (error "Couldn't create group %s" to-newsgroup)))
          (error "No such group: %s" to-newsgroup)))
     to-newsgroup))
 
          (error "No such group: %s" to-newsgroup)))
     to-newsgroup))
 
@@ -7762,8 +7785,8 @@ save those articles instead."
   (let ((buffer-read-only nil)
        (article (gnus-summary-article-number))
        after-article b e)
   (let ((buffer-read-only nil)
        (article (gnus-summary-article-number))
        after-article b e)
-    (or (gnus-summary-goto-subject article)
-       (error (format "No such article: %d" article)))
+    (unless (gnus-summary-goto-subject article)
+      (error (format "No such article: %d" article)))
     (gnus-summary-position-point)
     ;; If all commands are to be bunched up on one line, we collect
     ;; them here.
     (gnus-summary-position-point)
     ;; If all commands are to be bunched up on one line, we collect
     ;; them here.
@@ -7777,13 +7800,13 @@ save those articles instead."
          (while (and ps (cdr ps)
                      (string= (or action "1")
                               (or (cdr (assq 'action (cadr ps))) "2")))
          (while (and ps (cdr ps)
                      (string= (or action "1")
                               (or (cdr (assq 'action (cadr ps))) "2")))
-           (setq files (cons (cdr (assq 'name (cadr ps))) files))
+           (push (cdr (assq 'name (cadr ps))) files)
            (setcdr ps (cddr ps)))
          (if (not files)
              ()
            (setcdr ps (cddr ps)))
          (if (not files)
              ()
-           (if (not (string-match "%s" action))
-               (setq files (cons " " files)))
-           (setq files (cons " " files))
+           (when (not (string-match "%s" action))
+             (push " " files))
+           (push " " files)
            (and (assq 'execute (car ps))
                 (setcdr (assq 'execute (car ps))
                         (funcall (if (string-match "%s" action)
            (and (assq 'execute (car ps))
                 (setcdr (assq 'execute (car ps))
                         (funcall (if (string-match "%s" action)
@@ -7793,9 +7816,9 @@ save those articles instead."
          (setq ps (cdr ps)))))
     (if (and gnus-view-pseudos (not not-view))
        (while pslist
          (setq ps (cdr ps)))))
     (if (and gnus-view-pseudos (not not-view))
        (while pslist
-         (and (assq 'execute (car pslist))
-              (gnus-execute-command (cdr (assq 'execute (car pslist)))
-                                    (eq gnus-view-pseudos 'not-confirm)))
+         (when (assq 'execute (car pslist))
+           (gnus-execute-command (cdr (assq 'execute (car pslist)))
+                                 (eq gnus-view-pseudos 'not-confirm)))
          (setq pslist (cdr pslist)))
       (save-excursion
        (while pslist
          (setq pslist (cdr pslist)))
       (save-excursion
        (while pslist
@@ -7873,7 +7896,7 @@ save those articles instead."
   (let ((group gnus-newsgroup-name)
        (gnus-override-method 
         (and (gnus-news-group-p gnus-newsgroup-name)
   (let ((group gnus-newsgroup-name)
        (gnus-override-method 
         (and (gnus-news-group-p gnus-newsgroup-name)
-             gnus-refer-article-method))       
+             gnus-refer-article-method))
        where)
     ;; First we check to see whether the header in question is already
     ;; fetched.
        where)
     ;; First we check to see whether the header in question is already
     ;; fetched.
@@ -7887,10 +7910,12 @@ save those articles instead."
        ;; We have found the header.
        header
       ;; We have to really fetch the header to this article.
        ;; We have found the header.
        header
       ;; We have to really fetch the header to this article.
-      (when (setq where (gnus-request-head id group))
-       (save-excursion
-         (set-buffer nntp-server-buffer)
-         (goto-char (point-max))
+      (save-excursion
+       (set-buffer nntp-server-buffer)
+       (when (setq where (gnus-request-article-this-buffer id group))
+         (goto-char (point-min))
+         (when (search-forward "\n\n" nil t)
+           (delete-region (1- (point)) (point-max)))
          (insert ".\n")
          (goto-char (point-min))
          (insert "211 ")
          (insert ".\n")
          (goto-char (point-min))
          (insert "211 ")
@@ -7901,21 +7926,23 @@ save those articles instead."
                  (t gnus-reffed-article-number))
                 (current-buffer))
          (insert " Article retrieved.\n"))
                  (t gnus-reffed-article-number))
                 (current-buffer))
          (insert " Article retrieved.\n"))
-       (if (not (setq header (car (gnus-get-newsgroup-headers))))
+       (if (not (setq header (car (gnus-get-newsgroup-headers nil t))))
            ()                          ; Malformed head.
          (unless (memq (mail-header-number header) gnus-newsgroup-sparse)
            ()                          ; Malformed head.
          (unless (memq (mail-header-number header) gnus-newsgroup-sparse)
-           (if (and (stringp id)
-                    (not (string= (gnus-group-real-name group)
-                                  (car where))))
-               ;; If we fetched by Message-ID and the article came
-               ;; from a different group, we fudge some bogus article
-               ;; numbers for this article.
-               (mail-header-set-number header gnus-reffed-article-number))
-           (decf gnus-reffed-article-number)
-           (gnus-remove-header (mail-header-number header))
-           (push header gnus-newsgroup-headers)
-           (setq gnus-current-headers header)
-           (push (mail-header-number header) gnus-newsgroup-limit))
+           (when (and (stringp id)
+                      (not (string= (gnus-group-real-name group)
+                                    (car where))))
+             ;; If we fetched by Message-ID and the article came
+             ;; from a different group, we fudge some bogus article
+             ;; numbers for this article.
+             (mail-header-set-number header gnus-reffed-article-number))
+           (save-excursion
+             (set-buffer gnus-summary-buffer)
+             (decf gnus-reffed-article-number)
+             (gnus-remove-header (mail-header-number header))
+             (push header gnus-newsgroup-headers)
+             (setq gnus-current-headers header)
+             (push (mail-header-number header) gnus-newsgroup-limit)))
          header)))))
 
 (defun gnus-remove-header (number)
          header)))))
 
 (defun gnus-remove-header (number)
@@ -7942,10 +7969,10 @@ save those articles instead."
       (let* ((beg (progn (beginning-of-line) (point)))
             (end (progn (end-of-line) (point)))
             ;; Fix by Mike Dugan <dugan@bucrf16.bu.edu>.
       (let* ((beg (progn (beginning-of-line) (point)))
             (end (progn (end-of-line) (point)))
             ;; Fix by Mike Dugan <dugan@bucrf16.bu.edu>.
-            (from (if (get-text-property beg gnus-mouse-face-prop) 
+            (from (if (get-text-property beg gnus-mouse-face-prop)
                       beg
                     (or (next-single-property-change 
                       beg
                     (or (next-single-property-change 
-                         beg gnus-mouse-face-prop nil end) 
+                         beg gnus-mouse-face-prop nil end)
                         beg)))
             (to
              (if (= from end)
                         beg)))
             (to
              (if (= from end)
@@ -8019,13 +8046,14 @@ save those articles instead."
       ;; Compute the ranges of read articles by looking at the list of
       ;; unread articles.
       (while unread
       ;; Compute the ranges of read articles by looking at the list of
       ;; unread articles.
       (while unread
-       (if (/= (car unread) prev)
-           (setq read (cons (if (= prev (1- (car unread))) prev
-                              (cons prev (1- (car unread)))) read)))
+       (when (/= (car unread) prev)
+         (push (if (= prev (1- (car unread))) prev
+                 (cons prev (1- (car unread))))
+               read))
        (setq prev (1+ (car unread)))
        (setq unread (cdr unread)))
       (when (<= prev (cdr active))
        (setq prev (1+ (car unread)))
        (setq unread (cdr unread)))
       (when (<= prev (cdr active))
-       (setq read (cons (cons prev (cdr active)) read)))
+       (push (cons prev (cdr active)) read))
       (gnus-undo-register
        `(progn
           (gnus-info-set-marks ,info ,(gnus-info-marks info))
       (gnus-undo-register
        `(progn
           (gnus-info-set-marks ,info ,(gnus-info-marks info))
index fee823a..2d64ac1 100644 (file)
@@ -189,7 +189,7 @@ with some simple extensions.
                       (if (member group gnus-zombie-list) 8 9)))
       (and 
        unread                          ; nil means that the group is dead.
                       (if (member group gnus-zombie-list) 8 9)))
       (and 
        unread                          ; nil means that the group is dead.
-       (<= clevel level) 
+       (<= clevel level)
        (>= clevel lowest)              ; Is inside the level we want.
        (or all
           (if (eq unread t)
        (>= clevel lowest)              ; Is inside the level we want.
        (or all
           (if (eq unread t)
@@ -347,7 +347,7 @@ If LOWEST is non-nil, list all newsgroups of level LOWEST or higher."
     ;; List dead groups?
     (when (and (>= level gnus-level-zombie) (<= lowest gnus-level-zombie))
       (gnus-group-prepare-flat-list-dead 
     ;; List dead groups?
     (when (and (>= level gnus-level-zombie) (<= lowest gnus-level-zombie))
       (gnus-group-prepare-flat-list-dead 
-       (setq gnus-zombie-list (sort gnus-zombie-list 'string<)) 
+       (setq gnus-zombie-list (sort gnus-zombie-list 'string<))
        gnus-level-zombie ?Z
        regexp))
     
        gnus-level-zombie ?Z
        regexp))
     
@@ -401,12 +401,13 @@ articles in the topic and its subtopics."
            (gnus-group-insert-group-line
             entry (if (member entry gnus-zombie-list) 8 9)
             nil (- (1+ (cdr (setq active (gnus-active entry))))
            (gnus-group-insert-group-line
             entry (if (member entry gnus-zombie-list) 8 9)
             nil (- (1+ (cdr (setq active (gnus-active entry))))
-                   (car active)) nil)
+                   (car active))
+            nil)
          ;; Living groups.
          (when (setq info (nth 2 entry))
            (gnus-group-insert-group-line 
             (gnus-info-group info)
          ;; Living groups.
          (when (setq info (nth 2 entry))
            (gnus-group-insert-group-line 
             (gnus-info-group info)
-            (gnus-info-level info) (gnus-info-marks info) 
+            (gnus-info-level info) (gnus-info-marks info)
             (car entry) (gnus-info-method info)))))
       (when (and (listp entry)
                 (numberp (car entry))
             (car entry) (gnus-info-method info)))))
       (when (and (listp entry)
                 (numberp (car entry))
@@ -453,7 +454,7 @@ articles in the topic and its subtopics."
   
 (defun gnus-topic-fold (&optional insert)
   "Remove/insert the current topic."
   
 (defun gnus-topic-fold (&optional insert)
   "Remove/insert the current topic."
-  (let ((topic (gnus-group-topic-name))) 
+  (let ((topic (gnus-group-topic-name)))
     (when topic
       (save-excursion
        (if (not (gnus-group-active-topic-p))
     (when topic
       (save-excursion
        (if (not (gnus-group-active-topic-p))
@@ -476,7 +477,7 @@ articles in the topic and its subtopics."
     ;; Insert the text.
     (gnus-add-text-properties 
      (point)
     ;; Insert the text.
     (gnus-add-text-properties 
      (point)
-     (prog1 (1+ (point)) 
+     (prog1 (1+ (point))
        (eval gnus-topic-line-format-spec)
        (gnus-topic-remove-excess-properties)1)
      (list 'gnus-topic (intern name)
        (eval gnus-topic-line-format-spec)
        (gnus-topic-remove-excess-properties)1)
      (list 'gnus-topic (intern name)
@@ -514,7 +515,7 @@ articles in the topic and its subtopics."
        (gnus-group-goto-group group)
        (gnus-group-position-point)))))
 
        (gnus-group-goto-group group)
        (gnus-group-position-point)))))
 
-(defun gnus-topic-goto-missing-group (group) 
+(defun gnus-topic-goto-missing-group (group)
   "Place point where GROUP is supposed to be inserted."
   (let* ((topic (gnus-group-topic group))
         (groups (cdr (assoc topic gnus-topic-alist)))
   "Place point where GROUP is supposed to be inserted."
   (let* ((topic (gnus-group-topic group))
         (groups (cdr (assoc topic gnus-topic-alist)))
@@ -573,7 +574,9 @@ articles in the topic and its subtopics."
       (or (save-excursion
            (forward-line -1)
            (gnus-topic-goto-topic (gnus-current-topic))
       (or (save-excursion
            (forward-line -1)
            (gnus-topic-goto-topic (gnus-current-topic))
-           (gnus-group-topic-level)) 0)) ? ))
+           (gnus-group-topic-level))
+         0))
+   ? ))
 
 ;;; Initialization
 
 
 ;;; Initialization
 
@@ -586,7 +589,7 @@ articles in the topic and its subtopics."
        gnus-topic-tallied-groups nil
        gnus-topology-checked-p nil))
 
        gnus-topic-tallied-groups nil
        gnus-topology-checked-p nil))
 
-(defun gnus-topic-check-topology ()  
+(defun gnus-topic-check-topology ()
   ;; The first time we set the topology to whatever we have
   ;; gotten here, which can be rather random.
   (unless gnus-topic-alist
   ;; The first time we set the topology to whatever we have
   ;; gotten here, which can be rather random.
   (unless gnus-topic-alist
@@ -657,10 +660,10 @@ articles in the topic and its subtopics."
       (let ((topic-name (pop topic))
            group filtered-topic)
        (while (setq group (pop topic))
       (let ((topic-name (pop topic))
            group filtered-topic)
        (while (setq group (pop topic))
-         (if (and (or (gnus-gethash group gnus-active-hashtb)
-                      (gnus-info-method (gnus-get-info group)))
-                  (not (gnus-gethash group gnus-killed-hashtb)))
-             (push group filtered-topic)))
+         (when (and (or (gnus-gethash group gnus-active-hashtb)
+                        (gnus-info-method (gnus-get-info group)))
+                    (not (gnus-gethash group gnus-killed-hashtb)))
+           (push group filtered-topic)))
        (push (cons topic-name (nreverse filtered-topic)) result)))
     (setq gnus-topic-alist (nreverse result))))
 
        (push (cons topic-name (nreverse filtered-topic)) result)))
     (setq gnus-topic-alist (nreverse result))))
 
@@ -688,7 +691,9 @@ articles in the topic and its subtopics."
                 (* gnus-topic-indent-level
                    (or (save-excursion
                          (gnus-topic-goto-topic (gnus-current-topic))
                 (* gnus-topic-indent-level
                    (or (save-excursion
                          (gnus-topic-goto-topic (gnus-current-topic))
-                         (gnus-group-topic-level)) 0)) ? ))
+                         (gnus-group-topic-level))
+                       0))
+                ? ))
               (yanked (list group))
               alist talist end)
          ;; Then we enter the yanked groups into the topics they belong
               (yanked (list group))
               alist talist end)
          ;; Then we enter the yanked groups into the topics they belong
@@ -989,7 +994,7 @@ If COPYP, copy the groups instead."
        (start-topic (gnus-group-topic-name))
        entry)
     (mapcar 
        (start-topic (gnus-group-topic-name))
        entry)
     (mapcar 
-     (lambda (g) 
+     (lambda (g)
        (gnus-group-remove-mark g)
        (when (and
              (setq entry (assoc (gnus-current-topic) gnus-topic-alist))
        (gnus-group-remove-mark g)
        (when (and
              (setq entry (assoc (gnus-current-topic) gnus-topic-alist))
@@ -1052,7 +1057,9 @@ If COPYP, copy the groups instead."
             (* gnus-topic-indent-level
                (or (save-excursion
                      (gnus-topic-goto-topic (gnus-current-topic))
             (* gnus-topic-indent-level
                (or (save-excursion
                      (gnus-topic-goto-topic (gnus-current-topic))
-                     (gnus-group-topic-level)) 0)) ? ))
+                     (gnus-group-topic-level))
+                   0))
+            ? ))
           yanked alist)
       ;; We first yank the groups the normal way...
       (setq yanked (gnus-group-yank-group arg))
           yanked alist)
       ;; We first yank the groups the normal way...
       (setq yanked (gnus-group-yank-group arg))
index 12bcb71..e9c06fb 100644 (file)
 
 (defmacro gnus-buffer-exists-p (buffer)
   `(let ((buffer ,buffer))
 
 (defmacro gnus-buffer-exists-p (buffer)
   `(let ((buffer ,buffer))
-     (and buffer
-         (funcall (if (stringp buffer) 'get-buffer 'buffer-name)
-                  buffer))))
+     (when buffer
+       (funcall (if (stringp buffer) 'get-buffer 'buffer-name)
+               buffer))))
 
 (defmacro gnus-kill-buffer (buffer)
   `(let ((buf ,buffer))
 
 (defmacro gnus-kill-buffer (buffer)
   `(let ((buf ,buffer))
-     (if (gnus-buffer-exists-p buf)
-        (kill-buffer buf))))
+     (when (gnus-buffer-exists-p buf)
+       (kill-buffer buf))))
 
 (defsubst gnus-point-at-bol ()
   "Return point at the beginning of the line."
 
 (defsubst gnus-point-at-bol ()
   "Return point at the beginning of the line."
     ;; First find the address - the thing with the @ in it.  This may
     ;; not be accurate in mail addresses, but does the trick most of
     ;; the time in news messages.
     ;; First find the address - the thing with the @ in it.  This may
     ;; not be accurate in mail addresses, but does the trick most of
     ;; the time in news messages.
-    (if (string-match "\\b[^@ \t<>]+[!@][^@ \t<>]+\\b" from)
-       (setq address (substring from (match-beginning 0) (match-end 0))))
+    (when (string-match "\\b[^@ \t<>]+[!@][^@ \t<>]+\\b" from)
+      (setq address (substring from (match-beginning 0) (match-end 0))))
     ;; Then we check whether the "name <address>" format is used.
     (and address
         ;; Fix by MORIOKA Tomohiko <morioka@jaist.ac.jp>
     ;; Then we check whether the "name <address>" format is used.
     (and address
         ;; Fix by MORIOKA Tomohiko <morioka@jaist.ac.jp>
       (setq idx 0))
     ;; Replace all occurrences of `.' with `/'.
     (while (< idx len)
       (setq idx 0))
     ;; Replace all occurrences of `.' with `/'.
     (while (< idx len)
-      (if (= (aref newsgroup idx) ?.)
-         (aset newsgroup idx ?/))
+      (when (= (aref newsgroup idx) ?.)
+       (aset newsgroup idx ?/))
       (setq idx (1+ idx)))
     newsgroup))
 
       (setq idx (1+ idx)))
     newsgroup))
 
 ;; it yet.  -erik selberg@cs.washington.edu
 (defun gnus-dd-mmm (messy-date)
   "Return a string like DD-MMM from a big messy string"
 ;; it yet.  -erik selberg@cs.washington.edu
 (defun gnus-dd-mmm (messy-date)
   "Return a string like DD-MMM from a big messy string"
-  (let ((datevec (condition-case () (timezone-parse-date messy-date) 
+  (let ((datevec (condition-case () (timezone-parse-date messy-date)
                   (error nil))))
     (if (not datevec)
        "??-???"
                   (error nil))))
     (if (not datevec)
        "??-???"
@@ -438,7 +438,7 @@ If N, return the Nth ancestor instead."
           (max 0))
       ;; Find the longest line currently displayed in the window.
       (goto-char (window-start))
           (max 0))
       ;; Find the longest line currently displayed in the window.
       (goto-char (window-start))
-      (while (and (not (eobp)) 
+      (while (and (not (eobp))
                  (< (point) end))
        (end-of-line)
        (setq max (max max (current-column)))
                  (< (point) end))
        (end-of-line)
        (setq max (max max (current-column)))
@@ -479,10 +479,11 @@ Timezone package is used."
   (interactive
    (list (read-file-name "Copy file: " default-directory)
         (read-file-name "Copy file to: " default-directory)))
   (interactive
    (list (read-file-name "Copy file: " default-directory)
         (read-file-name "Copy file to: " default-directory)))
-  (or to (setq to (read-file-name "Copy file to: " default-directory)))
-  (and (file-directory-p to)
-       (setq to (concat (file-name-as-directory to)
-                       (file-name-nondirectory file))))
+  (unless to
+    (setq to (read-file-name "Copy file to: " default-directory)))
+  (when (file-directory-p to)
+    (setq to (concat (file-name-as-directory to)
+                    (file-name-nondirectory file))))
   (copy-file file to))
 
 (defun gnus-kill-all-overlays ()
   (copy-file file to))
 
 (defun gnus-kill-all-overlays ()
@@ -553,6 +554,13 @@ Bind `print-quoted' to t while printing."
     (make-directory directory t))
   t)
 
     (make-directory directory t))
   t)
 
+(defun gnus-write-buffer (file)
+  "Write the current buffer's contents to FILE."
+  ;; Make sure the directory exists.
+  (gnus-make-directory (file-name-directory file))
+  ;; Write the buffer.
+  (write-region (point-min) (point-max) file nil 'quietly))
+
 (defmacro gnus-delete-assq (key list)
   `(let ((listval (eval ,list)))
      (setq ,list (delq (assq ,key listval) listval))))
 (defmacro gnus-delete-assq (key list)
   `(let ((listval (eval ,list)))
      (setq ,list (delq (assq ,key listval) listval))))
index a0adc3a..8e6c247 100644 (file)
@@ -320,7 +320,7 @@ The headers will be included in the sequence they are matched.")
 
 (defun gnus-uu-decode-uu (&optional n)
   "Uudecodes the current article."
 
 (defun gnus-uu-decode-uu (&optional n)
   "Uudecodes the current article."
-  (interactive "P") 
+  (interactive "P")
   (gnus-uu-decode-with-method 'gnus-uu-uustrip-article n))
 
 (defun gnus-uu-decode-uu-and-save (n dir)
   (gnus-uu-decode-with-method 'gnus-uu-uustrip-article n))
 
 (defun gnus-uu-decode-uu-and-save (n dir)
@@ -450,12 +450,12 @@ The headers will be included in the sequence they are matched.")
              fs (cdr fs))
        (while (and fs (or from subject))
          (when from
              fs (cdr fs))
        (while (and fs (or from subject))
          (when from
-           (or (string= from (caar fs))
-               (setq from nil)))
+           (unless (string= from (caar fs))
+             (setq from nil)))
          (when subject
          (when subject
-           (or (string= (gnus-simplify-subject-fuzzy (cdar fs))
-                        subject)
-               (setq subject nil)))
+           (unless (string= (gnus-simplify-subject-fuzzy (cdar fs))
+                            subject)
+             (setq subject nil)))
          (setq fs (cdr fs))))
       (unless subject
        (setq subject "Digested Articles"))
          (setq fs (cdr fs))))
       (unless subject
        (setq subject "Digested Articles"))
@@ -594,7 +594,8 @@ The headers will be included in the sequence they are matched.")
   (gnus-set-global-variables)
   (let ((marked (nreverse gnus-newsgroup-processable))
        subject articles total headers)
   (gnus-set-global-variables)
   (let ((marked (nreverse gnus-newsgroup-processable))
        subject articles total headers)
-    (or marked (error "No articles marked with the process mark"))
+    (unless marked
+      (error "No articles marked with the process mark"))
     (setq gnus-newsgroup-processable nil)
     (save-excursion
       (while marked
     (setq gnus-newsgroup-processable nil)
     (save-excursion
       (while marked
@@ -669,7 +670,8 @@ The headers will be included in the sequence they are matched.")
 (defun gnus-uu-decode-with-method (method n &optional save not-insert 
                                          scan cdir)
   (gnus-uu-initialize scan)
 (defun gnus-uu-decode-with-method (method n &optional save not-insert 
                                          scan cdir)
   (gnus-uu-initialize scan)
-  (if save (setq gnus-uu-default-dir save))
+  (when save
+    (setq gnus-uu-default-dir save))
   ;; Create the directory we save to.
   (when (and scan cdir save
             (not (file-exists-p save)))
   ;; Create the directory we save to.
   (when (and scan cdir save
             (not (file-exists-p save)))
@@ -678,10 +680,12 @@ The headers will be included in the sequence they are matched.")
        files)
     (setq files (gnus-uu-grab-articles articles method t))
     (let ((gnus-current-article (car articles)))
        files)
     (setq files (gnus-uu-grab-articles articles method t))
     (let ((gnus-current-article (car articles)))
-      (and scan (setq files (gnus-uu-scan-directory gnus-uu-work-dir))))
-    (and save (gnus-uu-save-files files save))
-    (if (eq gnus-uu-do-not-unpack-archives nil)
-       (setq files (gnus-uu-unpack-files files)))
+      (when scan
+       (setq files (gnus-uu-scan-directory gnus-uu-work-dir))))
+    (when save
+      (gnus-uu-save-files files save))
+    (when (eq gnus-uu-do-not-unpack-archives nil)
+      (setq files (gnus-uu-unpack-files files)))
     (setq files (nreverse (gnus-uu-get-actions files)))
     (or not-insert (not gnus-insert-pseudo-articles)
        (gnus-summary-insert-pseudos files save))))
     (setq files (nreverse (gnus-uu-get-actions files)))
     (or not-insert (not gnus-insert-pseudo-articles)
        (gnus-summary-insert-pseudos files save))))
@@ -727,8 +731,8 @@ The headers will be included in the sequence they are matched.")
    (gnus-uu-save-separate-articles
     (save-excursion
       (set-buffer buffer)
    (gnus-uu-save-separate-articles
     (save-excursion
       (set-buffer buffer)
-      (write-region 1 (point-max) (concat gnus-uu-saved-article-name 
-                                         gnus-current-article))
+      (gnus-write-buffer
+       (concat gnus-uu-saved-article-name gnus-current-article))
       (cond ((eq in-state 'first) (list gnus-uu-saved-article-name 'begin))
            ((eq in-state 'first-and-last) (list gnus-uu-saved-article-name 
                                                 'begin 'end))
       (cond ((eq in-state 'first) (list gnus-uu-saved-article-name 'begin))
            ((eq in-state 'first-and-last) (list gnus-uu-saved-article-name 
                                                 'begin 'end))
@@ -737,7 +741,7 @@ The headers will be included in the sequence they are matched.")
    ((not gnus-uu-save-in-digest)
     (save-excursion
       (set-buffer buffer)
    ((not gnus-uu-save-in-digest)
     (save-excursion
       (set-buffer buffer)
-      (write-region 1 (point-max) gnus-uu-saved-article-name t)
+      (write-region (point-min) (point-max) gnus-uu-saved-article-name t)
       (cond ((eq in-state 'first) (list gnus-uu-saved-article-name 'begin))
            ((eq in-state 'first-and-last) (list gnus-uu-saved-article-name 
                                                 'begin 'end))
       (cond ((eq in-state 'first) (list gnus-uu-saved-article-name 'begin))
            ((eq in-state 'first-and-last) (list gnus-uu-saved-article-name 
                                                 'begin 'end))
@@ -745,14 +749,13 @@ The headers will be included in the sequence they are matched.")
            (t (list 'middle)))))
    (t
     (let ((header (gnus-summary-article-header)))
            (t (list 'middle)))))
    (t
     (let ((header (gnus-summary-article-header)))
-      (setq gnus-uu-digest-from-subject
-           (cons (cons (mail-header-from header)
-                       (mail-header-subject header))
-                 gnus-uu-digest-from-subject)))
+      (push (cons (mail-header-from header)
+                 (mail-header-subject header))
+           gnus-uu-digest-from-subject))
     (let ((name (file-name-nondirectory gnus-uu-saved-article-name))
          (delim (concat "^" (make-string 30 ?-) "$"))
          beg subj headers headline sorthead body end-string state)
     (let ((name (file-name-nondirectory gnus-uu-saved-article-name))
          (delim (concat "^" (make-string 30 ?-) "$"))
          beg subj headers headline sorthead body end-string state)
-      (if (or (eq in-state 'first) 
+      (if (or (eq in-state 'first)
              (eq in-state 'first-and-last))
          (progn 
            (setq state (list 'begin))
              (eq in-state 'first-and-last))
          (progn 
            (setq state (list 'begin))
@@ -764,8 +767,8 @@ The headers will be included in the sequence they are matched.")
              (insert (format 
                       "Date: %s\nFrom: %s\nSubject: %s Digest\n\nTopics:\n"
                       (current-time-string) name name))))
              (insert (format 
                       "Date: %s\nFrom: %s\nSubject: %s Digest\n\nTopics:\n"
                       (current-time-string) name name))))
-       (if (not (eq in-state 'end))
-           (setq state (list 'middle))))
+       (when (not (eq in-state 'end))
+         (setq state (list 'middle))))
       (save-excursion
        (set-buffer (get-buffer "*gnus-uu-body*"))
        (goto-char (setq beg (point-max)))
       (save-excursion
        (set-buffer (get-buffer "*gnus-uu-body*"))
        (goto-char (setq beg (point-max)))
@@ -806,30 +809,29 @@ The headers will be included in the sequence they are matched.")
        (insert body) (goto-char (point-max))
        (insert (concat "\n" (make-string 30 ?-) "\n\n"))
        (goto-char beg)
        (insert body) (goto-char (point-max))
        (insert (concat "\n" (make-string 30 ?-) "\n\n"))
        (goto-char beg)
-       (if (re-search-forward "^Subject: \\(.*\\)$" nil t)
-           (progn
-             (setq subj (buffer-substring (match-beginning 1) (match-end 1)))
-             (save-excursion 
-               (set-buffer (get-buffer "*gnus-uu-pre*"))
-               (insert (format "   %s\n" subj))))))
-      (if (or (eq in-state 'last)
-             (eq in-state 'first-and-last))
-         (progn
-           (save-excursion
-             (set-buffer (get-buffer "*gnus-uu-pre*"))
-             (insert (format "\n\n%s\n\n" (make-string 70 ?-)))
-             (write-region 1 (point-max) gnus-uu-saved-article-name))
-           (save-excursion
-             (set-buffer (get-buffer "*gnus-uu-body*"))
-             (goto-char (point-max))
-             (insert 
-              (concat (setq end-string (format "End of %s Digest" name)) 
-                      "\n"))
-             (insert (concat (make-string (length end-string) ?*) "\n"))
-             (write-region 1 (point-max) gnus-uu-saved-article-name t))
-           (kill-buffer (get-buffer "*gnus-uu-pre*"))
-           (kill-buffer (get-buffer "*gnus-uu-body*"))
-           (setq state (cons 'end state))))
+       (when (re-search-forward "^Subject: \\(.*\\)$" nil t)
+         (setq subj (buffer-substring (match-beginning 1) (match-end 1)))
+         (save-excursion 
+           (set-buffer (get-buffer "*gnus-uu-pre*"))
+           (insert (format "   %s\n" subj)))))
+      (when (or (eq in-state 'last)
+               (eq in-state 'first-and-last))
+       (save-excursion
+         (set-buffer (get-buffer "*gnus-uu-pre*"))
+         (insert (format "\n\n%s\n\n" (make-string 70 ?-)))
+         (gnus-write-buffer gnus-uu-saved-article-name))
+       (save-excursion
+         (set-buffer (get-buffer "*gnus-uu-body*"))
+         (goto-char (point-max))
+         (insert 
+          (concat (setq end-string (format "End of %s Digest" name))
+                  "\n"))
+         (insert (concat (make-string (length end-string) ?*) "\n"))
+         (write-region
+          (point-min) (point-max) gnus-uu-saved-article-name t))
+       (kill-buffer (get-buffer "*gnus-uu-pre*"))
+       (kill-buffer (get-buffer "*gnus-uu-body*"))
+       (push 'end state))
       (if (memq 'begin state)
          (cons gnus-uu-saved-article-name state)
        state)))))
       (if (memq 'begin state)
          (cons gnus-uu-saved-article-name state)
        state)))))
@@ -849,9 +851,9 @@ The headers will be included in the sequence they are matched.")
       (set-buffer buffer)
       (widen)
       (goto-char (point-min))
       (set-buffer buffer)
       (widen)
       (goto-char (point-min))
-      (if (not (re-search-forward gnus-uu-binhex-begin-line nil t))
-         (if (not (re-search-forward gnus-uu-binhex-body-line nil t))
-             (setq state (list 'wrong-type))))
+      (when (not (re-search-forward gnus-uu-binhex-begin-line nil t))
+       (when (not (re-search-forward gnus-uu-binhex-body-line nil t))
+         (setq state (list 'wrong-type))))
 
       (if (memq 'wrong-type state)
          ()
 
       (if (memq 'wrong-type state)
          ()
@@ -864,15 +866,16 @@ The headers will be included in the sequence they are matched.")
          (setq state (list 'middle)))
        (goto-char (point-max))
        (re-search-backward (concat gnus-uu-binhex-body-line "\\|" 
          (setq state (list 'middle)))
        (goto-char (point-max))
        (re-search-backward (concat gnus-uu-binhex-body-line "\\|" 
-                                   gnus-uu-binhex-end-line) nil t)
-       (if (looking-at gnus-uu-binhex-end-line)
-           (setq state (if (memq 'begin state)
-                           (cons 'end state)
-                         (list 'end))))
+                                   gnus-uu-binhex-end-line)
+                           nil t)
+       (when (looking-at gnus-uu-binhex-end-line)
+         (setq state (if (memq 'begin state)
+                         (cons 'end state)
+                       (list 'end))))
        (beginning-of-line)
        (forward-line 1)
        (beginning-of-line)
        (forward-line 1)
-       (if (file-exists-p gnus-uu-binhex-article-name)
-           (append-to-file start-char (point) gnus-uu-binhex-article-name))))
+       (when (file-exists-p gnus-uu-binhex-article-name)
+         (append-to-file start-char (point) gnus-uu-binhex-article-name))))
     (if (memq 'begin state)
        (cons gnus-uu-binhex-article-name state)
       state)))
     (if (memq 'begin state)
        (cons gnus-uu-binhex-article-name state)
       state)))
@@ -930,11 +933,11 @@ The headers will be included in the sequence they are matched.")
                nil 
              gnus-uu-default-view-rules)
            gnus-uu-user-view-rules-end)))
                nil 
              gnus-uu-default-view-rules)
            gnus-uu-user-view-rules-end)))
-    (if (and (not (string= (or action "") "gnus-uu-archive")) 
-            gnus-uu-view-with-metamail)
-       (if (setq action 
+    (when (and (not (string= (or action "") "gnus-uu-archive"))
+              gnus-uu-view-with-metamail)
+      (when (setq action 
                  (gnus-uu-choose-action file-name gnus-uu-ext-to-mime-list))
                  (gnus-uu-choose-action file-name gnus-uu-ext-to-mime-list))
-           (setq action (format "metamail -d -b -c \"%s\"" action))))
+       (setq action (format "metamail -d -b -c \"%s\"" action))))
     action))
 
 
     action))
 
 
@@ -959,10 +962,9 @@ The headers will be included in the sequence they are matched.")
 
       (setq case-fold-search nil)
       (goto-char (point-min))
 
       (setq case-fold-search nil)
       (goto-char (point-min))
-      (if (looking-at vernum)
-         (progn
-           (replace-match vernum t t)
-           (setq beg (length vernum))))
+      (when (looking-at vernum)
+       (replace-match vernum t t)
+       (setq beg (length vernum)))
 
       (goto-char beg)
       (if (re-search-forward "[ \t]*[0-9]+/[0-9]+" nil t)
 
       (goto-char beg)
       (if (re-search-forward "[ \t]*[0-9]+/[0-9]+" nil t)
@@ -975,7 +977,7 @@ The headers will be included in the sequence they are matched.")
          (end-of-line)
          (while (and (re-search-backward "[0-9]" nil t) (> count 0))
             (while (and 
          (end-of-line)
          (while (and (re-search-backward "[0-9]" nil t) (> count 0))
             (while (and 
-                   (looking-at "[0-9]") 
+                   (looking-at "[0-9]")
                    (< 1 (goto-char (1- (point))))))
             (re-search-forward "[0-9]+" nil t)
            (replace-match "[0-9]+")
                    (< 1 (goto-char (1- (point))))))
             (re-search-forward "[0-9]+" nil t)
            (replace-match "[0-9]+")
@@ -1002,8 +1004,8 @@ The headers will be included in the sequence they are matched.")
            (n (abs n)))
        (save-excursion
          (while (and (> n 0)
            (n (abs n)))
        (save-excursion
          (while (and (> n 0)
-                     (setq articles (cons (gnus-summary-article-number) 
-                                          articles))
+                     (push (gnus-summary-article-number)
+                           articles)
                      (gnus-summary-search-forward nil nil backward))
            (setq n (1- n))))
        (nreverse articles)))
                      (gnus-summary-search-forward nil nil backward))
            (setq n (1- n))))
        (nreverse articles)))
@@ -1041,16 +1043,15 @@ The headers will be included in the sequence they are matched.")
                     (= mark gnus-dormant-mark))
                 (setq subj (mail-header-subject (gnus-data-header d)))
                 (string-match subject subj)
                     (= mark gnus-dormant-mark))
                 (setq subj (mail-header-subject (gnus-data-header d)))
                 (string-match subject subj)
-                (setq list-of-subjects 
-                      (cons (cons subj (gnus-data-number d))
-                            list-of-subjects)))))
+                (push (cons subj (gnus-data-number d))
+                      list-of-subjects))))
 
        ;; Expand numbers, sort, and return the list of article
        ;; numbers.
 
        ;; Expand numbers, sort, and return the list of article
        ;; numbers.
-       (mapcar (lambda (sub) (cdr sub)) 
+       (mapcar (lambda (sub) (cdr sub))
                (sort (gnus-uu-expand-numbers 
                       list-of-subjects
                (sort (gnus-uu-expand-numbers 
                       list-of-subjects
-                      (not do-not-translate)) 
+                      (not do-not-translate))
                      'gnus-uu-string<))))))
 
 (defun gnus-uu-expand-numbers (string-list &optional translate)
                      'gnus-uu-string<))))))
 
 (defun gnus-uu-expand-numbers (string-list &optional translate)
@@ -1073,9 +1074,9 @@ The headers will be included in the sequence they are matched.")
          (replace-match " "))
        ;; Translate all characters to "a".
        (goto-char (point-min))
          (replace-match " "))
        ;; Translate all characters to "a".
        (goto-char (point-min))
-       (if translate 
-           (while (re-search-forward "[A-Za-z]" nil t)
-             (replace-match "a" t t)))
+       (when translate 
+         (while (re-search-forward "[A-Za-z]" nil t)
+           (replace-match "a" t t)))
        ;; Expand numbers.
        (goto-char (point-min))
        (while (re-search-forward "[0-9]+" nil t)
        ;; Expand numbers.
        (goto-char (point-min))
        (while (re-search-forward "[0-9]+" nil t)
@@ -1120,15 +1121,14 @@ The headers will be included in the sequence they are matched.")
     (if (not (and gnus-uu-has-been-grabbed
                  gnus-uu-unmark-articles-not-decoded))
        ()
     (if (not (and gnus-uu-has-been-grabbed
                  gnus-uu-unmark-articles-not-decoded))
        ()
-      (if dont-unmark-last-article
-         (progn
-           (setq art (car gnus-uu-has-been-grabbed))
-           (setq gnus-uu-has-been-grabbed (cdr gnus-uu-has-been-grabbed))))
+      (when dont-unmark-last-article
+       (setq art (car gnus-uu-has-been-grabbed))
+       (setq gnus-uu-has-been-grabbed (cdr gnus-uu-has-been-grabbed)))
       (while gnus-uu-has-been-grabbed
        (gnus-summary-tick-article (car gnus-uu-has-been-grabbed) t)
        (setq gnus-uu-has-been-grabbed (cdr gnus-uu-has-been-grabbed)))
       (while gnus-uu-has-been-grabbed
        (gnus-summary-tick-article (car gnus-uu-has-been-grabbed) t)
        (setq gnus-uu-has-been-grabbed (cdr gnus-uu-has-been-grabbed)))
-      (if dont-unmark-last-article
-         (setq gnus-uu-has-been-grabbed (list art))))))
+      (when dont-unmark-last-article
+       (setq gnus-uu-has-been-grabbed (list art))))))
 
 ;; This function takes a list of articles and a function to apply to
 ;; each article grabbed. 
 
 ;; This function takes a list of articles and a function to apply to
 ;; each article grabbed. 
@@ -1137,7 +1137,7 @@ The headers will be included in the sequence they are matched.")
 ;; the process-function has been successful and nil otherwise.
 (defun gnus-uu-grab-articles (articles process-function 
                                       &optional sloppy limit no-errors)
 ;; the process-function has been successful and nil otherwise.
 (defun gnus-uu-grab-articles (articles process-function 
                                       &optional sloppy limit no-errors)
-  (let ((state 'first) 
+  (let ((state 'first)
        (gnus-asynchronous nil)
        has-been-begin article result-file result-files process-state
        gnus-summary-display-article-function
        (gnus-asynchronous nil)
        has-been-begin article result-file result-files process-state
        gnus-summary-display-article-function
@@ -1177,18 +1177,18 @@ The headers will be included in the sequence they are matched.")
       ;; If this is the beginning of a decoded file, we push it 
       ;; on to a list.
       (when (or (memq 'begin process-state)
       ;; If this is the beginning of a decoded file, we push it 
       ;; on to a list.
       (when (or (memq 'begin process-state)
-               (and (or (eq state 'first) 
+               (and (or (eq state 'first)
                         (eq state 'first-and-last))
                     (memq 'ok process-state)))
                         (eq state 'first-and-last))
                     (memq 'ok process-state)))
-       (if has-been-begin
-           ;; If there is a `result-file' here, that means that the
-           ;; file was unsuccessfully decoded, so we delete it.
-           (when (and result-file 
-                      (file-exists-p result-file)
-                      (gnus-y-or-n-p
-                       (format "Delete unsuccessfully decoded file %s"
-                               result-file)))
-             (delete-file result-file)))
+       (when has-been-begin
+         ;; If there is a `result-file' here, that means that the
+         ;; file was unsuccessfully decoded, so we delete it.
+         (when (and result-file 
+                    (file-exists-p result-file)
+                    (gnus-y-or-n-p
+                     (format "Delete unsuccessfully decoded file %s"
+                             result-file)))
+           (delete-file result-file)))
        (when (memq 'begin process-state)
          (setq result-file (car process-state)))
        (setq has-been-begin t))
        (when (memq 'begin process-state)
          (setq result-file (car process-state)))
        (setq has-been-begin t))
@@ -1252,7 +1252,7 @@ The headers will be included in the sequence they are matched.")
        (gnus-message 2 "Wrong type file"))
        ((memq 'error process-state)
        (gnus-message 2 "An error occurred during decoding"))
        (gnus-message 2 "Wrong type file"))
        ((memq 'error process-state)
        (gnus-message 2 "An error occurred during decoding"))
-       ((not (or (memq 'ok process-state) 
+       ((not (or (memq 'ok process-state)
                 (memq 'end process-state)))
        (gnus-message 2 "End of articles reached before end of file")))
       ;; Make unsuccessfully decoded articles unread.
                 (memq 'end process-state)))
        (gnus-message 2 "End of articles reached before end of file")))
       ;; Make unsuccessfully decoded articles unread.
@@ -1330,7 +1330,7 @@ The headers will be included in the sequence they are matched.")
 
          ;; If a process is running, we kill it.
          (when (and gnus-uu-uudecode-process
 
          ;; If a process is running, we kill it.
          (when (and gnus-uu-uudecode-process
-                    (memq (process-status gnus-uu-uudecode-process) 
+                    (memq (process-status gnus-uu-uudecode-process)
                           '(run stop)))
            (delete-process gnus-uu-uudecode-process)
            (gnus-uu-unmark-list-of-grabbed t))
                           '(run stop)))
            (delete-process gnus-uu-uudecode-process)
            (gnus-uu-unmark-list-of-grabbed t))
@@ -1355,7 +1355,7 @@ The headers will be included in the sequence they are matched.")
        
        ;; We look for the end of the thing to be decoded.
        (if (re-search-forward gnus-uu-end-string nil t)
        
        ;; We look for the end of the thing to be decoded.
        (if (re-search-forward gnus-uu-end-string nil t)
-           (setq state (cons 'end state))
+           (push 'end state)
          (goto-char (point-max))
          (re-search-backward gnus-uu-body-line nil t))
         
          (goto-char (point-max))
          (re-search-backward gnus-uu-body-line nil t))
         
@@ -1420,8 +1420,8 @@ The headers will be included in the sequence they are matched.")
   (let ((oldpoint (point))
        res)
     (goto-char (point-min))
   (let ((oldpoint (point))
        res)
     (goto-char (point-min))
-    (if (re-search-forward gnus-uu-shar-name-marker nil t)
-       (setq res (buffer-substring (match-beginning 1) (match-end 1))))
+    (when (re-search-forward gnus-uu-shar-name-marker nil t)
+      (setq res (buffer-substring (match-beginning 1) (match-end 1))))
     (goto-char oldpoint)
     res))
 
     (goto-char oldpoint)
     res))
 
@@ -1433,21 +1433,21 @@ The headers will be included in the sequence they are matched.")
        (case-fold-search t)
        rule action)
     (and 
        (case-fold-search t)
        rule action)
     (and 
-     (or no-ignore 
-        (and (not 
-              (and gnus-uu-ignore-files-by-name
-                   (string-match gnus-uu-ignore-files-by-name file-name)))
-             (not 
-              (and gnus-uu-ignore-files-by-type
-                   (string-match gnus-uu-ignore-files-by-type 
-                                 (or (gnus-uu-choose-action 
-                                      file-name gnus-uu-ext-to-mime-list t) 
-                                     ""))))))
+     (unless no-ignore 
+       (and (not 
+            (and gnus-uu-ignore-files-by-name
+                 (string-match gnus-uu-ignore-files-by-name file-name)))
+           (not 
+            (and gnus-uu-ignore-files-by-type
+                 (string-match gnus-uu-ignore-files-by-type 
+                               (or (gnus-uu-choose-action 
+                                    file-name gnus-uu-ext-to-mime-list t)
+                                   ""))))))
      (while (not (or (eq action-list ()) action))
        (setq rule (car action-list))
        (setq action-list (cdr action-list))
      (while (not (or (eq action-list ()) action))
        (setq rule (car action-list))
        (setq action-list (cdr action-list))
-       (if (string-match (car rule) file-name)
-          (setq action (cadr rule)))))
+       (when (string-match (car rule) file-name)
+        (setq action (cadr rule)))))
     action))
 
 (defun gnus-uu-treat-archive (file-path)
     action))
 
 (defun gnus-uu-treat-archive (file-path)
@@ -1460,13 +1460,14 @@ The headers will be included in the sequence they are matched.")
                                        nil
                                      gnus-uu-default-archive-rules))))
 
                                        nil
                                      gnus-uu-default-archive-rules))))
 
-    (if (not action) (error "No unpackers for the file %s" file-path))
+    (when (not action)
+      (error "No unpackers for the file %s" file-path))
 
     (string-match "/[^/]*$" file-path)
     (setq dir (substring file-path 0 (match-beginning 0)))
 
 
     (string-match "/[^/]*$" file-path)
     (setq dir (substring file-path 0 (match-beginning 0)))
 
-    (if (member action gnus-uu-destructive-archivers)
-       (copy-file file-path (concat file-path "~") t))
+    (when (member action gnus-uu-destructive-archivers)
+      (copy-file file-path (concat file-path "~") t))
 
     (setq command (format "cd %s ; %s" dir (gnus-uu-command action file-path)))
 
 
     (setq command (format "cd %s ; %s" dir (gnus-uu-command action file-path)))
 
@@ -1483,8 +1484,8 @@ The headers will be included in the sequence they are matched.")
       (gnus-message 2 "Error during unpacking of archive")
       (setq did-unpack nil))
 
       (gnus-message 2 "Error during unpacking of archive")
       (setq did-unpack nil))
 
-    (if (member action gnus-uu-destructive-archivers)
-       (rename-file (concat file-path "~") file-path t))
+    (when (member action gnus-uu-destructive-archivers)
+      (rename-file (concat file-path "~") file-path t))
 
     did-unpack))
 
 
     did-unpack))
 
@@ -1494,7 +1495,7 @@ The headers will be included in the sequence they are matched.")
     (while dirs
       (if (file-directory-p (setq file (car dirs)))
          (setq files (append files (gnus-uu-dir-files file)))
     (while dirs
       (if (file-directory-p (setq file (car dirs)))
          (setq files (append files (gnus-uu-dir-files file)))
-       (setq files (cons file files)))
+       (push file files))
       (setq dirs (cdr dirs)))
     files))
 
       (setq dirs (cdr dirs)))
     files))
 
@@ -1505,22 +1506,21 @@ The headers will be included in the sequence they are matched.")
         file did-unpack)
     (while files
       (setq file (cdr (assq 'name (car files))))
         file did-unpack)
     (while files
       (setq file (cdr (assq 'name (car files))))
-      (if (and (not (member file ignore))
-              (equal (gnus-uu-get-action (file-name-nondirectory file))
-                     "gnus-uu-archive"))
-         (progn
-           (setq did-unpack (cons file did-unpack))
-           (or (gnus-uu-treat-archive file)
-               (gnus-message 2 "Error during unpacking of %s" file))
-           (let* ((newfiles (gnus-uu-ls-r gnus-uu-work-dir))
-                  (nfiles newfiles))
-             (while nfiles
-               (or (member (car nfiles) totfiles)
-                   (setq ofiles (cons (list (cons 'name (car nfiles))
-                                            (cons 'original file))
-                                      ofiles)))
-               (setq nfiles (cdr nfiles)))
-             (setq totfiles newfiles))))
+      (when (and (not (member file ignore))
+                (equal (gnus-uu-get-action (file-name-nondirectory file))
+                       "gnus-uu-archive"))
+       (push file did-unpack)
+       (unless (gnus-uu-treat-archive file)
+         (gnus-message 2 "Error during unpacking of %s" file))
+       (let* ((newfiles (gnus-uu-ls-r gnus-uu-work-dir))
+              (nfiles newfiles))
+         (while nfiles
+           (unless (member (car nfiles) totfiles)
+             (push (list (cons 'name (car nfiles))
+                         (cons 'original file))
+                   ofiles))
+           (setq nfiles (cdr nfiles)))
+         (setq totfiles newfiles)))
       (setq files (cdr files)))
     (if did-unpack 
        (gnus-uu-unpack-files ofiles (append did-unpack ignore))
       (setq files (cdr files)))
     (if did-unpack 
        (gnus-uu-unpack-files ofiles (append did-unpack ignore))
@@ -1530,10 +1530,9 @@ The headers will be included in the sequence they are matched.")
   (let* ((files (gnus-uu-directory-files dir t))
         (ofiles files))
     (while files
   (let* ((files (gnus-uu-directory-files dir t))
         (ofiles files))
     (while files
-      (if (file-directory-p (car files))
-         (progn
-           (setq ofiles (delete (car files) ofiles))
-           (setq ofiles (append ofiles (gnus-uu-ls-r (car files))))))
+      (when (file-directory-p (car files))
+       (setq ofiles (delete (car files) ofiles))
+       (setq ofiles (append ofiles (gnus-uu-ls-r (car files)))))
       (setq files (cdr files)))
     ofiles))
 
       (setq files (cdr files)))
     ofiles))
 
@@ -1545,8 +1544,8 @@ The headers will be included in the sequence they are matched.")
     (while files
       (setq file (car files))
       (setq files (cdr files))
     (while files
       (setq file (car files))
       (setq files (cdr files))
-      (or (member (file-name-nondirectory file) '("." ".."))
-         (setq out (cons file out))))
+      (unless (member (file-name-nondirectory file) '("." ".."))
+       (push file out)))
     (setq out (nreverse out))
     out))
 
     (setq out (nreverse out))
     out))
 
@@ -1562,25 +1561,25 @@ The headers will be included in the sequence they are matched.")
              (goto-char start)
              (while (not (eobp))
                (progn
              (goto-char start)
              (while (not (eobp))
                (progn
-                 (if (looking-at "\n") (replace-match ""))
+                 (when (looking-at "\n")
+                   (replace-match ""))
                  (forward-line 1))))
            
          (while (not (eobp))
            (if (looking-at (concat gnus-uu-begin-string "\\|" 
                                    gnus-uu-end-string))
                ()
                  (forward-line 1))))
            
          (while (not (eobp))
            (if (looking-at (concat gnus-uu-begin-string "\\|" 
                                    gnus-uu-end-string))
                ()
-             (if (not found)
-                 (progn
-                   (beginning-of-line)
-                   (setq beg (point))
-                   (end-of-line)
-                   (setq length (- (point) beg))))
+             (when (not found)
+               (beginning-of-line)
+               (setq beg (point))
+               (end-of-line)
+               (setq length (- (point) beg)))
              (setq found t)
              (beginning-of-line)
              (setq beg (point))
              (end-of-line)
              (setq found t)
              (beginning-of-line)
              (setq beg (point))
              (end-of-line)
-             (if (not (= length (- (point) beg)))
-                 (insert (make-string (- length (- (point) beg)) ? ))))
+             (when (not (= length (- (point) beg)))
+               (insert (make-string (- length (- (point) beg)) ? ))))
            (forward-line 1)))))))
 
 (defvar gnus-uu-tmp-alist nil)
            (forward-line 1)))))))
 
 (defvar gnus-uu-tmp-alist nil)
@@ -1588,27 +1587,27 @@ The headers will be included in the sequence they are matched.")
 (defun gnus-uu-initialize (&optional scan)
   (let (entry)
     (if (and (not scan)
 (defun gnus-uu-initialize (&optional scan)
   (let (entry)
     (if (and (not scan)
-            (if (setq entry (assoc gnus-newsgroup-name gnus-uu-tmp-alist))
-                (if (file-exists-p (cdr entry))
-                    (setq gnus-uu-work-dir (cdr entry))
-                  (setq gnus-uu-tmp-alist (delq entry gnus-uu-tmp-alist))
-                  nil)))
+            (when (setq entry (assoc gnus-newsgroup-name gnus-uu-tmp-alist))
+              (if (file-exists-p (cdr entry))
+                  (setq gnus-uu-work-dir (cdr entry))
+                (setq gnus-uu-tmp-alist (delq entry gnus-uu-tmp-alist))
+                nil)))
        t
       (setq gnus-uu-tmp-dir (file-name-as-directory 
                             (expand-file-name gnus-uu-tmp-dir)))
       (if (not (file-directory-p gnus-uu-tmp-dir))
          (error "Temp directory %s doesn't exist" gnus-uu-tmp-dir)
        t
       (setq gnus-uu-tmp-dir (file-name-as-directory 
                             (expand-file-name gnus-uu-tmp-dir)))
       (if (not (file-directory-p gnus-uu-tmp-dir))
          (error "Temp directory %s doesn't exist" gnus-uu-tmp-dir)
-       (if (not (file-writable-p gnus-uu-tmp-dir))
-           (error "Temp directory %s can't be written to" 
-                  gnus-uu-tmp-dir)))
+       (when (not (file-writable-p gnus-uu-tmp-dir))
+         (error "Temp directory %s can't be written to" 
+                gnus-uu-tmp-dir)))
 
       (setq gnus-uu-work-dir 
            (make-temp-name (concat gnus-uu-tmp-dir "gnus")))
       (gnus-make-directory gnus-uu-work-dir)
       (set-file-modes gnus-uu-work-dir 448)
       (setq gnus-uu-work-dir (file-name-as-directory gnus-uu-work-dir))
 
       (setq gnus-uu-work-dir 
            (make-temp-name (concat gnus-uu-tmp-dir "gnus")))
       (gnus-make-directory gnus-uu-work-dir)
       (set-file-modes gnus-uu-work-dir 448)
       (setq gnus-uu-work-dir (file-name-as-directory gnus-uu-work-dir))
-      (setq gnus-uu-tmp-alist (cons (cons gnus-newsgroup-name gnus-uu-work-dir)
-                                   gnus-uu-tmp-alist)))))
+      (push (cons gnus-newsgroup-name gnus-uu-work-dir)
+           gnus-uu-tmp-alist))))
 
 
 ;; Kills the temporary uu buffers, kills any processes, etc.
 
 
 ;; Kills the temporary uu buffers, kills any processes, etc.
@@ -1618,8 +1617,8 @@ The headers will be included in the sequence they are matched.")
         (memq (process-status (or gnus-uu-uudecode-process "nevair"))
               '(stop run))
         (delete-process gnus-uu-uudecode-process))
         (memq (process-status (or gnus-uu-uudecode-process "nevair"))
               '(stop run))
         (delete-process gnus-uu-uudecode-process))
-    (and (setq buf (get-buffer gnus-uu-output-buffer-name))
-        (kill-buffer buf))))
+    (when (setq buf (get-buffer gnus-uu-output-buffer-name))
+      (kill-buffer buf))))
 
 ;; Inputs an action and a file and returns a full command, putting
 ;; quotes round the file name and escaping any quotes in the file name.
 
 ;; Inputs an action and a file and returns a full command, putting
 ;; quotes round the file name and escaping any quotes in the file name.
@@ -1720,9 +1719,9 @@ is t.")
   (local-set-key "\C-c\C-s" 'gnus-uu-post-news-inews)
   (local-set-key "\C-c\C-i" 'gnus-uu-post-insert-binary-in-article)
       
   (local-set-key "\C-c\C-s" 'gnus-uu-post-news-inews)
   (local-set-key "\C-c\C-i" 'gnus-uu-post-insert-binary-in-article)
       
-  (if gnus-uu-post-include-before-composing
-      (save-excursion (setq gnus-uu-post-inserted-file-name 
-                           (gnus-uu-post-insert-binary)))))
+  (when gnus-uu-post-include-before-composing
+    (save-excursion (setq gnus-uu-post-inserted-file-name 
+                         (gnus-uu-post-insert-binary)))))
 
 (defun gnus-uu-post-insert-binary-in-article ()
   "Inserts an encoded file in the buffer.
 
 (defun gnus-uu-post-insert-binary-in-article ()
   "Inserts an encoded file in the buffer.
@@ -1733,33 +1732,30 @@ The user will be asked for a file name."
 
 ;; Encodes with uuencode and substitutes all spaces with backticks.
 (defun gnus-uu-post-encode-uuencode (path file-name)
 
 ;; Encodes with uuencode and substitutes all spaces with backticks.
 (defun gnus-uu-post-encode-uuencode (path file-name)
-  (if (gnus-uu-post-encode-file "uuencode" path file-name)
-      (progn
-       (goto-char (point-min))
-       (forward-line 1)
-       (while (re-search-forward " " nil t)
-         (replace-match "`"))
-       t)))
+  (when (gnus-uu-post-encode-file "uuencode" path file-name)
+    (goto-char (point-min))
+    (forward-line 1)
+    (while (re-search-forward " " nil t)
+      (replace-match "`"))
+    t))
 
 ;; Encodes with uuencode and adds MIME headers.
 (defun gnus-uu-post-encode-mime-uuencode (path file-name)
 
 ;; Encodes with uuencode and adds MIME headers.
 (defun gnus-uu-post-encode-mime-uuencode (path file-name)
-  (if (gnus-uu-post-encode-uuencode path file-name)
-      (progn
-       (gnus-uu-post-make-mime file-name "x-uue")
-       t)))
+  (when (gnus-uu-post-encode-uuencode path file-name)
+    (gnus-uu-post-make-mime file-name "x-uue")
+    t))
 
 ;; Encodes with base64 and adds MIME headers
 (defun gnus-uu-post-encode-mime (path file-name)
 
 ;; Encodes with base64 and adds MIME headers
 (defun gnus-uu-post-encode-mime (path file-name)
-  (if (gnus-uu-post-encode-file "mmencode" path file-name)
-      (progn
-       (gnus-uu-post-make-mime file-name "base64")
-       t)))
+  (when (gnus-uu-post-encode-file "mmencode" path file-name)
+    (gnus-uu-post-make-mime file-name "base64")
+    t))
 
 ;; Adds MIME headers.
 (defun gnus-uu-post-make-mime (file-name encoding)
   (goto-char (point-min))
   (insert (format "Content-Type: %s; name=\"%s\"\n" 
 
 ;; Adds MIME headers.
 (defun gnus-uu-post-make-mime (file-name encoding)
   (goto-char (point-min))
   (insert (format "Content-Type: %s; name=\"%s\"\n" 
-                 (gnus-uu-choose-action file-name gnus-uu-ext-to-mime-list) 
+                 (gnus-uu-choose-action file-name gnus-uu-ext-to-mime-list)
                  file-name))
   (insert (format "Content-Transfer-Encoding: %s\n\n" encoding))
   (save-restriction
                  file-name))
   (insert (format "Content-Transfer-Encoding: %s\n\n" encoding))
   (save-restriction
@@ -1768,10 +1764,9 @@ The user will be asked for a file name."
     (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$"))
     (forward-line -1)
     (narrow-to-region 1 (point))
     (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$"))
     (forward-line -1)
     (narrow-to-region 1 (point))
-    (or (mail-fetch-field "mime-version")
-       (progn
-         (widen)
-         (insert "MIME-Version: 1.0\n")))
+    (unless (mail-fetch-field "mime-version")
+      (widen)
+      (insert "MIME-Version: 1.0\n"))
     (widen)))
 
 ;; Encodes a file PATH with COMMAND, leaving the result in the
     (widen)))
 
 ;; Encodes a file PATH with COMMAND, leaving the result in the
@@ -1801,22 +1796,21 @@ If no file has been included, the user will be asked for a file."
          (setq gnus-inews-article-hook (if (listp gnus-inews-article-hook)
                                            gnus-inews-article-hook
                                          (list gnus-inews-article-hook)))
          (setq gnus-inews-article-hook (if (listp gnus-inews-article-hook)
                                            gnus-inews-article-hook
                                          (list gnus-inews-article-hook)))
-         (setq gnus-inews-article-hook 
-               (cons
-                '(lambda ()
-                   (save-excursion
-                     (goto-char (point-min))
-                     (if (re-search-forward "^Message-ID: \\(.*\\)$" nil t)
-                         (setq gnus-uu-post-message-id 
-                               (buffer-substring 
-                                (match-beginning 1) (match-end 1)))
-                       (setq gnus-uu-post-message-id nil))))
-                gnus-inews-article-hook))
+         (push
+          '(lambda ()
+             (save-excursion
+               (goto-char (point-min))
+               (if (re-search-forward "^Message-ID: \\(.*\\)$" nil t)
+                   (setq gnus-uu-post-message-id 
+                         (buffer-substring 
+                          (match-beginning 1) (match-end 1)))
+                 (setq gnus-uu-post-message-id nil))))
+          gnus-inews-article-hook)
          (gnus-uu-post-encoded file-name t))
       (gnus-uu-post-encoded file-name nil)))
   (setq gnus-uu-post-inserted-file-name nil)
          (gnus-uu-post-encoded file-name t))
       (gnus-uu-post-encoded file-name nil)))
   (setq gnus-uu-post-inserted-file-name nil)
-  (and gnus-uu-winconf-post-news
-       (set-window-configuration gnus-uu-winconf-post-news)))
+  (when gnus-uu-winconf-post-news
+    (set-window-configuration gnus-uu-winconf-post-news)))
       
 ;; Asks for a file to encode, encodes it and inserts the result in
 ;; the current buffer.  Returns the file name the user gave.
       
 ;; Asks for a file to encode, encodes it and inserts the result in
 ;; the current buffer.  Returns the file name the user gave.
@@ -1826,14 +1820,14 @@ If no file has been included, the user will be asked for a file."
 
     (setq file-path (read-file-name 
                     "What file do you want to encode? "))
 
     (setq file-path (read-file-name 
                     "What file do you want to encode? "))
-    (if (not (file-exists-p file-path))
-       (error "%s: No such file" file-path))
+    (when (not (file-exists-p file-path))
+      (error "%s: No such file" file-path))
 
     (goto-char (point-max))
     (insert (format "\n%s\n" gnus-uu-post-binary-separator))
     
 
     (goto-char (point-max))
     (insert (format "\n%s\n" gnus-uu-post-binary-separator))
     
-    (if (string-match "^~/" file-path)
-       (setq file-path (concat "$HOME" (substring file-path 1))))
+    (when (string-match "^~/" file-path)
+      (setq file-path (concat "$HOME" (substring file-path 1))))
     (if (string-match "/[^/]*$" file-path)
        (setq file-name (substring file-path (1+ (match-beginning 0))))
       (setq file-name file-path))
     (if (string-match "/[^/]*$" file-path)
        (setq file-name (substring file-path (1+ (match-beginning 0))))
       (setq file-name file-path))
@@ -1861,12 +1855,13 @@ If no file has been included, the user will be asked for a file."
     (setq post-buf (current-buffer))
 
     (goto-char (point-min))
     (setq post-buf (current-buffer))
 
     (goto-char (point-min))
-    (if (not (re-search-forward 
-             (if gnus-uu-post-separate-description 
-                 (concat "^" (regexp-quote gnus-uu-post-binary-separator)
-                         "$")
-               (concat "^" (regexp-quote mail-header-separator) "$")) nil t))
-       (error "Internal error: No binary/header separator"))
+    (when (not (re-search-forward 
+               (if gnus-uu-post-separate-description 
+                   (concat "^" (regexp-quote gnus-uu-post-binary-separator)
+                           "$")
+                 (concat "^" (regexp-quote mail-header-separator) "$"))
+               nil t))
+      (error "Internal error: No binary/header separator"))
     (beginning-of-line)
     (forward-line 1)
     (setq beg-binary (point))
     (beginning-of-line)
     (forward-line 1)
     (setq beg-binary (point))
@@ -1879,11 +1874,11 @@ If no file has been included, the user will be asked for a file."
       (goto-char (point-min))
       (setq length (count-lines 1 (point-max)))
       (setq parts (/ length gnus-uu-post-length))
       (goto-char (point-min))
       (setq length (count-lines 1 (point-max)))
       (setq parts (/ length gnus-uu-post-length))
-      (if (not (< (% length gnus-uu-post-length) 4))
-         (setq parts (1+ parts))))
+      (when (not (< (% length gnus-uu-post-length) 4))
+       (setq parts (1+ parts))))
 
 
-    (if gnus-uu-post-separate-description
-       (forward-line -1))
+    (when gnus-uu-post-separate-description
+      (forward-line -1))
     (kill-region (point) (point-max))
 
     (goto-char (point-min))
     (kill-region (point) (point-max))
 
     (goto-char (point-min))
@@ -1895,10 +1890,9 @@ If no file has been included, the user will be asked for a file."
     (goto-char (point-min))
     (if (not gnus-uu-post-separate-description)
        ()
     (goto-char (point-min))
     (if (not gnus-uu-post-separate-description)
        ()
-      (if (and (not threaded) (re-search-forward "^Subject: " nil t))
-         (progn
-           (end-of-line)
-           (insert (format " (0/%d)" parts))))
+      (when (and (not threaded) (re-search-forward "^Subject: " nil t))
+       (end-of-line)
+       (insert (format " (0/%d)" parts)))
       (message-send))
 
     (save-excursion
       (message-send))
 
     (save-excursion
@@ -1908,17 +1902,17 @@ If no file has been included, the user will be asked for a file."
        (set-buffer (get-buffer-create send-buffer-name))
        (erase-buffer)
        (insert header)
        (set-buffer (get-buffer-create send-buffer-name))
        (erase-buffer)
        (insert header)
-       (if (and threaded gnus-uu-post-message-id)
-           (insert (format "References: %s\n" gnus-uu-post-message-id)))
+       (when (and threaded gnus-uu-post-message-id)
+         (insert (format "References: %s\n" gnus-uu-post-message-id)))
        (insert separator)
        (setq whole-len
              (- 62 (length (format top-string "" file-name i parts ""))))
        (insert separator)
        (setq whole-len
              (- 62 (length (format top-string "" file-name i parts ""))))
-       (if (> 1 (setq minlen (/ whole-len 2)))
-           (setq minlen 1))
+       (when (> 1 (setq minlen (/ whole-len 2)))
+         (setq minlen 1))
        (setq 
         beg-line 
         (format top-string
        (setq 
         beg-line 
         (format top-string
-                (make-string minlen ?-) 
+                (make-string minlen ?-)
                 file-name i parts
                 (make-string 
                  (if (= 0 (% whole-len 2)) (1- minlen) minlen) ?-)))
                 file-name i parts
                 (make-string 
                  (if (= 0 (% whole-len 2)) (1- minlen) minlen) ?-)))
@@ -1930,9 +1924,9 @@ If no file has been included, the user will be asked for a file."
              (progn
                (end-of-line)
                (insert (format " (%d/%d)" i parts)))
              (progn
                (end-of-line)
                (insert (format " (%d/%d)" i parts)))
-           (if (or (and (= i 2) gnus-uu-post-separate-description)
-                   (and (= i 1) (not gnus-uu-post-separate-description)))
-               (replace-match "Subject: Re: "))))
+           (when (or (and (= i 2) gnus-uu-post-separate-description)
+                     (and (= i 1) (not gnus-uu-post-separate-description)))
+             (replace-match "Subject: Re: "))))
                  
        (goto-char (point-max))
        (save-excursion
                  
        (goto-char (point-max))
        (save-excursion
@@ -1941,8 +1935,8 @@ If no file has been included, the user will be asked for a file."
          (if (= i parts)
              (goto-char (point-max))
            (forward-line gnus-uu-post-length))
          (if (= i parts)
              (goto-char (point-max))
            (forward-line gnus-uu-post-length))
-         (if (and (= (1+ i) parts) (< (count-lines (point) (point-max)) 4))
-             (forward-line -4))
+         (when (and (= (1+ i) parts) (< (count-lines (point) (point-max)) 4))
+           (forward-line -4))
          (setq end (point)))
        (insert-buffer-substring uubuf beg end)
        (insert beg-line)
          (setq end (point)))
        (insert-buffer-substring uubuf beg end)
        (insert beg-line)
@@ -1954,26 +1948,25 @@ If no file has been included, the user will be asked for a file."
         (concat "^" (regexp-quote mail-header-separator) "$") nil t)
        (beginning-of-line)
        (forward-line 2)
         (concat "^" (regexp-quote mail-header-separator) "$") nil t)
        (beginning-of-line)
        (forward-line 2)
-       (if (re-search-forward 
-            (concat "^" (regexp-quote gnus-uu-post-binary-separator) "$")
-            nil t)
-           (progn 
-             (replace-match "")
-             (forward-line 1)))
+       (when (re-search-forward 
+              (concat "^" (regexp-quote gnus-uu-post-binary-separator) "$")
+              nil t)
+         (replace-match "")
+         (forward-line 1))
        (insert beg-line)
        (insert "\n")
        (let (message-sent-message-via)
          (message-send))))
 
        (insert beg-line)
        (insert "\n")
        (let (message-sent-message-via)
          (message-send))))
 
-    (and (setq buf (get-buffer send-buffer-name))
-        (kill-buffer buf))
-    (and (setq buf (get-buffer encoded-buffer-name))
-        (kill-buffer buf))
+    (when (setq buf (get-buffer send-buffer-name))
+      (kill-buffer buf))
+    (when (setq buf (get-buffer encoded-buffer-name))
+      (kill-buffer buf))
 
 
-    (if (not gnus-uu-post-separate-description)
-       (progn
-         (set-buffer-modified-p nil)
-         (and (fboundp 'bury-buffer) (bury-buffer))))))
+    (when (not gnus-uu-post-separate-description)
+      (set-buffer-modified-p nil)
+      (when (fboundp 'bury-buffer)
+       (bury-buffer)))))
 
 (provide 'gnus-uu)
 
 
 (provide 'gnus-uu)
 
index 74a623c..c5d9716 100644 (file)
@@ -49,12 +49,12 @@ Has to be set before gnus-vm is loaded.")
 
 (or gnus-vm-inhibit-window-system
     (condition-case nil
 
 (or gnus-vm-inhibit-window-system
     (condition-case nil
-       (if window-system
-           (require 'win-vm))
+       (when window-system
+         (require 'win-vm))
       (error nil)))
 
       (error nil)))
 
-(if (not (featurep 'vm))
-    (load "vm"))
+(when (not (featurep 'vm))
+  (load "vm"))
 
 (defun gnus-vm-make-folder (&optional buffer)
   (let ((article (or buffer (current-buffer)))
 
 (defun gnus-vm-make-folder (&optional buffer)
   (let ((article (or buffer (current-buffer)))
index 25ea554..9dd08d9 100644 (file)
@@ -378,7 +378,8 @@ buffer configuration.")
                  (split-window window (cadar comp-subs)
                                (eq type 'horizontal))))
          (setq result (or (gnus-configure-frame
                  (split-window window (cadar comp-subs)
                                (eq type 'horizontal))))
          (setq result (or (gnus-configure-frame
-                           (car comp-subs) window) result))
+                           (car comp-subs) window)
+                          result))
          (select-window new-win)
          (setq window new-win)
          (setq comp-subs (cdr comp-subs))))
          (select-window new-win)
          (setq window new-win)
          (setq comp-subs (cdr comp-subs))))
@@ -493,39 +494,35 @@ should have point."
       ;; Remove windows on all known Gnus buffers.
       (while buffers
        (setq buf (cdar buffers))
       ;; Remove windows on all known Gnus buffers.
       (while buffers
        (setq buf (cdar buffers))
-       (if (symbolp buf)
-           (setq buf (and (boundp buf) (symbol-value buf))))
+       (when (symbolp buf)
+         (setq buf (and (boundp buf) (symbol-value buf))))
        (and buf
             (get-buffer-window buf)
             (progn
        (and buf
             (get-buffer-window buf)
             (progn
-              (setq bufs (cons buf bufs))
+              (push buf bufs)
               (pop-to-buffer buf)
               (pop-to-buffer buf)
-              (if (or (not lowest)
-                      (< (gnus-window-top-edge) lowest))
-                  (progn
-                    (setq lowest (gnus-window-top-edge))
-                    (setq lowest-buf buf)))))
+              (when (or (not lowest)
+                        (< (gnus-window-top-edge) lowest))
+                (setq lowest (gnus-window-top-edge))
+                (setq lowest-buf buf))))
        (setq buffers (cdr buffers)))
       ;; Remove windows on *all* summary buffers.
       (walk-windows
        (lambda (win)
         (let ((buf (window-buffer win)))
        (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))
-              (progn
-                (setq bufs (cons buf bufs))
-                (pop-to-buffer buf)
-                (if (or (not lowest)
-                        (< (gnus-window-top-edge) lowest))
-                    (progn
-                      (setq lowest-buf buf)
-                      (setq lowest (gnus-window-top-edge)))))))))
-      (and lowest-buf
-          (progn
-            (pop-to-buffer lowest-buf)
-            (switch-to-buffer nntp-server-buffer)))
+          (when (string-match  "^\\*Summary" (buffer-name buf))
+            (push buf bufs)
+            (pop-to-buffer buf)
+            (when (or (not lowest)
+                      (< (gnus-window-top-edge) lowest))
+              (setq lowest-buf buf)
+              (setq lowest (gnus-window-top-edge)))))))
+      (when lowest-buf
+       (pop-to-buffer lowest-buf)
+       (switch-to-buffer nntp-server-buffer))
       (while bufs
       (while bufs
-       (and (not (eq (car bufs) lowest-buf))
-            (delete-windows-on (car bufs)))
+       (when (not (eq (car bufs) lowest-buf))
+         (delete-windows-on (car bufs)))
        (setq bufs (cdr bufs))))))
 
 (provide 'gnus-win)
        (setq bufs (cdr bufs))))))
 
 (provide 'gnus-win)
index ab4048f..41d4fc1 100644 (file)
@@ -36,8 +36,8 @@ If this variable is nil, Gnus will try to locate the directory
 automatically.")
 
 (defvar gnus-xmas-logo-color-alist
 automatically.")
 
 (defvar gnus-xmas-logo-color-alist
-  '((flame "#cc3300" "#ff2200") 
-    (pine "#c0cc93" "#f8ffb8") 
+  '((flame "#cc3300" "#ff2200")
+    (pine "#c0cc93" "#f8ffb8")
     (moss "#a1cc93" "#d2ffb8")
     (irish "#04cc90" "#05ff97")
     (sky "#049acc" "#05deff")
     (moss "#a1cc93" "#d2ffb8")
     (irish "#04cc90" "#05ff97")
     (sky "#049acc" "#05deff")
@@ -118,7 +118,7 @@ asynchronously.      The compressed face will be piped to this command.")
 (defun gnus-xmas-set-text-properties (start end props &optional buffer)
   "You should NEVER use this function.  It is ideologically blasphemous.
 It is provided only to ease porting of broken FSF Emacs programs."
 (defun gnus-xmas-set-text-properties (start end props &optional buffer)
   "You should NEVER use this function.  It is ideologically blasphemous.
 It is provided only to ease porting of broken FSF Emacs programs."
-  (if (stringp buffer) 
+  (if (stringp buffer)
       nil
     (map-extents (lambda (extent ignored)
                   (remove-text-properties 
       nil
     (map-extents (lambda (extent ignored)
                   (remove-text-properties 
@@ -131,8 +131,8 @@ It is provided only to ease porting of broken FSF Emacs programs."
 (defun gnus-xmas-highlight-selected-summary ()
   ;; Highlight selected article in summary buffer
   (when gnus-summary-selected-face
 (defun gnus-xmas-highlight-selected-summary ()
   ;; Highlight selected article in summary buffer
   (when gnus-summary-selected-face
-    (if gnus-newsgroup-selected-overlay
-       (delete-extent gnus-newsgroup-selected-overlay))
+    (when gnus-newsgroup-selected-overlay
+      (delete-extent gnus-newsgroup-selected-overlay))
     (setq gnus-newsgroup-selected-overlay 
          (make-extent (gnus-point-at-bol) (gnus-point-at-eol)))
     (set-extent-face gnus-newsgroup-selected-overlay
     (setq gnus-newsgroup-selected-overlay 
          (make-extent (gnus-point-at-bol) (gnus-point-at-eol)))
     (set-extent-face gnus-newsgroup-selected-overlay
@@ -161,8 +161,7 @@ displayed, no centering will be performed."
        ;; possible valid number, or the second line from the top,
        ;; whichever is the least.
        (set-window-start
        ;; possible valid number, or the second line from the top,
        ;; whichever is the least.
        (set-window-start
-        window (min bottom (save-excursion 
-                             (forward-line (- top)) (point)))))
+        window (min bottom (save-excursion (forward-line (- top)) (point)))))
       ;; Do horizontal recentering while we're at it.
       (when (and (get-buffer-window (current-buffer) t)
                 (not (eq gnus-auto-center-summary 'vertical)))
       ;; Do horizontal recentering while we're at it.
       (when (and (get-buffer-window (current-buffer) t)
                 (not (eq gnus-auto-center-summary 'vertical)))
@@ -197,7 +196,8 @@ call it with the value of the `gnus-data' text property."
   (let* ((pos (event-closest-point event))
         (data (get-text-property pos 'gnus-data))
         (fun (get-text-property pos 'gnus-callback)))
   (let* ((pos (event-closest-point event))
         (data (get-text-property pos 'gnus-data))
         (fun (get-text-property pos 'gnus-callback)))
-    (if fun (funcall fun data))))
+    (when fun
+      (funcall fun data))))
 
 (defun gnus-xmas-move-overlay (extent start end &optional buffer)
   (set-extent-endpoints extent start end))
 
 (defun gnus-xmas-move-overlay (extent start end &optional buffer)
   (set-extent-endpoints extent start end))
@@ -205,9 +205,9 @@ call it with the value of the `gnus-data' text property."
 ;; Fixed by Christopher Davis <ckd@loiosh.kei.com>.
 (defun gnus-xmas-article-add-button (from to fun &optional data)
   "Create a button between FROM and TO with callback FUN and data DATA."
 ;; Fixed by Christopher Davis <ckd@loiosh.kei.com>.
 (defun gnus-xmas-article-add-button (from to fun &optional data)
   "Create a button between FROM and TO with callback FUN and data DATA."
-  (and gnus-article-button-face
-       (gnus-overlay-put (gnus-make-overlay from to) 
-                        'face gnus-article-button-face))
+  (when gnus-article-button-face
+    (gnus-overlay-put (gnus-make-overlay from to)
+                     'face gnus-article-button-face))
   (gnus-add-text-properties 
    from to
    (nconc
   (gnus-add-text-properties 
    from to
    (nconc
@@ -249,16 +249,14 @@ call it with the value of the `gnus-data' text property."
              (next-bottom-edge (car (cdr (cdr (cdr 
                                                (window-pixel-edges 
                                                this-window)))))))
              (next-bottom-edge (car (cdr (cdr (cdr 
                                                (window-pixel-edges 
                                                this-window)))))))
-        (if (< bottom-edge next-bottom-edge)
-            (progn
-              (setq bottom-edge next-bottom-edge)
-              (setq lowest-window this-window)))
+        (when (< bottom-edge next-bottom-edge)
+         (setq bottom-edge next-bottom-edge)
+         (setq lowest-window this-window))
 
         (select-window this-window)
 
         (select-window this-window)
-        (if (eq last-window this-window)
-            (progn
-              (select-window lowest-window)
-              (setq window-search nil)))))))
+        (when (eq last-window this-window)
+         (select-window lowest-window)
+         (setq window-search nil))))))
 
 (defmacro gnus-xmas-menu-add (type &rest menus)
   `(gnus-xmas-menu-add-1 ',type ',menus))
 
 (defmacro gnus-xmas-menu-add (type &rest menus)
   `(gnus-xmas-menu-add-1 ',type ',menus))
@@ -318,9 +316,8 @@ call it with the value of the `gnus-data' text property."
   (let ((event (next-command-event)))
     ;; We junk all non-key events.  Is this naughty?
     (while (not (key-press-event-p event))
   (let ((event (next-command-event)))
     ;; We junk all non-key events.  Is this naughty?
     (while (not (key-press-event-p event))
-      (setq event (next-event)))
+      (setq event (next-command-event)))
     (cons (and (key-press-event-p event) 
     (cons (and (key-press-event-p event) 
-                                       ; (numberp (event-key event))
               (event-to-character event)) 
          event)))
 
               (event-to-character event)) 
          event)))
 
@@ -365,14 +362,14 @@ call it with the value of the `gnus-data' text property."
 (defun gnus-xmas-define ()
   (setq gnus-mouse-2 [button2])
 
 (defun gnus-xmas-define ()
   (setq gnus-mouse-2 [button2])
 
-  (or (memq 'underline (face-list))
-      (and (fboundp 'make-face)
-          (funcall (intern "make-face") 'underline)))
+  (unless (memq 'underline (face-list))
+    (and (fboundp 'make-face)
+        (funcall (intern "make-face") 'underline)))
   ;; Must avoid calling set-face-underline-p directly, because it
   ;; is a defsubst in emacs19, and will make the .elc files non
   ;; portable!
   ;; Must avoid calling set-face-underline-p directly, because it
   ;; is a defsubst in emacs19, and will make the .elc files non
   ;; portable!
-  (or (face-differs-from-default-p 'underline)
-      (funcall (intern "set-face-underline-p") 'underline t))
+  (unless (face-differs-from-default-p 'underline)
+    (funcall (intern "set-face-underline-p") 'underline t))
 
   (fset 'gnus-make-overlay 'make-extent)
   (fset 'gnus-overlay-put 'set-extent-property)
 
   (fset 'gnus-make-overlay 'make-extent)
   (fset 'gnus-overlay-put 'set-extent-property)
@@ -383,10 +380,11 @@ call it with the value of the `gnus-data' text property."
   (fset 'gnus-put-text-property 'gnus-xmas-put-text-property)
       
   (require 'text-props)
   (fset 'gnus-put-text-property 'gnus-xmas-put-text-property)
       
   (require 'text-props)
-  (if (< emacs-minor-version 14)
-      (fset 'gnus-set-text-properties 'gnus-xmas-set-text-properties))
+  (when (< emacs-minor-version 14)
+    (fset 'gnus-set-text-properties 'gnus-xmas-set-text-properties))
 
 
-  (or (boundp 'standard-display-table) (setq standard-display-table nil))
+  (unless (boundp 'standard-display-table)
+    (setq standard-display-table nil))
 
   (defvar gnus-mouse-face-prop 'highlight)
 
 
   (defvar gnus-mouse-face-prop 'highlight)
 
@@ -498,7 +496,8 @@ pounce directly on the real variables themselves.")
 
   (when (and (<= emacs-major-version 19)
             (<= emacs-minor-version 13))
 
   (when (and (<= emacs-major-version 19)
             (<= emacs-minor-version 13))
-    (setq gnus-article-x-face-too-ugly (if (eq (device-type) 'tty) "."))
+    (setq gnus-article-x-face-too-ugly (when (eq (device-type) 'tty)
+                                        "."))
     (fset 'gnus-highlight-selected-summary
          'gnus-xmas-highlight-selected-summary)
     (fset 'gnus-group-remove-excess-properties
     (fset 'gnus-highlight-selected-summary
          'gnus-xmas-highlight-selected-summary)
     (fset 'gnus-group-remove-excess-properties
@@ -570,7 +569,7 @@ pounce directly on the real variables themselves.")
 " 
               ""))
       ;; And then hack it.
 " 
               ""))
       ;; And then hack it.
-      (gnus-indent-rigidly (point-min) (point-max) 
+      (gnus-indent-rigidly (point-min) (point-max)
                           (/ (max (- (window-width) (or x 46)) 0) 2))
       (goto-char (point-min))
       (forward-line 1)
                           (/ (max (- (window-width) (or x 46)) 0) 2))
       (goto-char (point-min))
       (forward-line 1)
@@ -580,8 +579,8 @@ pounce directly on the real variables themselves.")
        (insert (make-string (max 0 (* 2 (/ rest 3))) ?\n))))
     ;; Fontify some.
     (goto-char (point-min))
        (insert (make-string (max 0 (* 2 (/ rest 3))) ?\n))))
     ;; Fontify some.
     (goto-char (point-min))
-    (and (search-forward "Praxis" nil t)
-        (put-text-property (match-beginning 0) (match-end 0) 'face 'bold))
+    (when (search-forward "Praxis" nil t)
+      (put-text-property (match-beginning 0) (match-end 0) 'face 'bold))
     (goto-char (point-min))
     (setq modeline-buffer-identification 
          (list (concat gnus-version ": *Group*")))
     (goto-char (point-min))
     (setq modeline-buffer-identification 
          (list (concat gnus-version ": *Group*")))
@@ -800,6 +799,10 @@ If HIDE, hide the text instead."
           (cons gnus-xmas-modeline-left-extent (substring line 0 chop)))
         (cons gnus-xmas-modeline-right-extent (substring line chop)))))))
 
           (cons gnus-xmas-modeline-left-extent (substring line 0 chop)))
         (cons gnus-xmas-modeline-right-extent (substring line chop)))))))
 
+(defun gnus-xmas-splash ()
+  (when (eq (device-type) 'x)
+    (gnus-splash)))
+
 (provide 'gnus-xmas)
 
 ;;; gnus-xmas.el ends here
 (provide 'gnus-xmas)
 
 ;;; gnus-xmas.el ends here
index 9d8c1ea..bbe72c3 100644 (file)
@@ -42,7 +42,7 @@
   "Score and kill file handling."
   :group 'gnus )
 
   "Score and kill file handling."
   :group 'gnus )
 
-(defconst gnus-version-number "0.45"
+(defconst gnus-version-number "0.46"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Red Gnus v%s" gnus-version-number)
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Red Gnus v%s" gnus-version-number)
     (insert (make-string (max 0 (* 2 (/ rest 3))) ?\n)))
   ;; Fontify some.
   (goto-char (point-min))
     (insert (make-string (max 0 (* 2 (/ rest 3))) ?\n)))
   ;; Fontify some.
   (goto-char (point-min))
-  (and (search-forward "Praxis" nil t)
-       (put-text-property (match-beginning 0) (match-end 0) 'face 'bold))
+  (when (search-forward "Praxis" nil t)
+    (put-text-property (match-beginning 0) (match-end 0) 'face 'bold))
   (goto-char (point-min))
   (setq mode-line-buffer-identification gnus-version)
   (set-buffer-modified-p t))
   (goto-char (point-min))
   (setq mode-line-buffer-identification gnus-version)
   (set-buffer-modified-p t))
 ;; Add the current buffer to the list of buffers to be killed on exit.
 (defun gnus-add-current-to-buffer-list ()
   (or (memq (current-buffer) gnus-buffer-list)
 ;; Add the current buffer to the list of buffers to be killed on exit.
 (defun gnus-add-current-to-buffer-list ()
   (or (memq (current-buffer) gnus-buffer-list)
-      (setq gnus-buffer-list (cons (current-buffer) gnus-buffer-list))))
+      (push (current-buffer) gnus-buffer-list)))
 
 (defun gnus-version (&optional arg)
   "Version number of this version of Gnus.
 
 (defun gnus-version (&optional arg)
   "Version number of this version of Gnus.
@@ -594,13 +594,13 @@ that that variable is buffer-local to the summary buffers."
   (if (not method)
       group
     (concat (format "%s" (car method))
   (if (not method)
       group
     (concat (format "%s" (car method))
-           (if (and
-                (or (assoc (format "%s" (car method)) 
-                           (gnus-methods-using 'address))
-                    (gnus-server-equal method gnus-message-archive-method))
-                (nth 1 method)
-                (not (string= (nth 1 method) "")))
-               (concat "+" (nth 1 method)))
+           (when (and
+                  (or (assoc (format "%s" (car method))
+                             (gnus-methods-using 'address))
+                      (gnus-server-equal method gnus-message-archive-method))
+                  (nth 1 method)
+                  (not (string= (nth 1 method) "")))
+             (concat "+" (nth 1 method)))
            ":" group)))
 
 (defun gnus-group-real-prefix (group)
            ":" group)))
 
 (defun gnus-group-real-prefix (group)
@@ -696,9 +696,9 @@ If SYMBOL, return the value of that symbol in the group parameters."
       (let ((old-params (gnus-info-params info))
            (new-params (list (cons name value))))
        (while old-params
       (let ((old-params (gnus-info-params info))
            (new-params (list (cons name value))))
        (while old-params
-         (if (or (not (listp (car old-params)))
-                 (not (eq (caar old-params) name)))
-             (setq new-params (append new-params (list (car old-params)))))
+         (when (or (not (listp (car old-params)))
+                   (not (eq (caar old-params) name)))
+           (setq new-params (append new-params (list (car old-params)))))
          (setq old-params (cdr old-params)))
        (gnus-group-set-info new-params group 'params)))))
 
          (setq old-params (cdr old-params)))
        (gnus-group-set-info new-params group 'params)))))
 
@@ -724,23 +724,24 @@ just the host name."
     ;; separate foreign select method from group name and collapse.
     ;; if method contains a server, collapse to non-domain server name,
     ;; otherwise collapse to select method
     ;; separate foreign select method from group name and collapse.
     ;; if method contains a server, collapse to non-domain server name,
     ;; otherwise collapse to select method
-    (if (string-match ":" group)
-       (cond ((string-match "+" group)
-              (let* ((plus (string-match "+" group))
-                     (colon (string-match ":" group))
-                     (dot (string-match "\\." group)))
-                (setq foreign (concat
-                               (substring group (+ 1 plus)
-                                          (cond ((null dot) colon)
-                                                ((< colon dot) colon)
-                                                ((< dot colon) dot))) ":")
-                      group (substring group (+ 1 colon))
-                      )))
-             (t
-              (let* ((colon (string-match ":" group)))
-                (setq foreign (concat (substring group 0 (+ 1 colon)))
-                      group (substring group (+ 1 colon)))
-                ))))
+    (when (string-match ":" group)
+      (cond ((string-match "+" group)
+            (let* ((plus (string-match "+" group))
+                   (colon (string-match ":" group))
+                   (dot (string-match "\\." group)))
+              (setq foreign (concat
+                             (substring group (+ 1 plus)
+                                        (cond ((null dot) colon)
+                                              ((< colon dot) colon)
+                                              ((< dot colon) dot)))
+                             ":")
+                    group (substring group (+ 1 colon))
+                    )))
+           (t
+            (let* ((colon (string-match ":" group)))
+              (setq foreign (concat (substring group 0 (+ 1 colon)))
+                    group (substring group (+ 1 colon)))
+              ))))
     ;; collapse group name leaving LEVELS uncollapsed elements
     (while group
       (if (and (string-match "\\." group) (> levels 0))
     ;; collapse group name leaving LEVELS uncollapsed elements
     (while group
       (if (and (string-match "\\." group) (> levels 0))
@@ -771,7 +772,8 @@ Returns the number of articles marked as read."
     (when (get-file-buffer file)
       (save-excursion
        (set-buffer (get-file-buffer file))
     (when (get-file-buffer file)
       (save-excursion
        (set-buffer (get-file-buffer file))
-       (and (buffer-modified-p) (save-buffer))
+       (when (buffer-modified-p)
+         (save-buffer))
        (kill-buffer (current-buffer))))))
 
 (defcustom gnus-kill-file-name "KILL"
        (kill-buffer (current-buffer))))))
 
 (defcustom gnus-kill-file-name "KILL"
@@ -878,8 +880,8 @@ If NEWSGROUP is nil, return the global kill file name instead."
   (let ((valids gnus-valid-select-methods)
        outs)
     (while valids
   (let ((valids gnus-valid-select-methods)
        outs)
     (while valids
-      (if (memq feature (car valids))
-         (setq outs (cons (car valids) outs)))
+      (when (memq feature (car valids))
+       (push (car valids) outs))
       (setq valids (cdr valids)))
     outs))
 
       (setq valids (cdr valids)))
     outs))
 
index 988544a..416dd5b 100644 (file)
@@ -92,7 +92,8 @@ Don't touch this variable unless you really know what you're doing.
 
 Checks include subject-cmsg multiple-headers sendsys message-id from
 long-lines control-chars size new-text redirected-followup signature
 
 Checks include subject-cmsg multiple-headers sendsys message-id from
 long-lines control-chars size new-text redirected-followup signature
-approved sender empty empty-headers message-id from subject.")
+approved sender empty empty-headers message-id from subject
+shorten-followup-to existing-newsgroups.")
 
 ;;;###autoload
 (defvar message-required-news-headers
 
 ;;;###autoload
 (defvar message-required-news-headers
index df50dec..7e701ae 100644 (file)
              (delete-region (progn (beginning-of-line) (point))
                             (or (search-forward "\n\n" nil t)
                                 (point)))))
              (delete-region (progn (beginning-of-line) (point))
                             (or (search-forward "\n\n" nil t)
                                 (point)))))
-         (if (numberp article) 
+         (if (numberp article)
              (cons nnbabyl-current-group article)
            (nnbabyl-article-group-number)))))))
 
              (cons nnbabyl-current-group article)
            (nnbabyl-article-group-number)))))))
 
 (deffoo nnbabyl-close-group (group &optional server)
   t)
 
 (deffoo nnbabyl-close-group (group &optional server)
   t)
 
-(deffoo nnbabyl-request-create-group (group &optional server args) 
+(deffoo nnbabyl-request-create-group (group &optional server args)
   (nnmail-activate 'nnbabyl)
   (unless (assoc group nnbabyl-group-alist)
   (nnmail-activate 'nnbabyl)
   (unless (assoc group nnbabyl-group-alist)
-    (setq nnbabyl-group-alist (cons (list group (cons 1 0))
-                                   nnbabyl-group-alist))
+    (push (list group (cons 1 0))
+                                   nnbabyl-group-alist)
     (nnmail-save-active nnbabyl-group-alist nnbabyl-active-file))
   t)
 
     (nnmail-save-active nnbabyl-group-alist nnbabyl-active-file))
   t)
 
       (gnus-set-text-properties (point-min) (point-max) nil)
       (while (and articles is-old)
        (goto-char (point-min))
       (gnus-set-text-properties (point-min) (point-max) nil)
       (while (and articles is-old)
        (goto-char (point-min))
-       (if (search-forward (nnbabyl-article-string (car articles)) nil t)
-           (if (setq is-old
-                     (nnmail-expired-article-p
-                      newsgroup
-                      (buffer-substring 
-                       (point) (progn (end-of-line) (point))) force))
-               (progn
-                 (nnheader-message 5 "Deleting article %d in %s..." 
-                                   (car articles) newsgroup)
-                 (nnbabyl-delete-mail))
-             (setq rest (cons (car articles) rest))))
+       (when (search-forward (nnbabyl-article-string (car articles)) nil t)
+         (if (setq is-old
+                   (nnmail-expired-article-p
+                    newsgroup
+                    (buffer-substring 
+                     (point) (progn (end-of-line) (point))) force))
+             (progn
+               (nnheader-message 5 "Deleting article %d in %s..." 
+                                 (car articles) newsgroup)
+               (nnbabyl-delete-mail))
+           (push (car articles) rest)))
        (setq articles (cdr articles)))
       (save-buffer)
       ;; Find the lowest active article in this group.
        (setq articles (cdr articles)))
       (save-buffer)
       ;; Find the lowest active article in this group.
        (while (search-forward ident nil t)
          (setq found t)
          (nnbabyl-delete-mail))
        (while (search-forward ident nil t)
          (setq found t)
          (nnbabyl-delete-mail))
-       (and found (save-buffer)))))
+       (when found
+         (save-buffer)))))
   ;; Remove the group from all structures.
   (setq nnbabyl-group-alist 
        (delq (assoc group nnbabyl-group-alist) nnbabyl-group-alist)
   ;; Remove the group from all structures.
   (setq nnbabyl-group-alist 
        (delq (assoc group nnbabyl-group-alist) nnbabyl-group-alist)
       (while (search-forward ident nil t)
        (replace-match new-ident t t)
        (setq found t))
       (while (search-forward ident nil t)
        (replace-match new-ident t t)
        (setq found t))
-      (and found (save-buffer))))
+      (when found
+       (save-buffer))))
   (let ((entry (assoc group nnbabyl-group-alist)))
     (and entry (setcar entry new-name))
     (setq nnbabyl-current-group nil)
   (let ((entry (assoc group nnbabyl-group-alist)))
     (and entry (setcar entry new-name))
     (setq nnbabyl-current-group nil)
 ;; delimiter line.
 (defun nnbabyl-delete-mail (&optional force leave-delim)
   ;; Delete the current X-Gnus-Newsgroup line.
 ;; delimiter line.
 (defun nnbabyl-delete-mail (&optional force leave-delim)
   ;; Delete the current X-Gnus-Newsgroup line.
-  (or force
-      (delete-region
-       (progn (beginning-of-line) (point))
-       (progn (forward-line 1) (point))))
+  (unless force
+    (delete-region
+     (progn (beginning-of-line) (point))
+     (progn (forward-line 1) (point))))
   ;; Beginning of the article.
   (save-excursion
     (save-restriction
   ;; Beginning of the article.
   (save-excursion
     (save-restriction
           (match-beginning 0)))
        (progn
         (forward-line 1)
           (match-beginning 0)))
        (progn
         (forward-line 1)
-        (or (and (re-search-forward (concat "^" nnbabyl-mail-delimiter) 
+        (or (and (re-search-forward (concat "^" nnbabyl-mail-delimiter)
                                     nil t)
                  (match-beginning 0))
             (point-max))))
       (goto-char (point-min))
       ;; Only delete the article if no other groups owns it as well.
                                     nil t)
                  (match-beginning 0))
             (point-max))))
       (goto-char (point-min))
       ;; Only delete the article if no other groups owns it as well.
-      (if (or force (not (re-search-forward "^X-Gnus-Newsgroup: " nil t)))
-         (delete-region (point-min) (point-max))))))
+      (when (or force (not (re-search-forward "^X-Gnus-Newsgroup: " nil t)))
+       (delete-region (point-min) (point-max))))))
 
 (defun nnbabyl-possibly-change-newsgroup (newsgroup &optional server)
   (when (and server 
             (not (nnbabyl-server-opened server)))
     (nnbabyl-open-server server))
 
 (defun nnbabyl-possibly-change-newsgroup (newsgroup &optional server)
   (when (and server 
             (not (nnbabyl-server-opened server)))
     (nnbabyl-open-server server))
-  (if (or (not nnbabyl-mbox-buffer)
-         (not (buffer-name nnbabyl-mbox-buffer)))
-      (save-excursion (nnbabyl-read-mbox)))
-  (or nnbabyl-group-alist
-      (nnmail-activate 'nnbabyl))
+  (when (or (not nnbabyl-mbox-buffer)
+           (not (buffer-name nnbabyl-mbox-buffer)))
+    (save-excursion (nnbabyl-read-mbox)))
+  (unless nnbabyl-group-alist
+    (nnmail-activate 'nnbabyl))
   (if newsgroup
       (if (assoc newsgroup nnbabyl-group-alist)
          (setq nnbabyl-current-group newsgroup)
   (if newsgroup
       (if (assoc newsgroup nnbabyl-group-alist)
          (setq nnbabyl-current-group newsgroup)
 (defun nnbabyl-article-group-number ()
   (save-excursion
     (goto-char (point-min))
 (defun nnbabyl-article-group-number ()
   (save-excursion
     (goto-char (point-min))
-    (and (re-search-forward "^X-Gnus-Newsgroup: +\\([^:]+\\):\\([0-9]+\\) "
-                           nil t)
-        (cons (buffer-substring (match-beginning 1) (match-end 1))
-              (string-to-int
-               (buffer-substring (match-beginning 2) (match-end 2)))))))
+    (when (re-search-forward "^X-Gnus-Newsgroup: +\\([^:]+\\):\\([0-9]+\\) "
+                            nil t)
+      (cons (buffer-substring (match-beginning 1) (match-end 1))
+           (string-to-int
+            (buffer-substring (match-beginning 2) (match-end 2)))))))
 
 (defun nnbabyl-insert-lines ()
   "Insert how many lines and chars there are in the body of the mail."
   (let (lines chars)
     (save-excursion
       (goto-char (point-min))
 
 (defun nnbabyl-insert-lines ()
   "Insert how many lines and chars there are in the body of the mail."
   (let (lines chars)
     (save-excursion
       (goto-char (point-min))
-      (when (search-forward "\n\n" nil t) 
+      (when (search-forward "\n\n" nil t)
        ;; There may be an EOOH line here...
        (when (looking-at "\\*\\*\\* EOOH \\*\\*\\*")
          (search-forward "\n\n" nil t))
        ;; There may be an EOOH line here...
        (when (looking-at "\\*\\*\\* EOOH \\*\\*\\*")
          (search-forward "\n\n" nil t))
     ;; If there is a C-l at the beginning of the narrowed region, this
     ;; isn't really a "save", but rather a "scan".
     (goto-char (point-min))
     ;; If there is a C-l at the beginning of the narrowed region, this
     ;; isn't really a "save", but rather a "scan".
     (goto-char (point-min))
-    (or (looking-at "\^L")
-       (save-excursion
-         (insert "\^L\n0, unseen,,\n*** EOOH ***\n")
-         (goto-char (point-max))
-         (insert "\^_\n")))
-    (if (search-forward "\n\n" nil t)
-       (progn
-         (forward-char -1)
-         (while group-art
-           (insert (format "X-Gnus-Newsgroup: %s:%d   %s\n" 
-                           (caar group-art) (cdar group-art)
-                           (current-time-string)))
-           (setq group-art (cdr group-art)))))
+    (unless (looking-at "\^L")
+      (save-excursion
+       (insert "\^L\n0, unseen,,\n*** EOOH ***\n")
+       (goto-char (point-max))
+       (insert "\^_\n")))
+    (when (search-forward "\n\n" nil t)
+      (forward-char -1)
+      (while group-art
+       (insert (format "X-Gnus-Newsgroup: %s:%d   %s\n" 
+                       (caar group-art) (cdar group-art)
+                       (current-time-string)))
+       (setq group-art (cdr group-art))))
     t))
 
 (defun nnbabyl-active-number (group)
     t))
 
 (defun nnbabyl-active-number (group)
       ;; This group is new, so we create a new entry for it.
       ;; This might be a bit naughty... creating groups on the drop of
       ;; a hat, but I don't know...
       ;; This group is new, so we create a new entry for it.
       ;; This might be a bit naughty... creating groups on the drop of
       ;; a hat, but I don't know...
-      (setq nnbabyl-group-alist (cons (list group (setq active (cons 1 1)))
-                                     nnbabyl-group-alist)))
+      (push (list group (setq active (cons 1 1)))
+           nnbabyl-group-alist))
     (cdr active)))
 
 (defun nnbabyl-read-mbox ()
     (cdr active)))
 
 (defun nnbabyl-read-mbox ()
          (goto-char (point-max))
          (when (and (re-search-backward
                      (format "^X-Gnus-Newsgroup: %s:\\([0-9]+\\) "
          (goto-char (point-max))
          (when (and (re-search-backward
                      (format "^X-Gnus-Newsgroup: %s:\\([0-9]+\\) "
-                             (caar alist)) nil t)
+                             (caar alist))
+                     nil t)
                     (> (setq number
                              (string-to-number 
                               (buffer-substring
                     (> (setq number
                              (string-to-number 
                               (buffer-substring
index e7fbbcf..a7029ab 100644 (file)
@@ -147,9 +147,9 @@ expiry mechanism."
       ;; CCC we shouldn't be using the variable nndb-status-string?
       (if (string-match "^423" (nnheader-get-report 'nndb))
           ()
       ;; CCC we shouldn't be using the variable nndb-status-string?
       (if (string-match "^423" (nnheader-get-report 'nndb))
           ()
-        (or (string-match "\\([0-9]+\\) \\([0-9]+\\)$" msg)
-            (error "Not a valid response for DATE command: %s"
-                   msg))
+        (unless (string-match "\\([0-9]+\\) \\([0-9]+\\)$" msg)
+         (error "Not a valid response for DATE command: %s"
+                msg))
         (if (nnmail-expired-article-p
              group
              (list (string-to-int
         (if (nnmail-expired-article-p
              group
              (list (string-to-int
@@ -190,8 +190,8 @@ Optional LAST is ignored."
       (nntp-encode-text)
       (nntp-send-buffer "^[23].*\n")
       (setq statmsg (nntp-status-message))
       (nntp-encode-text)
       (nntp-send-buffer "^[23].*\n")
       (setq statmsg (nntp-status-message))
-      (or (string-match "^\\([0-9]+\\)" statmsg)
-          (error "nndb: %s" statmsg))
+      (unless (string-match "^\\([0-9]+\\)" statmsg)
+       (error "nndb: %s" statmsg))
       (setq art (substring statmsg
                            (match-beginning 1)
                            (match-end 1)))
       (setq art (substring statmsg
                            (match-beginning 1)
                            (match-end 1)))
index 71a3866..6873dc5 100644 (file)
@@ -97,8 +97,8 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf', `forward',
       (article-begin . "^\\\\\\\\\n")
       (head-begin . "^Paper.*:")
       (head-end   . "\\(^\\\\\\\\.*\n\\|-----------------\\)")
       (article-begin . "^\\\\\\\\\n")
       (head-begin . "^Paper.*:")
       (head-end   . "\\(^\\\\\\\\.*\n\\|-----------------\\)")
-      (body-begin . "")  
-      (body-end   . "-------------------------------------------------")     
+      (body-begin . "")
+      (body-end   . "-------------------------------------------------")
       (file-end   . "^Title: Recent Seminal")
       (generate-head-function . nndoc-generate-lanl-gov-head)
       (article-transform-function . nndoc-transform-lanl-gov-announce)
       (file-end   . "^Title: Recent Seminal")
       (generate-head-function . nndoc-generate-lanl-gov-head)
       (article-transform-function . nndoc-transform-lanl-gov-announce)
@@ -166,7 +166,8 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf', `forward',
                (insert-buffer-substring
                 nndoc-current-buffer (car entry) (nth 1 entry)))
              (goto-char (point-max))
                (insert-buffer-substring
                 nndoc-current-buffer (car entry) (nth 1 entry)))
              (goto-char (point-max))
-             (or (= (char-after (1- (point))) ?\n) (insert "\n"))
+             (unless (= (char-after (1- (point))) ?\n)
+               (insert "\n"))
              (insert (format "Lines: %d\n" (nth 4 entry)))
              (insert ".\n")))
 
              (insert (format "Lines: %d\n" (nth 4 entry)))
              (insert ".\n")))
 
@@ -352,10 +353,10 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf', `forward',
                "^Content-Length:[ \t]*\\([0-9]+\\) *$" end t)
               (setq len (string-to-int (match-string 1)))
               (search-forward "\n\n" beg t)
                "^Content-Length:[ \t]*\\([0-9]+\\) *$" end t)
               (setq len (string-to-int (match-string 1)))
               (search-forward "\n\n" beg t)
-              (or (= (setq len (+ (point) len)) (point-max))
-                  (and (< len (point-max))
-                       (goto-char len)
-                       (looking-at message-unix-mail-delimiter)))))
+              (unless (= (setq len (+ (point) len)) (point-max))
+                (and (< len (point-max))
+                     (goto-char len)
+                     (looking-at message-unix-mail-delimiter)))))
       (goto-char len))))
 
 (defun nndoc-mmdf-type-p ()
       (goto-char len))))
 
 (defun nndoc-mmdf-type-p ()
index 77d5552..ead10cf 100644 (file)
 
 (defun nndraft-execute-nnmh-command (command)
   (let ((dir (expand-file-name nndraft-directory)))
 
 (defun nndraft-execute-nnmh-command (command)
   (let ((dir (expand-file-name nndraft-directory)))
-    (and (string-match "/$" dir)
-        (setq dir (substring dir 0 (match-beginning 0))))
+    (when (string-match "/$" dir)
+      (setq dir (substring dir 0 (match-beginning 0))))
     (string-match "/[^/]+$" dir)
     (let ((group (substring dir (1+ (match-beginning 0))))
           (nnmh-directory (substring dir 0 (1+ (match-beginning 0))))
     (string-match "/[^/]+$" dir)
     (let ((group (substring dir (1+ (match-beginning 0))))
           (nnmh-directory (substring dir 0 (1+ (match-beginning 0))))
index 8b839b9..94b3cea 100644 (file)
@@ -116,18 +116,18 @@ If this variable is nil, no files will be excluded.")
 
 (deffoo nneething-request-article (id &optional group server buffer)
   (nneething-possibly-change-directory group)
 
 (deffoo nneething-request-article (id &optional group server buffer)
   (nneething-possibly-change-directory group)
-  (let ((file (unless (stringp id) (nneething-file-name id)))
+  (let ((file (unless (stringp id)
+               (nneething-file-name id)))
        (nntp-server-buffer (or buffer nntp-server-buffer)))
     (and (stringp file)                        ; We did not request by Message-ID.
         (file-exists-p file)           ; The file exists.
         (not (file-directory-p file))  ; It's not a dir.
         (save-excursion
           (nnmail-find-file file)      ; Insert the file in the nntp buf.
        (nntp-server-buffer (or buffer nntp-server-buffer)))
     (and (stringp file)                        ; We did not request by Message-ID.
         (file-exists-p file)           ; The file exists.
         (not (file-directory-p file))  ; It's not a dir.
         (save-excursion
           (nnmail-find-file file)      ; Insert the file in the nntp buf.
-          (or (nnheader-article-p)     ; Either it's a real article...
-              (progn
-                (goto-char (point-min))
-                (nneething-make-head file (current-buffer)) ; ... or we fake some headers.
-                (insert "\n")))
+          (unless (nnheader-article-p) ; Either it's a real article...
+            (goto-char (point-min))
+            (nneething-make-head file (current-buffer)) ; ... or we fake some headers.
+            (insert "\n"))
           t))))
 
 (deffoo nneething-request-group (group &optional dir dont-check)
           t))))
 
 (deffoo nneething-request-group (group &optional dir dont-check)
@@ -191,17 +191,18 @@ If this variable is nil, no files will be excluded.")
   (let ((map-file (nneething-map-file))
        (files (directory-files nneething-directory))
        touched map-files)
   (let ((map-file (nneething-map-file))
        (files (directory-files nneething-directory))
        touched map-files)
-    (if (file-exists-p map-file)
-       (condition-case nil
-           (load map-file nil t t)
-         (error nil)))
-    (or nneething-active (setq nneething-active (cons 1 0)))
+    (when (file-exists-p map-file)
+      (condition-case nil
+         (load map-file nil t t)
+       (error nil)))
+    (unless nneething-active
+      (setq nneething-active (cons 1 0)))
     ;; Old nneething had a different map format.
     (when (and (cdar nneething-map)
               (atom (cdar nneething-map)))
       (setq nneething-map
            (mapcar (lambda (n)
     ;; Old nneething had a different map format.
     (when (and (cdar nneething-map)
               (atom (cdar nneething-map)))
       (setq nneething-map
            (mapcar (lambda (n)
-                     (list (cdr n) (car n) 
+                     (list (cdr n) (car n)
                            (nth 5 (file-attributes 
                                    (nneething-file-name (car n))))))
                    nneething-map)))
                            (nth 5 (file-attributes 
                                    (nneething-file-name (car n))))))
                    nneething-map)))
@@ -234,11 +235,11 @@ If this variable is nil, no files will be excluded.")
        (setq map (cdr map))))
     ;; Find all new files and enter them into the map.
     (while files
        (setq map (cdr map))))
     ;; Find all new files and enter them into the map.
     (while files
-      (unless (member (car files) map-files) 
+      (unless (member (car files) map-files)
        ;; This file is not in the map, so we enter it.
        (setq touched t)
        (setcdr nneething-active (1+ (cdr nneething-active)))
        ;; This file is not in the map, so we enter it.
        (setq touched t)
        (setcdr nneething-active (1+ (cdr nneething-active)))
-       (push (list (cdr nneething-active) (car files) 
+       (push (list (cdr nneething-active) (car files)
                    (nth 5 (file-attributes
                            (nneething-file-name (car files)))))
              nneething-map))
                    (nth 5 (file-attributes
                            (nneething-file-name (car files)))))
              nneething-map))
@@ -268,11 +269,11 @@ If this variable is nil, no files will be excluded.")
      "@" (system-name) ">\n"
      (if (equal '(0 0) (nth 5 atts)) ""
        (concat "Date: " (current-time-string (nth 5 atts)) "\n"))
      "@" (system-name) ">\n"
      (if (equal '(0 0) (nth 5 atts)) ""
        (concat "Date: " (current-time-string (nth 5 atts)) "\n"))
-     (or (if buffer
-            (save-excursion 
-              (set-buffer buffer)
-              (if (re-search-forward "<[a-zA-Z0-9_]@[-a-zA-Z0-9_]>" 1000 t)
-                  (concat "From: " (match-string 0) "\n"))))
+     (or (when buffer
+          (save-excursion 
+            (set-buffer buffer)
+            (when (re-search-forward "<[a-zA-Z0-9_]@[-a-zA-Z0-9_]>" 1000 t)
+              (concat "From: " (match-string 0) "\n"))))
         (nneething-from-line (nth 2 atts) file))
      (if (> (string-to-int (int-to-string (nth 7 atts))) 0)
         (concat "Chars: " (int-to-string (nth 7 atts)) "\n")
         (nneething-from-line (nth 2 atts) file))
      (if (> (string-to-int (int-to-string (nth 7 atts))) 0)
         (concat "Chars: " (int-to-string (nth 7 atts)) "\n")
@@ -281,7 +282,8 @@ If this variable is nil, no files will be excluded.")
         (save-excursion
           (set-buffer buffer)
           (concat "Lines: " (int-to-string 
         (save-excursion
           (set-buffer buffer)
           (concat "Lines: " (int-to-string 
-                             (count-lines (point-min) (point-max))) "\n"))
+                             (count-lines (point-min) (point-max)))
+                  "\n"))
        "")
      )))
 
        "")
      )))
 
@@ -301,13 +303,13 @@ If this variable is nil, no files will be excluded.")
         (host (if  (string-match "\\`/[^/@]*@\\([^:/]+\\):" file)
                   (prog1
                       (substring file 
         (host (if  (string-match "\\`/[^/@]*@\\([^:/]+\\):" file)
                   (prog1
                       (substring file 
-                                 (match-beginning 1) 
+                                 (match-beginning 1)
                                  (match-end 1))
                                  (match-end 1))
-                    (if (string-match "/\\(users\\|home\\)/\\([^/]+\\)/" file)
-                        (setq login (substring file
-                                               (match-beginning 2)
-                                               (match-end 2))
-                              name nil)))
+                    (when (string-match "/\\(users\\|home\\)/\\([^/]+\\)/" file)
+                      (setq login (substring file
+                                             (match-beginning 2)
+                                             (match-end 2))
+                            name nil)))
                 (system-name))))
     (concat "From: " login "@" host 
            (if name (concat " (" name ")") "") "\n")))
                 (system-name))))
     (concat "From: " login "@" host 
            (if name (concat " (" name ")") "") "\n")))
index e3b3305..9c8470e 100644 (file)
@@ -116,22 +116,21 @@ time saver for large mailboxes.")
            (setq article (car articles))
            (setq art-string (nnfolder-article-string article))
            (set-buffer nnfolder-current-buffer)
            (setq article (car articles))
            (setq art-string (nnfolder-article-string article))
            (set-buffer nnfolder-current-buffer)
-           (if (or (search-forward art-string nil t)
-                   ;; Don't search the whole file twice!  Also, articles
-                   ;; probably have some locality by number, so searching
-                   ;; backwards will be faster.  Especially if we're at the
-                   ;; beginning of the buffer :-). -SLB
-                   (search-backward art-string nil t))
-               (progn
-                 (setq start (or (re-search-backward delim-string nil t)
-                                 (point)))
-                 (search-forward "\n\n" nil t)
-                 (setq stop (1- (point)))
-                 (set-buffer nntp-server-buffer)
-                 (insert (format "221 %d Article retrieved.\n" article))
-                 (insert-buffer-substring nnfolder-current-buffer start stop)
-                 (goto-char (point-max))
-                 (insert ".\n")))
+           (when (or (search-forward art-string nil t)
+                     ;; Don't search the whole file twice!  Also, articles
+                     ;; probably have some locality by number, so searching
+                     ;; backwards will be faster.  Especially if we're at the
+                     ;; beginning of the buffer :-). -SLB
+                     (search-backward art-string nil t))
+             (setq start (or (re-search-backward delim-string nil t)
+                             (point)))
+             (search-forward "\n\n" nil t)
+             (setq stop (1- (point)))
+             (set-buffer nntp-server-buffer)
+             (insert (format "221 %d Article retrieved.\n" article))
+             (insert-buffer-substring nnfolder-current-buffer start stop)
+             (goto-char (point-max))
+             (insert ".\n"))
            (setq articles (cdr articles)))
 
          (set-buffer nntp-server-buffer)
            (setq articles (cdr articles)))
 
          (set-buffer nntp-server-buffer)
@@ -171,33 +170,33 @@ time saver for large mailboxes.")
   (save-excursion
     (set-buffer nnfolder-current-buffer)
     (goto-char (point-min))
   (save-excursion
     (set-buffer nnfolder-current-buffer)
     (goto-char (point-min))
-    (if (search-forward (nnfolder-article-string article) nil t)
-       (let (start stop)
-         (re-search-backward (concat "^" message-unix-mail-delimiter) nil t)
-         (setq start (point))
-         (forward-line 1)
-         (or (and (re-search-forward 
-                   (concat "^" message-unix-mail-delimiter) nil t)
-                  (forward-line -1))
-             (goto-char (point-max)))
-         (setq stop (point))
-         (let ((nntp-server-buffer (or buffer nntp-server-buffer)))
-           (set-buffer nntp-server-buffer)
-           (erase-buffer)
-           (insert-buffer-substring nnfolder-current-buffer start stop)
+    (when (search-forward (nnfolder-article-string article) nil t)
+      (let (start stop)
+       (re-search-backward (concat "^" message-unix-mail-delimiter) nil t)
+       (setq start (point))
+       (forward-line 1)
+       (unless (and (re-search-forward 
+                     (concat "^" message-unix-mail-delimiter) nil t)
+                    (forward-line -1))
+         (goto-char (point-max)))
+       (setq stop (point))
+       (let ((nntp-server-buffer (or buffer nntp-server-buffer)))
+         (set-buffer nntp-server-buffer)
+         (erase-buffer)
+         (insert-buffer-substring nnfolder-current-buffer start stop)
+         (goto-char (point-min))
+         (while (looking-at "From ")
+           (delete-char 5)
+           (insert "X-From-Line: ")
+           (forward-line 1))
+         (if (numberp article)
+             (cons nnfolder-current-group article)
            (goto-char (point-min))
            (goto-char (point-min))
-           (while (looking-at "From ")
-             (delete-char 5)
-             (insert "X-From-Line: ")
-             (forward-line 1))
-           (if (numberp article) 
-               (cons nnfolder-current-group article)
-             (goto-char (point-min))
-             (search-forward (concat "\n" nnfolder-article-marker))
-             (cons nnfolder-current-group
-                   (string-to-int 
-                    (buffer-substring 
-                     (point) (progn (end-of-line) (point)))))))))))
+           (search-forward (concat "\n" nnfolder-article-marker))
+           (cons nnfolder-current-group
+                 (string-to-int 
+                  (buffer-substring 
+                   (point) (progn (end-of-line) (point)))))))))))
 
 (deffoo nnfolder-request-group (group &optional server dont-check)
   (save-excursion
 
 (deffoo nnfolder-request-group (group &optional server dont-check)
   (save-excursion
@@ -275,7 +274,7 @@ time saver for large mailboxes.")
        nnfolder-current-buffer nil)
   t)
 
        nnfolder-current-buffer nil)
   t)
 
-(deffoo nnfolder-request-create-group (group &optional server args) 
+(deffoo nnfolder-request-create-group (group &optional server args)
   (nnfolder-possibly-change-group nil server)
   (nnmail-activate 'nnfolder)
   (when group 
   (nnfolder-possibly-change-group nil server)
   (nnmail-activate 'nnfolder)
   (when group 
@@ -310,18 +309,18 @@ time saver for large mailboxes.")
       (set-buffer nnfolder-current-buffer)
       (while (and articles is-old)
        (goto-char (point-min))
       (set-buffer nnfolder-current-buffer)
       (while (and articles is-old)
        (goto-char (point-min))
-       (if (search-forward (nnfolder-article-string (car articles)) nil t)
-           (if (setq is-old
-                     (nnmail-expired-article-p 
-                      newsgroup
-                      (buffer-substring 
-                       (point) (progn (end-of-line) (point))) 
-                      force nnfolder-inhibit-expiry))
-               (progn
-                 (nnheader-message 5 "Deleting article %d..." 
-                                   (car articles) newsgroup)
-                 (nnfolder-delete-mail))
-             (setq rest (cons (car articles) rest))))
+       (when (search-forward (nnfolder-article-string (car articles)) nil t)
+         (if (setq is-old
+                   (nnmail-expired-article-p 
+                    newsgroup
+                    (buffer-substring 
+                     (point) (progn (end-of-line) (point)))
+                    force nnfolder-inhibit-expiry))
+             (progn
+               (nnheader-message 5 "Deleting article %d..." 
+                                 (car articles) newsgroup)
+               (nnfolder-delete-mail))
+           (push (car articles) rest)))
        (setq articles (cdr articles)))
       (nnfolder-save-buffer)
       ;; Find the lowest active article in this group.
        (setq articles (cdr articles)))
       (nnfolder-save-buffer)
       ;; Find the lowest active article in this group.
@@ -364,15 +363,16 @@ time saver for large mailboxes.")
        (nnfolder-possibly-change-group group server)
        (set-buffer nnfolder-current-buffer)
        (goto-char (point-min))
        (nnfolder-possibly-change-group group server)
        (set-buffer nnfolder-current-buffer)
        (goto-char (point-min))
-       (if (search-forward (nnfolder-article-string article) nil t)
-          (nnfolder-delete-mail))
+       (when (search-forward (nnfolder-article-string article) nil t)
+        (nnfolder-delete-mail))
        (and last (nnfolder-save-buffer))))
     result))
 
 (deffoo nnfolder-request-accept-article (group &optional server last)
   (nnfolder-possibly-change-group group server)
   (nnmail-check-syntax)
        (and last (nnfolder-save-buffer))))
     result))
 
 (deffoo nnfolder-request-accept-article (group &optional server last)
   (nnfolder-possibly-change-group group server)
   (nnmail-check-syntax)
-  (and (stringp group) (nnfolder-possibly-change-group group))
+  (when (stringp group)
+    (nnfolder-possibly-change-group group))
   (let ((buf (current-buffer))
        result)
     (goto-char (point-min))
   (let ((buf (current-buffer))
        result)
     (goto-char (point-min))
@@ -491,8 +491,7 @@ time saver for large mailboxes.")
        (not (file-exists-p
              (nnfolder-group-pathname group)))
        (progn
        (not (file-exists-p
              (nnfolder-group-pathname group)))
        (progn
-         (setq nnfolder-group-alist 
-               (cons (list group (cons 1 0)) nnfolder-group-alist))
+         (push (list group (cons 1 0)) nnfolder-group-alist)
          (nnmail-save-active nnfolder-group-alist nnfolder-active-file)))
     (let (inf file)
       (if (and (equal group nnfolder-current-group)
          (nnmail-save-active nnfolder-group-alist nnfolder-active-file)))
     (let (inf file)
       (if (and (equal group nnfolder-current-group)
@@ -504,24 +503,23 @@ time saver for large mailboxes.")
        ;; If we have to change groups, see if we don't already have the mbox
        ;; in memory.  If we do, verify the modtime and destroy the mbox if
        ;; needed so we can rescan it.
        ;; If we have to change groups, see if we don't already have the mbox
        ;; in memory.  If we do, verify the modtime and destroy the mbox if
        ;; needed so we can rescan it.
-       (if (setq inf (assoc group nnfolder-buffer-alist))
-           (setq nnfolder-current-buffer (nth 1 inf)))
+       (when (setq inf (assoc group nnfolder-buffer-alist))
+         (setq nnfolder-current-buffer (nth 1 inf)))
 
        ;; If the buffer is not live, make sure it isn't in the alist.  If it
        ;; is live, verify that nobody else has touched the file since last
        ;; time.
 
        ;; If the buffer is not live, make sure it isn't in the alist.  If it
        ;; is live, verify that nobody else has touched the file since last
        ;; time.
-       (if (or (not (and nnfolder-current-buffer
-                         (buffer-name nnfolder-current-buffer)))
-               (not (and (bufferp nnfolder-current-buffer)
-                         (verify-visited-file-modtime 
-                          nnfolder-current-buffer))))
-           (progn
-             (if (and nnfolder-current-buffer
-                      (buffer-name nnfolder-current-buffer)
-                      (bufferp nnfolder-current-buffer))
-                 (kill-buffer nnfolder-current-buffer))
-             (setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist))
-             (setq inf nil)))
+       (when (or (not (and nnfolder-current-buffer
+                           (buffer-name nnfolder-current-buffer)))
+                 (not (and (bufferp nnfolder-current-buffer)
+                           (verify-visited-file-modtime 
+                            nnfolder-current-buffer))))
+         (when (and nnfolder-current-buffer
+                    (buffer-name nnfolder-current-buffer)
+                    (bufferp nnfolder-current-buffer))
+           (kill-buffer nnfolder-current-buffer))
+         (setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist))
+         (setq inf nil))
       
        (unless inf
          (save-excursion
       
        (unless inf
          (save-excursion
@@ -534,9 +532,8 @@ time saver for large mailboxes.")
                    (nnfolder-read-folder file scanning))
              (when nnfolder-current-buffer 
                (set-buffer nnfolder-current-buffer)
                    (nnfolder-read-folder file scanning))
              (when nnfolder-current-buffer 
                (set-buffer nnfolder-current-buffer)
-               (setq nnfolder-buffer-alist 
-                     (cons (list group nnfolder-current-buffer)
-                           nnfolder-buffer-alist))))))))
+               (push (list group nnfolder-current-buffer)
+                     nnfolder-buffer-alist)))))))
     (setq nnfolder-current-group group)))
 
 (defun nnfolder-save-mail (group-art-list)
     (setq nnfolder-current-group group)))
 
 (defun nnfolder-save-mail (group-art-list)
@@ -598,17 +595,17 @@ time saver for large mailboxes.")
 (defun nnfolder-insert-newsgroup-line (group-art)
   (save-excursion
     (goto-char (point-min))
 (defun nnfolder-insert-newsgroup-line (group-art)
   (save-excursion
     (goto-char (point-min))
-    (if (search-forward "\n\n" nil t)
-       (progn
-         (forward-char -1)
-         (insert (format (concat nnfolder-article-marker "%d   %s\n")
-                         (cdr group-art) (current-time-string)))))))
+    (when (search-forward "\n\n" nil t)
+      (forward-char -1)
+      (insert (format (concat nnfolder-article-marker "%d   %s\n")
+                     (cdr group-art) (current-time-string))))))
 
 (defun nnfolder-possibly-activate-groups (&optional group)
   (save-excursion
     ;; If we're looking for the activation of a specific group, find out
     ;; its real name and switch to it.
 
 (defun nnfolder-possibly-activate-groups (&optional group)
   (save-excursion
     ;; If we're looking for the activation of a specific group, find out
     ;; its real name and switch to it.
-    (if group (nnfolder-possibly-change-group group))
+    (when group
+      (nnfolder-possibly-change-group group))
     ;; If the group alist isn't active, activate it now.
     (nnmail-activate 'nnfolder)))
 
     ;; If the group alist isn't active, activate it now.
     (nnmail-activate 'nnfolder)))
 
@@ -623,9 +620,8 @@ time saver for large mailboxes.")
              ;; This group is new, so we create a new entry for it.
              ;; This might be a bit naughty... creating groups on the drop of
              ;; a hat, but I don't know...
              ;; This group is new, so we create a new entry for it.
              ;; This might be a bit naughty... creating groups on the drop of
              ;; a hat, but I don't know...
-             (setq nnfolder-group-alist 
-                   (cons (list group (setq active (cons 1 1)))
-                         nnfolder-group-alist)))
+             (push (list group (setq active (cons 1 1)))
+                   nnfolder-group-alist))
            (cdr active))
        (nnmail-save-active nnfolder-group-alist nnfolder-active-file)
        (nnfolder-possibly-activate-groups group)))))
            (cdr active))
        (nnmail-save-active nnfolder-group-alist nnfolder-active-file)
        (nnfolder-possibly-activate-groups group)))))
@@ -698,14 +694,13 @@ time saver for large mailboxes.")
          ;; at the end, go to the end and search backwards for the last
          ;; marker.  Find the start of that message, and begin to search for
          ;; unmarked messages from there.
          ;; at the end, go to the end and search backwards for the last
          ;; marker.  Find the start of that message, and begin to search for
          ;; unmarked messages from there.
-         (if (not (or nnfolder-distrust-mbox
-                      (< maxid 2)))
-             (progn
-               (goto-char (point-max))
-               (if (not (re-search-backward marker nil t))
-                   (goto-char (point-min))
-                 (if (not (re-search-backward delim nil t))
-                     (goto-char (point-min))))))
+         (when (not (or nnfolder-distrust-mbox
+                        (< maxid 2)))
+           (goto-char (point-max))
+           (if (not (re-search-backward marker nil t))
+               (goto-char (point-min))
+             (when (not (re-search-backward delim nil t))
+               (goto-char (point-min)))))
 
          ;; Keep track of the active number on our own, and insert it back
          ;; into the active list when we're done.  Also, prime the pump to
 
          ;; Keep track of the active number on our own, and insert it back
          ;; into the active list when we're done.  Also, prime the pump to
@@ -719,19 +714,18 @@ time saver for large mailboxes.")
            (goto-char end)
            ;; There may be more than one "From " line, so we skip past
            ;; them.  
            (goto-char end)
            ;; There may be more than one "From " line, so we skip past
            ;; them.  
-           (while (looking-at delim) 
+           (while (looking-at delim)
              (forward-line 1))
            (set-marker end (or (and (re-search-forward delim nil t)
                                     (match-beginning 0))
                                (point-max)))
            (goto-char start)
              (forward-line 1))
            (set-marker end (or (and (re-search-forward delim nil t)
                                     (match-beginning 0))
                                (point-max)))
            (goto-char start)
-           (if (not (search-forward marker end t))
-               (progn
-                 (narrow-to-region start end)
-                 (nnmail-insert-lines)
-                 (nnfolder-insert-newsgroup-line
-                  (cons nil (nnfolder-active-number nnfolder-current-group)))
-                 (widen))))
+           (when (not (search-forward marker end t))
+             (narrow-to-region start end)
+             (nnmail-insert-lines)
+             (nnfolder-insert-newsgroup-line
+              (cons nil (nnfolder-active-number nnfolder-current-group)))
+             (widen)))
 
          ;; Make absolutely sure that the active list reflects reality!
          (nnmail-save-active nnfolder-group-alist nnfolder-active-file)
 
          ;; Make absolutely sure that the active list reflects reality!
          (nnmail-save-active nnfolder-group-alist nnfolder-active-file)
@@ -739,7 +733,7 @@ time saver for large mailboxes.")
          (setq newscantime (visited-file-modtime))
          (if scantime
              (setcdr scantime (list newscantime))
          (setq newscantime (visited-file-modtime))
          (if scantime
              (setcdr scantime (list newscantime))
-           (push (list nnfolder-current-group newscantime) 
+           (push (list nnfolder-current-group newscantime)
                  nnfolder-scantime-alist))
          (current-buffer))))))
 
                  nnfolder-scantime-alist))
          (current-buffer))))))
 
index 9a33e66..5d9a60e 100644 (file)
@@ -281,14 +281,15 @@ on your system, you could say something like:
    (or (mail-header-subject header) "(none)") "\t"
    (or (mail-header-from header) "(nobody)") "\t"
    (or (mail-header-date header) "") "\t"
    (or (mail-header-subject header) "(none)") "\t"
    (or (mail-header-from header) "(nobody)") "\t"
    (or (mail-header-date header) "") "\t"
-   (or (mail-header-id header) 
-       (nnmail-message-id)) "\t"
+   (or (mail-header-id header)
+       (nnmail-message-id))
+   "\t"
    (or (mail-header-references header) "") "\t")
   (princ (or (mail-header-chars header) 0) (current-buffer))
   (insert "\t")
   (princ (or (mail-header-lines header) 0) (current-buffer))
   (insert "\t")
    (or (mail-header-references header) "") "\t")
   (princ (or (mail-header-chars header) 0) (current-buffer))
   (insert "\t")
   (princ (or (mail-header-lines header) 0) (current-buffer))
   (insert "\t")
-  (when (mail-header-xref header) 
+  (when (mail-header-xref header)
     (insert "Xref: " (mail-header-xref header) "\t"))
   (insert "\n"))
 
     (insert "Xref: " (mail-header-xref header) "\t"))
   (insert "\n"))
 
@@ -404,7 +405,7 @@ the line could be found."
                        (nth 1 (nnheader-insert-file-contents-literally
                                file nil beg
                                (incf beg nnheader-head-chop-length))))
                        (nth 1 (nnheader-insert-file-contents-literally
                                file nil beg
                                (incf beg nnheader-head-chop-length))))
-                   (prog1 (not (search-forward "\n\n" nil t)) 
+                   (prog1 (not (search-forward "\n\n" nil t))
                      (goto-char (point-max)))
                    (or (null nnheader-max-head-length)
                        (< beg nnheader-max-head-length))))))
                      (goto-char (point-max)))
                    (or (null nnheader-max-head-length)
                        (< beg nnheader-max-head-length))))))
@@ -421,19 +422,22 @@ the line could be found."
       (goto-char (match-end 0)))
     (prog1
        (eobp)
       (goto-char (match-end 0)))
     (prog1
        (eobp)
-      (widen))))    
+      (widen))))
 
 (defun nnheader-insert-references (references message-id)
   "Insert a References header based on REFERENCES and MESSAGE-ID."
 
 (defun nnheader-insert-references (references message-id)
   "Insert a References header based on REFERENCES and MESSAGE-ID."
-  (if (and (not references) (not message-id)) 
+  (if (and (not references) (not message-id))
       ()                               ; This is illegal, but not all articles have Message-IDs.
     (mail-position-on-field "References")
     (let ((begin (save-excursion (beginning-of-line) (point)))
          (fill-column 78)
          (fill-prefix "\t"))
       ()                               ; This is illegal, but not all articles have Message-IDs.
     (mail-position-on-field "References")
     (let ((begin (save-excursion (beginning-of-line) (point)))
          (fill-column 78)
          (fill-prefix "\t"))
-      (if references (insert references))
-      (if (and references message-id) (insert " "))
-      (if message-id (insert message-id))
+      (when references
+       (insert references))
+      (when (and references message-id)
+       (insert " "))
+      (when message-id
+       (insert message-id))
       ;; Fold long References lines to conform to RFC1036 (sort of).
       ;; The region must end with a newline to fill the region
       ;; without inserting extra newline.
       ;; Fold long References lines to conform to RFC1036 (sort of).
       ;; The region must end with a newline to fill the region
       ;; without inserting extra newline.
@@ -640,8 +644,8 @@ without formatting."
        (idx 0))
     ;; Replace all occurrences of FROM with TO.
     (while (< idx len)
        (idx 0))
     ;; Replace all occurrences of FROM with TO.
     (while (< idx len)
-      (if (= (aref string idx) from)
-         (aset string idx to))
+      (when (= (aref string idx) from)
+       (aset string idx to))
       (setq idx (1+ idx)))
     string))
 
       (setq idx (1+ idx)))
     string))
 
@@ -731,9 +735,9 @@ If FILE, find the \".../etc/PACKAGE\" file instead."
   (if (and (fboundp 'efs-re-read-dir) (boundp 'efs-path-regexp))
       (when (string-match efs-path-regexp path)
        (efs-re-read-dir path))
   (if (and (fboundp 'efs-re-read-dir) (boundp 'efs-path-regexp))
       (when (string-match efs-path-regexp path)
        (efs-re-read-dir path))
-    (if (and (fboundp 'ange-ftp-re-read-dir) (boundp 'ange-ftp-path-format))
-       (when (string-match (car ange-ftp-path-format) path)
-         (ange-ftp-re-read-dir path)))))
+    (when (and (fboundp 'ange-ftp-re-read-dir) (boundp 'ange-ftp-path-format))
+      (when (string-match (car ange-ftp-path-format) path)
+       (ange-ftp-re-read-dir path)))))
 
 (defun nnheader-insert-file-contents-literally (filename &optional visit beg end replace)
   "Like `insert-file-contents', q.v., but only reads in the file.
 
 (defun nnheader-insert-file-contents-literally (filename &optional visit beg end replace)
   "Like `insert-file-contents', q.v., but only reads in the file.
index bb8c1eb..d692141 100644 (file)
@@ -54,21 +54,20 @@ The buffer is not selected, just returned to the caller."
           (truename (abbreviate-file-name (file-truename filename)))
           (number (nthcdr 10 (file-attributes truename)))
           ;; Find any buffer for a file which has same truename.
           (truename (abbreviate-file-name (file-truename filename)))
           (number (nthcdr 10 (file-attributes truename)))
           ;; Find any buffer for a file which has same truename.
-          (other (and (not buf) 
+          (other (and (not buf)
                       (get-file-buffer filename)))
           error)
       ;; Let user know if there is a buffer with the same truename.
                       (get-file-buffer filename)))
           error)
       ;; Let user know if there is a buffer with the same truename.
-      (if other
-         (progn
-           (or nowarn
-               (string-equal filename (buffer-file-name other))
-               (message "%s and %s are the same file"
-                        filename (buffer-file-name other)))
-           ;; Optionally also find that buffer.
-           (if (or (and (boundp 'find-file-existing-other-name)
-                        find-file-existing-other-name)
-                   find-file-visit-truename)
-               (setq buf other))))
+      (when other
+       (or nowarn
+           (string-equal filename (buffer-file-name other))
+           (message "%s and %s are the same file"
+                    filename (buffer-file-name other)))
+       ;; Optionally also find that buffer.
+       (when (or (and (boundp 'find-file-existing-other-name)
+                      find-file-existing-other-name)
+                 find-file-visit-truename)
+         (setq buf other)))
       (if buf
          (or nowarn
              (verify-visited-file-modtime buf)
       (if buf
          (or nowarn
              (verify-visited-file-modtime buf)
@@ -123,23 +122,22 @@ The buffer is not selected, just returned to the caller."
          ;; the file was found in.
          (and (eq system-type 'vax-vms)
               (let (logical)
          ;; the file was found in.
          (and (eq system-type 'vax-vms)
               (let (logical)
-                (if (string-match ":" (file-name-directory filename))
-                    (setq logical (substring (file-name-directory filename)
-                                             0 (match-beginning 0))))
+                (when (string-match ":" (file-name-directory filename))
+                  (setq logical (substring (file-name-directory filename)
+                                           0 (match-beginning 0))))
                 (not (member logical find-file-not-true-dirname-list)))
               (setq buffer-file-name buffer-file-truename))
                 (not (member logical find-file-not-true-dirname-list)))
               (setq buffer-file-name buffer-file-truename))
-         (if find-file-visit-truename
-             (setq buffer-file-name
-                   (setq filename
-                         (expand-file-name buffer-file-truename))))
+         (when find-file-visit-truename
+           (setq buffer-file-name
+                 (setq filename
+                       (expand-file-name buffer-file-truename))))
          ;; Set buffer's default directory to that of the file.
          (setq default-directory (file-name-directory filename))
          ;; Turn off backup files for certain file names.  Since
          ;; this is a permanent local, the major mode won't eliminate it.
          ;; Set buffer's default directory to that of the file.
          (setq default-directory (file-name-directory filename))
          ;; Turn off backup files for certain file names.  Since
          ;; this is a permanent local, the major mode won't eliminate it.
-         (and (not (funcall backup-enable-predicate buffer-file-name))
-              (progn
-                (make-local-variable 'backup-inhibited)
-                (setq backup-inhibited t)))
+         (when (not (funcall backup-enable-predicate buffer-file-name))
+           (make-local-variable 'backup-inhibited)
+           (setq backup-inhibited t))
          (if rawfile
              nil
            (after-find-file error (not nowarn)))))
          (if rawfile
              nil
            (after-find-file error (not nowarn)))))
index fdb7c2f..58e3612 100644 (file)
@@ -203,7 +203,7 @@ Finds out what articles are to be part of the nnkiboze groups."
                  (concat (nnkiboze-prefixed-name nnkiboze-current-group)
                          "." gnus-score-file-suffix))))))
 
                  (concat (nnkiboze-prefixed-name nnkiboze-current-group)
                          "." gnus-score-file-suffix))))))
 
-(defun nnkiboze-generate-group (group) 
+(defun nnkiboze-generate-group (group)
   (let* ((info (nth 2 (gnus-gethash group gnus-newsrc-hashtb)))
         (newsrc-file (concat nnkiboze-directory group ".newsrc"))
         (nov-file (concat nnkiboze-directory group ".nov"))
   (let* ((info (nth 2 (gnus-gethash group gnus-newsrc-hashtb)))
         (newsrc-file (concat nnkiboze-directory group ".newsrc"))
         (nov-file (concat nnkiboze-directory group ".nov"))
@@ -216,9 +216,11 @@ Finds out what articles are to be part of the nnkiboze groups."
         gnus-visual
         method nnkiboze-newsrc nov-buffer gname newsrc active
         ginfo lowest glevel)
         gnus-visual
         method nnkiboze-newsrc nov-buffer gname newsrc active
         ginfo lowest glevel)
-    (or info (error "No such group: %s" group))
+    (unless info
+      (error "No such group: %s" group))
     ;; Load the kiboze newsrc file for this group.
     ;; Load the kiboze newsrc file for this group.
-    (and (file-exists-p newsrc-file) (load newsrc-file))
+    (when (file-exists-p newsrc-file)
+      (load newsrc-file))
     ;; We also load the nov file for this group.
     (save-excursion
       (set-buffer (setq nov-buffer (find-file-noselect nov-file)))
     ;; We also load the nov file for this group.
     (save-excursion
       (set-buffer (setq nov-buffer (find-file-noselect nov-file)))
@@ -263,28 +265,31 @@ Finds out what articles are to be part of the nnkiboze groups."
             (setcar (nthcdr 3 ginfo) nil))
        ;; We set the list of read articles to be what we expect for
        ;; this kiboze group -- either nil or `(1 . LOWEST)'. 
             (setcar (nthcdr 3 ginfo) nil))
        ;; We set the list of read articles to be what we expect for
        ;; this kiboze group -- either nil or `(1 . LOWEST)'. 
-       (and ginfo (setcar (nthcdr 2 ginfo)
-                          (and (not (= lowest 1)) (cons 1 lowest))))
+       (when ginfo
+         (setcar (nthcdr 2 ginfo)
+                 (and (not (= lowest 1)) (cons 1 lowest))))
        (if (not (and (or (not ginfo)
                          (> (length (gnus-list-of-unread-articles 
        (if (not (and (or (not ginfo)
                          (> (length (gnus-list-of-unread-articles 
-                                     (car ginfo))) 0))
+                                     (car ginfo)))
+                            0))
                      (progn
                        (gnus-group-select-group nil)
                        (eq major-mode 'gnus-summary-mode))))
            ()                          ; No unread articles, or we couldn't enter this group.
          ;; We are now in the group where we want to be.
          (setq method (gnus-find-method-for-group gnus-newsgroup-name))
                      (progn
                        (gnus-group-select-group nil)
                        (eq major-mode 'gnus-summary-mode))))
            ()                          ; No unread articles, or we couldn't enter this group.
          ;; We are now in the group where we want to be.
          (setq method (gnus-find-method-for-group gnus-newsgroup-name))
-         (and (eq method gnus-select-method) (setq method nil))
+         (when (eq method gnus-select-method)
+           (setq method nil))
          ;; We go through the list of scored articles.
          (while gnus-newsgroup-scored
          ;; We go through the list of scored articles.
          (while gnus-newsgroup-scored
-           (if (> (caar gnus-newsgroup-scored) lowest)
-               ;; If it has a good score, then we enter this article
-               ;; into the kiboze group.
-               (nnkiboze-enter-nov 
-                nov-buffer
-                (gnus-summary-article-header 
-                 (caar gnus-newsgroup-scored))
-                gnus-newsgroup-name))
+           (when (> (caar gnus-newsgroup-scored) lowest)
+             ;; If it has a good score, then we enter this article
+             ;; into the kiboze group.
+             (nnkiboze-enter-nov 
+              nov-buffer
+              (gnus-summary-article-header 
+               (caar gnus-newsgroup-scored))
+              gnus-newsgroup-name))
            (setq gnus-newsgroup-scored (cdr gnus-newsgroup-scored)))
          ;; That's it.  We exit this group.
          (gnus-summary-exit-no-update)))
            (setq gnus-newsgroup-scored (cdr gnus-newsgroup-scored)))
          ;; That's it.  We exit this group.
          (gnus-summary-exit-no-update)))
@@ -324,7 +329,7 @@ Finds out what articles are to be part of the nnkiboze groups."
       ;; really came for - this is the article nnkiboze
       ;; will request when it is asked for the article.
       (insert group ":" 
       ;; really came for - this is the article nnkiboze
       ;; will request when it is asked for the article.
       (insert group ":" 
-             (int-to-string (mail-header-number header)) " ")      
+             (int-to-string (mail-header-number header)) " ")
       (while (re-search-forward " [^ ]+:[0-9]+" nil t)
        (goto-char (1+ (match-beginning 0)))
        (insert prefix)))))
       (while (re-search-forward " [^ ]+:[0-9]+" nil t)
        (goto-char (1+ (match-beginning 0)))
        (insert prefix)))))
index ec8b82a..a4f5b95 100644 (file)
@@ -158,7 +158,7 @@ running (\"xwatch\", etc.)
 Eg.
 
 \(add-hook 'nnmail-read-incoming-hook 
 Eg.
 
 \(add-hook 'nnmail-read-incoming-hook 
-          (lambda () 
+          (lambda ()
             (start-process \"mailsend\" nil 
                            \"/local/bin/mailsend\" \"read\" \"mbox\")))
 
             (start-process \"mailsend\" nil 
                            \"/local/bin/mailsend\" \"read\" \"mbox\")))
 
@@ -171,8 +171,8 @@ If you use `display-time', you could use something like this:
          (lambda ()
            ;; Update the displayed time, since that will clear out
            ;; the flag that says you have mail.
          (lambda ()
            ;; Update the displayed time, since that will clear out
            ;; the flag that says you have mail.
-           (if (eq (process-status \"display-time\") 'run)
-               (display-time-filter display-time-process \"\"))))") 
+           (when (eq (process-status \"display-time\") 'run)
+             (display-time-filter display-time-process \"\"))))")
 
 (when (eq system-type 'windows-nt)
   (add-hook 'nnmail-prepare-incoming-hook 'nnheader-ms-strip-cr))
 
 (when (eq system-type 'windows-nt)
   (add-hook 'nnmail-prepare-incoming-hook 'nnheader-ms-strip-cr))
@@ -367,7 +367,7 @@ parameter.  It should return nil, `warn' or `delete'.")
   "Convert DAYS into time."
   (let* ((seconds (* 1.0 days 60 60 24))
         (rest (expt 2 16))
   "Convert DAYS into time."
   (let* ((seconds (* 1.0 days 60 60 24))
         (rest (expt 2 16))
-        (ms (condition-case nil (round (/ seconds rest)) 
+        (ms (condition-case nil (round (/ seconds rest))
               (range-error (expt 2 16)))))
     (list ms (condition-case nil (round (- seconds (* ms rest)))
               (range-error (expt 2 16))))))
               (range-error (expt 2 16)))))
     (list ms (condition-case nil (round (- seconds (* ms rest)))
               (range-error (expt 2 16))))))
@@ -378,7 +378,8 @@ parameter.  It should return nil, `warn' or `delete'.")
     ;; Convert date strings to internal time.
     (setq time (nnmail-date-to-time time)))
   (let* ((current (current-time))
     ;; Convert date strings to internal time.
     (setq time (nnmail-date-to-time time)))
   (let* ((current (current-time))
-        (rest (if (< (nth 1 current) (nth 1 time)) (expt 2 16))))
+        (rest (when (< (nth 1 current) (nth 1 time))
+                (expt 2 16))))
     (list (- (+ (car current) (if rest -1 0)) (car time))
          (- (+ (or rest 0) (nth 1 current)) (nth 1 time)))))
 
     (list (- (+ (car current) (if rest -1 0)) (car time))
          (- (+ (or rest 0) (nth 1 current)) (nth 1 time)))))
 
@@ -522,7 +523,7 @@ nn*-request-list should have been called before calling this function."
   (erase-buffer)
   (let (group)
     (while (setq group (pop alist))
   (erase-buffer)
   (let (group)
     (while (setq group (pop alist))
-      (insert (format "%s %d %d y\n" (car group) (cdadr group) 
+      (insert (format "%s %d %d y\n" (car group) (cdadr group)
                      (caadr group))))))
 
 (defun nnmail-get-split-group (file group)
                      (caadr group))))))
 
 (defun nnmail-get-split-group (file group)
@@ -801,7 +802,8 @@ FUNC will be called with the buffer narrowed to each mail."
               (nnmail-process-mmdf-mail-format func artnum-func))
              (t
               (nnmail-process-unix-mail-format func artnum-func))))
               (nnmail-process-mmdf-mail-format func artnum-func))
              (t
               (nnmail-process-unix-mail-format func artnum-func))))
-      (if exit-func (funcall exit-func))
+      (when exit-func
+       (funcall exit-func))
       (kill-buffer (current-buffer)))))
 
 ;; Mail crossposts suggested by Brian Edmonds <edmonds@cs.ubc.ca>. 
       (kill-buffer (current-buffer)))))
 
 ;; Mail crossposts suggested by Brian Edmonds <edmonds@cs.ubc.ca>. 
@@ -854,7 +856,7 @@ FUNC will be called with the group name to determine the article number."
            (if (or methods
                    (not (equal "" (nth 1 method))))
                (when (and
            (if (or methods
                    (not (equal "" (nth 1 method))))
                (when (and
-                      (condition-case () 
+                      (condition-case ()
                           (if (stringp (nth 1 method))
                               (re-search-backward (cadr method) nil t)
                             ;; Function to say whether this is a match.
                           (if (stringp (nth 1 method))
                               (re-search-backward (cadr method) nil t)
                             ;; Function to say whether this is a match.
@@ -863,13 +865,13 @@ FUNC will be called with the group name to determine the article number."
                       ;; Don't enter the article into the same 
                       ;; group twice.
                       (not (assoc (car method) group-art)))
                       ;; Don't enter the article into the same 
                       ;; group twice.
                       (not (assoc (car method) group-art)))
-                 (push (cons (car method) (funcall func (car method))) 
+                 (push (cons (car method) (funcall func (car method)))
                        group-art))
              ;; This is the final group, which is used as a 
              ;; catch-all.
              (unless group-art
                (setq group-art 
                        group-art))
              ;; This is the final group, which is used as a 
              ;; catch-all.
              (unless group-art
                (setq group-art 
-                     (list (cons (car method) 
+                     (list (cons (car method)
                                  (funcall func (car method)))))))))
        ;; See whether the split methods returned `junk'.
        (if (equal group-art '(junk))
                                  (funcall func (car method)))))))))
        ;; See whether the split methods returned `junk'.
        (if (equal group-art '(junk))
@@ -882,7 +884,7 @@ Return the number of characters in the body."
   (let (lines chars)
     (save-excursion
       (goto-char (point-min))
   (let (lines chars)
     (save-excursion
       (goto-char (point-min))
-      (when (search-forward "\n\n" nil t) 
+      (when (search-forward "\n\n" nil t)
        (setq chars (- (point-max) (point)))
        (setq lines (count-lines (point) (point-max)))
        (forward-char -1)
        (setq chars (- (point-max) (point)))
        (setq lines (count-lines (point) (point-max)))
        (forward-char -1)
@@ -897,10 +899,10 @@ Return the number of characters in the body."
   "Insert an Xref line based on the (group . article) alist."
   (save-excursion
     (goto-char (point-min))
   "Insert an Xref line based on the (group . article) alist."
   (save-excursion
     (goto-char (point-min))
-    (when (search-forward "\n\n" nil t) 
+    (when (search-forward "\n\n" nil t)
       (forward-char -1)
       (when (re-search-backward "^Xref: " nil t)
       (forward-char -1)
       (when (re-search-backward "^Xref: " nil t)
-       (delete-region (match-beginning 0) 
+       (delete-region (match-beginning 0)
                       (progn (forward-line 1) (point))))
       (insert (format "Xref: %s" (system-name)))
       (while group-alist
                       (progn (forward-line 1) (point))))
       (insert (format "Xref: %s" (system-name)))
       (while group-alist
@@ -977,8 +979,8 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
    ((assq split nnmail-split-cache)
     ;; A compiled match expression.
     (goto-char (point-max))
    ((assq split nnmail-split-cache)
     ;; A compiled match expression.
     (goto-char (point-max))
-    (if (re-search-backward (cdr (assq split nnmail-split-cache)) nil t)
-       (nnmail-split-it (nth 2 split))))
+    (when (re-search-backward (cdr (assq split nnmail-split-cache)) nil t)
+      (nnmail-split-it (nth 2 split))))
    (t
     ;; An uncompiled match.
     (let* ((field (nth 0 split))
    (t
     ;; An uncompiled match.
     (let* ((field (nth 0 split))
@@ -992,11 +994,10 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
                               (cdr (assq value nnmail-split-abbrev-alist))
                             value)
                           "\\)\\>")))
                               (cdr (assq value nnmail-split-abbrev-alist))
                             value)
                           "\\)\\>")))
-      (setq nnmail-split-cache 
-           (cons (cons split regexp) nnmail-split-cache))
+      (push (cons split regexp) nnmail-split-cache)
       (goto-char (point-max))
       (goto-char (point-max))
-      (if (re-search-backward regexp nil t)
-         (nnmail-split-it (nth 2 split)))))))
+      (when (re-search-backward regexp nil t)
+       (nnmail-split-it (nth 2 split)))))))
 
 ;; Get a list of spool files to read.
 (defun nnmail-get-spool-files (&optional group)
 
 ;; Get a list of spool files to read.
 (defun nnmail-get-spool-files (&optional group)
@@ -1016,7 +1017,8 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
           (p procmails)
           (crash (when (and (file-exists-p nnmail-crash-box)
                             (> (nnheader-file-size
           (p procmails)
           (crash (when (and (file-exists-p nnmail-crash-box)
                             (> (nnheader-file-size
-                                (file-truename nnmail-crash-box)) 0))
+                                (file-truename nnmail-crash-box))
+                               0))
                    (list nnmail-crash-box))))
       ;; Remove any directories that inadvertently match the procmail
       ;; suffix, which might happen if the suffix is "". 
                    (list nnmail-crash-box))))
       ;; Remove any directories that inadvertently match the procmail
       ;; suffix, which might happen if the suffix is "". 
@@ -1049,32 +1051,32 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
 ;; already activated.
 (defun nnmail-activate (backend &optional force)
   (let (file timestamp file-time)
 ;; already activated.
 (defun nnmail-activate (backend &optional force)
   (let (file timestamp file-time)
-    (if (or (not (symbol-value (intern (format "%s-group-alist" backend))))
-           force
-           (and (setq file (condition-case ()
-                               (symbol-value (intern (format "%s-active-file" 
-                                                             backend)))
-                             (error nil)))
-                (setq file-time (nth 5 (file-attributes file)))
-                (or (not
-                     (setq timestamp
-                           (condition-case ()
-                               (symbol-value (intern
-                                              (format "%s-active-timestamp" 
-                                                      backend)))
-                             (error 'none))))
-                    (not (consp timestamp))
-                    (equal timestamp '(0 0))
-                    (> (nth 0 file-time) (nth 0 timestamp))
-                    (and (= (nth 0 file-time) (nth 0 timestamp))
-                         (> (nth 1 file-time) (nth 1 timestamp))))))
-       (save-excursion
-         (or (eq timestamp 'none)
-             (set (intern (format "%s-active-timestamp" backend)) 
-                  (current-time)))
-         (funcall (intern (format "%s-request-list" backend)))
-         (set (intern (format "%s-group-alist" backend)) 
-              (nnmail-get-active))))
+    (when (or (not (symbol-value (intern (format "%s-group-alist" backend))))
+             force
+             (and (setq file (condition-case ()
+                                 (symbol-value (intern (format "%s-active-file" 
+                                                               backend)))
+                               (error nil)))
+                  (setq file-time (nth 5 (file-attributes file)))
+                  (or (not
+                       (setq timestamp
+                             (condition-case ()
+                                 (symbol-value (intern
+                                                (format "%s-active-timestamp" 
+                                                        backend)))
+                               (error 'none))))
+                      (not (consp timestamp))
+                      (equal timestamp '(0 0))
+                      (> (nth 0 file-time) (nth 0 timestamp))
+                      (and (= (nth 0 file-time) (nth 0 timestamp))
+                           (> (nth 1 file-time) (nth 1 timestamp))))))
+      (save-excursion
+       (or (eq timestamp 'none)
+           (set (intern (format "%s-active-timestamp" backend))
+                (current-time)))
+       (funcall (intern (format "%s-request-list" backend)))
+       (set (intern (format "%s-group-alist" backend))
+            (nnmail-get-active))))
     t))
 
 (defun nnmail-message-id ()
     t))
 
 (defun nnmail-message-id ()
@@ -1096,8 +1098,8 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
        (setq nnmail-cache-buffer 
             (get-buffer-create " *nnmail message-id cache*")))
       (buffer-disable-undo (current-buffer))
        (setq nnmail-cache-buffer 
             (get-buffer-create " *nnmail message-id cache*")))
       (buffer-disable-undo (current-buffer))
-      (and (file-exists-p nnmail-message-id-cache-file)
-          (insert-file-contents nnmail-message-id-cache-file))
+      (when (file-exists-p nnmail-message-id-cache-file)
+       (insert-file-contents nnmail-message-id-cache-file))
       (set-buffer-modified-p nil)
       (current-buffer))))
 
       (set-buffer-modified-p nil)
       (current-buffer))))
 
@@ -1110,10 +1112,10 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
       (set-buffer nnmail-cache-buffer)
       ;; Weed out the excess number of Message-IDs.
       (goto-char (point-max))
       (set-buffer nnmail-cache-buffer)
       ;; Weed out the excess number of Message-IDs.
       (goto-char (point-max))
-      (and (search-backward "\n" nil t nnmail-message-id-cache-length)
-          (progn
-            (beginning-of-line)
-            (delete-region (point-min) (point))))
+      (when (search-backward "\n" nil t nnmail-message-id-cache-length)
+       (progn
+         (beginning-of-line)
+         (delete-region (point-min) (point))))
       ;; Save the buffer.
       (or (file-exists-p (file-name-directory nnmail-message-id-cache-file))
          (make-directory (file-name-directory nnmail-message-id-cache-file)
       ;; Save the buffer.
       (or (file-exists-p (file-name-directory nnmail-message-id-cache-file))
          (make-directory (file-name-directory nnmail-message-id-cache-file)
@@ -1225,7 +1227,7 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
            (setq group (nnmail-get-split-group spool group-in))
            ;; We split the mail
            (nnmail-split-incoming 
            (setq group (nnmail-get-split-group spool group-in))
            ;; We split the mail
            (nnmail-split-incoming 
-            nnmail-crash-box (intern (format "%s-save-mail" method)) 
+            nnmail-crash-box (intern (format "%s-save-mail" method))
             spool-func group (intern (format "%s-active-number" method)))
            ;; Check whether the inbox is to be moved to the special tmp dir. 
            (setq incoming
             spool-func group (intern (format "%s-active-number" method)))
            ;; Check whether the inbox is to be moved to the special tmp dir. 
            (setq incoming
@@ -1380,6 +1382,16 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
                         ", ")
              "\n"))
     (goto-char (point-min))))
                         ", ")
              "\n"))
     (goto-char (point-min))))
+
+(defun nnmail-new-mail-p (group)
+  "Say whether GROUP has new mail."
+  (let ((his nnmail-split-history)
+       found)
+    (while his
+      (when (member group (pop his))
+       (setq found t
+             his nil)))
+    found))
        
 (run-hooks 'nnmail-load-hook)
            
        
 (run-hooks 'nnmail-load-hook)
            
index 65016bc..bb28d0e 100644 (file)
        (setq article (car sequence))
        (setq art-string (nnmbox-article-string article))
        (set-buffer nnmbox-mbox-buffer)
        (setq article (car sequence))
        (setq art-string (nnmbox-article-string article))
        (set-buffer nnmbox-mbox-buffer)
-       (if (or (search-forward art-string nil t)
-               (progn (goto-char (point-min))
-                      (search-forward art-string nil t)))
-           (progn
-             (setq start 
-                   (save-excursion
-                     (re-search-backward 
-                      (concat "^" message-unix-mail-delimiter) nil t)
-                     (point)))
-             (search-forward "\n\n" nil t)
-             (setq stop (1- (point)))
-             (set-buffer nntp-server-buffer)
-             (insert (format "221 %d Article retrieved.\n" article))
-             (insert-buffer-substring nnmbox-mbox-buffer start stop)
-             (goto-char (point-max))
-             (insert ".\n")))
+       (when (or (search-forward art-string nil t)
+                 (progn (goto-char (point-min))
+                        (search-forward art-string nil t)))
+         (setq start 
+               (save-excursion
+                 (re-search-backward 
+                  (concat "^" message-unix-mail-delimiter) nil t)
+                 (point)))
+         (search-forward "\n\n" nil t)
+         (setq stop (1- (point)))
+         (set-buffer nntp-server-buffer)
+         (insert (format "221 %d Article retrieved.\n" article))
+         (insert-buffer-substring nnmbox-mbox-buffer start stop)
+         (goto-char (point-max))
+         (insert ".\n"))
        (setq sequence (cdr sequence))
        (setq count (1+ count))
        (and (numberp nnmail-large-newsgroup)
        (setq sequence (cdr sequence))
        (setq count (1+ count))
        (and (numberp nnmail-large-newsgroup)
   (save-excursion
     (set-buffer nnmbox-mbox-buffer)
     (goto-char (point-min))
   (save-excursion
     (set-buffer nnmbox-mbox-buffer)
     (goto-char (point-min))
-    (if (search-forward (nnmbox-article-string article) nil t)
-       (let (start stop)
-         (re-search-backward (concat "^" message-unix-mail-delimiter) nil t)
-         (setq start (point))
-         (forward-line 1)
-         (or (and (re-search-forward 
-                   (concat "^" message-unix-mail-delimiter) nil t)
-                  (forward-line -1))
-             (goto-char (point-max)))
-         (setq stop (point))
-         (let ((nntp-server-buffer (or buffer nntp-server-buffer)))
-           (set-buffer nntp-server-buffer)
-           (erase-buffer)
-           (insert-buffer-substring nnmbox-mbox-buffer start stop)
-           (goto-char (point-min))
-           (while (looking-at "From ")
-             (delete-char 5)
-             (insert "X-From-Line: ")
-             (forward-line 1))
-           (if (numberp article) 
-               (cons nnmbox-current-group article)
-             (nnmbox-article-group-number)))))))
+    (when (search-forward (nnmbox-article-string article) nil t)
+      (let (start stop)
+       (re-search-backward (concat "^" message-unix-mail-delimiter) nil t)
+       (setq start (point))
+       (forward-line 1)
+       (or (and (re-search-forward 
+                 (concat "^" message-unix-mail-delimiter) nil t)
+                (forward-line -1))
+           (goto-char (point-max)))
+       (setq stop (point))
+       (let ((nntp-server-buffer (or buffer nntp-server-buffer)))
+         (set-buffer nntp-server-buffer)
+         (erase-buffer)
+         (insert-buffer-substring nnmbox-mbox-buffer start stop)
+         (goto-char (point-min))
+         (while (looking-at "From ")
+           (delete-char 5)
+           (insert "X-From-Line: ")
+           (forward-line 1))
+         (if (numberp article)
+             (cons nnmbox-current-group article)
+           (nnmbox-article-group-number)))))))
 
 (deffoo nnmbox-request-group (group &optional server dont-check)
   (let ((active (cadr (assoc group nnmbox-group-alist))))
 
 (deffoo nnmbox-request-group (group &optional server dont-check)
   (let ((active (cadr (assoc group nnmbox-group-alist))))
       (set-buffer nnmbox-mbox-buffer)
       (while (and articles is-old)
        (goto-char (point-min))
       (set-buffer nnmbox-mbox-buffer)
       (while (and articles is-old)
        (goto-char (point-min))
-       (if (search-forward (nnmbox-article-string (car articles)) nil t)
-           (if (setq is-old
-                     (nnmail-expired-article-p
-                      newsgroup
-                      (buffer-substring 
-                       (point) (progn (end-of-line) (point))) force))
-               (progn
-                 (nnheader-message 5 "Deleting article %d in %s..."
-                                   (car articles) newsgroup)
-                 (nnmbox-delete-mail))
-             (setq rest (cons (car articles) rest))))
+       (when (search-forward (nnmbox-article-string (car articles)) nil t)
+         (if (setq is-old
+                   (nnmail-expired-article-p
+                    newsgroup
+                    (buffer-substring 
+                     (point) (progn (end-of-line) (point))) force))
+             (progn
+               (nnheader-message 5 "Deleting article %d in %s..."
+                                 (car articles) newsgroup)
+               (nnmbox-delete-mail))
+           (push (car articles) rest)))
        (setq articles (cdr articles)))
       (save-buffer)
       ;; Find the lowest active article in this group.
        (setq articles (cdr articles)))
       (save-buffer)
       ;; Find the lowest active article in this group.
        (nnmbox-possibly-change-newsgroup group server)
        (set-buffer nnmbox-mbox-buffer)
        (goto-char (point-min))
        (nnmbox-possibly-change-newsgroup group server)
        (set-buffer nnmbox-mbox-buffer)
        (goto-char (point-min))
-       (if (search-forward (nnmbox-article-string article) nil t)
-          (nnmbox-delete-mail))
+       (when (search-forward (nnmbox-article-string article) nil t)
+        (nnmbox-delete-mail))
        (and last (save-buffer))))
     result))
 
        (and last (save-buffer))))
     result))
 
        (while (search-forward ident nil t)
          (setq found t)
          (nnmbox-delete-mail))
        (while (search-forward ident nil t)
          (setq found t)
          (nnmbox-delete-mail))
-       (and found (save-buffer)))))
+       (when found
+         (save-buffer)))))
   ;; Remove the group from all structures.
   (setq nnmbox-group-alist 
        (delq (assoc group nnmbox-group-alist) nnmbox-group-alist)
   ;; Remove the group from all structures.
   (setq nnmbox-group-alist 
        (delq (assoc group nnmbox-group-alist) nnmbox-group-alist)
       (while (search-forward ident nil t)
        (replace-match new-ident t t)
        (setq found t))
       (while (search-forward ident nil t)
        (replace-match new-ident t t)
        (setq found t))
-      (and found (save-buffer))))
+      (when found
+       (save-buffer))))
   (let ((entry (assoc group nnmbox-group-alist)))
   (let ((entry (assoc group nnmbox-group-alist)))
-    (and entry (setcar entry new-name))
+    (when entry
+      (setcar entry new-name))
     (setq nnmbox-current-group nil)
     ;; Save the new group alist.
     (nnmail-save-active nnmbox-group-alist nnmbox-active-file)
     (setq nnmbox-current-group nil)
     ;; Save the new group alist.
     (nnmail-save-active nnmbox-group-alist nnmbox-active-file)
           (match-beginning 0)))
        (progn
         (forward-line 1)
           (match-beginning 0)))
        (progn
         (forward-line 1)
-        (or (and (re-search-forward (concat "^" message-unix-mail-delimiter) 
+        (or (and (re-search-forward (concat "^" message-unix-mail-delimiter)
                                     nil t)
                  (if (and (not (bobp)) leave-delim)
                      (progn (forward-line -2) (point))
                                     nil t)
                  (if (and (not (bobp)) leave-delim)
                      (progn (forward-line -2) (point))
             (point-max))))
       (goto-char (point-min))
       ;; Only delete the article if no other groups owns it as well.
             (point-max))))
       (goto-char (point-min))
       ;; Only delete the article if no other groups owns it as well.
-      (if (or force (not (re-search-forward "^X-Gnus-Newsgroup: " nil t)))
-         (delete-region (point-min) (point-max))))))
+      (when (or force (not (re-search-forward "^X-Gnus-Newsgroup: " nil t)))
+       (delete-region (point-min) (point-max))))))
 
 (defun nnmbox-possibly-change-newsgroup (newsgroup &optional server)
   (when (and server 
             (not (nnmbox-server-opened server)))
     (nnmbox-open-server server))
 
 (defun nnmbox-possibly-change-newsgroup (newsgroup &optional server)
   (when (and server 
             (not (nnmbox-server-opened server)))
     (nnmbox-open-server server))
-  (if (or (not nnmbox-mbox-buffer)
-         (not (buffer-name nnmbox-mbox-buffer)))
-      (save-excursion
-       (set-buffer (setq nnmbox-mbox-buffer 
-                         (nnheader-find-file-noselect
-                          nnmbox-mbox-file nil 'raw)))
-       (buffer-disable-undo (current-buffer))))
-  (if (not nnmbox-group-alist)
-      (nnmail-activate 'nnmbox))
+  (when (or (not nnmbox-mbox-buffer)
+           (not (buffer-name nnmbox-mbox-buffer)))
+    (save-excursion
+      (set-buffer (setq nnmbox-mbox-buffer 
+                       (nnheader-find-file-noselect
+                        nnmbox-mbox-file nil 'raw)))
+      (buffer-disable-undo (current-buffer))))
+  (when (not nnmbox-group-alist)
+    (nnmail-activate 'nnmbox))
   (if newsgroup
   (if newsgroup
-      (if (assoc newsgroup nnmbox-group-alist)
-         (setq nnmbox-current-group newsgroup))
+      (when (assoc newsgroup nnmbox-group-alist)
+       (setq nnmbox-current-group newsgroup))
     t))
 
 (defun nnmbox-article-string (article)
     t))
 
 (defun nnmbox-article-string (article)
 (defun nnmbox-article-group-number ()
   (save-excursion
     (goto-char (point-min))
 (defun nnmbox-article-group-number ()
   (save-excursion
     (goto-char (point-min))
-    (and (re-search-forward "^X-Gnus-Newsgroup: +\\([^:]+\\):\\([0-9]+\\) "
-                           nil t)
-        (cons (buffer-substring (match-beginning 1) (match-end 1))
-              (string-to-int
-               (buffer-substring (match-beginning 2) (match-end 2)))))))
+    (when (re-search-forward "^X-Gnus-Newsgroup: +\\([^:]+\\):\\([0-9]+\\) "
+                            nil t)
+      (cons (buffer-substring (match-beginning 1) (match-end 1))
+           (string-to-int
+            (buffer-substring (match-beginning 2) (match-end 2)))))))
 
 (defun nnmbox-save-mail (group-art)
   "Called narrowed to an article."
 
 (defun nnmbox-save-mail (group-art)
   "Called narrowed to an article."
 (defun nnmbox-insert-newsgroup-line (group-art)
   (save-excursion
     (goto-char (point-min))
 (defun nnmbox-insert-newsgroup-line (group-art)
   (save-excursion
     (goto-char (point-min))
-    (if (search-forward "\n\n" nil t)
-       (progn
-         (forward-char -1)
-         (while group-art
-           (insert (format "X-Gnus-Newsgroup: %s:%d   %s\n" 
-                           (caar group-art) (cdar group-art)
-                           (current-time-string)))
-           (setq group-art (cdr group-art)))))
+    (when (search-forward "\n\n" nil t)
+      (forward-char -1)
+      (while group-art
+       (insert (format "X-Gnus-Newsgroup: %s:%d   %s\n" 
+                       (caar group-art) (cdar group-art)
+                       (current-time-string)))
+       (setq group-art (cdr group-art))))
     t))
 
 (defun nnmbox-active-number (group)
     t))
 
 (defun nnmbox-active-number (group)
       ;; This group is new, so we create a new entry for it.
       ;; This might be a bit naughty... creating groups on the drop of
       ;; a hat, but I don't know...
       ;; This group is new, so we create a new entry for it.
       ;; This might be a bit naughty... creating groups on the drop of
       ;; a hat, but I don't know...
-      (setq nnmbox-group-alist (cons (list group (setq active (cons 1 1)))
-                                    nnmbox-group-alist)))
+      (push (list group (setq active (cons 1 1)))
+           nnmbox-group-alist))
     (cdr active)))
 
 (defun nnmbox-read-mbox ()
   (nnmail-activate 'nnmbox)
     (cdr active)))
 
 (defun nnmbox-read-mbox ()
   (nnmail-activate 'nnmbox)
-  (if (not (file-exists-p nnmbox-mbox-file))
-      (nnmail-write-region 1 1 nnmbox-mbox-file t 'nomesg))
+  (when (not (file-exists-p nnmbox-mbox-file))
+    (nnmail-write-region 1 1 nnmbox-mbox-file t 'nomesg))
   (if (and nnmbox-mbox-buffer
           (buffer-name nnmbox-mbox-buffer)
           (save-excursion
   (if (and nnmbox-mbox-buffer
           (buffer-name nnmbox-mbox-buffer)
           (save-excursion
        (goto-char (point-min))
        (while (re-search-forward delim nil t)
          (setq start (match-beginning 0))
        (goto-char (point-min))
        (while (re-search-forward delim nil t)
          (setq start (match-beginning 0))
-         (if (not (search-forward "\nX-Gnus-Newsgroup: " 
-                                  (save-excursion 
-                                    (setq end
-                                          (or
-                                           (and
-                                            (re-search-forward delim nil t)
-                                            (match-beginning 0))
-                                           (point-max))))
-                                  t))
-             (save-excursion
-               (save-restriction
-                 (narrow-to-region start end)
-                 (nnmbox-save-mail 
-                  (nnmail-article-group 'nnmbox-active-number)))))
+         (when (not (search-forward "\nX-Gnus-Newsgroup: " 
+                                    (save-excursion 
+                                      (setq end
+                                            (or
+                                             (and
+                                              (re-search-forward delim nil t)
+                                              (match-beginning 0))
+                                             (point-max))))
+                                    t))
+           (save-excursion
+             (save-restriction
+               (narrow-to-region start end)
+               (nnmbox-save-mail 
+                (nnmail-article-group 'nnmbox-active-number)))))
          (goto-char end))))))
 
 (provide 'nnmbox)
          (goto-char end))))))
 
 (provide 'nnmbox)
index 2832ccf..fe50233 100644 (file)
               (message "nnmh: Receiving headers... %d%%"
                        (/ (* count 100) number))))
 
               (message "nnmh: Receiving headers... %d%%"
                        (/ (* count 100) number))))
 
-       (and large (message "nnmh: Receiving headers...done"))
+       (when large
+         (message "nnmh: Receiving headers...done"))
 
        (nnheader-fold-continuation-lines)
        'headers))))
 
        (nnheader-fold-continuation-lines)
        'headers))))
            (nnheader-insert (format "211 0 1 0 %s\n" group))))))))))
 
 (deffoo nnmh-request-scan (&optional group server)
            (nnheader-insert (format "211 0 1 0 %s\n" group))))))))))
 
 (deffoo nnmh-request-scan (&optional group server)
-  (nnmail-get-new-mail 'nnmh nil nnmh-directory group))      
+  (nnmail-get-new-mail 'nnmh nil nnmh-directory group))
 
 (deffoo nnmh-request-list (&optional server dir)
   (nnheader-insert "")
 
 (deffoo nnmh-request-list (&optional server dir)
   (nnheader-insert "")
              (string-match 
               (regexp-quote
                (file-truename (file-name-as-directory 
              (string-match 
               (regexp-quote
                (file-truename (file-name-as-directory 
-                               (expand-file-name nnmh-toplev)))) dir)
+                               (expand-file-name nnmh-toplev))))
+              dir)
              (nnheader-replace-chars-in-string
               (substring dir (match-end 0)) ?/ ?.))
              (nnheader-replace-chars-in-string
               (substring dir (match-end 0)) ?/ ?.))
-           (apply 'max files) 
+           (apply 'max files)
            (apply 'min files)))))))
   t)
 
            (apply 'min files)))))))
   t)
 
     (while (and articles is-old)
       (setq article (concat nnmh-current-directory 
                            (int-to-string (car articles))))
     (while (and articles is-old)
       (setq article (concat nnmh-current-directory 
                            (int-to-string (car articles))))
-      (if (setq mod-time (nth 5 (file-attributes article)))
-         (if (and (nnmh-deletable-article-p newsgroup (car articles))
-                  (setq is-old
-                        (nnmail-expired-article-p newsgroup mod-time force)))
-             (progn
-               (nnheader-message 5 "Deleting article %s in %s..." 
-                                 article newsgroup)
-               (condition-case ()
-                   (funcall nnmail-delete-file-function article)
-                 (file-error
-                  (nnheader-message 1 "Couldn't delete article %s in %s"
-                                    article newsgroup)
-                  (setq rest (cons (car articles) rest)))))
-           (setq rest (cons (car articles) rest))))
+      (when (setq mod-time (nth 5 (file-attributes article)))
+       (if (and (nnmh-deletable-article-p newsgroup (car articles))
+                (setq is-old
+                      (nnmail-expired-article-p newsgroup mod-time force)))
+           (progn
+             (nnheader-message 5 "Deleting article %s in %s..." 
+                               article newsgroup)
+             (condition-case ()
+                 (funcall nnmail-delete-file-function article)
+               (file-error
+                (nnheader-message 1 "Couldn't delete article %s in %s"
+                                  article newsgroup)
+                (push (car articles) rest))))
+         (push (car articles) rest)))
       (setq articles (cdr articles)))
     (message "")
     (nconc rest articles)))
       (setq articles (cdr articles)))
     (message "")
     (nconc rest articles)))
          t)
       (error nil))))
 
          t)
       (error nil))))
 
-(deffoo nnmh-request-create-group (group &optional server args) 
+(deffoo nnmh-request-create-group (group &optional server args)
   (nnmail-activate 'nnmh)
   (unless (assoc group nnmh-group-alist)
     (let (active)
   (nnmail-activate 'nnmh)
   (unless (assoc group nnmh-group-alist)
     (let (active)
       ()                               ; Don't delete the articles.
     (let ((articles (directory-files nnmh-current-directory t "^[0-9]+$")))
       (while articles 
       ()                               ; Don't delete the articles.
     (let ((articles (directory-files nnmh-current-directory t "^[0-9]+$")))
       (while articles 
-       (and (file-writable-p (car articles))
-            (progn
-              (nnheader-message 5 "Deleting article %s in %s..."
-                                (car articles) group)
-              (funcall nnmail-delete-file-function (car articles))))
+       (when (file-writable-p (car articles))
+         (nnheader-message 5 "Deleting article %s in %s..."
+                           (car articles) group)
+         (funcall nnmail-delete-file-function (car articles)))
        (setq articles (cdr articles))))
     ;; Try to delete the directory itself.
     (condition-case ()
        (setq articles (cdr articles))))
     ;; Try to delete the directory itself.
     (condition-case ()
          (error nil)))
       ;; That went ok, so we change the internal structures.
       (let ((entry (assoc group nnmh-group-alist)))
          (error nil)))
       ;; That went ok, so we change the internal structures.
       (let ((entry (assoc group nnmh-group-alist)))
-       (and entry (setcar entry new-name))
+       (when entry
+         (setcar entry new-name))
        (setq nnmh-current-directory nil)
        t))))
 
        (setq nnmh-current-directory nil)
        t))))
 
   (when (and server 
             (not (nnmh-server-opened server)))
     (nnmh-open-server server))
   (when (and server 
             (not (nnmh-server-opened server)))
     (nnmh-open-server server))
-  (if newsgroup
-      (let ((pathname (nnmail-group-pathname newsgroup nnmh-directory)))
-       (if (file-directory-p pathname)
-           (setq nnmh-current-directory pathname)
-         (error "No such newsgroup: %s" newsgroup)))))
+  (when newsgroup
+    (let ((pathname (nnmail-group-pathname newsgroup nnmh-directory)))
+      (if (file-directory-p pathname)
+         (setq nnmh-current-directory pathname)
+       (error "No such newsgroup: %s" newsgroup)))))
 
 (defun nnmh-possibly-create-directory (group)
   (let (dir dirs)
     (setq dir (nnmail-group-pathname group nnmh-directory))
     (while (not (file-directory-p dir))
 
 (defun nnmh-possibly-create-directory (group)
   (let (dir dirs)
     (setq dir (nnmail-group-pathname group nnmh-directory))
     (while (not (file-directory-p dir))
-      (setq dirs (cons dir dirs))
+      (push dir dirs)
       (setq dir (file-name-directory (directory-file-name dir))))
     (while dirs
       (setq dir (file-name-directory (directory-file-name dir))))
     (while dirs
-      (if (make-directory (directory-file-name (car dirs)))
-         (error "Could not create directory %s" (car dirs)))
+      (when (make-directory (directory-file-name (car dirs)))
+       (error "Could not create directory %s" (car dirs)))
       (nnheader-message 5 "Creating mail directory %s" (car dirs))
       (setq dirs (cdr dirs)))))
             
       (nnheader-message 5 "Creating mail directory %s" (car dirs))
       (setq dirs (cdr dirs)))))
             
     (while ga
       (nnmh-possibly-create-directory (caar ga))
       (let ((file (concat (nnmail-group-pathname 
     (while ga
       (nnmh-possibly-create-directory (caar ga))
       (let ((file (concat (nnmail-group-pathname 
-                          (caar ga) nnmh-directory) 
+                          (caar ga) nnmh-directory)
                          (int-to-string (cdar ga)))))
        (if first
            ;; It was already saved, so we just make a hard link.
                          (int-to-string (cdar ga)))))
        (if first
            ;; It was already saved, so we just make a hard link.
   (let* ((dir nnmh-current-directory)
         (files (sort (mapcar (function (lambda (name) (string-to-int name)))
                              (directory-files nnmh-current-directory 
   (let* ((dir nnmh-current-directory)
         (files (sort (mapcar (function (lambda (name) (string-to-int name)))
                              (directory-files nnmh-current-directory 
-                                              nil "^[0-9]+$" t)) '<))
+                                              nil "^[0-9]+$" t))
+                     '<))
         (nnmh-file (concat dir ".nnmh-articles"))
         new articles)
     ;; Load the .nnmh-articles file.
         (nnmh-file (concat dir ".nnmh-articles"))
         new articles)
     ;; Load the .nnmh-articles file.
     (let ((art files))
       (while art
        (unless (assq (car art) articles)
     (let ((art files))
       (while art
        (unless (assq (car art) articles)
-         (setq new (cons (car art) new)))
+         (push (car art) new))
        (setq art (cdr art))))
     ;; Remove all deleted articles.
     (let ((art articles))
        (setq art (cdr art))))
     ;; Remove all deleted articles.
     (let ((art articles))
        (gnus-group-prefixed-name group (list 'nnmh ""))
        (setq new (sort new '<))))
     ;; Sort the article list with highest numbers first.
        (gnus-group-prefixed-name group (list 'nnmh ""))
        (setq new (sort new '<))))
     ;; Sort the article list with highest numbers first.
-    (setq articles (sort articles (lambda (art1 art2) 
+    (setq articles (sort articles (lambda (art1 art2)
                                    (> (car art1) (car art2)))))
     ;; Finally write this list back to the .nnmh-articles file.
     (nnheader-temp-write nnmh-file
                                    (> (car art1) (car art2)))))
     ;; Finally write this list back to the .nnmh-articles file.
     (nnheader-temp-write nnmh-file
 (defun nnmh-deletable-article-p (group article)
   "Say whether ARTICLE in GROUP can be deleted."
   (let ((path (concat nnmh-current-directory (int-to-string article))))
 (defun nnmh-deletable-article-p (group article)
   "Say whether ARTICLE in GROUP can be deleted."
   (let ((path (concat nnmh-current-directory (int-to-string article))))
-    (and (file-writable-p path)
-        (or (not nnmail-keep-last-article)
-            (not (eq (cdr (nth 1 (assoc group nnmh-group-alist))) 
-                     article))))))
+    (when (file-writable-p path)
+      (or (not nnmail-keep-last-article)
+         (not (eq (cdr (nth 1 (assoc group nnmh-group-alist)))
+                  article))))))
 
 (provide 'nnmh)
 
 
 (provide 'nnmh)
 
index c42ad58..d4d87a9 100644 (file)
@@ -112,19 +112,18 @@ all.  This may very well take some time.")
                  (concat nnml-current-directory 
                          (or (cdr (assq article nnml-article-file-alist))
                              "")))
                  (concat nnml-current-directory 
                          (or (cdr (assq article nnml-article-file-alist))
                              "")))
-           (if (and (file-exists-p file)
-                    (not (file-directory-p file)))
-               (progn
-                 (insert (format "221 %d Article retrieved.\n" article))
-                 (setq beg (point))
-                 (nnheader-insert-head file)
-                 (goto-char beg)
-                 (if (search-forward "\n\n" nil t)
-                     (forward-char -1)
-                   (goto-char (point-max))
-                   (insert "\n\n"))
-                 (insert ".\n")
-                 (delete-region (point) (point-max))))
+           (when (and (file-exists-p file)
+                      (not (file-directory-p file)))
+             (insert (format "221 %d Article retrieved.\n" article))
+             (setq beg (point))
+             (nnheader-insert-head file)
+             (goto-char beg)
+             (if (search-forward "\n\n" nil t)
+                 (forward-char -1)
+               (goto-char (point-max))
+               (insert "\n\n"))
+             (insert ".\n")
+             (delete-region (point) (point-max)))
            (setq sequence (cdr sequence))
            (setq count (1+ count))
            (and (numberp nnmail-large-newsgroup)
            (setq sequence (cdr sequence))
            (setq count (1+ count))
            (and (numberp nnmail-large-newsgroup)
@@ -165,11 +164,11 @@ all.  This may very well take some time.")
     (if (stringp id)
        (when (and (setq group-num (nnml-find-group-number id))
                   (cdr
     (if (stringp id)
        (when (and (setq group-num (nnml-find-group-number id))
                   (cdr
-                   (assq (cdr group-num) 
+                   (assq (cdr group-num)
                          (nnheader-article-to-file-alist
                           (setq gpath
                                 (nnmail-group-pathname
                          (nnheader-article-to-file-alist
                           (setq gpath
                                 (nnmail-group-pathname
-                                 (car group-num) 
+                                 (car group-num)
                                  nnml-directory))))))
          (setq path (concat gpath (int-to-string (cdr group-num)))))
       (setq path (nnml-article-to-file id)))
                                  nnml-directory))))))
          (setq path (concat gpath (int-to-string (cdr group-num)))))
       (setq path (nnml-article-to-file id)))
@@ -217,7 +216,7 @@ all.  This may very well take some time.")
   (setq nnml-article-file-alist nil)
   t)
 
   (setq nnml-article-file-alist nil)
   t)
 
-(deffoo nnml-request-create-group (group &optional server args) 
+(deffoo nnml-request-create-group (group &optional server args)
   (nnmail-activate 'nnml)
   (unless (assoc group nnml-group-alist)
     (let (active)
   (nnmail-activate 'nnml)
   (unless (assoc group nnml-group-alist)
     (let (active)
@@ -431,7 +430,8 @@ all.  This may very well take some time.")
          (error nil)))
       ;; That went ok, so we change the internal structures.
       (let ((entry (assoc group nnml-group-alist)))
          (error nil)))
       ;; That went ok, so we change the internal structures.
       (let ((entry (assoc group nnml-group-alist)))
-       (and entry (setcar entry new-name))
+       (when entry
+         (setcar entry new-name))
        (setq nnml-current-directory nil
              nnml-current-group nil)
        ;; Save the new group alist.
        (setq nnml-current-directory nil
              nnml-current-group nil)
        ;; Save the new group alist.
@@ -466,10 +466,10 @@ all.  This may very well take some time.")
   (let (file path)
     (when (setq file (cdr (assq article nnml-article-file-alist)))
       (setq path (concat nnml-current-directory file))
   (let (file path)
     (when (setq file (cdr (assq article nnml-article-file-alist)))
       (setq path (concat nnml-current-directory file))
-      (and (file-writable-p path)
-          (or (not nnmail-keep-last-article)
-              (not (eq (cdr (nth 1 (assoc group nnml-group-alist))) 
-                       article)))))))
+      (when (file-writable-p path)
+       (or (not nnmail-keep-last-article)
+           (not (eq (cdr (nth 1 (assoc group nnml-group-alist)))
+                    article)))))))
 
 ;; Find an article number in the current group given the Message-ID. 
 (defun nnml-find-group-number (id)
 
 ;; Find an article number in the current group given the Message-ID. 
 (defun nnml-find-group-number (id)
@@ -500,19 +500,18 @@ all.  This may very well take some time.")
        number found)
     (when (file-exists-p nov)
       (insert-file-contents nov)
        number found)
     (when (file-exists-p nov)
       (insert-file-contents nov)
-      (while (and (not found) 
+      (while (and (not found)
                  (search-forward id nil t)) ; We find the ID.
        ;; And the id is in the fourth field.
                  (search-forward id nil t)) ; We find the ID.
        ;; And the id is in the fourth field.
-       (if (search-backward 
-            "\t" (save-excursion (beginning-of-line) (point)) t 4)
-           (progn
-             (beginning-of-line)
-             (setq found t)
-             ;; We return the article number.
-             (setq number
-                   (condition-case ()
-                       (read (current-buffer))
-                     (error nil))))))
+       (when (search-backward 
+              "\t" (save-excursion (beginning-of-line) (point)) t 4)
+         (beginning-of-line)
+         (setq found t)
+         ;; We return the article number.
+         (setq number
+               (condition-case ()
+                   (read (current-buffer))
+                 (error nil)))))
       number)))
 
 (defun nnml-retrieve-headers-with-nov (articles &optional fetch-old)
       number)))
 
 (defun nnml-retrieve-headers-with-nov (articles &optional fetch-old)
@@ -530,17 +529,19 @@ all.  This may very well take some time.")
          (if (and fetch-old
                   (not (numberp fetch-old)))
              t                         ; Don't remove anything.
          (if (and fetch-old
                   (not (numberp fetch-old)))
              t                         ; Don't remove anything.
-           (if fetch-old
-               (setq first (max 1 (- first fetch-old))))
+           (when fetch-old
+             (setq first (max 1 (- first fetch-old))))
            (goto-char (point-min))
            (while (and (not (eobp)) (> first (read (current-buffer))))
              (forward-line 1))
            (beginning-of-line)
            (goto-char (point-min))
            (while (and (not (eobp)) (> first (read (current-buffer))))
              (forward-line 1))
            (beginning-of-line)
-           (if (not (eobp)) (delete-region 1 (point)))
+           (when (not (eobp))
+             (delete-region 1 (point)))
            (while (and (not (eobp)) (>= last (read (current-buffer))))
              (forward-line 1))
            (beginning-of-line)
            (while (and (not (eobp)) (>= last (read (current-buffer))))
              (forward-line 1))
            (beginning-of-line)
-           (if (not (eobp)) (delete-region (point) (point-max)))
+           (when (not (eobp))
+             (delete-region (point) (point-max)))
            t))))))
 
 (defun nnml-possibly-change-directory (group &optional server)
            t))))))
 
 (defun nnml-possibly-change-directory (group &optional server)
@@ -559,7 +560,7 @@ all.  This may very well take some time.")
   (let (dir dirs)
     (setq dir (nnmail-group-pathname group nnml-directory))
     (while (not (file-directory-p dir))
   (let (dir dirs)
     (setq dir (nnmail-group-pathname group nnml-directory))
     (while (not (file-directory-p dir))
-      (setq dirs (cons dir dirs))
+      (push dir dirs)
       (setq dir (file-name-directory (directory-file-name dir))))
     (while dirs
       (make-directory (directory-file-name (car dirs)))
       (setq dir (file-name-directory (directory-file-name dir))))
     (while dirs
       (make-directory (directory-file-name (car dirs)))
@@ -624,7 +625,7 @@ all.  This may very well take some time.")
                (cons (caar nnml-article-file-alist)
                      (caar (last nnml-article-file-alist)))
              (cons 1 0)))
                (cons (caar nnml-article-file-alist)
                      (caar (last nnml-article-file-alist)))
              (cons 1 0)))
-      (setq nnml-group-alist (cons (list group active) nnml-group-alist)))
+      (push (list group active) nnml-group-alist))
     (setcdr active (1+ (cdr active)))
     (while (file-exists-p
            (concat (nnmail-group-pathname group nnml-directory)
     (setcdr active (1+ (cdr active)))
     (while (file-exists-p
            (concat (nnmail-group-pathname group nnml-directory)
@@ -670,8 +671,7 @@ all.  This may very well take some time.")
        (save-excursion
          (set-buffer buffer)
          (buffer-disable-undo (current-buffer)))
        (save-excursion
          (set-buffer buffer)
          (buffer-disable-undo (current-buffer)))
-       (setq nnml-nov-buffer-alist 
-             (cons (cons group buffer) nnml-nov-buffer-alist))
+       (push (cons group buffer) nnml-nov-buffer-alist)
        buffer)))
 
 (defun nnml-save-nov ()
        buffer)))
 
 (defun nnml-save-nov ()
@@ -778,8 +778,8 @@ all.  This may very well take some time.")
   (save-excursion
     (set-buffer (nnml-open-nov group))
     (goto-char (point-min))
   (save-excursion
     (set-buffer (nnml-open-nov group))
     (goto-char (point-min))
-    (if (re-search-forward (concat "^" (int-to-string article) "\t") nil t)
-       (delete-region (match-beginning 0) (progn (forward-line 1) (point))))
+    (when (re-search-forward (concat "^" (int-to-string article) "\t") nil t)
+      (delete-region (match-beginning 0) (progn (forward-line 1) (point))))
     t))
 
 (provide 'nnml)
     t))
 
 (provide 'nnml)
index 032e7f5..a82e22b 100644 (file)
@@ -52,7 +52,7 @@
 (put 'deffoo 'edebug-form-spec '(&define name lambda-list def-body))
 
 (defun nnoo-register-function (func)
 (put 'deffoo 'edebug-form-spec '(&define name lambda-list def-body))
 
 (defun nnoo-register-function (func)
-  (let ((funcs (nthcdr 3 (assoc (nnoo-backend func) 
+  (let ((funcs (nthcdr 3 (assoc (nnoo-backend func)
                                nnoo-definition-alist))))
     (unless funcs
       (error "%s belongs to a backend that hasn't been declared" func))
                                nnoo-definition-alist))))
     (unless funcs
       (error "%s belongs to a backend that hasn't been declared" func))
        (incf i))
       (eval `(deffoo ,(nnoo-symbol backend (nnoo-rest-symbol (car m)))
                 (&rest args)
        (incf i))
       (eval `(deffoo ,(nnoo-symbol backend (nnoo-rest-symbol (car m)))
                 (&rest args)
-              (nnoo-parent-function ',backend ',(car m) 
+              (nnoo-parent-function ',backend ',(car m)
                                     ,(cons 'list (nreverse margs))))))))
   
 (defun nnoo-backend (symbol)
                                     ,(cons 'list (nreverse margs))))))))
   
 (defun nnoo-backend (symbol)
         (parents (nth 1 def)))
     (unless def
       (error "%s belongs to a backend that hasn't been declared." var))
         (parents (nth 1 def)))
     (unless def
       (error "%s belongs to a backend that hasn't been declared." var))
-    (setcar (nthcdr 2 def) 
+    (setcar (nthcdr 2 def)
            (delq (assq var (nth 2 def)) (nth 2 def)))
     (setcar (nthcdr 2 def)
            (cons (cons var (symbol-value var))
            (delq (assq var (nth 2 def)) (nth 2 def)))
     (setcar (nthcdr 2 def)
            (cons (cons var (symbol-value var))
 (defun nnoo-define-basics-1 (backend)
   (let ((functions '(close-server server-opened status-message)))
     (while functions
 (defun nnoo-define-basics-1 (backend)
   (let ((functions '(close-server server-opened status-message)))
     (while functions
-      (eval `(deffoo ,(nnoo-symbol backend (car functions)) 
+      (eval `(deffoo ,(nnoo-symbol backend (car functions))
                 (&optional server)
               (,(nnoo-symbol 'nnoo (pop functions)) ',backend server)))))
   (eval `(deffoo ,(nnoo-symbol backend 'open-server)
                 (&optional server)
               (,(nnoo-symbol 'nnoo (pop functions)) ',backend server)))))
   (eval `(deffoo ,(nnoo-symbol backend 'open-server)
index fcf2c62..f9c935e 100644 (file)
@@ -231,7 +231,7 @@ The SOUP packet file name will be inserted at the %s.")
          (nnheader-report 'nnsoup "No such group: %s" group)
        (nnheader-insert 
         "211 %d %d %d %s\n" 
          (nnheader-report 'nnsoup "No such group: %s" group)
        (nnheader-insert 
         "211 %d %d %d %s\n" 
-        (max (1+ (- (cdr active) (car active))) 0) 
+        (max (1+ (- (cdr active) (car active))) 0)
         (car active) (cdr active) group)))))
 
 (deffoo nnsoup-request-type (group &optional article)
         (car active) (cdr active) group)))))
 
 (deffoo nnsoup-request-type (group &optional article)
@@ -470,7 +470,7 @@ The SOUP packet file name will be inserted at the %s.")
                  nnsoup-packet-directory t nnsoup-packet-regexp))
        packet)
     (while (setq packet (pop packets))
                  nnsoup-packet-directory t nnsoup-packet-regexp))
        packet)
     (while (setq packet (pop packets))
-      (message (format "nnsoup: unpacking %s..." packet))
+      (message "nnsoup: unpacking %s..." packet)
       (if (not (gnus-soup-unpack-packet 
                nnsoup-tmp-directory nnsoup-unpacker packet))
          (message "Couldn't unpack %s" packet)
       (if (not (gnus-soup-unpack-packet 
                nnsoup-tmp-directory nnsoup-unpacker packet))
          (message "Couldn't unpack %s" packet)
@@ -509,8 +509,8 @@ The SOUP packet file name will be inserted at the %s.")
                (let ((format (gnus-soup-encoding-format
                               (gnus-soup-area-encoding (nth 1 area)))))
                  (goto-char end)
                (let ((format (gnus-soup-encoding-format
                               (gnus-soup-area-encoding (nth 1 area)))))
                  (goto-char end)
-                 (if (or (= format ?n) (= format ?m))
-                     (setq end (progn (forward-line -1) (point))))))
+                 (when (or (= format ?n) (= format ?m))
+                   (setq end (progn (forward-line -1) (point))))))
            (set-buffer msg-buf))
          (widen)
          (narrow-to-region beg (or end (point-max))))
            (set-buffer msg-buf))
          (widen)
          (narrow-to-region beg (or end (point-max))))
@@ -657,15 +657,14 @@ The SOUP packet file name will be inserted at the %s.")
       (setq replies (cdr replies)))
     (if replies
        (gnus-soup-reply-prefix (car replies))
       (setq replies (cdr replies)))
     (if replies
        (gnus-soup-reply-prefix (car replies))
-      (setq nnsoup-replies-list
-           (cons (vector (gnus-soup-unique-prefix nnsoup-replies-directory)
-                         kind 
-                         (format "%c%c%c"
-                                 nnsoup-replies-format-type
-                                 nnsoup-replies-index-type
-                                 (if (string= kind "news")
-                                     ?n ?m)))
-                 nnsoup-replies-list))
+      (push (vector (gnus-soup-unique-prefix nnsoup-replies-directory)
+                   kind 
+                   (format "%c%c%c"
+                           nnsoup-replies-format-type
+                           nnsoup-replies-index-type
+                           (if (string= kind "news")
+                               ?n ?m)))
+           nnsoup-replies-list)
       (gnus-soup-reply-prefix (car nnsoup-replies-list)))))
 
 (defun nnsoup-make-active ()
       (gnus-soup-reply-prefix (car nnsoup-replies-list)))))
 
 (defun nnsoup-make-active ()
@@ -696,7 +695,7 @@ The SOUP packet file name will be inserted at the %s.")
                          (match-end 1))))
       (if (not (setq elem (assoc group active)))
          (push (list group (cons 1 lines)
                          (match-end 1))))
       (if (not (setq elem (assoc group active)))
          (push (list group (cons 1 lines)
-                     (list (cons 1 lines) 
+                     (list (cons 1 lines)
                            (vector ident group "ncm" "" lines)))
                active)
        (nconc elem
                            (vector ident group "ncm" "" lines)))
                active)
        (nconc elem
index 0c2e08d..21f10f8 100644 (file)
@@ -143,8 +143,8 @@ there.")
                 (message "nnspool: Receiving headers... %d%%"
                          (/ (* count 100) number))))
          
                 (message "nnspool: Receiving headers... %d%%"
                          (/ (* count 100) number))))
          
-         (and do-message
-              (message "nnspool: Receiving headers...done"))
+         (when do-message
+           (message "nnspool: Receiving headers...done"))
          
          ;; Fold continuation lines.
          (nnheader-fold-continuation-lines)
          
          ;; Fold continuation lines.
          (nnheader-fold-continuation-lines)
@@ -290,9 +290,9 @@ there.")
                             (goto-char (match-end 1))
                             (read (current-buffer)))
                           seconds))
                             (goto-char (match-end 1))
                             (read (current-buffer)))
                           seconds))
-                     (setq groups (cons (buffer-substring
+                     (push (buffer-substring
                                          (match-beginning 1) (match-end 1))
                                          (match-beginning 1) (match-end 1))
-                                        groups))
+                                        groups)
                      (zerop (forward-line -1))))
          (erase-buffer)
          (while groups
                      (zerop (forward-line -1))))
          (erase-buffer)
          (while groups
@@ -426,8 +426,8 @@ there.")
       (error nil))
     (goto-char (point-min))
     (prog1
       (error nil))
     (goto-char (point-min))
     (prog1
-       (if (looking-at "<[^>]+>[ \t]+[-0-9~]+[ \t]+\\([^ /\t\n]+\\)/\\([0-9]+\\)[ \t\n]")
-           (cons (match-string 1) (string-to-int (match-string 2))))
+       (when (looking-at "<[^>]+>[ \t]+[-0-9~]+[ \t]+\\([^ /\t\n]+\\)/\\([0-9]+\\)[ \t\n]")
+         (cons (match-string 1) (string-to-int (match-string 2))))
       (kill-buffer (current-buffer)))))
 
 (defun nnspool-find-file (file)
       (kill-buffer (current-buffer)))))
 
 (defun nnspool-find-file (file)
@@ -458,7 +458,7 @@ there.")
                        (timezone-parse-time
                         (aref (timezone-parse-date date) 3))))
         (unix (encode-time (nth 2 ttime) (nth 1 ttime) (nth 0 ttime)
                        (timezone-parse-time
                         (aref (timezone-parse-date date) 3))))
         (unix (encode-time (nth 2 ttime) (nth 1 ttime) (nth 0 ttime)
-                           (nth 2 tdate) (nth 1 tdate) (nth 0 tdate) 
+                           (nth 2 tdate) (nth 1 tdate) (nth 0 tdate)
                            (nth 4 tdate))))
     (+ (* (car unix) 65536.0)
        (cadr unix))))
                            (nth 4 tdate))))
     (+ (* (car unix) 65536.0)
        (cadr unix))))
index 95499b8..9997983 100644 (file)
@@ -47,7 +47,7 @@ The default value is `nntp-send-mode-reader', which makes an innd
 server spawn an nnrpd server.  Another useful function to put in this
 hook might be `nntp-send-authinfo', which will prompt for a password
 to allow posting from the server.  Note that this is only necessary to
 server spawn an nnrpd server.  Another useful function to put in this
 hook might be `nntp-send-authinfo', which will prompt for a password
 to allow posting from the server.  Note that this is only necessary to
-do on servers that use strict access control.")  
+do on servers that use strict access control.")
 
 (defvoo nntp-authinfo-function 'nntp-send-authinfo
   "Function used to send AUTHINFO to the server.")
 
 (defvoo nntp-authinfo-function 'nntp-send-authinfo
   "Function used to send AUTHINFO to the server.")
@@ -178,7 +178,7 @@ server there that you can connect to.  See also `nntp-open-connection-function'"
   (save-excursion
     (set-buffer (nntp-find-connection-buffer nntp-server-buffer))
     (erase-buffer)
   (save-excursion
     (set-buffer (nntp-find-connection-buffer nntp-server-buffer))
     (erase-buffer)
-    (if (and (not gnus-nov-is-evil) 
+    (if (and (not gnus-nov-is-evil)
             (not nntp-nov-is-evil)
             (nntp-retrieve-headers-with-xover articles fetch-old))
        ;; We successfully retrieved the headers via XOVER.
             (not nntp-nov-is-evil)
             (nntp-retrieve-headers-with-xover articles fetch-old))
        ;; We successfully retrieved the headers via XOVER.
@@ -195,7 +195,7 @@ server there that you can connect to.  See also `nntp-open-connection-function'"
        (while articles
          (nntp-send-command 
           nil
        (while articles
          (nntp-send-command 
           nil
-          "HEAD" (if (numberp (car articles)) 
+          "HEAD" (if (numberp (car articles))
                      (int-to-string (car articles))
                    ;; `articles' is either a list of article numbers
                    ;; or a list of article IDs.
                      (int-to-string (car articles))
                    ;; `articles' is either a list of article numbers
                    ;; or a list of article IDs.
@@ -302,7 +302,7 @@ server there that you can connect to.  See also `nntp-open-connection-function'"
        ;; superfluous gunk.
        (goto-char (point-min))
        (while (re-search-forward "^[.2-5]" nil t)
        ;; superfluous gunk.
        (goto-char (point-min))
        (while (re-search-forward "^[.2-5]" nil t)
-         (delete-region (match-beginning 0) 
+         (delete-region (match-beginning 0)
                         (progn (forward-line 1) (point))))
        (copy-to-buffer nntp-server-buffer (point-min) (point-max))
        'active))))
                         (progn (forward-line 1) (point))))
        (copy-to-buffer nntp-server-buffer (point-min) (point-max))
        'active))))
@@ -413,7 +413,7 @@ server there that you can connect to.  See also `nntp-open-connection-function'"
     (let* ((date (timezone-parse-date date))
           (time-string
            (format "%s%02d%02d %s%s%s"
     (let* ((date (timezone-parse-date date))
           (time-string
            (format "%s%02d%02d %s%s%s"
-                   (substring (aref date 0) 2) (string-to-int (aref date 1)) 
+                   (substring (aref date 0) 2) (string-to-int (aref date 1))
                    (string-to-int (aref date 2)) (substring (aref date 3) 0 2)
                    (substring 
                     (aref date 3) 3 5) (substring (aref date 3) 6 8))))
                    (string-to-int (aref date 2)) (substring (aref date 3) 0 2)
                    (substring 
                     (aref date 3) 3 5) (substring (aref date 3) 6 8))))
@@ -484,14 +484,14 @@ It will prompt for a password."
       (set-buffer nntp-server-buffer)
       (erase-buffer)))
   (nntp-retrieve-data
       (set-buffer nntp-server-buffer)
       (erase-buffer)))
   (nntp-retrieve-data
-   (mapconcat 'identity strings " ") 
+   (mapconcat 'identity strings " ")
    nntp-address nntp-port-number nntp-server-buffer
    wait-for nnheader-callback-function))
 
 (defun nntp-send-command-nodelete (wait-for &rest strings)
   "Send STRINGS to server and wait until WAIT-FOR returns."
   (nntp-retrieve-data
    nntp-address nntp-port-number nntp-server-buffer
    wait-for nnheader-callback-function))
 
 (defun nntp-send-command-nodelete (wait-for &rest strings)
   "Send STRINGS to server and wait until WAIT-FOR returns."
   (nntp-retrieve-data
-   (mapconcat 'identity strings " ") 
+   (mapconcat 'identity strings " ")
    nntp-address nntp-port-number nntp-server-buffer
    wait-for nnheader-callback-function))
 
    nntp-address nntp-port-number nntp-server-buffer
    wait-for nnheader-callback-function))
 
@@ -502,7 +502,7 @@ It will prompt for a password."
       (set-buffer nntp-server-buffer)
       (erase-buffer)))
   (nntp-retrieve-data
       (set-buffer nntp-server-buffer)
       (erase-buffer)))
   (nntp-retrieve-data
-   (mapconcat 'identity strings " ") 
+   (mapconcat 'identity strings " ")
    nntp-address nntp-port-number nntp-server-buffer
    wait-for nnheader-callback-function t))
 
    nntp-address nntp-port-number nntp-server-buffer
    wait-for nnheader-callback-function t))
 
@@ -577,7 +577,7 @@ It will prompt for a password."
       (nntp-wait-for process "^.*\n" buffer)
       (if (memq (process-status process) '(open run))
          (prog1
       (nntp-wait-for process "^.*\n" buffer)
       (if (memq (process-status process) '(open run))
          (prog1
-             (caar (push (list process buffer nil) 
+             (caar (push (list process buffer nil)
                          nntp-connection-alist))
            (push process nntp-connection-list)
            (save-excursion
                          nntp-connection-alist))
            (push process nntp-connection-list)
            (save-excursion
@@ -784,8 +784,8 @@ It will prompt for a password."
        fetch-old)
     (nntp-send-xover-command 
      (if fetch-old
        fetch-old)
     (nntp-send-xover-command 
      (if fetch-old
-        (if (numberp fetch-old) 
-            (max 1 (- (car articles) fetch-old)) 
+        (if (numberp fetch-old)
+            (max 1 (- (car articles) fetch-old))
           1)
        (car articles))
      (car (last articles)) 'wait)
           1)
        (car articles))
      (car (last articles)) 'wait)
@@ -819,7 +819,7 @@ It will prompt for a password."
        (setq first (car articles))
        ;; Search forward until we find a gap, or until we run out of
        ;; articles. 
        (setq first (car articles))
        ;; Search forward until we find a gap, or until we run out of
        ;; articles. 
-       (while (and (cdr articles) 
+       (while (and (cdr articles)
                    (< (- (nth 1 articles) (car articles)) nntp-nov-gap))
          (setq articles (cdr articles)))
 
                    (< (- (nth 1 articles) (car articles)) nntp-nov-gap))
          (setq articles (cdr articles)))
 
@@ -836,7 +836,7 @@ It will prompt for a password."
            ;; a tendency to change the buffer.  Perhaps.  It's
            ;; quite difficult to reproduce, because it only
            ;; seems to happen once in a blue moon. 
            ;; a tendency to change the buffer.  Perhaps.  It's
            ;; quite difficult to reproduce, because it only
            ;; seems to happen once in a blue moon. 
-           (set-buffer buf) 
+           (set-buffer buf)
            (while (progn
                     (goto-char last-point)
                     ;; Count replies.
            (while (progn
                     (goto-char last-point)
                     ;; Count replies.
@@ -1010,7 +1010,7 @@ It will prompt for a password."
                     (string-match (format "\\([^ :]+\\):%d" number) xref))
                (substring xref (match-beginning 1) (match-end 1)))
               (t "")))
                     (string-match (format "\\([^ :]+\\):%d" number) xref))
                (substring xref (match-beginning 1) (match-end 1)))
               (t "")))
-       (when (string-match "\r" group) 
+       (when (string-match "\r" group)
          (setq group (substring group 0 (match-beginning 0))))
        (cons group number)))))
 
          (setq group (substring group 0 (match-beginning 0))))
        (cons group number)))))
 
index 7a97ce7..b8c9a2d 100644 (file)
@@ -131,13 +131,13 @@ virtual group.")
                      (insert "Xref: " system-name " " cgroup ":")
                      (princ (caddr article) (current-buffer))
                      (insert " ")
                      (insert "Xref: " system-name " " cgroup ":")
                      (princ (caddr article) (current-buffer))
                      (insert " ")
-                     (if (not (string= "" prefix))
-                         (while (re-search-forward 
-                                 "[^ ]+:[0-9]+"
-                                 (save-excursion (end-of-line) (point)) t)
-                           (save-excursion
-                             (goto-char (match-beginning 0))
-                             (insert prefix))))
+                     (when (not (string= "" prefix))
+                       (while (re-search-forward 
+                               "[^ ]+:[0-9]+"
+                               (save-excursion (end-of-line) (point)) t)
+                         (save-excursion
+                           (goto-char (match-beginning 0))
+                           (insert prefix))))
                      (end-of-line)
                      (or (= (char-after (1- (point))) ?\t)
                          (insert ?\t)))
                      (end-of-line)
                      (or (= (char-after (1- (point))) ?\t)
                          (insert ?\t)))
@@ -250,7 +250,7 @@ virtual group.")
     (nnvirtual-update-marked))
   t)
     
     (nnvirtual-update-marked))
   t)
     
-(deffoo nnvirtual-request-list (&optional server) 
+(deffoo nnvirtual-request-list (&optional server)
   (nnheader-report 'nnvirtual "LIST is not implemented."))
 
 (deffoo nnvirtual-request-newgroups (date &optional server)
   (nnheader-report 'nnvirtual "LIST is not implemented."))
 
 (deffoo nnvirtual-request-newgroups (date &optional server)
@@ -394,10 +394,10 @@ virtual group.")
                     (when gnus-use-cache
                       (push (cons 'cache (gnus-cache-articles-in-group g))
                             marks))
                     (when gnus-use-cache
                       (push (cons 'cache (gnus-cache-articles-in-group g))
                             marks))
-                    (setq div (/ (float (car active)) 
+                    (setq div (/ (float (car active))
                                  (if (zerop (cdr active))
                                      1 (cdr active))))
                                  (if (zerop (cdr active))
                                      1 (cdr active))))
-                    (mapcar (lambda (n) 
+                    (mapcar (lambda (n)
                               (list (* div (- n (car active)))
                                     g n (and (memq n unreads) t)
                                     (inline (nnvirtual-marks n marks))))
                               (list (* div (- n (car active)))
                                     g n (and (memq n unreads) t)
                                     (inline (nnvirtual-marks n marks))))
index 40707a3..c51d450 100644 (file)
    (function
     (lambda (data)
       (concat (w3-form-encode-xwfu (car data)) "="
    (function
     (lambda (data)
       (concat (w3-form-encode-xwfu (car data)) "="
-             (w3-form-encode-xwfu (cdr data))))) pairs "&"))
+             (w3-form-encode-xwfu (cdr data)))))
+   pairs "&"))
 
 (defun nnweb-fetch-form (url pairs)
   (let ((url-request-data (nnweb-encode-www-form-urlencoded pairs))
 
 (defun nnweb-fetch-form (url pairs)
   (let ((url-request-data (nnweb-encode-www-form-urlencoded pairs))
          (goto-char (point-min))
          (while (re-search-forward "^ +[0-9]+\\." nil t)
            (narrow-to-region 
          (goto-char (point-min))
          (while (re-search-forward "^ +[0-9]+\\." nil t)
            (narrow-to-region 
-            (point) 
+            (point)
             (cond ((re-search-forward "^ +[0-9]+\\." nil t)
                    (match-beginning 0))
                   ((search-forward "\n\n" nil t)
             (cond ((re-search-forward "^ +[0-9]+\\." nil t)
                    (match-beginning 0))
                   ((search-forward "\n\n" nil t)
          (goto-char (point-min))
          (while (re-search-forward "^ +[0-9]+\\." nil t)
            (narrow-to-region 
          (goto-char (point-min))
          (while (re-search-forward "^ +[0-9]+\\." nil t)
            (narrow-to-region 
-            (point) 
+            (point)
             (if (re-search-forward "^$" nil t)
                 (match-beginning 0)
               (point-max)))
             (if (re-search-forward "^$" nil t)
                 (match-beginning 0)
               (point-max)))
        (nnweb-encode-www-form-urlencoded 
         `(("pg" . "aq")
           ("what" . "news")
        (nnweb-encode-www-form-urlencoded 
         `(("pg" . "aq")
           ("what" . "news")
-          ,@(if part `(("stq" . ,(int-to-string (* part 30)))))
+          ,@(when part `(("stq" . ,(int-to-string (* part 30)))))
           ("fmt" . "d")
           ("q" . ,search)
           ("r" . "")
           ("fmt" . "d")
           ("q" . ,search)
           ("r" . "")
index 2541a6a..5a07f3f 100644 (file)
@@ -940,12 +940,12 @@ With optional ARG, move across that many fields."
 
 (defun widget-choice-convert-widget (widget)
   ;; Expand type args into widget objects.
 
 (defun widget-choice-convert-widget (widget)
   ;; Expand type args into widget objects.
-;  (widget-put widget :args (mapcar (lambda (child)
-;                                   (if (widget-get child ':converted)
-;                                       child
-;                                     (widget-put child ':converted t)
-;                                     (widget-convert child)))
-;                                 (widget-get widget :args)))
+                                       ;  (widget-put widget :args (mapcar (lambda (child)
+                                       ;                                    (if (widget-get child ':converted)
+                                       ;                                        child
+                                       ;                                      (widget-put child ':converted t)
+                                       ;                                      (widget-convert child)))
+                                       ;                                  (widget-get widget :args)))
   (widget-put widget :args (mapcar 'widget-convert (widget-get widget :args)))
   widget)
 
   (widget-put widget :args (mapcar 'widget-convert (widget-get widget :args)))
   widget)
 
@@ -1460,7 +1460,7 @@ With optional ARG, move across that many fields."
        (t 
         (widget-default-format-handler widget escape))))
 
        (t 
         (widget-default-format-handler widget escape))))
 
-;(defun widget-editable-list-format-handler (widget escape)
+                                       ;(defun widget-editable-list-format-handler (widget escape)
 ;  ;; We recognize the insert button.
 ;  (cond ((eq escape ?i)
 ;       (insert " ")                   
 ;  ;; We recognize the insert button.
 ;  (cond ((eq escape ?i)
 ;       (insert " ")                   
index 6a4bb4e..59e0e5c 100644 (file)
@@ -1,3 +1,8 @@
+Tue Oct  1 01:34:45 1996  Lars Magne Ingebrigtsen  <larsi@hrym.ifi.uio.no>
+
+       * gnus.texi (Expiring Mail): Addition.
+       (Group Line Specification): Addition.
+
 Sat Sep 28 21:36:40 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
 
        * gnus.texi (Foreign Groups): Addition.
 Sat Sep 28 21:36:40 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
 
        * gnus.texi (Foreign Groups): Addition.
index 78edd54..8ef8d1b 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Red Gnus 0.45 Manual
+@settitle Red Gnus 0.46 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -287,7 +287,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
 @tex
 
 @titlepage
-@title Red Gnus 0.45 Manual
+@title Red Gnus 0.46 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -1119,6 +1119,12 @@ variable says how many levels to leave at the end of the group name.
 The default is 1---this will mean that group names like
 @samp{gnu.emacs.gnus} will be shortened to @samp{g.emacs.gnus}.
 
 The default is 1---this will mean that group names like
 @samp{gnu.emacs.gnus} will be shortened to @samp{g.emacs.gnus}.
 
+@item m
+@vindex gnus-new-mail-mark
+@cindex %
+@samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
+the group lately.
+
 @item u
 User defined specifier.  The next character in the format string should
 be a letter.  @sc{gnus} will call the function
 @item u
 User defined specifier.  The next character in the format string should
 be a letter.  @sc{gnus} will call the function
@@ -8732,6 +8738,12 @@ have all articles that you read marked as expirable automatically.  All
 articles that are marked as expirable have an @samp{E} in the first
 column in the summary buffer.
 
 articles that are marked as expirable have an @samp{E} in the first
 column in the summary buffer.
 
+Note that making a group auto-expirable don't mean that all read
+articles are expired---only the articles that are marked as expirable
+will be expired.  Also note the using the @kbd{d} command won't make
+groups expirable---only semi-automatic marking of articles as read will
+mark the articles as expirable in auto-expirable groups.
+
 Let's say you subscribe to a couple of mailing lists, and you want the
 articles you have read to disappear after a while:
 
 Let's say you subscribe to a couple of mailing lists, and you want the
 articles you have read to disappear after a while:
 
@@ -8798,6 +8810,8 @@ wrong group and all your important mail has disappeared.  Be a
 @emph{man}!  Or a @emph{woman}!  Whatever you feel more comfortable
 with!  So there!
 
 @emph{man}!  Or a @emph{woman}!  Whatever you feel more comfortable
 with!  So there!
 
+Most people make most of their mail groups total-expirable, though. 
+
 
 @node Washing Mail
 @subsection Washing Mail
 
 @node Washing Mail
 @subsection Washing Mail
index 684a611..294692f 100644 (file)
@@ -809,8 +809,11 @@ Check whether any of the headers are empty.
 Check whether the newsgroups mentioned in the Newsgroups and 
 Followup-To headers exist.
 @item valid-newsgroups
 Check whether the newsgroups mentioned in the Newsgroups and 
 Followup-To headers exist.
 @item valid-newsgroups
-Check whether the @code{Newsgroups} and @code{Followup-To} headers
+Check whether the @code{Newsgroups} and @code{Followup-to} headers
 are valid syntactically.
 are valid syntactically.
+@item shorten-followup-to
+Check whether to add a @code{Followup-to} header to shorten the number
+of groups to post to.
 @end table
 
 All these conditions are checked by default.
 @end table
 
 All these conditions are checked by default.