*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 5 Mar 1997 06:07:27 +0000 (06:07 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 5 Mar 1997 06:07:27 +0000 (06:07 +0000)
18 files changed:
lisp/ChangeLog
lisp/Makefile
lisp/gnus-group.el
lisp/gnus-picon.el
lisp/gnus-srvr.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/nnfolder.el
lisp/nnmail.el
lisp/nnmh.el
lisp/nnml.el
lisp/nntp.el
texi/ChangeLog
texi/Makefile
texi/gnus.texi
texi/message.texi

index d3baf70..132dce2 100644 (file)
@@ -1,3 +1,66 @@
+Sat Mar  1 03:51:18 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Gnus v5.4.16 is released.
+
+Sat Mar  1 00:04:09 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-sum.el (gnus-set-mode-line): Possibly take into account the
+       buffer name.
+
+       * gnus-srvr.el (gnus-server-prepare): Try to make sure we only
+       insert servers once.
+
+       * gnus-sum.el (gnus-summary-walk-group-buffer): Don't move point
+       much. 
+
+       * gnus-group.el (gnus-group-update-group): Don't move point.
+
+       * gnus-xmas.el (gnus-xmas-force-redisplay): Changed default to
+       nil. 
+       (gnus-xmas-switch-horizontal-scrollbar-off): New function.
+       (gnus-xmas-redefine): Use it.
+
+       * nnfolder.el (nnfolder-active-number): Don't save active here.
+
+       * gnus-sum.el (gnus-summary-reparent-thread): Use the original
+       article. 
+
+Fri Feb 28 01:01:33 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-start.el (gnus-1): Pass ARG on to listing.
+       (gnus-started-hook): New.
+       (gnus-1): Use it.
+
+       * gnus-group.el (gnus-group-get-new-news): List using ARG if ARG
+       is higher than current listing.
+
+Tue Feb 25 23:28:47 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * nntp.el (nntp-retrieve-headers): Go to the next-to-last line.
+
+Fri Feb 21 00:28:37 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-group.el (gnus-group-rename-group): Rename to right name.
+
+       * nnmail.el (nnmail-process-babyl-mail-format): Allow continuation
+       Message-IDs.
+       (nnmail-process-unix-mail-format): Ditto.
+       (nnmail-process-mmdf-mail-format): Ditto.
+
+       * nnml.el (nnml-update-file-alist): New function.
+       (nnml-retrieve-headers): Use it.
+       (nnml-request-move-article): Delete zipped files.
+       (nnml-request-replace-article): Write to gzipped, if wanted.
+
+Thu Feb 20 18:36:22 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-picon.el (gnus-picons-display-where): Doc fix.
+
+       * gnus-start.el (gnus-read-newsrc-el-file): Offer to break.
+
+       * nnmail.el (nnmail-search-unix-mail-delim): Exclude newlines from
+       matches.
+
 Thu Feb 20 04:16:50 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Gnus v5.4.15 is released.
index 4c72470..731ced0 100644 (file)
@@ -34,3 +34,7 @@ gnus-load.el:
        echo "(provide 'gnus-load)" >> gnus-load.el
        echo >> gnus-load.el
        echo ";;; gnus-load.el ends here" >> gnus-load.el
+
+distclean:
+       rm -f *.orig *.rej *.elc *~
+
index 0b43ca0..61d39dd 100644 (file)
@@ -1128,8 +1128,11 @@ If REGEXP, only list groups matching REGEXP."
   "Update all lines where GROUP appear.
 If VISIBLE-ONLY is non-nil, the group won't be displayed if it isn't
 already."
-  (save-excursion
+  ;; Can't use `save-excursion' here, so we do it manually.
+  (let ((buf (current-buffer))
+       mark)
     (set-buffer gnus-group-buffer)
+    (setq mark (point-marker))
     ;; The buffer may be narrowed.
     (save-restriction
       (widen)
@@ -1179,7 +1182,10 @@ already."
              (run-hooks 'gnus-group-update-group-hook))))
        (when gnus-group-update-group-function
          (funcall gnus-group-update-group-function group))
-       (gnus-group-set-mode-line)))))
+       (gnus-group-set-mode-line)))
+    (goto-char mark)
+    (set-marker mark nil)
+    (set-buffer buf)))
 
 (defun gnus-group-set-mode-line ()
   "Update the mode line in the group buffer."
@@ -1836,7 +1842,7 @@ and NEW-NAME will be prompted for."
 
   ;; We find the proper prefixed name.
   (setq new-name
-       (if (equal (gnus-group-real-name new-name) new-name)
+       (if (gnus-group-native-p group)
            ;; Native group.
            new-name
          ;; Foreign group.
@@ -2848,7 +2854,8 @@ re-scanning.  If ARG is non-nil and not a number, this will force
     (let ((gnus-read-active-file (if arg nil gnus-read-active-file)))
       (gnus-get-unread-articles arg)))
   (run-hooks 'gnus-after-getting-new-news-hook)
-  (gnus-group-list-groups))
+  (gnus-group-list-groups (and (numberp arg)
+                              (max (car gnus-group-list-mode) arg))))
 
 (defun gnus-group-get-new-news-this-group (&optional n)
   "Check for newly arrived news in the current group (and the N-1 next groups).
index 01f2c62..630804d 100644 (file)
@@ -44,7 +44,8 @@ also add gnus-article-display-picons to gnus-article-display-hook."
   :group 'picons)
 
 (defcustom gnus-picons-display-where 'picons
-  "Where to display the group and article icons."
+  "Where to display the group and article icons.
+Legal values are `article' and `picons'."
   :type '(choice symbol string)
   :group 'picons)
 
index eed826d..a3c4150 100644 (file)
@@ -207,10 +207,11 @@ The following commands are available:
     (setq gnus-inserted-opened-servers nil)
     ;; First we do the real list of servers.
     (while alist
-      (push (caar alist) done)
-      (cdr (setq server (pop alist))) 
-      (when (and server (car server) (cdr server))
-       (gnus-server-insert-server-line (car server) (cdr server))))
+      (unless (member (caar alist) done)
+       (push (caar alist) done)
+       (cdr (setq server (pop alist))) 
+       (when (and server (car server) (cdr server))
+         (gnus-server-insert-server-line (car server) (cdr server)))))
     ;; Then we insert the list of servers that have been opened in
     ;; this session.
     (while opened 
index 0e427c1..be724c6 100644 (file)
@@ -337,6 +337,11 @@ This hook is called after Gnus is connected to the NNTP server."
   :group 'gnus-start
   :type 'hook)
 
+(defcustom gnus-started-hook nil
+  "A hook called as the last thing after startup."
+  :group 'gnus-start
+  :type 'hook)
+
 (defcustom gnus-get-new-news-hook nil
   "A hook run just before Gnus checks for new news."
   :group 'gnus-group-new
@@ -630,7 +635,10 @@ prompt the user for the name of an NNTP server to use."
             (eq major-mode 'gnus-group-mode)))
       (progn
        (switch-to-buffer gnus-group-buffer)
-       (gnus-group-get-new-news))
+       (gnus-group-get-new-news
+        (and (numberp arg)
+             (> arg 0)
+             (max (car gnus-group-list-mode) arg))))
 
     (gnus-splash)
     (gnus-clear-system)
@@ -675,7 +683,8 @@ prompt the user for the name of an NNTP server to use."
          (gnus-group-list-groups level)
          (gnus-group-first-unread-group)
          (gnus-configure-windows 'group)
-         (gnus-group-set-mode-line))))))
+         (gnus-group-set-mode-line)
+         (run-hooks 'gnus-started-hook))))))
 
 ;;;###autoload
 (defun gnus-unload ()
@@ -1819,7 +1828,10 @@ If FORCE is non-nil, the .newsrc file is read."
       (condition-case nil
          (load ding-file t t t)
        (error
-        (gnus-error 1 "Error in %s" ding-file)))
+        (ding)
+        (unless (gnus-yes-or-no-p
+                 (format "Error in %s; continue? " ding-file))
+          (error "Error in %s" ding-file))))
       (when gnus-newsrc-assoc
        (setq gnus-newsrc-alist gnus-newsrc-assoc)))
     (gnus-make-hashtable-from-newsrc-alist)
index 10127c6..569ad89 100644 (file)
@@ -3873,7 +3873,10 @@ If WHERE is `summary', the summary mode line format will be used."
          (setq mode-string (eval mformat))
          (setq max-len (max 4 (if gnus-mode-non-string-length
                                   (- (window-width)
-                                     gnus-mode-non-string-length)
+                                     gnus-mode-non-string-length
+                                     (if (string-match "%%b" mode-string)
+                                         (length (buffer-name))
+                                       0))
                                 (length mode-string))))
          ;; We might have to chop a bit of the string off...
          (when (> (length mode-string) max-len)
@@ -4299,9 +4302,9 @@ list of headers that match SEQUENCE (see `nntp-retrieve-headers')."
       ;; headers using HEAD.
       (if (or (not also-fetch-heads)
              (not sequence))
+         ;; We (probably) got all the headers.
          (nreverse headers)
-       (let ((gnus-nov-is-evil t)
-             (nntp-nov-is-evil t))
+       (let ((gnus-nov-is-evil t))
          (nconc
           (nreverse headers)
           (when (gnus-retrieve-headers sequence group)
@@ -5260,6 +5263,10 @@ If BACKWARD, the previous article is selected instead of the next."
     (unless (gnus-ephemeral-group-p gnus-newsgroup-name)
       (gnus-summary-jump-to-group gnus-newsgroup-name))
     (let ((cmd last-command-char)
+         (point
+          (save-excursion
+            (set-buffer gnus-group-buffer)
+            (point)))
          (group
           (if (eq gnus-keep-same-level 'best)
               (gnus-summary-best-group gnus-newsgroup-name)
@@ -5288,16 +5295,16 @@ If BACKWARD, the previous article is selected instead of the next."
        (t
        (when (gnus-key-press-event-p last-input-event)
          (gnus-summary-walk-group-buffer
-          gnus-newsgroup-name cmd unread backward))))))))
+          gnus-newsgroup-name cmd unread backward point))))))))
 
-(defun gnus-summary-walk-group-buffer (from-group cmd unread backward)
+(defun gnus-summary-walk-group-buffer (from-group cmd unread backward start)
   (let ((keystrokes '((?\C-n (gnus-group-next-unread-group 1))
                      (?\C-p (gnus-group-prev-unread-group 1))))
        (cursor-in-echo-area t)
        keve key group ended)
     (save-excursion
       (set-buffer gnus-group-buffer)
-      (gnus-summary-jump-to-group from-group)
+      (goto-char start)
       (setq group
            (if (eq gnus-keep-same-level 'best)
                (gnus-summary-best-group gnus-newsgroup-name)
@@ -7694,7 +7701,7 @@ with that article."
     (gnus-summary-goto-subject article)))
 
 (defun gnus-summary-reparent-thread ()
-  "Make current article child of the marked (or previous) article.
+  "Make the current article child of the marked (or previous) 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."
@@ -7706,7 +7713,7 @@ is non-nil or the Subject: of both articles are the same."
   (save-window-excursion
     (let ((gnus-article-buffer " *reparent*")
          (current-article (gnus-summary-article-number))
-                                       ; first grab the marked article, otherwise one line up.
+         ;; First grab the marked article, otherwise one line up.
          (parent-article (if (not (null gnus-newsgroup-processable))
                              (car gnus-newsgroup-processable)
                            (save-excursion
@@ -7720,19 +7727,18 @@ is non-nil or the Subject: of both articles are the same."
        (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)
+       (set-buffer gnus-original-article-buffer)
        (let ((buf (format "%s" (buffer-string))))
-         (erase-buffer)
-         (insert buf))
-       (goto-char (point-min))
-       (if (search-forward-regexp "^References: " nil t)
-           (insert message-id " " )
-         (insert "References: " message-id "\n"))
-       (unless (gnus-request-replace-article current-article
-                                             (car gnus-article-current)
-                                             gnus-article-buffer)
-         (error "Couldn't replace article."))
+         (nnheader-temp-write nil
+           (insert buf)
+           (goto-char (point-min))
+           (if (search-forward-regexp "^References: " nil t)
+               (insert message-id " " )
+             (insert "References: " message-id "\n"))
+           (unless (gnus-request-replace-article
+                    current-article (car gnus-article-current)
+                    (current-buffer))
+             (error "Couldn't replace article."))))
        (set-buffer gnus-summary-buffer)
        (gnus-summary-unmark-all-processable)
        (gnus-summary-rethread-current)
index b6ad268..be05d3d 100644 (file)
@@ -137,10 +137,13 @@ It is provided only to ease porting of broken FSF Emacs programs."
     (set-extent-face gnus-newsgroup-selected-overlay
                     gnus-summary-selected-face)))
 
-(defvar gnus-xmas-force-redisplay t
+(defvar gnus-xmas-force-redisplay nil
   "If non-nil, force a redisplay before recentering the summary buffer.
 This is ugly, but it works around a bug in `window-displayed-height'.")
 
+(defun gnus-xmas-switch-horizontal-scrollbar-off ()
+  (set-specifier scrollbar-height (cons (current-buffer) 0)))
+
 (defun gnus-xmas-summary-recenter ()
   "\"Center\" point in the summary window.
 If `gnus-auto-center-summary' is nil, or the article buffer isn't
@@ -476,6 +479,8 @@ call it with the value of the `gnus-data' text property."
   (add-hook 'gnus-group-mode-hook 'gnus-xmas-setup-group-toolbar)
   (add-hook 'gnus-summary-mode-hook 'gnus-xmas-setup-summary-toolbar)
 
+  (add-hook 'gnus-summary-mode-hook 'gnus-xmas-switch-horizontal-scrollbar-off)
+
   (when (and (<= emacs-major-version 19)
             (<= emacs-minor-version 13))
     (setq gnus-article-x-face-too-ugly (when (eq (device-type) 'tty)
index 24e7259..6f6e13f 100644 (file)
@@ -223,7 +223,7 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "5.4.15"
+(defconst gnus-version-number "5.4.16"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
index fee60a0..59fe978 100644 (file)
@@ -614,7 +614,6 @@ time saver for large mailboxes.")
              (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)))))
 
 
index 8d13ab9..0092f0b 100644 (file)
@@ -707,12 +707,13 @@ is a spool.  If not using procmail, return GROUP."
       (goto-char (point-max))
       ;; Find the Message-ID header.
       (save-excursion
-       (if (re-search-backward "^Message-ID:[ \t]*\\(<[^>]*>\\)" nil t)
+       (if (re-search-backward
+            "^Message-ID[ \t]*:[ \n\t]*\\(<[^>]*>\\)" nil t)
            (setq message-id (buffer-substring (match-beginning 1)
                                               (match-end 1)))
          ;; There is no Message-ID here, so we create one.
          (save-excursion
-           (when (re-search-backward "^Message-ID:" nil t)
+           (when (re-search-backward "^Message-ID[ \t]*:" nil t)
              (beginning-of-line)
              (insert "Original-")))
          (forward-line -1)
@@ -781,7 +782,7 @@ is a spool.  If not using procmail, return GROUP."
                       (forward-line 1)
                       (while (looking-at ">From ")
                         (forward-line 1))
-                      (looking-at "[^ \t:]+[ \t]*:")))
+                      (looking-at "[^ \n\t:]+[ \n\t]*:")))
            (setq found 'yes)))))
     (beginning-of-line)
     (eq found 'yes)))
@@ -810,7 +811,7 @@ is a spool.  If not using procmail, return GROUP."
                       (forward-line 1)
                       (while (looking-at ">From ")
                         (forward-line 1))
-                      (looking-at "[^ \t:]+[ \t]*:")))
+                      (looking-at "[^ \n\t:]+[ \n\t]*:")))
            (setq found 'yes)))))
     (beginning-of-line)
     (eq found 'yes)))
@@ -840,10 +841,10 @@ is a spool.  If not using procmail, return GROUP."
             (point))))
        ;; Find the Message-ID header.
        (goto-char (point-min))
-       (if (re-search-forward "^Message-ID:[ \t]*\\(<[^>]+>\\)" nil t)
+       (if (re-search-forward "^Message-ID[ \t]*:[ \n\t]*\\(<[^>]+>\\)" nil t)
            (setq message-id (match-string 1))
          (save-excursion
-           (when (re-search-forward "^Message-ID:" nil t)
+           (when (re-search-forward "^Message-ID[ \t]*:" nil t)
              (beginning-of-line)
              (insert "Original-")))
          ;; There is no Message-ID here, so we create one.
@@ -924,11 +925,11 @@ is a spool.  If not using procmail, return GROUP."
             (point))))
        ;; Find the Message-ID header.
        (goto-char (point-min))
-       (if (re-search-forward "^Message-ID:[ \t]*\\(<[^>]+>\\)" nil t)
+       (if (re-search-forward "^Message-ID[ \t]*:[ \n\t]*\\(<[^>]+>\\)" nil t)
            (setq message-id (match-string 1))
          ;; There is no Message-ID here, so we create one.
          (save-excursion
-           (when (re-search-backward "^Message-ID:" nil t)
+           (when (re-search-backward "^Message-ID[ \t]*:" nil t)
              (beginning-of-line)
              (insert "Original-")))
          (forward-line 1)
@@ -1443,7 +1444,7 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
       (let ((case-fold-search t)
            (newid (nnmail-message-id)))
        (goto-char (point-min))
-       (when (re-search-forward "^message-id:" nil t)
+       (when (re-search-forward "^message-id[ \t]*:" nil t)
          (beginning-of-line)
          (insert "Original-"))
        (beginning-of-line)
@@ -1581,7 +1582,7 @@ If ARGS, PROMPT is used as an argument to `format'."
   (save-restriction
     (message-narrow-to-head)
     (let ((case-fold-search t))
-      (unless (re-search-forward "^Message-ID:" nil t)
+      (unless (re-search-forward "^Message-ID[ \t]*:" nil t)
        (insert "Message-ID: " (nnmail-message-id) "\n")))))
 
 (defun nnmail-write-region (start end filename &optional append visit lockname)
index 772574e..dda5cab 100644 (file)
      (nnmh-request-article article group server)
      (save-excursion
        (set-buffer buf)
+       (erase-buffer)
        (insert-buffer-substring nntp-server-buffer)
        (setq result (eval accept-form))
        (kill-buffer (current-buffer))
index 9817ca0..7744f04 100644 (file)
@@ -101,17 +101,11 @@ all.  This may very well take some time.")
            beg article)
        (if (stringp (car sequence))
            'headers
-         (unless nnml-article-file-alist
-           (setq nnml-article-file-alist
-                 (nnheader-article-to-file-alist nnml-current-directory)))
          (if (nnml-retrieve-headers-with-nov sequence fetch-old)
              'nov
            (while sequence
              (setq article (car sequence))
-             (setq file 
-                   (concat nnml-current-directory 
-                           (or (cdr (assq article nnml-article-file-alist))
-                               "")))
+             (setq file (nnml-article-to-file article))
              (when (and (file-exists-p file)
                         (not (file-directory-p file)))
                (insert (format "221 %d Article retrieved.\n" article))
@@ -261,15 +255,8 @@ all.  This may very well take some time.")
         article rest mod-time number)
     (nnmail-activate 'nnml)
 
-    (unless nnml-article-file-alist
-      (setq nnml-article-file-alist
-           (nnheader-article-to-file-alist nnml-current-directory)))
-
     (while (and articles is-old)
-      (when (setq article
-                 (assq (setq number (pop articles)) 
-                       nnml-article-file-alist))
-       (setq article (concat nnml-current-directory (cdr article)))
+      (when (setq article (nnml-article-to-file (setq number (pop articles))))
        (when (setq mod-time (nth 5 (file-attributes article)))
          (if (and (nnml-deletable-article-p group number)
                   (setq is-old 
@@ -299,9 +286,7 @@ all.  This may very well take some time.")
   (let ((buf (get-buffer-create " *nnml move*"))
        result)
     (nnml-possibly-change-directory group server)
-    (unless nnml-article-file-alist
-      (setq nnml-article-file-alist
-           (nnheader-article-to-file-alist nnml-current-directory)))
+    (nnml-update-file-alist)
     (and 
      (nnml-deletable-article-p group article)
      (nnml-request-article article group server)
@@ -315,8 +300,7 @@ all.  This may very well take some time.")
        (nnml-possibly-change-directory group server)
        (condition-case ()
           (funcall nnmail-delete-file-function
-                   (concat nnml-current-directory 
-                           (int-to-string article)))
+                   (nnml-article-to-file  article))
         (file-error nil))
        (nnml-nov-delete-article group article)
        (when last
@@ -357,8 +341,9 @@ all.  This may very well take some time.")
                (progn
                  (nnmail-write-region 
                   (point-min) (point-max)
-                  (concat nnml-current-directory
-                          (int-to-string article))
+                  (or (nnml-article-to-file article)
+                      (concat nnml-current-directory
+                              (int-to-string article)))
                   nil (if (nnheader-be-verbose 5) nil 'nomesg))
                  t)
              (error nil))
@@ -466,18 +451,15 @@ all.  This may very well take some time.")
 ;;; Internal functions.
 
 (defun nnml-article-to-file (article)
-  (unless nnml-article-file-alist
-    (setq nnml-article-file-alist
-         (nnheader-article-to-file-alist nnml-current-directory)))
+  (nnml-update-file-alist)
   (let (file)
     (when (setq file (cdr (assq article nnml-article-file-alist)))
       (concat nnml-current-directory file))))
 
 (defun nnml-deletable-article-p (group article)
   "Say whether ARTICLE in GROUP can be deleted."
-  (let (file path)
-    (when (setq file (cdr (assq article nnml-article-file-alist)))
-      (setq path (concat nnml-current-directory file))
+  (let (path)
+    (when (setq path (nnml-article-to-file article))
       (when (file-writable-p path)
        (or (not nnmail-keep-last-article)
            (not (eq (cdr (nth 1 (assoc group nnml-group-alist)))
@@ -790,6 +772,11 @@ all.  This may very well take some time.")
                (setf (car active) num)))))))
     t))
 
+(defun nnml-update-file-alist ()
+  (unless nnml-article-file-alist
+    (setq nnml-article-file-alist
+         (nnheader-article-to-file-alist nnml-current-directory))))
+
 (provide 'nnml)
 
 ;;; nnml.el ends here
index 4a9db87..7d7f256 100644 (file)
@@ -233,7 +233,8 @@ server there that you can connect to.  See also `nntp-open-connection-function'"
        (re-search-backward "^[0-9]" nil t)
        (when (looking-at "^[23]")
          (while (progn
-                  (goto-char (- (point-max) 3))
+                  (goto-char (point-max))
+                  (forward-line -1)
                   (not (looking-at "^\\.\r?\n")))
            (nntp-accept-response)))
        (and (numberp nntp-large-newsgroup)
@@ -1086,8 +1087,7 @@ This function is supposed to be called from `nntp-server-opened-hook'."
     (nntp-wait-for-string "^\r*200")
     (beginning-of-line)
     (delete-region (point-min) (point))
-    proc)
-  )
+    proc))
 
 (defun nntp-find-group-and-number ()
   (save-excursion
index 211f754..ce4ea4b 100644 (file)
@@ -1,3 +1,12 @@
+Fri Feb 28 23:23:31 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.texi (Archived Messages): Clarify.
+       (Fuzzy Matching): New.
+
+Mon Feb 24 23:41:57 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * message.texi (Compatibility): New.
+
 Thu Feb 20 03:29:17 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
        * gnus.texi (Foreign Groups): Addition.
index d8fa729..98e22dc 100644 (file)
@@ -99,3 +99,8 @@ out:
 veryclean:
        make clean
        rm -f gnus.dvi gnus.ps
+
+distclean:
+       make clean
+       rm -f *.orig *.rej *.elc *~ gnus gnus-[0-9] gnus-[0-9][0-9]
+       rm -f message message-[0-9] widget custom
index 3e848bf..58701ed 100644 (file)
@@ -959,6 +959,11 @@ times you start Gnus.
 @vindex gnus-startup-hook
 A hook that is run after starting up Gnus successfully.
 
+@item gnus-started-hook
+@vindex gnus-started-hook
+A hook that is run as the very last thing after starting up Gnus
+successfully.
+
 @item gnus-check-bogus-newsgroups
 @vindex gnus-check-bogus-newsgroups
 If non-@code{nil}, Gnus will check for and delete all bogus groups at
@@ -4380,7 +4385,8 @@ everything in sight into one thread, which isn't very helpful.
 
 @cindex fuzzy article gathering
 If you set this variable to the special value @code{fuzzy}, Gnus will
-use a fuzzy string comparison algorithm on the subjects.
+use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
+Matching}). 
 
 @item gnus-simplify-subject-fuzzy-regexp
 @vindex gnus-simplify-subject-fuzzy-regexp
@@ -4665,7 +4671,8 @@ is non-@code{nil} (which it is by default), subjects will be ignored
 when doing thread commands.  If this variable is @code{nil}, articles in
 the same thread with different subjects will not be included in the
 operation in question.  If this variable is @code{fuzzy}, only articles
-that have subjects that are fuzzily equal will be included.
+that have subjects that are fuzzily equal will be included (@pxref{Fuzzy
+Matching}).
 
 
 @node Sorting
@@ -7577,9 +7584,9 @@ spell-checking via the @code{ispell} package:
 @cindex archived messages
 @cindex sent messages
 
-Gnus provides a few different methods for storing the mail you send.
-The default method is to use the @dfn{archive virtual server} to store
-the mail.  If you want to disable this completely, the
+Gnus provides a few different methods for storing the mail and news you
+send.  The default method is to use the @dfn{archive virtual server} to
+store the messages.  If you want to disable this completely, the
 @code{gnus-message-archive-group} variable should be @code{nil}, which
 is the default.
 
@@ -7674,10 +7681,10 @@ if (using @kbd{G r} in the group buffer) to something
 nice---@samp{misc-mail-september-1995}, or whatever.  New messages will
 continue to be stored in the old (now empty) group.
 
-That's the default method of archiving sent mail.  Gnus also a different
-way for the people who don't like the default method.  In that case you
-should set @code{gnus-message-archive-group} to @code{nil}; this will
-disable archiving.
+That's the default method of archiving sent messages.  Gnus also a
+different way for the people who don't like the default method.  In that
+case you should set @code{gnus-message-archive-group} to @code{nil};
+this will disable archiving.
 
 XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to
 use a different value for @code{gnus-message-archive-group} there.
@@ -7694,6 +7701,9 @@ If you want to have greater control over what group to put each
 message in, you can set this variable to a function that checks the
 current newsgroup name and then returns a suitable group name (or list
 of names).
+
+This variable can be used instead of @code{gnus-message-archive-group},
+but the latter is the preferred method.
 @end table
 
 
@@ -10638,7 +10648,7 @@ Exact matching.
 Substring matching.
 
 @item f
-Fuzzy matching.
+Fuzzy matching (@pxref{Fuzzy Matching}).
 
 @item r
 Regexp matching
@@ -11432,7 +11442,7 @@ myself:
 
 @lisp
 ("references"
- ("<x6[0-9a-z]+\\.fsf@.*eyesore.no>" 1000 nil r))
+ ("<x6[0-9a-z]+\\.fsf@@.*eyesore.no>" 1000 nil r))
 @end lisp
 
 Whether it's the first two or first three characters that are ``yours''
@@ -12133,6 +12143,7 @@ four days, Gnus will decay the scores four times, for instance.
 * Undo::                       Some actions can be undone.
 * Moderation::                 What to do if you're a moderator.
 * XEmacs Enhancements::        There are more pictures and stuff under XEmacs.
+* Fuzzy Matching::             What's the big fuzz?
 * Various Various::            Things that are really various.
 @end menu
 
@@ -13339,6 +13350,24 @@ default.
 @end table
 
 
+@node Fuzzy Matching
+@section Fuzzy Matching
+@cindex fuzzy matching
+
+Gnus provides @dfn{fuzzy matching} of @code{Subject} lines when doing
+things like scoring, thread gathering and thread comparison.  
+
+As opposed to regular expression matching, fuzzy matching is very fuzzy.
+It's so fuzzy that there's not even a definition of what @dfn{fuzziness}
+means, and the implementation has changed over time.
+
+Basically, it tries to remove all noise from lines before comparing.
+@samp{Re: }, parenthetical remarks, white space, and so on, are filtered
+out of the strings before comparing the results.  This often leads to
+adequate results---even when faced with strings generated by text
+manglers masquerading as newsreaders.
+
+
 @node Various Various
 @section Various Various
 @cindex mode lines
@@ -15198,9 +15227,9 @@ group-buffer = *active-line / *group-status
 
 A Gnus group info (@pxref{Group Info}) is handed to the backend for
 alterations.  This comes in handy if the backend really carries all the
-information (as is the case with virtual an imap groups).  This function
-should destructively alter the info to suit its needs, and should return
-the (altered) group info.  
+information (as is the case with virtual and imap groups).  This
+function should destructively alter the info to suit its needs, and
+should return the (altered) group info.
 
 There should be no result data from this function.
 
index 52df9fa..82e91ba 100644 (file)
@@ -74,6 +74,7 @@ buffers.
 * Interface::         Setting up message buffers.
 * Commands::          Commands you can execute in message mode buffers.
 * Variables::         Customizing the message buffers.
+* Compatibility::     Making Message backwards compatible.
 * Index::             Variable, function and concept index.
 * Key Index::         List of Message mode keys.
 @end menu
@@ -930,12 +931,11 @@ you send to mailing lists, you could do something like the following:
 
 @lisp
 (defun my-message-header-setup-hook ()
-  (when (or (message-fetch-field "newsgroups")
-           (gnus-group-find-parameter
-             gnus-newsgroup-name 'to-address)
-           (gnus-group-find-parameter
-             gnus-newsgroup-name 'to-list))
-    (insert "Mail-Copies-To: never\n")))
+  (let ((group (or gnus-newsgroup-name "")))
+    (when (or (message-fetch-field "newsgroups")
+              (gnus-group-find-parameter group 'to-address)
+              (gnus-group-find-parameter group 'to-list))
+      (insert "Mail-Copies-To: never\n"))))
 
 (add-hook 'message-header-setup-hook 'my-message-header-setup-hook)
 @end lisp
@@ -1068,6 +1068,24 @@ An @dfn{action} can be either: a normal function, or a list where the
 @code{car} is a function and the @code{cdr} is the list of arguments, or
 a form to be @code{eval}ed.
 
+
+@node Compatibility
+@chapter Compatibility
+@cindex compatibility
+
+Message uses virtually only its own variables---older @code{mail-}
+variables aren't consulted.  To force Message to take those variables
+into account, you can put the following in your @code{.emacs} file:
+
+@lisp
+(require 'messcompat)
+@end lisp
+
+This will initialize many Message variables from the values in the
+corresponding mail variables.
+
+
+
 @node Index
 @chapter Index
 @printindex cp