*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 20:06:37 +0000 (20:06 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 20:06:37 +0000 (20:06 +0000)
lisp/ChangeLog
lisp/gnus-cache.el
lisp/gnus-topic.el
lisp/gnus-vis.el
lisp/gnus.el
lisp/message.el
lisp/nnheaderems.el [deleted file]
lisp/score-mode.el [moved from lisp/gnus-scomo.el with 97% similarity]
texi/Makefile

index 6232af3..ec3de2e 100644 (file)
@@ -1,3 +1,29 @@
+Sun Jun 30 21:57:31 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
+
+       * gnus.el (gnus-check-bogus-groups-hook): New hook.
+
+Sun Jun 30 21:54:46 1996  Joe Wells  <jbw@cs.bu.edu>
+
+       * gnus-topic.el (gnus-topic-clean-alist): New function.
+
+Sun Jun 30 20:00:18 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
+
+       * gnus.el (gnus-group-next-unread-group): Allow silence.
+
+       * gnus-cache.el (gnus-cache-possibly-alter-active): Would check
+       the obarray.
+
+       * gnus.el (gnus-summary-read-group): Don't signal an error when
+       including expunged articles.
+
+       * gnus-vis.el (gnus-header-button-alist): Would include ":".
+
+       * message.el (message-reply): Inhibit point-motion hooks.
+
+       * gnus.el (gnus-compile): Mark the .newsrc.eld file as dirty.
+
+       * gnus-scomo.el: Renamed to "score-mode".
+
 Sat Jun 29 01:03:19 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
 
        * gnus.el: Gnus v5.2.30 is released.
index d44c494..24b38c6 100644 (file)
@@ -236,13 +236,14 @@ variable to \"^nnml\".")
 
 (defun gnus-cache-possibly-alter-active (group active)
   "Alter the ACTIVE info for GROUP to reflect the articles in the cache."
-  (let ((cache-active (gnus-gethash group gnus-cache-active-hashtb)))
-    (and cache-active 
-        (< (car cache-active) (car active))
-        (setcar active (car cache-active)))
-    (and cache-active
-        (> (cdr cache-active) (cdr active))
-        (setcdr active (cdr cache-active)))))
+  (when gnus-cache-active-hashtb
+    (let ((cache-active (gnus-gethash group gnus-cache-active-hashtb)))
+      (and cache-active 
+          (< (car cache-active) (car active))
+          (setcar active (car cache-active)))
+      (and cache-active
+          (> (cdr cache-active) (cdr active))
+          (setcdr active (cdr cache-active))))))
 
 (defun gnus-cache-retrieve-headers (articles group &optional fetch-old)
   "Retrieve the headers for ARTICLES in GROUP."
index 774b149..f96e6e1 100644 (file)
@@ -670,6 +670,8 @@ articles in the topic and its subtopics."
       (make-local-variable 'gnus-group-indentation-function)
       (setq gnus-group-indentation-function
            'gnus-topic-group-indentation)
+      (gnus-make-local-hook 'gnus-check-bogus-groups-hook)
+      (add-hook 'gnus-check-bogus-groups-hook 'gnus-topic-clean-alist)
       (setq gnus-topology-checked-p nil)
       ;; We check the topology.
       (when gnus-newsrc-alist
@@ -680,6 +682,7 @@ articles in the topic and its subtopics."
       (remove-hook 'gnus-summary-exit-hook 'gnus-topic-update-topic)
       (remove-hook 'gnus-group-change-level-function 
                   'gnus-topic-change-level)
+      (remove-hook 'gnus-check-bogus-groups-hook 'gnus-topic-clean-alist)
       (setq gnus-group-prepare-function 'gnus-group-prepare-flat))
     (when redisplay
       (gnus-group-list-groups))))
@@ -790,6 +793,22 @@ If COPYP, copy the groups instead."
            (gnus-topic-goto-topic (gnus-group-parent-topic))
            (gnus-group-topic-level)) 0)) ? ))
 
+(defun gnus-topic-clean-alist ()
+  "Remove bogus groups from the topic alist."
+  (let ((topic-alist gnus-topic-alist)
+       result topic)
+    (unless gnus-killed-hashtb
+      (gnus-make-hashtable-from-killed))
+    (while (setq topic (pop topic-alist))
+      (let ((topic-name (pop topic))
+           group filtered-topic)
+       (while (setq group (pop topic))
+         (if (and (gnus-gethash group gnus-active-hashtb)
+                  (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))))
+
 (defun gnus-topic-change-level (group level oldlevel)
   "Run when changing levels to enter/remove groups from topics."
   (save-excursion
index baddc09..3bde9f9 100644 (file)
@@ -238,7 +238,7 @@ variable it the real callback function.")
 (defvar gnus-header-button-alist 
   `(("^\\(References\\|Message-I[Dd]\\):" "<[^>]+>"
      0 t gnus-button-message-id 0)
-    ("^\\(From\\|Reply-To\\): " ": *\\(.+\\)$" 1 t gnus-button-reply 0)
+    ("^\\(From\\|Reply-To\\):" ": *\\(.+\\)$" 1 t gnus-button-reply 1)
     ("^\\(Cc\\|To\\):" "[^ \t\n<>,()\"]+@[^ \t\n<>,()\"]+" 
      0 t gnus-button-mailto 0)
     ("^X-[Uu][Rr][Ll]:" ,gnus-button-url-regexp 0 t gnus-button-url 0)
index 4aff4cb..3dbff5c 100644 (file)
@@ -156,6 +156,14 @@ of regexps/functions/forms to be evaluated to return a string (or a list
 of strings).  The functions are called with the name of the current
 group (or nil) as a parameter.
 
+If you want to save your mail in one group and the news articles you
+write in another group, you could say something like:
+
+ \(setq gnus-message-archive-group 
+        '((if (message-news-p)
+              \"misc-news\" 
+            \"misc-mail\")))
+
 Normally the group names returned by this variable should be
 unprefixed -- which implictly means \"store on the archive server\".
 However, you may wish to store the message on some other server.  In
@@ -499,7 +507,7 @@ If this variable is `fuzzy', Gnus will use a fuzzy algorithm when
 comparing subjects.")
 
 (defvar gnus-simplify-ignored-prefixes nil
-  "*Regexp, matches for which are removed from subject lines when simplifying.")
+  "*Regexp, matches for which are removed from subject lines when simplifying fuzzily.")
 
 (defvar gnus-build-sparse-threads nil
   "*If non-nil, fill in the gaps in threads.
@@ -1389,6 +1397,9 @@ It calls `gnus-summary-expire-articles' by default.")
 (defvar gnus-summary-exit-hook nil
   "*A hook called on exit from the summary buffer.")
 
+(defvar gnus-check-bogus-groups-hook nil
+  "A hook run after removing bogus groups.")
+
 (defvar gnus-group-catchup-group-hook nil
   "*A hook run when catching up a group from the group buffer.")
 
@@ -1750,7 +1761,7 @@ variable (string, integer, character, etc).")
   "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
   "The mail address of the Gnus maintainers.")
 
-(defconst gnus-version-number "5.2.31"
+(defconst gnus-version-number "5.2.32"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
@@ -2033,7 +2044,7 @@ Thank you for your help in stamping out bugs.
       gnus-group-brew-soup gnus-brew-soup gnus-soup-add-article
       gnus-soup-send-replies gnus-soup-save-areas gnus-soup-pack-packet)
      ("nnsoup" nnsoup-pack-replies)
-     ("gnus-scomo" :interactive t gnus-score-mode)
+     ("score-mode" :interactive t gnus-score-mode)
      ("gnus-mh" gnus-mh-mail-setup gnus-summary-save-article-folder
       gnus-Folder-save-name gnus-folder-save-name)
      ("gnus-mh" :interactive t gnus-summary-save-in-folder)
@@ -4491,7 +4502,8 @@ prompt the user for the name of an NNTP server to use."
            (setcar (cddr entry) (gnus-byte-code 'gnus-tmp-func)))))
 
       (push (cons 'version emacs-version) gnus-format-specs)
-
+      ;; Mark the .newsrc.eld file as "dirty".
+      (gnus-dribble-enter " ")
       (gnus-message 7 "Compiling user specs...done"))))
 
 (defun gnus-indent-rigidly (start end arg)
@@ -5502,15 +5514,15 @@ Returns whether the fetching was successful or not."
                                             group gnus-active-hashtb))))
       (and b (goto-char b)))))
 
-(defun gnus-group-next-group (n)
+(defun gnus-group-next-group (n &optional silent)
   "Go to next N'th newsgroup.
 If N is negative, search backward instead.
 Returns the difference between N and the number of skips actually
 done."
   (interactive "p")
-  (gnus-group-next-unread-group n t))
+  (gnus-group-next-unread-group n t nil silent))
 
-(defun gnus-group-next-unread-group (n &optional all level)
+(defun gnus-group-next-unread-group (n &optional all level silent)
   "Go to next N'th unread newsgroup.
 If N is negative, search backward instead.
 If ALL is non-nil, choose any newsgroup, unread or not.
@@ -5526,8 +5538,10 @@ made."
                (gnus-group-search-forward
                 backward (or (not gnus-group-goto-unread) all) level))
       (setq n (1- n)))
-    (if (/= 0 n) (gnus-message 7 "No more%s newsgroups%s" (if all "" " unread")
-                              (if level " on this level or higher" "")))
+    (when (and (/= 0 n)
+              (not silent))
+      (gnus-message 7 "No more%s newsgroups%s" (if all "" " unread")
+                   (if level " on this level or higher" "")))
     n))
 
 (defun gnus-group-prev-group (n)
@@ -7861,7 +7875,7 @@ If NO-DISPLAY, don't generate a summary buffer."
        (cond (gnus-newsgroup-dormant
               (gnus-summary-limit-include-dormant))
              ((and gnus-newsgroup-scored show-all)
-              (gnus-summary-limit-include-expunged))))
+              (gnus-summary-limit-include-expunged t))))
       ;; Function `gnus-apply-kill-file' must be called in this hook.
       (run-hooks 'gnus-apply-kill-hook)
       (if (and (zerop (buffer-size))
@@ -12496,7 +12510,7 @@ even ticked and dormant ones."
 
 ;; Suggested by Daniel Quinlan <quinlan@best.com>.
 (defalias 'gnus-summary-show-all-expunged 'gnus-summary-limit-include-expunged)
-(defun gnus-summary-limit-include-expunged ()
+(defun gnus-summary-limit-include-expunged (&optional no-error)
   "Display all the hidden articles that were expunged for low scores."
   (interactive)
   (gnus-set-global-variables)
@@ -12509,11 +12523,14 @@ even ticked and dormant ones."
                 (< (cdar scored) gnus-summary-expunge-below)
                 (setq headers (cons h headers))))
        (setq scored (cdr scored)))
-      (or headers (error "No expunged articles hidden."))
-      (goto-char (point-min))
-      (gnus-summary-prepare-unthreaded (nreverse headers)))
-    (goto-char (point-min))
-    (gnus-summary-position-point)))
+      (if (not headers)
+         (when (not no-error)
+           (error "No expunged articles hidden."))
+       (goto-char (point-min))
+       (gnus-summary-prepare-unthreaded (nreverse headers))
+       (goto-char (point-min))
+       (gnus-summary-position-point)
+       t))))
 
 (defun gnus-summary-catchup (&optional all quietly to-here not-mark)
   "Mark all articles not marked as unread in this newsgroup as read.
@@ -15928,6 +15945,7 @@ newsgroup."
              (set (car dead-lists)
                   (delete group (symbol-value (car dead-lists))))))
          (setq dead-lists (cdr dead-lists))))
+      (run-hooks 'gnus-check-bogus-groups-hook)
       (gnus-message 5 "Checking bogus newsgroups...done"))))
 
 (defun gnus-check-duplicate-killed-groups ()
index 20142f1..d6bde1b 100644 (file)
@@ -2413,6 +2413,7 @@ Headers already prepared in the buffer are not modified."
   (let ((cur (current-buffer))
        from subject date reply-to to cc
        references message-id follow-to 
+       (inhibit-point-motion-hooks t)
        mct never-mct gnus-warning)
     (save-restriction
       (narrow-to-region
@@ -2517,6 +2518,7 @@ Headers already prepared in the buffer are not modified."
   (let ((cur (current-buffer))
        from subject date reply-to mct
        references message-id follow-to 
+       (inhibit-point-motion-hooks t)
        followup-to distribution newsgroups gnus-warning)
     (save-restriction
       (narrow-to-region
diff --git a/lisp/nnheaderems.el b/lisp/nnheaderems.el
deleted file mode 100644 (file)
index 14ce490..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-;;; nnheaderems.el --- making Gnus backends work under different Emacsen
-;; Copyright (C) 1996 Free Software Foundation, Inc.
-
-;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-;; Keywords: news
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-
-;;; Code:
-
-(defun nnheader-xmas-run-at-time (time repeat function &rest args)
-  (start-itimer
-   "nnheader-run-at-time"
-   `(lambda ()
-      (,function ,@args))
-   time repeat))
-
-(defun nnheader-xmas-cancel-timer (timer)
-  (delete-itimer timer))
-
-;; Written by Erik Naggum <erik@naggum.no>.
-;; Saved by Steve Baur <steve@miranova.com>.
-(defun nnheader-xmas-insert-file-contents-literally (filename &optional visit beg end replace)
-  "Like `insert-file-contents', q.v., but only reads in the file.
-A buffer may be modified in several ways after reading into the buffer due
-to advanced Emacs features, such as file-name-handlers, format decoding,
-find-file-hooks, etc.
-  This function ensures that none of these modifications will take place."
-  (let (                                ; (file-name-handler-alist nil)
-        (format-alist nil)
-        (after-insert-file-functions nil)
-        (find-buffer-file-type-function 
-         (if (fboundp 'find-buffer-file-type)
-             (symbol-function 'find-buffer-file-type)
-           nil)))
-    (unwind-protect
-        (progn
-          (fset 'find-buffer-file-type (lambda (filename) t))
-          (insert-file-contents filename visit beg end replace))
-      (if find-buffer-file-type-function
-          (fset 'find-buffer-file-type find-buffer-file-type-function)
-        (fmakunbound 'find-buffer-file-type)))))
-
-(defun nnheader-xmas-find-file-noselect (filename &optional nowarn rawfile)
-  "Read file FILENAME into a buffer and return the buffer.
-If a buffer exists visiting FILENAME, return that one, but
-verify that the file has not changed since visited or saved.
-The buffer is not selected, just returned to the caller."
-  (setq filename
-       (abbreviate-file-name
-        (expand-file-name filename)))
-  (if (file-directory-p filename)
-      (if find-file-run-dired
-         (dired-noselect filename)
-       (error "%s is a directory." filename))
-    (let* ((buf (get-file-buffer filename))
-          (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) 
-                      (if (fboundp 'find-buffer-visiting)
-                          (find-buffer-visiting filename)
-                        (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))))
-      (if buf
-         (or nowarn
-             (verify-visited-file-modtime buf)
-             (cond ((not (file-exists-p filename))
-                    (error "File %s no longer exists!" filename))
-                   ((yes-or-no-p
-                     (if (string= (file-name-nondirectory filename)
-                                  (buffer-name buf))
-                         (format
-                          (if (buffer-modified-p buf)
-                              "File %s changed on disk.  Discard your edits? "
-                            "File %s changed on disk.  Reread from disk? ")
-                          (file-name-nondirectory filename))
-                       (format
-                        (if (buffer-modified-p buf)
-                            "File %s changed on disk.  Discard your edits in %s? "
-                          "File %s changed on disk.  Reread from disk into %s? ")
-                        (file-name-nondirectory filename)
-                        (buffer-name buf))))
-                    (save-excursion
-                      (set-buffer buf)
-                      (revert-buffer t t)))))
-       (save-excursion
-;;; The truename stuff makes this obsolete.
-;;;      (let* ((link-name (car (file-attributes filename)))
-;;;             (linked-buf (and (stringp link-name)
-;;;                              (get-file-buffer link-name))))
-;;;        (if (bufferp linked-buf)
-;;;            (message "Symbolic link to file in buffer %s"
-;;;                     (buffer-name linked-buf))))
-         (setq buf (create-file-buffer filename))
-         ;;      (set-buffer-major-mode buf)
-         (set-buffer buf)
-         (erase-buffer)
-         (if rawfile
-             (condition-case ()
-                 (nnheader-insert-file-contents-literally filename t)
-               (file-error
-                ;; Unconditionally set error
-                (setq error t)))
-           (condition-case ()
-               (insert-file-contents filename t)
-             (file-error
-              ;; Run find-file-not-found-hooks until one returns non-nil.
-              (or t                    ; (run-hook-with-args-until-success 'find-file-not-found-hooks)
-                  ;; If they fail too, set error.
-                  (setq error t)))))
-         ;; Find the file's truename, and maybe use that as visited name.
-         (setq buffer-file-truename truename)
-         (setq buffer-file-number number)
-         ;; On VMS, we may want to remember which directory in a search list
-         ;; 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))))
-                (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))))
-         ;; 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)))
-         (if rawfile
-             nil
-           (after-find-file error (not nowarn)))))
-      buf)))
-
-(defun nnheader-ms-strip-cr ()
-  "Strip ^M from the end of all lines."
-  (save-excursion
-    (goto-char (point-min))
-    (while (re-search-forward "\r$" nil t)
-      (delete-backward-char 1))))
-
-(eval-and-compile
-  (cond 
-   ;; Do XEmacs function bindings.
-   ((string-match "XEmacs\\|Lucid" emacs-version)
-    (fset 'nnheader-run-at-time 'nnheader-xmas-run-at-time)
-    (fset 'nnheader-cancel-timer 'nnheader-xmas-cancel-timer)
-    (fset 'nnheader-find-file-noselect 'nnheader-xmas-find-file-noselect)
-    (fset 'nnheader-insert-file-contents-literally
-         (if (fboundp 'insert-file-contents-literally)
-             'insert-file-contents-literally
-           'nnheader-xmas-insert-file-contents-literally)))
-   ;; Do Emacs function bindings.
-   (t
-    (fset 'nnheader-run-at-time 'run-at-time)
-    (fset 'nnheader-cancel-timer 'cancel-timer)
-    (fset 'nnheader-find-file-noselect 'find-file-noselect)
-    (fset 'nnheader-insert-file-contents-literally
-         'insert-file-contents-literally)
-    ))
-  (when (memq system-type '(windows-nt))
-    (add-hook 'nnmail-prepare-incoming-hook 'nnheader-ms-strip-cr)))
-
-(provide 'nnheaderems)
-
-;;; nnheaderems.el ends here.
similarity index 97%
rename from lisp/gnus-scomo.el
rename to lisp/score-mode.el
index 668941c..8505a93 100644 (file)
@@ -1,4 +1,4 @@
-;;; gnus-scomo.el --- mode for editing Gnus score files
+;;; score-mode.el --- mode for editing Gnus score files
 ;; Copyright (C) 1996 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
@@ -105,6 +105,6 @@ This mode is an extended emacs-lisp mode.
     (timezone-absolute-from-gregorian
      (nth 4 dat) (nth 3 dat) (nth 5 dat))))
 
-(provide 'gnus-scomo)
+(provide 'score-mode)
 
-;;; gnus-scomo.el ends here
+;;; score-mode.el ends here
index 79b7c34..bdd164b 100644 (file)
@@ -24,9 +24,10 @@ refcard.dvi: refcard.tex
        $(LATEX) refcard.tex
 
 clean:
-       rm -f gnus.*.bak gnus.ky gnus.cp gnus.fn gnus.dvi gnus.cps gnus.kys \
+       rm -f gnus.*.bak gnus.ky gnus.cp gnus.fn gnus.cps gnus.kys \
        gnus.log gnus.pg gnus.tp gnus.vr gnus.toc gnus.latexi *.aux gnus.cidx \
-       gnus.cind gnus.ilg gnus.ind gnus.kidx gnus.kind gnus.idx 
+       gnus.cind gnus.ilg gnus.ind gnus.kidx gnus.kind gnus.idx \
+       gnus.tmptexi gnus.tmplatexi *.latexi texput.log *.orig *.rej
 
 makeinfo: 
        makeinfo -o gnus gnus.texi