*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Fri, 26 Jun 1998 13:47:39 +0000 (13:47 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Fri, 26 Jun 1998 13:47:39 +0000 (13:47 +0000)
18 files changed:
lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-demon.el
lisp/gnus-ems.el
lisp/gnus-group.el
lisp/gnus-score.el
lisp/gnus-sum.el
lisp/gnus-topic.el
lisp/gnus-util.el
lisp/gnus.el
lisp/lpath.el
lisp/message.el
lisp/nndoc.el
lisp/nnmail.el
lisp/nnweb.el
texi/ChangeLog
texi/gnus.texi
texi/message.texi

index 7da8130..902f8d6 100644 (file)
@@ -1,3 +1,64 @@
+Fri Jun 26 15:46:05 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Gnus v5.6.16 is released.
+
+Fri Jun 26 15:36:25 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-util.el (gnus-delete-assq): Removed.
+       (gnus-delete-assoc): Ditto.
+
+       * gnus.el: Use throughout.
+
+       * gnus-util.el (gnus-pull): New macro.
+
+1998-06-26  Simon Josefsson  <jas@pdc.kth.se>
+
+       * gnus-sum.el (gnus-get-newsgroup-headers): parse Chars: headers
+
+Fri Jun 26 13:45:24 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-sum.el (gnus-update-marks): Use it.
+
+       * gnus-util.el (gnus-delete-alist): New function.
+
+       * gnus-sum.el (gnus-update-marks): Don't save list of cached
+       articles. 
+
+       * message.el (message-mode-menu): Include kill-buffer.
+
+       * nnmail.el (nnmail-purge-split-history): Use it.
+
+       * gnus-util.el (gnus-delete-if): New function.
+
+       * nnmail.el (nnmail-article-group): Use gnus-remove-duplicates.
+
+Fri Jun 26 13:45:09 1998  Richard Stallman  <rms@santafe.edu>
+
+       * gnus-util.el (gnus-remove-duplicates): New function.
+
+Fri Jun 26 13:30:42 1998  Kevin Christian  <Kevin.Christian@symbios.com>
+
+       * gnus-score.el (gnus-score-string): Do updating of scores after
+       fuzzies. 
+
+Fri Jun 26 07:26:03 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * message.el (message-mode): Don't do the intern dance.
+
+Fri Jun 26 07:13:49 1998  Richard Stallman  <rms@santafe.edu>
+
+       * message.el (message-mode): Adaptive fill changes.
+
+Fri Jun 26 04:29:44 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-sum.el (gnus-summary-mode-line-format-alist): Allow article
+       score.
+
+       * gnus-score.el (gnus-score-load-file): Would ignore all score
+       files without un-advanced rules.
+
+       * gnus-ems.el ((fboundp 'split-string)): Use it where it exists. 
+
 Fri Jun 26 04:23:12 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Gnus v5.6.15 is released.
 Fri Jun 26 04:23:12 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Gnus v5.6.15 is released.
index 2ee9cf5..4a94b94 100644 (file)
@@ -3101,14 +3101,6 @@ specified by `gnus-button-alist'."
                                     (match-string 3 address)
                                   "nntp")))))))
 
                                     (match-string 3 address)
                                   "nntp")))))))
 
-(defun gnus-split-string (string pattern)
-  "Return a list of substrings of STRING which are separated by PATTERN."
-  (let (parts (start 0))
-    (while (string-match pattern string start)
-      (setq parts (cons (substring string start (match-beginning 0)) parts)
-           start (match-end 0)))
-    (nreverse (cons (substring string start) parts))))
-
 (defun gnus-url-parse-query-string (query &optional downcase)
   (let (retval pairs cur key val)
     (setq pairs (gnus-split-string query "&"))
 (defun gnus-url-parse-query-string (query &optional downcase)
   (let (retval pairs cur key val)
     (setq pairs (gnus-split-string query "&"))
index 594bc9f..1f33930 100644 (file)
@@ -97,9 +97,7 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's."
 
 (defun gnus-demon-remove-handler (function &optional no-init)
   "Remove the handler FUNCTION from the list of handlers."
 
 (defun gnus-demon-remove-handler (function &optional no-init)
   "Remove the handler FUNCTION from the list of handlers."
-  (setq gnus-demon-handlers
-       (delq (assq function gnus-demon-handlers)
-             gnus-demon-handlers))
+  (gnus-pull function gnus-demon-handlers)
   (unless no-init
     (gnus-demon-init)))
 
   (unless no-init
     (gnus-demon-init)))
 
index baca8ab..56e893b 100644 (file)
          (goto-char (point-min))
          (sit-for 0))))))
 
          (goto-char (point-min))
          (sit-for 0))))))
 
+(if (fboundp 'split-string)
+    (fset 'gnus-split-string 'split-string)
+  (defun gnus-split-string (string pattern)
+    "Return a list of substrings of STRING which are separated by PATTERN."
+    (let (parts (start 0))
+      (while (string-match pattern string start)
+       (setq parts (cons (substring string start (match-beginning 0)) parts)
+             start (match-end 0)))
+      (nreverse (cons (substring string start) parts)))))
+
 (provide 'gnus-ems)
 
 ;; Local Variables:
 (provide 'gnus-ems)
 
 ;; Local Variables:
index d4bfd54..a92c5ff 100644 (file)
@@ -3333,7 +3333,7 @@ and the second element is the address."
        (if force
            (if (null articles)
                (setcar (nthcdr 3 info)
        (if force
            (if (null articles)
                (setcar (nthcdr 3 info)
-                       (delq (assq type (car marked)) (car marked)))
+                       (gnus-delete-alist type (car marked)))
              (setcdr m (gnus-compress-sequence articles t)))
          (setcdr m (gnus-compress-sequence
                     (sort (nconc (gnus-uncompress-range (cdr m))
              (setcdr m (gnus-compress-sequence articles t)))
          (setcdr m (gnus-compress-sequence
                     (sort (nconc (gnus-uncompress-range (cdr m))
index 08bf0f0..4d81005 100644 (file)
@@ -1089,9 +1089,13 @@ SCORE is the score to add."
          found)
       (while a
        ;; Downcase all header names.
          found)
       (while a
        ;; Downcase all header names.
-       (when (stringp (caar a))
+       (cond
+        ((stringp (caar a))
          (setcar (car a) (downcase (caar a)))
          (setq found t))
          (setcar (car a) (downcase (caar a)))
          (setq found t))
+        ;; Advanced scoring.
+        ((consp (caar a))
+         (setq found t)))
        (pop a))
       ;; If there are actual scores in the alist, we add it to the
       ;; return value of this function.
        (pop a))
       ;; If there are actual scores in the alist, we add it to the
       ;; return value of this function.
@@ -1307,7 +1311,7 @@ SCORE is the score to add."
                (and (file-exists-p file)
                     (not (file-writable-p file))))
            ()
                (and (file-exists-p file)
                     (not (file-writable-p file))))
            ()
-         (setq score (setcdr entry (delq (assq 'touched score) score)))
+         (setq score (setcdr entry (gnus-delete-alist 'touched score)))
          (erase-buffer)
          (let (emacs-lisp-mode-hook)
            (if (string-match
          (erase-buffer)
          (let (emacs-lisp-mode-hook)
            (if (string-match
@@ -1861,7 +1865,7 @@ SCORE is the score to add."
     (while (setq art (pop articles))
       (setq this (aref (car art) gnus-score-index))
       (if simplify
     (while (setq art (pop articles))
       (setq this (aref (car art) gnus-score-index))
       (if simplify
-        (setq this (gnus-map-function gnus-simplify-subject-functions this)))
+         (setq this (gnus-map-function gnus-simplify-subject-functions this)))
       (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.
@@ -1894,7 +1898,7 @@ SCORE is the score to add."
               (mt (aref (symbol-name type) 0))
               (case-fold-search (not (memq mt '(?R ?S ?E ?F))))
               (dmt (downcase mt))
               (mt (aref (symbol-name type) 0))
               (case-fold-search (not (memq mt '(?R ?S ?E ?F))))
               (dmt (downcase mt))
-               ; Assume user already simplified regexp and fuzzies
+                                       ; Assume user already simplified regexp and fuzzies
               (match (if (and simplify (not (memq dmt '(?f ?r))))
                           (gnus-map-function
                            gnus-simplify-subject-functions
               (match (if (and simplify (not (memq dmt '(?f ?r))))
                           (gnus-map-function
                            gnus-simplify-subject-functions
@@ -1908,10 +1912,12 @@ SCORE is the score to add."
          (cond
           ;; Fuzzy matches.  We save these for later.
           ((= dmt ?f)
          (cond
           ;; Fuzzy matches.  We save these for later.
           ((= dmt ?f)
-           (push (cons entries alist) fuzzies))
+           (push (cons entries alist) fuzzies)
+           (setq entries (cdr entries)))
           ;; Word matches.  Save these for even later.
           ((= dmt ?w)
           ;; Word matches.  Save these for even later.
           ((= dmt ?w)
-           (push (cons entries alist) words))
+           (push (cons entries alist) words)
+           (setq entries (cdr entries)))
           ;; Exact matches.
           ((= dmt ?e)
            ;; Do exact matching.
           ;; Exact matches.
           ((= dmt ?e)
            ;; Do exact matching.
@@ -1936,7 +1942,26 @@ SCORE is the score to add."
                            gnus-score-trace))
                       (while (setq art (pop arts))
                         (setcdr art (+ score (cdr art)))))))
                            gnus-score-trace))
                       (while (setq art (pop arts))
                         (setcdr art (+ score (cdr art)))))))
-             (forward-line 1)))
+             (forward-line 1))
+           ;; Update expiry date
+           (if trace
+               (setq entries (cdr entries))
+             (cond
+              ;; Permanent entry.
+              ((null date)
+               (setq entries (cdr entries)))
+              ;; We have a match, so we update the date.
+              ((and found gnus-update-score-entry-dates)
+               (gnus-score-set 'touched '(t) alist)
+               (setcar (nthcdr 2 kill) now)
+               (setq entries (cdr entries)))
+              ;; This entry has expired, so we remove it.
+              ((and expire (< date expire))
+               (gnus-score-set 'touched '(t) alist)
+               (setcdr entries (cddr entries)))
+              ;; No match; go to next entry.
+              (t
+               (setq entries (cdr entries))))))
           ;; Regexp and substring matching.
           (t
            (goto-char (point-min))
           ;; Regexp and substring matching.
           (t
            (goto-char (point-min))
@@ -1955,26 +1980,26 @@ SCORE is the score to add."
                          gnus-score-trace))
                (while (setq art (pop arts))
                  (setcdr art (+ score (cdr art)))))
                          gnus-score-trace))
                (while (setq art (pop arts))
                  (setcdr art (+ score (cdr art)))))
-             (forward-line 1))))
-         ;; Update expiry date
-         (if trace
-             (setq entries (cdr entries))
-           (cond
-            ;; Permanent entry.
-            ((null date)
-             (setq entries (cdr entries)))
-            ;; We have a match, so we update the date.
-            ((and found gnus-update-score-entry-dates)
-             (gnus-score-set 'touched '(t) alist)
-             (setcar (nthcdr 2 kill) now)
-             (setq entries (cdr entries)))
-            ;; This entry has expired, so we remove it.
-            ((and expire (< date expire))
-             (gnus-score-set 'touched '(t) alist)
-             (setcdr entries (cddr entries)))
-            ;; No match; go to next entry.
-            (t
-             (setq entries (cdr entries))))))))
+             (forward-line 1))
+           ;; Update expiry date
+           (if trace
+               (setq entries (cdr entries))
+             (cond
+              ;; Permanent entry.
+              ((null date)
+               (setq entries (cdr entries)))
+              ;; We have a match, so we update the date.
+              ((and found gnus-update-score-entry-dates)
+               (gnus-score-set 'touched '(t) alist)
+               (setcar (nthcdr 2 kill) now)
+               (setq entries (cdr entries)))
+              ;; This entry has expired, so we remove it.
+              ((and expire (< date expire))
+               (gnus-score-set 'touched '(t) alist)
+               (setcdr entries (cddr entries)))
+              ;; No match; go to next entry.
+              (t
+               (setq entries (cdr entries))))))))))
 
     ;; Find fuzzy matches.
     (when fuzzies
 
     ;; Find fuzzy matches.
     (when fuzzies
@@ -2006,18 +2031,19 @@ SCORE is the score to add."
                  (setcdr art (+ score (cdr art))))))
            (forward-line 1))
          ;; Update expiry date
                  (setcdr art (+ score (cdr art))))))
            (forward-line 1))
          ;; Update expiry date
-         (cond
-          ;; Permanent.
-          ((null date)
-           )
-          ;; Match, update date.
-          ((and found gnus-update-score-entry-dates)
-           (gnus-score-set 'touched '(t) (cdar fuzzies))
-           (setcar (nthcdr 2 kill) now))
-          ;; Old entry, remove.
-          ((and expire (< date expire))
-           (gnus-score-set 'touched '(t) (cdar fuzzies))
-           (setcdr (caar fuzzies) (cddaar fuzzies))))
+         (if (not trace)
+             (cond
+              ;; Permanent.
+              ((null date)
+               )
+              ;; Match, update date.
+              ((and found gnus-update-score-entry-dates)
+               (gnus-score-set 'touched '(t) (cdar fuzzies))
+               (setcar (nthcdr 2 kill) now))
+              ;; Old entry, remove.
+              ((and expire (< date expire))
+               (gnus-score-set 'touched '(t) (cdar fuzzies))
+               (setcdr (caar fuzzies) (cddaar fuzzies)))))
          (setq fuzzies (cdr fuzzies)))))
 
     (when words
          (setq fuzzies (cdr fuzzies)))))
 
     (when words
@@ -2043,18 +2069,19 @@ SCORE is the score to add."
                (while (setq art (pop arts))
                  (setcdr art (+ score (cdr art))))))
            ;; Update expiry date
                (while (setq art (pop arts))
                  (setcdr art (+ score (cdr art))))))
            ;; Update expiry date
-           (cond
-            ;; Permanent.
-            ((null date)
-             )
-            ;; Match, update date.
-            ((and found gnus-update-score-entry-dates)
-             (gnus-score-set 'touched '(t) (cdar words))
-             (setcar (nthcdr 2 kill) now))
-            ;; Old entry, remove.
-            ((and expire (< date expire))
-             (gnus-score-set 'touched '(t) (cdar words))
-             (setcdr (caar words) (cddaar words))))
+           (if (not trace)
+               (cond
+                ;; Permanent.
+                ((null date)
+                 )
+                ;; Match, update date.
+                ((and found gnus-update-score-entry-dates)
+                 (gnus-score-set 'touched '(t) (cdar words))
+                 (setcar (nthcdr 2 kill) now))
+                ;; Old entry, remove.
+                ((and expire (< date expire))
+                 (gnus-score-set 'touched '(t) (cdar words))
+                 (setcdr (caar words) (cddaar words)))))
            (setq words (cdr words))))))
     nil))
 
            (setq words (cdr words))))))
     nil))
 
index e4ad698..a4b341f 100644 (file)
@@ -509,6 +509,7 @@ with some simple extensions:
 %G  Group name
 %p  Unprefixed group name
 %A  Current article number
 %G  Group name
 %p  Unprefixed group name
 %A  Current article number
+%z  Current article score
 %V  Gnus version
 %U  Number of unread articles in the group
 %e  Number of unselected articles in the group
 %V  Gnus version
 %U  Number of unread articles in the group
 %e  Number of unselected articles in the group
@@ -864,6 +865,7 @@ variable (string, integer, character, etc).")
     (?d (length gnus-newsgroup-dormant) ?d)
     (?t (length gnus-newsgroup-marked) ?d)
     (?r (length gnus-newsgroup-reads) ?d)
     (?d (length gnus-newsgroup-dormant) ?d)
     (?t (length gnus-newsgroup-marked) ?d)
     (?r (length gnus-newsgroup-reads) ?d)
+    (?z (gnus-summary-article-score gnus-tmp-article-number) ?d)
     (?E gnus-newsgroup-expunged-tally ?d)
     (?s (gnus-current-score-file-nondirectory) ?s)))
 
     (?E gnus-newsgroup-expunged-tally ?d)
     (?s (gnus-current-score-file-nondirectory) ?s)))
 
@@ -4076,7 +4078,8 @@ If READ-ALL is non-nil, all articles in the group are selected."
 
 (defun gnus-update-marks ()
   "Enter the various lists of marked articles into the newsgroup info list."
 
 (defun gnus-update-marks ()
   "Enter the various lists of marked articles into the newsgroup info list."
-  (let ((types gnus-article-mark-lists)
+  (let ((types (gnus-delete-alist 'cached
+                                 (copy-sequence gnus-article-mark-lists)))
        (info (gnus-get-info gnus-newsgroup-name))
        (uncompressed '(score bookmark killed))
        type list newmarked symbol)
        (info (gnus-get-info gnus-newsgroup-name))
        (uncompressed '(score bookmark killed))
        type list newmarked symbol)
@@ -4349,7 +4352,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
       (subst-char-in-region (point-min) (point-max) ?\t ?  t)
       (gnus-run-hooks 'gnus-parse-headers-hook)
       (let ((case-fold-search t)
       (subst-char-in-region (point-min) (point-max) ?\t ?  t)
       (gnus-run-hooks 'gnus-parse-headers-hook)
       (let ((case-fold-search t)
-           in-reply-to header p lines)
+           in-reply-to header p lines chars)
        (goto-char (point-min))
        ;; Search to the beginning of the next header.  Error messages
        ;; do not begin with 2 or 3.
        (goto-char (point-min))
        ;; Search to the beginning of the next header.  Error messages
        ;; do not begin with 2 or 3.
@@ -4438,7 +4441,12 @@ The resulting hash table is returned, or nil if no Xrefs were found."
                          (setq ref ref2))))
                  (setq ref nil))))
            ;; Chars.
                          (setq ref ref2))))
                  (setq ref nil))))
            ;; Chars.
-           0
+           (progn
+             (goto-char p)
+             (if (search-forward "\nchars: " nil t)
+                 (if (numberp (setq chars (ignore-errors (read cur))))
+                     chars 0)
+               0))
            ;; Lines.
            (progn
              (goto-char p)
            ;; Lines.
            (progn
              (goto-char p)
@@ -7613,9 +7621,7 @@ returned."
               (push article gnus-newsgroup-dormant))
              (t
               (push article gnus-newsgroup-unreads)))
               (push article gnus-newsgroup-dormant))
              (t
               (push article gnus-newsgroup-unreads)))
-       (setq gnus-newsgroup-reads
-             (delq (assq article gnus-newsgroup-reads)
-                   gnus-newsgroup-reads))
+       (gnus-pull article gnus-newsgroup-reads)
 
        ;; See whether the article is to be put in the cache.
        (and gnus-use-cache
 
        ;; See whether the article is to be put in the cache.
        (and gnus-use-cache
@@ -7756,9 +7762,7 @@ marked."
             (push article gnus-newsgroup-dormant))
            (t
             (push article gnus-newsgroup-unreads)))
             (push article gnus-newsgroup-dormant))
            (t
             (push article gnus-newsgroup-unreads)))
-      (setq gnus-newsgroup-reads
-           (delq (assq article gnus-newsgroup-reads)
-                 gnus-newsgroup-reads))
+      (gnus-pull article gnus-newsgroup-reads)
       t)))
 
 (defalias 'gnus-summary-mark-as-unread-forward
       t)))
 
 (defalias 'gnus-summary-mark-as-unread-forward
index 15e036b..20961be 100644 (file)
@@ -348,7 +348,7 @@ If TOPIC, start with that topic."
        (when (atom param)
          (setq param (cons param t)))
        ;; Override any old versions of this param.
        (when (atom param)
          (setq param (cons param t)))
        ;; Override any old versions of this param.
-       (setq out (delq (assq (car param) out) out))
+       (gnus-pull (car param) out)
        (push param out)))
     ;; Return the resulting parameter list.
     out))
        (push param out)))
     ;; Return the resulting parameter list.
     out))
index 42fc017..817b358 100644 (file)
@@ -603,14 +603,6 @@ Bind `print-quoted' and `print-readably' to t while printing."
   ;; Write the buffer.
   (write-region (point-min) (point-max) file nil 'quietly))
 
   ;; 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-assoc (key list)
-  `(let ((listval ,list))
-     (setq ,list (delq (assoc ,key listval) listval))))
-
 (defun gnus-delete-file (file)
   "Delete FILE if it exists."
   (when (file-exists-p file)
 (defun gnus-delete-file (file)
   "Delete FILE if it exists."
   (when (file-exists-p file)
@@ -930,6 +922,35 @@ ARG is passed to the first function."
         (set-buffer gnus-group-buffer)
         (eq major-mode 'gnus-group-mode))))
 
         (set-buffer gnus-group-buffer)
         (eq major-mode 'gnus-group-mode))))
 
+(defun gnus-remove-duplicates (list)
+  (let (new (tail list))
+    (while tail
+      (or (member (car tail) new)
+         (setq new (cons (car tail) new)))
+      (setq tail (cdr tail)))
+    (nreverse new)))
+
+(defun gnus-delete-if (predicate list)
+  "Delete elements from LIST that satisfy PREDICATE."
+  (let (out)
+    (while list
+      (when (funcall predicate (car list))
+       (push (car list) out))
+      (pop list))
+    (nreverse out)))
+
+(defun gnus-delete-alist (key alist)
+  "Delete all entries in ALIST that have a key eq to KEY."
+  (let (entry)
+    (while (setq entry (assq key alist))
+      (setq alist (delq entry alist)))
+    alist))
+
+(defmacro gnus-pull (key alist)
+  "Modify ALIST to be without KEY."
+  (unless (symbolp alist)
+    (error "Not a symbol: %s" alist))
+  `(setq ,alist (delq (assq ,key ,alist) ,alist)))
 
 (provide 'gnus-util)
 
 
 (provide 'gnus-util)
 
index 80df675..bee760e 100644 (file)
@@ -250,7 +250,7 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "5.6.15"
+(defconst gnus-version-number "5.6.16"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
@@ -2461,7 +2461,7 @@ also examines the topic parameters."
        (when params
          (setq params (delq name params))
          (while (assq name params)
        (when params
          (setq params (delq name params))
          (while (assq name params)
-           (setq params (delq (assq name params) params)))
+           (gnus-pull name params))
          (gnus-info-set-params info params))))))
 
 (defun gnus-group-add-score (group &optional score)
          (gnus-info-set-params info params))))))
 
 (defun gnus-group-add-score (group &optional score)
index 10bab6b..d41172b 100644 (file)
@@ -29,7 +29,7 @@
                     make-char-table set-char-table-range font-create-object
                     x-color-values widget-make-intangible error-message-string
                     w3-form-encode-xwfu gnus-mule-get-coding-system
                     make-char-table set-char-table-range font-create-object
                     x-color-values widget-make-intangible error-message-string
                     w3-form-encode-xwfu gnus-mule-get-coding-system
-                    decode-coding-string))
+                    decode-coding-string mail-aliases-setup))
       (maybe-bind '(global-face-data
                    mark-active transient-mark-mode mouse-selection-click-count
                    mouse-selection-click-count-buffer buffer-display-table
       (maybe-bind '(global-face-data
                    mark-active transient-mark-mode mouse-selection-click-count
                    mouse-selection-click-count-buffer buffer-display-table
@@ -52,7 +52,8 @@
                 set-glyph-property event-glyph glyph-property event-point
                 device-on-window-system-p make-gui-button Info-goto-node
                 pp-to-string color-name 
                 set-glyph-property event-glyph glyph-property event-point
                 device-on-window-system-p make-gui-button Info-goto-node
                 pp-to-string color-name 
-                gnus-mule-get-coding-system decode-coding-string)))
+                gnus-mule-get-coding-system decode-coding-string
+                mail-aliases-setup)))
 
 (setq load-path (cons "." load-path))
 (require 'custom)
 
 (setq load-path (cons "." load-path))
 (require 'custom)
index 0b40a38..d964fb3 100644 (file)
@@ -1229,7 +1229,8 @@ Return the number of headers removed."
    ["Spellcheck" ispell-message t]
    "----"
    ["Send Message" message-send-and-exit t]
    ["Spellcheck" ispell-message t]
    "----"
    ["Send Message" message-send-and-exit t]
-   ["Abort Message" message-dont-send t]))
+   ["Abort Message" message-dont-send t]
+   ["Kill Message" message-kill-buffer t]))
 
 (easy-menu-define
  message-mode-field-menu message-mode-map ""
 
 (easy-menu-define
  message-mode-field-menu message-mode-map ""
@@ -1302,19 +1303,18 @@ C-c C-r  message-caesar-buffer-body (rot13 the message body)."
        facemenu-remove-face-function t)
   (make-local-variable 'paragraph-separate)
   (make-local-variable 'paragraph-start)
        facemenu-remove-face-function t)
   (make-local-variable 'paragraph-separate)
   (make-local-variable 'paragraph-start)
+  ;; `-- ' precedes the signature.  `-----' appears at the start of the
+  ;; lines that delimit forwarded messages.
+  ;; Lines containing just >= 3 dashes, perhaps after whitespace,
+  ;; are also sometimes used and should be separators.
   (setq paragraph-start
        (concat (regexp-quote mail-header-separator)
   (setq paragraph-start
        (concat (regexp-quote mail-header-separator)
-               "$\\|[ \t]*[-_][-_][-_]+$\\|"
-               "-- $\\|"
+               "$\\|[ \t]*[a-z0-9A-Z]*>+[ \t]*$\\|[ \t]*$\\|"
+               "-- $\\|---+$\\|"
+               page-delimiter
                ;;!!! Uhm... shurely this can't be right?
                ;;!!! Uhm... shurely this can't be right?
-               "[> " (regexp-quote message-yank-prefix) "]+$\\|"
-               paragraph-start))
-  (setq paragraph-separate
-       (concat (regexp-quote mail-header-separator)
-               "$\\|[ \t]*[-_][-_][-_]+$\\|"
-               "-- $\\|"
-               "[> " (regexp-quote message-yank-prefix) "]+$\\|"
-               paragraph-separate))
+               "[> " (regexp-quote message-yank-prefix) "]+$\\|"))
+  (setq paragraph-separate paragraph-start)
   (make-local-variable 'message-reply-headers)
   (setq message-reply-headers nil)
   (make-local-variable 'message-newsreader)
   (make-local-variable 'message-reply-headers)
   (setq message-reply-headers nil)
   (make-local-variable 'message-newsreader)
@@ -1334,7 +1334,7 @@ C-c C-r  message-caesar-buffer-body (rot13 the message body)."
   (when (eq message-mail-alias-type 'abbrev)
     (if (fboundp 'mail-abbrevs-setup)
        (mail-abbrevs-setup)
   (when (eq message-mail-alias-type 'abbrev)
     (if (fboundp 'mail-abbrevs-setup)
        (mail-abbrevs-setup)
-      (funcall (intern "mail-aliases-setup"))))
+      (mail-aliases-setup)))
   (message-set-auto-save-file-name)
   (unless (string-match "XEmacs" emacs-version)
     (set (make-local-variable 'font-lock-defaults)
   (message-set-auto-save-file-name)
   (unless (string-match "XEmacs" emacs-version)
     (set (make-local-variable 'font-lock-defaults)
index 96b45d5..0092ac0 100644 (file)
@@ -616,9 +616,7 @@ as the last checked definition, if t or `first', add as the
 first definition, and if any other symbol, add after that
 symbol in the alist."
   ;; First remove any old instances.
 first definition, and if any other symbol, add after that
 symbol in the alist."
   ;; First remove any old instances.
-  (setq nndoc-type-alist
-       (delq (assq (car definition) nndoc-type-alist)
-             nndoc-type-alist))
+  (gnus-pull (car definition) nndoc-type-alist)
   ;; Then enter the new definition in the proper place.
   (cond
    ((or (null position) (eq position 'last))
   ;; Then enter the new definition in the proper place.
   (cond
    ((or (null position) (eq position 'last))
index 5ae4d74..e761868 100644 (file)
@@ -25,7 +25,7 @@
 
 ;;; Code:
 
 
 ;;; Code:
 
-(require 'cl)
+(eval-when-compile (require 'cl))
 
 (require 'nnheader)
 (require 'timezone)
 
 (require 'nnheader)
 (require 'timezone)
@@ -1096,7 +1096,7 @@ FUNC will be called with the group name to determine the article number."
                       "Error in `nnmail-split-methods'; using `bogus' mail group")
                      (sit-for 1)
                      '("bogus")))))
                       "Error in `nnmail-split-methods'; using `bogus' mail group")
                      (sit-for 1)
                      '("bogus")))))
-             (setq split (remove-duplicates split :test 'equal))
+             (setq split (gnus-remove-duplicates split))
              ;; The article may be "cross-posted" to `junk'.  What
              ;; to do?  Just remove the `junk' spec.  Don't really
              ;; see anything else to do...
              ;; The article may be "cross-posted" to `junk'.  What
              ;; to do?  Just remove the `junk' spec.  Don't really
              ;; see anything else to do...
@@ -1758,8 +1758,8 @@ If ARGS, PROMPT is used as an argument to `format'."
   (let ((history nnmail-split-history)
        prev)
     (while history
   (let ((history nnmail-split-history)
        prev)
     (while history
-      (setcar history (delete-if (lambda (e) (string= (car e) group))
-                                (car history)))
+      (setcar history (gnus-delete-if (lambda (e) (string= (car e) group))
+                                     (car history)))
       (pop history))
     (setq nnmail-split-history (delq nil nnmail-split-history))))
 
       (pop history))
     (setq nnmail-split-history (delq nil nnmail-split-history))))
 
index 9c4251d..321508c 100644 (file)
 
 (deffoo nnweb-request-delete-group (group &optional force server)
   (nnweb-possibly-change-server group server)
 
 (deffoo nnweb-request-delete-group (group &optional force server)
   (nnweb-possibly-change-server group server)
-  (gnus-delete-assoc group nnweb-group-alist)
+  (gnus-pull group nnweb-group-alist)
   (gnus-delete-file (nnweb-overview-file group))
   t)
 
   (gnus-delete-file (nnweb-overview-file group))
   t)
 
index ac91f20..31225f3 100644 (file)
@@ -1,3 +1,17 @@
+1998-06-26  Simon Josefsson  <jas@pdc.kth.se>
+
+       * gnus-sum.el (gnus-get-newsgroup-headers): parse Chars: headers
+
+Fri Jun 26 13:33:00 1998  Yoshiki Hayashi  <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+       * gnus.texi (Summary Buffer Lines): Typo fix.
+
+Fri Jun 26 05:53:22 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.texi (Score File Format): Addition.
+       (Mode Line Formatting): New.
+       (Summary Buffer Mode Line): Addition.
+
 Thu Jun 25 11:24:14 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
        * gnus.texi (Summary Score Commands): Deletia.
 Thu Jun 25 11:24:14 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
        * gnus.texi (Summary Score Commands): Deletia.
index 658bdf9..ea789b4 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Gnus 5.6.15 Manual
+@settitle Gnus 5.6.16 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -316,7 +316,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
 @tex
 
 @titlepage
-@title Gnus 5.6.15 Manual
+@title Gnus 5.6.16 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -352,7 +352,7 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-This manual corresponds to Gnus 5.6.15.
+This manual corresponds to Gnus 5.6.16.
 
 @end ifinfo
 
 
 @end ifinfo
 
@@ -1248,7 +1248,7 @@ group, or a bogus native group.
 
 @vindex gnus-group-mode-line-format
 The mode line can be changed by setting
 
 @vindex gnus-group-mode-line-format
 The mode line can be changed by setting
-@code{gnus-group-mode-line-format} (@pxref{Formatting Variables}).  It
+@code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}).  It
 doesn't understand that many format specifiers:
 
 @table @samp
 doesn't understand that many format specifiers:
 
 @table @samp
@@ -3279,7 +3279,7 @@ Score as a number (@pxref{Scoring}).
 @vindex gnus-summary-zcore-fuzz
 Zcore, @samp{+} if above the default level and @samp{-} if below the
 default level.  If the difference between
 @vindex gnus-summary-zcore-fuzz
 Zcore, @samp{+} if above the default level and @samp{-} if below the
 default level.  If the difference between
-@code{gnus-summary-default-level} and the score is less than
+@code{gnus-summary-default-score} and the score is less than
 @code{gnus-summary-zcore-fuzz}, this spec will not be used.
 @item V
 Total thread score.
 @code{gnus-summary-zcore-fuzz}, this spec will not be used.
 @item V
 Total thread score.
@@ -3331,9 +3331,9 @@ This restriction may disappear in later versions of Gnus.
 @subsection Summary Buffer Mode Line
 
 @vindex gnus-summary-mode-line-format
 @subsection Summary Buffer Mode Line
 
 @vindex gnus-summary-mode-line-format
-You can also change the format of the summary mode bar.  Set
-@code{gnus-summary-mode-line-format} to whatever you like.  The default
-is @samp{Gnus: %%b [%A] %Z}.
+You can also change the format of the summary mode bar (@pxref{Mode Line
+Formatting}).  Set @code{gnus-summary-mode-line-format} to whatever you
+like.  The default is @samp{Gnus: %%b [%A] %Z}.
 
 Here are the elements you can play with:
 
 
 Here are the elements you can play with:
 
@@ -3344,6 +3344,8 @@ Group name.
 Unprefixed group name.
 @item A
 Current article number.
 Unprefixed group name.
 @item A
 Current article number.
+@item z
+Current article score.
 @item V
 Gnus version.
 @item U
 @item V
 Gnus version.
 @item U
@@ -6314,7 +6316,8 @@ Cleaner, perhaps.
 @kindex W l (Summary)
 @findex gnus-summary-stop-page-breaking
 Remove page breaks from the current article
 @kindex W l (Summary)
 @findex gnus-summary-stop-page-breaking
 Remove page breaks from the current article
-(@code{gnus-summary-stop-page-breaking}).
+(@code{gnus-summary-stop-page-breaking}).  @xref{Misc Article} for page
+delimiters. 
 
 @item W r
 @kindex W r (Summary)
 
 @item W r
 @kindex W r (Summary)
@@ -6993,9 +6996,9 @@ A hook called in all tree mode buffers.
 
 @item gnus-tree-mode-line-format
 @vindex gnus-tree-mode-line-format
 
 @item gnus-tree-mode-line-format
 @vindex gnus-tree-mode-line-format
-A format string for the mode bar in the tree mode buffers.  The default
-is @samp{Gnus: %%b %S %Z}.  For a list of valid specs, @pxref{Summary
-Buffer Mode Line}.
+A format string for the mode bar in the tree mode buffers (@pxref{Mode
+Line Formatting}).  The default is @samp{Gnus: %%b %S %Z}.  For a list
+of valid specs, @pxref{Summary Buffer Mode Line}.
 
 @item gnus-selected-tree-face
 @vindex gnus-selected-tree-face
 
 @item gnus-selected-tree-face
 @vindex gnus-selected-tree-face
@@ -7982,8 +7985,9 @@ Syntax table used in article buffers.  It is initialized from
 @vindex gnus-article-mode-line-format
 @item gnus-article-mode-line-format
 This variable is a format string along the same lines as
 @vindex gnus-article-mode-line-format
 @item gnus-article-mode-line-format
 This variable is a format string along the same lines as
-@code{gnus-summary-mode-line-format}.  It accepts the same
-format specifications as that variable, with one extension:
+@code{gnus-summary-mode-line-format} (@pxref{Mode Line Formatting}).  It
+accepts the same format specifications as that variable, with one
+extension:
 
 @table @samp
 @item w
 
 @table @samp
 @item w
@@ -8563,8 +8567,8 @@ The opened/closed/denied status of the server.
 
 @vindex gnus-server-mode-line-format
 The mode line can also be customized by using the
 
 @vindex gnus-server-mode-line-format
 The mode line can also be customized by using the
-@code{gnus-server-mode-line-format} variable.  The following specs are
-understood:
+@code{gnus-server-mode-line-format} variable (@pxref{Mode Line
+Formatting}).  The following specs are understood:
 
 @table @samp
 @item S
 
 @table @samp
 @item S
@@ -11528,7 +11532,7 @@ The number of groups in the category.
 
 @item gnus-category-mode-line-format
 @vindex gnus-category-mode-line-format
 
 @item gnus-category-mode-line-format
 @vindex gnus-category-mode-line-format
-Format of the category mode line.
+Format of the category mode line (@pxref{Mode Line Formatting}).
 
 @item gnus-agent-short-article
 @vindex gnus-agent-short-article
 
 @item gnus-agent-short-article
 @vindex gnus-agent-short-article
@@ -12344,11 +12348,31 @@ instead, if you feel like.
 
 @item Lines, Chars
 These two headers use different match types: @code{<}, @code{>},
 
 @item Lines, Chars
 These two headers use different match types: @code{<}, @code{>},
-@code{=}, @code{>=} and @code{<=}.  When matching on @code{Lines}, be
-careful because some backends (like @code{nndir}) do not generate
-@code{Lines} header, so every article ends up being marked as having 0
-lines.  This can lead to strange results if you happen to lower score of
-the articles with few lines.
+@code{=}, @code{>=} and @code{<=}.
+
+These predicates are true if
+
+@example
+(PREDICATE HEADER MATCH)
+@end example
+
+evaluates to non-@code{nil}.  For instance, the advanced match
+@code{("lines" 4 <)} (@pxref{Advanced Scoring}) will result in the
+following form:
+
+@lisp
+(< header-value 4)
+@end lisp
+
+Or to put it another way: When using @code{<} on @code{Lines} with 4 as
+the match, we get the score added if the article has less than 4 lines.
+(It's easy to get confused and think it's the other way around.  But
+it's not.  I think.)
+
+When matching on @code{Lines}, be careful because some backends (like
+@code{nndir}) do not generate @code{Lines} header, so every article ends
+up being marked as having 0 lines.  This can lead to strange results if
+you happen to lower score of the articles with few lines.
 
 @item Date
 For the Date header we have three kinda silly match types:
 
 @item Date
 For the Date header we have three kinda silly match types:
@@ -13643,7 +13667,8 @@ Interactive}.
 @section Formatting Variables
 @cindex formatting variables
 
 @section Formatting Variables
 @cindex formatting variables
 
-Throughout this manual you've probably noticed lots of variables called things like @code{gnus-group-line-format} and
+Throughout this manual you've probably noticed lots of variables called
+things like @code{gnus-group-line-format} and
 @code{gnus-summary-mode-line-format}.  These control how Gnus is to
 output lines in the various buffers.  There's quite a lot of them.
 Fortunately, they all use the same syntax, so there's not that much to
 @code{gnus-summary-mode-line-format}.  These control how Gnus is to
 output lines in the various buffers.  There's quite a lot of them.
 Fortunately, they all use the same syntax, so there's not that much to
@@ -13655,6 +13680,7 @@ lots of percentages everywhere.
 
 @menu
 * Formatting Basics::     A formatting variable is basically a format string.
 
 @menu
 * Formatting Basics::     A formatting variable is basically a format string.
+* Mode Line Formatting::  Some rules about mode line formatting varsables.
 * Advanced Formatting::   Modifying output in various ways.
 * User-Defined Specs::    Having Gnus call your own functions.
 * Formatting Fonts::      Making the formatting look colorful and nice.
 * Advanced Formatting::   Modifying output in various ways.
 * User-Defined Specs::    Having Gnus call your own functions.
 * Formatting Fonts::      Making the formatting look colorful and nice.
@@ -13701,6 +13727,31 @@ means that the field will never be more than 6 characters wide and never
 less than 4 characters wide.
 
 
 less than 4 characters wide.
 
 
+@node Mode Line Formatting
+@subsection Mode Line Formatting
+
+Mode line formatting variables (e.g.,
+@code{gnus-summary-mode-line-format}) follow the same rules as other,
+buffer line oriented formatting variables (@pxref{Formatting Basics})
+with the following two differences:
+
+@enumerate
+
+@item
+There must be no newline (@samp{\n}) at the end.
+
+@item
+The special @samp{%%b} spec can be used to display the buffer name.
+Well, it's no spec at all, really---@samp{%%} is just a way to quote
+@samp{%} to allow it to pass through the formatting machinery unmangled,
+so that Emacs receives @samp{%b}, which is something the Emacs mode line
+display interprets to mean ``show the buffer name''.  For a full list of
+mode line specs Emacs understands, see the documentation of the
+@code{mode-line-format} variable.
+
+@end enumerate
+
+
 @node Advanced Formatting
 @subsection Advanced Formatting
 
 @node Advanced Formatting
 @subsection Advanced Formatting
 
@@ -15775,7 +15826,7 @@ actually are people who are using Gnus.  Who'd'a thunk it!
 * ding Gnus::          New things in Gnus 5.0/5.1, the first new Gnus.
 * September Gnus::     The Thing Formally Known As Gnus 5.3/5.3.
 * Red Gnus::           Third time best---Gnus 5.4/5.5.
 * ding Gnus::          New things in Gnus 5.0/5.1, the first new Gnus.
 * September Gnus::     The Thing Formally Known As Gnus 5.3/5.3.
 * Red Gnus::           Third time best---Gnus 5.4/5.5.
-* Quassia Gnus::       Two times two is four, or Gnus 5.6.15.
+* Quassia Gnus::       Two times two is four, or Gnus 5.6.16.
 @end menu
 
 These lists are, of course, just @emph{short} overviews of the
 @end menu
 
 These lists are, of course, just @emph{short} overviews of the
@@ -16310,7 +16361,7 @@ Emphasized text can be properly fontisized:
 @node Quassia Gnus
 @subsubsection Quassia Gnus
 
 @node Quassia Gnus
 @subsubsection Quassia Gnus
 
-New features in Gnus 5.6.15:
+New features in Gnus 5.6.16:
 
 @itemize @bullet
 
 
 @itemize @bullet
 
index 069ee96..a6d998a 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Message 5.6.15 Manual
+@settitle Message 5.6.16 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
 @tex
 
 @titlepage
-@title Message 5.6.15 Manual
+@title Message 5.6.16 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -83,7 +83,7 @@ Message mode buffers.
 * Key Index::         List of Message mode keys.
 @end menu
 
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to Message 5.6.15.  Message is distributed with
+This manual corresponds to Message 5.6.16.  Message is distributed with
 the Gnus distribution bearing the same version number as this manual
 has. 
 
 the Gnus distribution bearing the same version number as this manual
 has.