*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 24 Jun 1998 01:29:39 +0000 (01:29 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 24 Jun 1998 01:29:39 +0000 (01:29 +0000)
16 files changed:
lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-picon.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-topic.el
lisp/gnus-uu.el
lisp/gnus.el
lisp/message.el
lisp/nngateway.el
lisp/nnkiboze.el
lisp/nnmail.el
lisp/nntp.el
texi/ChangeLog
texi/gnus.texi
texi/message.texi

index 7054db5..eeae864 100644 (file)
@@ -1,3 +1,71 @@
+Wed Jun 24 03:27:44 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Gnus v5.6.12 is released.
+
+Wed Jun 10 11:06:35 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * message.el (message-mail-other-window): Bind message-this-is-mail.
+       (message-mail-other-frame): Likewise.
+       (message-news-other-window): Bind message-this-is-news.
+       (message-news-other-frame): Likewise.
+
+1998-06-09  Sam Steingold  <sds@goems.com>
+
+        * gnus-uu.el (gnus-uu-default-view-rules): make sed kill ^M only
+        at the end of line.
+
+1998-06-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * nnmail.el (nnmail-get-split-group): Don't regexp-quote
+       nnmail-procmail-suffix.
+
+Wed Jun 24 03:04:05 1998  Kim-Minh Kaplan  <kaplan@sky.fr>
+
+       * gnus-sum.el (gnus-build-get-header): Fix obarray.
+
+Wed Jun 24 02:49:57 1998  Castor  <castor@my-dejanews.com>
+
+       * nntp.el (nntp-open-ssl-stream): 
+
+Wed Jun 24 02:31:46 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-sum.el (gnus-nov-parse-line): Cleaned up.
+       (gnus-build-all-threads): Put things in the wrong obarray.
+
+Wed Jun 24 01:43:26 1998  Decklin Foster  <djarum@base.org>
+
+       * nngateway.el (nngateway-mail2news-header-transformation): New
+       function. 
+
+Wed Jun 24 00:25:45 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * message.el (message-shorten-references): New function.
+       (message-header-format-alist): Use it.
+
+       * gnus-start.el (gnus-always-read-dribble-file): Customized.
+
+       * message.el (message-generate-new-buffers): Dox fox.
+
+Tue Jun 23 23:58:48 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-topic.el (gnus-topic-prepare-topic): Respect visible topic
+       param. 
+       (gnus-topic-hierarchical-parameters): New function.
+
+1998-06-02  Didier Verna  <verna@inf.enst.fr>
+
+       * gnus-picon.el (gnus-get-buffer-name): use get-buffer-create
+       instead of get-buffer 
+
+Wed Jun  3 04:41:45 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * nnkiboze.el (nnkiboze-request-delete-group): Delete .newsrc
+       file. 
+
+       * nnmail.el (nnmail-article-group): Nuke looong lines.
+
+       * gnus-art.el (gnus-button-alist): Buggy default.
+
 Wed Jun  3 04:03:37 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Gnus v5.6.11 is released.
 Wed Jun  3 04:03:37 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Gnus v5.6.11 is released.
index dd29db6..dd19652 100644 (file)
@@ -2720,7 +2720,7 @@ groups."
     ("\\bin\\( +article\\| +message\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2
      t gnus-button-message-id 3)
     ("\\(<URL: *\\)mailto: *\\([^> \n\t]+\\)>" 0 t gnus-url-mailto 2)
     ("\\bin\\( +article\\| +message\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2
      t gnus-button-message-id 3)
     ("\\(<URL: *\\)mailto: *\\([^> \n\t]+\\)>" 0 t gnus-url-mailto 2)
-    ("mailto:\\([a-zA-Z.-@_+0-9%]+\\)" 0 t gnus-url-mailto 2)
+    ("mailto:\\([a-zA-Z.-@_+0-9%]+\\)" 0 t gnus-url-mailto 1)
     ("\\bmailto:\\([^ \n\t]+\\)" 0 t gnus-url-mailto 1)
     ;; This is how URLs _should_ be embedded in text...
     ("<URL: *\\([^>]*\\)>" 0 t gnus-button-embedded-url 1)
     ("\\bmailto:\\([^ \n\t]+\\)" 0 t gnus-url-mailto 1)
     ;; This is how URLs _should_ be embedded in text...
     ("<URL: *\\([^>]*\\)>" 0 t gnus-button-embedded-url 1)
index 7579b0c..be64979 100644 (file)
@@ -184,8 +184,9 @@ arguments necessary for the job.")
 
 (defun gnus-get-buffer-name (variable)
   "Returns the buffer name associated with the contents of a variable."
 
 (defun gnus-get-buffer-name (variable)
   "Returns the buffer name associated with the contents of a variable."
-  (let ((buf (get-buffer (gnus-window-to-buffer-helper
-                           (cdr (assq variable gnus-window-to-buffer))))))
+  (let ((buf (get-buffer-create (gnus-window-to-buffer-helper
+                                (cdr 
+                                 (assq variable gnus-window-to-buffer))))))
     (and buf
         (buffer-name buf))))
 
     (and buf
         (buffer-name buf))))
 
index d83f15f..29b6b04 100644 (file)
@@ -383,10 +383,12 @@ Can be used to turn version control on or off."
   :group 'gnus-newsrc
   :type 'hook)
 
   :group 'gnus-newsrc
   :type 'hook)
 
-;;; Internal variables
+(defcustom gnus-always-read-dribble-file nil
+  "Uncoditionally read the dribble file."
+  :group 'gnus-newsrc
+  :type 'boolean)
 
 
-(defvar gnus-always-read-dribble-file nil
-  "Uncoditionally read the dribble file.")
+;;; Internal variables
 
 (defvar gnus-newsrc-file-version nil)
 (defvar gnus-override-subscribe-method nil)
 
 (defvar gnus-newsrc-file-version nil)
 (defvar gnus-override-subscribe-method nil)
index 52eeb55..677bea3 100644 (file)
@@ -2860,25 +2860,24 @@ If NO-DISPLAY, don't generate a summary buffer."
 (defun gnus-dependencies-add-header (header dependencies force-new)
   "Enter HEADER into the DEPENDENCIES table if it is not already there.
 
 (defun gnus-dependencies-add-header (header dependencies force-new)
   "Enter HEADER into the DEPENDENCIES table if it is not already there.
 
-If FORCE-NEW is not NIL, enter HEADER into the DEPENDENCIES table even
+If FORCE-NEW is not nil, enter HEADER into the DEPENDENCIES table even
 if it was already present.
 
 if it was already present.
 
-If `gnus-summary-ignore-duplicates' is NIL then duplicate Message-IDs
+If `gnus-summary-ignore-duplicates' is nil then duplicate Message-IDs
 will not be entered in the DEPENDENCIES table.  Otherwise duplicate
 Message-IDs will be renamed be renamed to a unique Message-ID before
 being entered.
 
 will not be entered in the DEPENDENCIES table.  Otherwise duplicate
 Message-IDs will be renamed be renamed to a unique Message-ID before
 being entered.
 
-Returns HEADER if it was entered in the DEPENDENCIES. Returns NIL otherwise."
-
+Returns HEADER if it was entered in the DEPENDENCIES.  Returns nil otherwise."
   (let* ((id (mail-header-id header))
         (id-dep (and id (intern id dependencies)))
         ref ref-dep ref-header)
   (let* ((id (mail-header-id header))
         (id-dep (and id (intern id dependencies)))
         ref ref-dep ref-header)
-    ;; Enter this `header' in the `dependencies' table
+    ;; Enter this `header' in the `dependencies' table.
     (cond
      ((not id-dep)
       (setq header nil))
     (cond
      ((not id-dep)
       (setq header nil))
-     ;; The first two cases do the normal part : enter a new `header'
-     ;; in the `dependencies' table,
+     ;; The first two cases do the normal part: enter a new `header'
+     ;; in the `dependencies' table.
      ((not (boundp id-dep))
       (set id-dep (list header)))
      ((null (car (symbol-value id-dep)))
      ((not (boundp id-dep))
       (set id-dep (list header)))
      ((null (car (symbol-value id-dep)))
@@ -2886,10 +2885,9 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns NIL otherwise."
 
      ;; From here the `header' was already present in the
      ;; `dependencies' table.
 
      ;; From here the `header' was already present in the
      ;; `dependencies' table.
-
      (force-new
      (force-new
-      ;; Overrides an existing entry,
-      ;; Just set the header part of the entry.
+      ;; Overrides an existing entry;
+      ;; just set the header part of the entry.
       (setcar (symbol-value id-dep) header))
 
      ;; Renames the existing `header' to a unique Message-ID.
       (setcar (symbol-value id-dep) header))
 
      ;; Renames the existing `header' to a unique Message-ID.
@@ -2900,11 +2898,11 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns NIL otherwise."
           (list header))
       (mail-header-set-id header id))
 
           (list header))
       (mail-header-set-id header id))
 
-     ;;   - The last case ignores an existing entry, except it adds
-     ;;     any additional Xrefs (in case the two articles came from
-     ;;     different servers.
-     ;;     Also sets `header' to `nil' meaning that the
-     ;;     `dependencies' table was *not* modified.
+     ;; The last case ignores an existing entry, except it adds any
+     ;; additional Xrefs (in case the two articles came from different
+     ;; servers.
+     ;; Also sets `header' to `nil' meaning that the `dependencies'
+     ;; table was *not* modified.
      (t
       (mail-header-set-xref
        (car (symbol-value id-dep))
      (t
       (mail-header-set-xref
        (car (symbol-value id-dep))
@@ -2921,9 +2919,10 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns NIL otherwise."
                  (boundp ref-dep)
                  (setq ref-header (car (symbol-value ref-dep))))
        (if (string= id ref)
                  (boundp ref-dep)
                  (setq ref-header (car (symbol-value ref-dep))))
        (if (string= id ref)
-           ;; Yuk !  This is a reference loop.  Make the article be a
+           ;; Yuk!  This is a reference loop.  Make the article be a
            ;; root article.
            (progn
            ;; root article.
            (progn
+             (debug)
              (mail-header-set-references (car (symbol-value id-dep)) "none")
              (setq ref nil))
          (setq ref (gnus-parent-id (mail-header-references ref-header)))))
              (mail-header-set-references (car (symbol-value id-dep)) "none")
              (setq ref nil))
          (setq ref (gnus-parent-id (mail-header-references ref-header)))))
@@ -3003,7 +3002,8 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns NIL otherwise."
   ;; Look through the buffer of NOV lines and find the header to
   ;; ID.  Enter this line into the dependencies hash table, and return
   ;; the id of the parent article (if any).
   ;; Look through the buffer of NOV lines and find the header to
   ;; ID.  Enter this line into the dependencies hash table, and return
   ;; the id of the parent article (if any).
-  (let (found header)
+  (let ((deps gnus-newsgroup-dependencies)
+       found header)
     (prog1
        (save-excursion
          (set-buffer nntp-server-buffer)
     (prog1
        (save-excursion
          (set-buffer nntp-server-buffer)
@@ -3019,8 +3019,8 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns NIL otherwise."
            (when found
              (beginning-of-line)
              (and
            (when found
              (beginning-of-line)
              (and
-              (setq header (gnus-nov-parse-line (read (current-buffer))
-                                                gnus-newsgroup-dependencies))
+              (setq header (gnus-nov-parse-line
+                            (read (current-buffer)) deps))
               (gnus-parent-id (mail-header-references header))))))
       (when header
        (let ((number (mail-header-number header)))
               (gnus-parent-id (mail-header-references header))))))
       (when header
        (let ((number (mail-header-number header)))
@@ -3036,6 +3036,7 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns NIL otherwise."
 (defun gnus-build-all-threads ()
   "Read all the headers."
   (let ((gnus-summary-ignore-duplicates t)
 (defun gnus-build-all-threads ()
   "Read all the headers."
   (let ((gnus-summary-ignore-duplicates t)
+       (dependencies gnus-newsgroup-dependencies)
        found header article)
     (save-excursion
       (set-buffer nntp-server-buffer)
        found header article)
     (save-excursion
       (set-buffer nntp-server-buffer)
@@ -3043,9 +3044,9 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns NIL otherwise."
        (goto-char (point-min))
        (while (not (eobp))
          (ignore-errors
        (goto-char (point-min))
        (while (not (eobp))
          (ignore-errors
-           (setq article (read (current-buffer)))
-           (setq header (gnus-nov-parse-line article
-                                             gnus-newsgroup-dependencies)))
+           (setq article (read (current-buffer))
+                 header (gnus-nov-parse-line
+                         article dependencies)))
          (when header
            (push header gnus-newsgroup-headers)
            (if (memq (setq article (mail-header-number header))
          (when header
            (push header gnus-newsgroup-headers)
            (if (memq (setq article (mail-header-number header))
@@ -4391,10 +4392,10 @@ The resulting hash table is returned, or nil if no Xrefs were found."
            (setq id (mail-header-id header)
                  ref (gnus-parent-id (mail-header-references header))))
 
            (setq id (mail-header-id header)
                  ref (gnus-parent-id (mail-header-references header))))
 
-         (setq header
-               (gnus-dependencies-add-header header dependencies force-new))
-         (if header
-             (push header headers))
+         (when (setq header
+                     (gnus-dependencies-add-header
+                      header dependencies force-new))
+           (push header headers))
          (goto-char (point-max))
          (widen))
        (nreverse headers)))))
          (goto-char (point-max))
          (widen))
        (nreverse headers)))))
@@ -4417,14 +4418,12 @@ The resulting hash table is returned, or nil if no Xrefs were found."
 (defmacro gnus-nov-field ()
   '(buffer-substring (point) (if (gnus-nov-skip-field) (1- (point)) eol)))
 
 (defmacro gnus-nov-field ()
   '(buffer-substring (point) (if (gnus-nov-skip-field) (1- (point)) eol)))
 
-;; (defvar gnus-nov-none-counter 0)
-
 ;; This function has to be called with point after the article number
 ;; on the beginning of the line.
 ;; This function has to be called with point after the article number
 ;; on the beginning of the line.
-(defun gnus-nov-parse-line (number dependencies &optional force-new)
+(defsubst gnus-nov-parse-line (number dependencies &optional force-new)
   (let ((eol (gnus-point-at-eol))
        (buffer (current-buffer))
   (let ((eol (gnus-point-at-eol))
        (buffer (current-buffer))
-       header ref id id-dep ref-dep)
+       header)
 
     ;; overview: [num subject from date id refs chars lines misc]
     (unwind-protect
 
     ;; overview: [num subject from date id refs chars lines misc]
     (unwind-protect
@@ -4453,13 +4452,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
 
     (when gnus-alter-header-function
       (funcall gnus-alter-header-function header))
 
     (when gnus-alter-header-function
       (funcall gnus-alter-header-function header))
-
-    (setq id (mail-header-id header)
-         ref (gnus-parent-id (mail-header-references header)))
-
-    (gnus-dependencies-add-header header dependencies force-new)
-
-    header))
+    (gnus-dependencies-add-header header dependencies force-new)))
 
 ;; Goes through the xover lines and returns a list of vectors
 (defun gnus-get-newsgroup-headers-xover (sequence &optional
 
 ;; Goes through the xover lines and returns a list of vectors
 (defun gnus-get-newsgroup-headers-xover (sequence &optional
index 249367d..c726db0 100644 (file)
@@ -166,9 +166,10 @@ with some simple extensions.
     (when result
       (symbol-name result))))
 
     (when result
       (symbol-name result))))
 
-(defun gnus-current-topics ()
-  "Return a list of all current topics, lowest in hierarchy first."
-  (let ((topic (gnus-current-topic))
+(defun gnus-current-topics (&optional topic)
+  "Return a list of all current topics, lowest in hierarchy first.
+If TOPIC, start with that topic."
+  (let ((topic (or topic (gnus-current-topic)))
        topics)
     (while topic
       (push topic topics)
        topics)
     (while topic
       (push topic topics)
@@ -199,7 +200,8 @@ with some simple extensions.
                              active
                              (- (1+ (cdr active)) (car active))))
              clevel (or (gnus-info-level info)
                              active
                              (- (1+ (cdr active)) (car active))))
              clevel (or (gnus-info-level info)
-                        (if (member group gnus-zombie-list) gnus-level-zombie gnus-level-killed))))
+                        (if (member group gnus-zombie-list)
+                            gnus-level-zombie gnus-level-killed))))
       (and
        unread                          ; nil means that the group is dead.
        (<= clevel level)
       (and
        unread                          ; nil means that the group is dead.
        (<= clevel level)
@@ -324,27 +326,32 @@ with some simple extensions.
 
 (defun gnus-group-topic-parameters (group)
   "Compute the group parameters for GROUP taking into account inheritance from topics."
 
 (defun gnus-group-topic-parameters (group)
   "Compute the group parameters for GROUP taking into account inheritance from topics."
-  (let ((params-list (list (gnus-group-get-parameter group)))
-       topics params param out)
+  (let ((params-list (list (gnus-group-get-parameter group))))
     (save-excursion
       (gnus-group-goto-group group)
     (save-excursion
       (gnus-group-goto-group group)
-      (setq topics (gnus-current-topics))
-      (while topics
-       (push (gnus-topic-parameters (pop topics)) params-list))
-      ;; We probably have lots of nil elements here, so
-      ;; we remove them.  Probably faster than doing this "properly".
-      (setq params-list (delq nil params-list))
-      ;; Now we have all the parameters, so we go through them
-      ;; and do inheritance in the obvious way.
-      (while (setq params (pop params-list))
-       (while (setq param (pop params))
-         (when (atom param)
-           (setq param (cons param t)))
-         ;; Override any old versions of this param.
-         (setq out (delq (assq (car param) out) out))
-         (push param out)))
-      ;; Return the resulting parameter list.
-      out)))
+      (nconc params-list
+            (gnus-topic-hierarchical-parameters (gnus-current-topic))))))
+
+(defun gnus-topic-hierarchical-parameters (topic)
+  "Return a topic list computed for TOPIC."
+  (let ((topics (gnus-current-topics topic))
+       params-list param out params)
+    (while topics
+      (push (gnus-topic-parameters (pop topics)) params-list))
+    ;; We probably have lots of nil elements here, so
+    ;; we remove them.  Probably faster than doing this "properly".
+    (setq params-list (delq nil params-list))
+    ;; Now we have all the parameters, so we go through them
+    ;; and do inheritance in the obvious way.
+    (while (setq params (pop params-list))
+      (while (setq param (pop params))
+       (when (atom param)
+         (setq param (cons param t)))
+       ;; Override any old versions of this param.
+       (setq out (delq (assq (car param) out) out))
+       (push param out)))
+    ;; Return the resulting parameter list.
+    out))
 
 ;;; General utility functions
 
 
 ;;; General utility functions
 
@@ -406,7 +413,13 @@ If LOWEST is non-nil, list all newsgroups of level LOWEST or higher."
 If SILENT, don't insert anything.  Return the number of unread
 articles in the topic and its subtopics."
   (let* ((type (pop topicl))
 If SILENT, don't insert anything.  Return the number of unread
 articles in the topic and its subtopics."
   (let* ((type (pop topicl))
-        (entries (gnus-topic-find-groups (car type) list-level all lowest))
+        (entries (gnus-topic-find-groups
+                  (car type) list-level
+                  (or all
+                      (cdr (assq 'visible 
+                                 (gnus-topic-hierarchical-parameters
+                                  (car type)))))
+                  lowest))
         (visiblep (and (eq (nth 1 type) 'visible) (not silent)))
         (gnus-group-indentation
          (make-string (* gnus-topic-indent-level level) ? ))
         (visiblep (and (eq (nth 1 type) 'visible) (not silent)))
         (gnus-group-indentation
          (make-string (* gnus-topic-indent-level level) ? ))
index 7b28e53..3a0bf91 100644 (file)
@@ -54,8 +54,8 @@
 ;; Default viewing action rules
 
 (defcustom gnus-uu-default-view-rules
 ;; Default viewing action rules
 
 (defcustom gnus-uu-default-view-rules
-  '(("\\.te?xt$\\|\\.doc$\\|read.*me\\|\\.c?$\\|\\.h$\\|\\.bat$\\|\\.asm$\\|makefile" "cat %s | sed s/\r//g")
-    ("\\.pas$" "cat %s | sed s/\r//g")
+  '(("\\.te?xt$\\|\\.doc$\\|read.*me\\|\\.c?$\\|\\.h$\\|\\.bat$\\|\\.asm$\\|makefile" "cat %s | sed 's/\r$//'")
+    ("\\.pas$" "cat %s | sed 's/\r$//'")
     ("\\.[1-9]$" "groff -mandoc -Tascii %s | sed s/\b.//g")
     ("\\.\\(jpe?g\\|gif\\|tiff?\\|p[pgb]m\\|xwd\\|xbm\\|pcx\\)$" "xv")
     ("\\.tga$" "tgatoppm %s | xv -")
     ("\\.[1-9]$" "groff -mandoc -Tascii %s | sed s/\b.//g")
     ("\\.\\(jpe?g\\|gif\\|tiff?\\|p[pgb]m\\|xwd\\|xbm\\|pcx\\)$" "xv")
     ("\\.tga$" "tgatoppm %s | xv -")
index 17aaaae..d2d9680 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.11"
+(defconst gnus-version-number "5.6.12"
   "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)
index e64ad70..db77bcc 100644 (file)
@@ -241,7 +241,7 @@ nil means let mailer mail back a message to report errors."
   :type 'boolean)
 
 (defcustom message-generate-new-buffers t
   :type 'boolean)
 
 (defcustom message-generate-new-buffers t
-  "*Non-nil means that a new message buffer will be created whenever `mail-setup' is called.
+  "*Non-nil means that a new message buffer will be created whenever `message-setup' is called.
 If this is a function, call that function with three parameters:  The type,
 the to address and the group name.  (Any of these may be nil.)  The function
 should return the new buffer name."
 If this is a function, call that function with three parameters:  The type,
 the to address and the group name.  (Any of these may be nil.)  The function
 should return the new buffer name."
@@ -915,7 +915,7 @@ The cdr of ech entry is a function for applying the face to a region.")
     (Lines)
     (Expires)
     (Message-ID)
     (Lines)
     (Expires)
     (Message-ID)
-    (References . message-fill-header)
+    (References . message-shorten-references)
     (X-Mailer)
     (X-Newsreader))
   "Alist used for formatting headers.")
     (X-Mailer)
     (X-Newsreader))
   "Alist used for formatting headers.")
@@ -2999,6 +2999,24 @@ Headers already prepared in the buffer are not modified."
        (replace-match " " t t))
       (goto-char (point-max)))))
 
        (replace-match " " t t))
       (goto-char (point-max)))))
 
+(defun message-shorten-references (header references)
+  "Limit REFERENCES to be shorter than 988 characters."
+  (let ((max 988)
+       (cut 4)
+       refs)
+    (nnheader-temp-write nil
+      (insert references)
+      (goto-char (point-min))
+      (while (re-search-forward "<[^>]+>" nil t)
+       (push (match-string 0) refs))
+      (setq refs (nreverse refs))
+      (while (> (length (mapconcat 'identity refs " ")) max)
+       (when (< (length refs) (1+ cut))
+         (decf cut))
+       (setcdr (nthcdr cut refs) (cddr (nthcdr cut refs)))))
+    (insert (capitalize (symbol-name header)) ": "
+           (mapconcat 'identity refs " ") "\n")))
+
 (defun message-position-point ()
   "Move point to where the user probably wants to find it."
   (message-narrow-to-headers)
 (defun message-position-point ()
   "Move point to where the user probably wants to find it."
   (message-narrow-to-headers)
@@ -3655,7 +3673,8 @@ you."
        (same-window-buffer-names nil)
        (same-window-regexps nil))
     (message-pop-to-buffer (message-buffer-name "mail" to)))
        (same-window-buffer-names nil)
        (same-window-regexps nil))
     (message-pop-to-buffer (message-buffer-name "mail" to)))
-  (message-setup `((To . ,(or to "")) (Subject . ,(or subject "")))))
+  (let ((message-this-is-mail t))
+    (message-setup `((To . ,(or to "")) (Subject . ,(or subject ""))))))
 
 ;;;###autoload
 (defun message-mail-other-frame (&optional to subject)
 
 ;;;###autoload
 (defun message-mail-other-frame (&optional to subject)
@@ -3667,7 +3686,8 @@ you."
        (same-window-buffer-names nil)
        (same-window-regexps nil))
     (message-pop-to-buffer (message-buffer-name "mail" to)))
        (same-window-buffer-names nil)
        (same-window-regexps nil))
     (message-pop-to-buffer (message-buffer-name "mail" to)))
-  (message-setup `((To . ,(or to "")) (Subject . ,(or subject "")))))
+  (let ((message-this-is-mail t))
+    (message-setup `((To . ,(or to "")) (Subject . ,(or subject ""))))))
 
 ;;;###autoload
 (defun message-news-other-window (&optional newsgroups subject)
 
 ;;;###autoload
 (defun message-news-other-window (&optional newsgroups subject)
@@ -3679,8 +3699,9 @@ you."
        (same-window-buffer-names nil)
        (same-window-regexps nil))
     (message-pop-to-buffer (message-buffer-name "news" nil newsgroups)))
        (same-window-buffer-names nil)
        (same-window-regexps nil))
     (message-pop-to-buffer (message-buffer-name "news" nil newsgroups)))
-  (message-setup `((Newsgroups . ,(or newsgroups ""))
-                  (Subject . ,(or subject "")))))
+  (let ((message-this-is-news t))
+    (message-setup `((Newsgroups . ,(or newsgroups ""))
+                    (Subject . ,(or subject ""))))))
 
 ;;;###autoload
 (defun message-news-other-frame (&optional newsgroups subject)
 
 ;;;###autoload
 (defun message-news-other-frame (&optional newsgroups subject)
@@ -3692,8 +3713,9 @@ you."
        (same-window-buffer-names nil)
        (same-window-regexps nil))
     (message-pop-to-buffer (message-buffer-name "news" nil newsgroups)))
        (same-window-buffer-names nil)
        (same-window-regexps nil))
     (message-pop-to-buffer (message-buffer-name "news" nil newsgroups)))
-  (message-setup `((Newsgroups . ,(or newsgroups ""))
-                  (Subject . ,(or subject "")))))
+  (let ((message-this-is-news t))
+    (message-setup `((Newsgroups . ,(or newsgroups ""))
+                    (Subject . ,(or subject ""))))))
 
 ;;; underline.el
 
 
 ;;; underline.el
 
index 909e4f8..168d5f4 100644 (file)
@@ -75,6 +75,13 @@ parameter -- the gateway address.")
     (insert "To: " (nnheader-replace-chars-in-string newsgroups ?. ?-)
            "@" gateway "\n")))
 
     (insert "To: " (nnheader-replace-chars-in-string newsgroups ?. ?-)
            "@" gateway "\n")))
 
+(defun nngateway-mail2news-header-transformation (gateway)
+  "Transform the headers for sending to a mail2news gateway."
+  (message-remove-header "to")
+  (message-remove-header "cc")
+  (goto-char (point-min))
+  (insert "To: mail2news@" gateway "\n"))
+
 (nnoo-define-skeleton nngateway)
 
 (provide 'nngateway)
 (nnoo-define-skeleton nngateway)
 
 (provide 'nngateway)
index ccb00f7..9942658 100644 (file)
      (let ((files (nconc
                   (nnkiboze-score-file group)
                   (list (nnkiboze-nov-file-name)
      (let ((files (nconc
                   (nnkiboze-score-file group)
                   (list (nnkiboze-nov-file-name)
-                        (concat nnkiboze-directory
-                                (nnheader-translate-file-chars
-                                 (concat group ".newsrc")))))))
+                        (nnkiboze-nov-file-name ".newsrc")))))
        (while files
         (and (file-exists-p (car files))
              (file-writable-p (car files))
        (while files
         (and (file-exists-p (car files))
              (file-writable-p (car files))
@@ -358,10 +356,11 @@ Finds out what articles are to be part of the nnkiboze groups."
        (goto-char (1+ (match-beginning 0)))
        (insert prefix)))))
 
        (goto-char (1+ (match-beginning 0)))
        (insert prefix)))))
 
-(defun nnkiboze-nov-file-name ()
+(defun nnkiboze-nov-file-name (&optional suffix)
   (concat (file-name-as-directory nnkiboze-directory)
          (nnheader-translate-file-chars
   (concat (file-name-as-directory nnkiboze-directory)
          (nnheader-translate-file-chars
-          (concat (nnkiboze-prefixed-name nnkiboze-current-group) ".nov"))))
+          (concat (nnkiboze-prefixed-name nnkiboze-current-group)
+                  (or suffix ".nov")))))
 
 (provide 'nnkiboze)
 
 
 (provide 'nnkiboze)
 
index 516e8b1..7880e2f 100644 (file)
@@ -722,7 +722,7 @@ is a spool.  If not using procmail, return GROUP."
                                      (file-name-as-directory
                                       nnmail-procmail-directory)))
                                "\\([^/]*\\)"
                                      (file-name-as-directory
                                       nnmail-procmail-directory)))
                                "\\([^/]*\\)"
-                               (regexp-quote nnmail-procmail-suffix) "$")
+                               nnmail-procmail-suffix "$")
                        (expand-file-name file))
          (let ((procmail-group (substring (expand-file-name file)
                                           (match-beginning 1)
                        (expand-file-name file))
          (let ((procmail-group (substring (expand-file-name file)
                                           (match-beginning 1)
@@ -1069,7 +1069,18 @@ FUNC will be called with the group name to determine the article number."
        (goto-char (point-min))
        (while (re-search-forward "\\(\r?\n[ \t]+\\)+" nil t)
          (replace-match " " t t))
        (goto-char (point-min))
        (while (re-search-forward "\\(\r?\n[ \t]+\\)+" nil t)
          (replace-match " " t t))
+       ;; Nuke pathologically long headers.  Since Gnus applies
+       ;; pathologically complex regexps to the buffer, lines
+       ;; that are looong will take longer than the Universe's
+       ;; existence to process.
+       (goto-char (point-min))
+       (while (not (eobp))
+         (end-of-line)
+         (if (> (current-column) 1024)
+             (gnus-delete-line)
+           (forward-line 1)))
        ;; Allow washing.
        ;; Allow washing.
+       (goto-char (point-min))
        (run-hooks 'nnmail-split-hook)
        (if (and (symbolp nnmail-split-methods)
                 (fboundp nnmail-split-methods))
        (run-hooks 'nnmail-split-hook)
        (if (and (symbolp nnmail-split-methods)
                 (fboundp nnmail-split-methods))
index 1d8cfd1..67eafb7 100644 (file)
@@ -211,7 +211,8 @@ server there that you can connect to.  See also
 (defvoo nntp-server-list-active-group 'try)
 
 (eval-and-compile
 (defvoo nntp-server-list-active-group 'try)
 
 (eval-and-compile
-  (autoload 'nnmail-read-passwd "nnmail"))
+  (autoload 'nnmail-read-passwd "nnmail")
+  (autoload 'open-ssl-stream "ssl"))
 
 \f
 
 
 \f
 
@@ -845,6 +846,16 @@ password contained in '~/.nntp-authinfo'."
 (defun nntp-open-network-stream (buffer)
   (open-network-stream "nntpd" buffer nntp-address nntp-port-number))
 
 (defun nntp-open-network-stream (buffer)
   (open-network-stream "nntpd" buffer nntp-address nntp-port-number))
 
+(defun nntp-open-ssl-stream (buffer)
+  (let* ((ssl-program-arguments '("-connect" (concat host ":" service)))
+        (proc (open-ssl-stream "nntpd" buffer nntp-address nntp-port-number)))
+    (save-excursion
+      (set-buffer buffer)
+      (nntp-wait-for-string "^\r*20[01]")
+      (beginning-of-line)
+      (delete-region (point-min) (point))
+      proc)))
+
 (defun nntp-read-server-type ()
   "Find out what the name of the server we have connected to is."
   ;; Wait for the status string to arrive.
 (defun nntp-read-server-type ()
   "Find out what the name of the server we have connected to is."
   ;; Wait for the status string to arrive.
index 1e7d48d..d48080a 100644 (file)
@@ -1,3 +1,9 @@
+Wed Jun 24 00:37:32 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.texi (Auto Save): Addition.
+       (Mail-To-News Gateways): Addition.
+       (NNTP): Addition.
+
 Wed Jun  3 03:30:47 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
        * message.texi (Message Headers): Addition.
 Wed Jun  3 03:30:47 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
        * message.texi (Message Headers): Addition.
index 104e4c2..5c65731 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Gnus 5.6.11 Manual
+@settitle Gnus 5.6.12 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.11 Manual
+@title Gnus 5.6.12 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.11.
+This manual corresponds to Gnus 5.6.12.
 
 @end ifinfo
 
 
 @end ifinfo
 
@@ -931,6 +931,10 @@ into the directory where the @file{.newsrc} file is located.  (This is
 normally the user's home directory.)  The dribble file will get the same
 file permissions as the @code{.newsrc} file.
 
 normally the user's home directory.)  The dribble file will get the same
 file permissions as the @code{.newsrc} file.
 
+@vindex gnus-always-read-dribble-file
+If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will
+read the dribble file on startup without querying the user.
+
 
 @node The Active File
 @section The Active File
 
 @node The Active File
 @section The Active File
@@ -9029,14 +9033,18 @@ server.
 @findex nntp-open-network-stream
 @item nntp-open-connection-function
 @vindex nntp-open-connection-function
 @findex nntp-open-network-stream
 @item nntp-open-connection-function
 @vindex nntp-open-connection-function
-This function is used to connect to the remote system.  Three pre-made
-functions are @code{nntp-open-network-stream}, which is the default, and
-simply connects to some port or other on the remote system.  The other
-two are @code{nntp-open-rlogin}, which does an @samp{rlogin} on the
+This function is used to connect to the remote system.  Four pre-made
+functions are supplied:
+
+@table @code
+@item nntp-open-network-stream
+This is the default, and simply connects to some port or other on the
+remote system.
+
+@item nntp-open-rlogin
+Does an @samp{rlogin} on the
 remote system, and then does a @samp{telnet} to the @sc{nntp} server
 remote system, and then does a @samp{telnet} to the @sc{nntp} server
-available there, and @code{nntp-open-telnet}, which does a @samp{telnet}
-to the remote system and then another @samp{telnet} to get to the
-@sc{nntp} server.
+available there.
 
 @code{nntp-open-rlogin}-related variables:
 
 
 @code{nntp-open-rlogin}-related variables:
 
@@ -9057,6 +9065,10 @@ User name on the remote system.
 
 @end table
 
 
 @end table
 
+@item nntp-open-telnet
+Does a @samp{telnet} to the remote system and then another @samp{telnet}
+to get to the @sc{nntp} server.
+
 @code{nntp-open-telnet}-related variables:
 
 @table @code
 @code{nntp-open-telnet}-related variables:
 
 @table @code
@@ -9094,6 +9106,27 @@ This works for Solaris @code{telnet}, for instance.
 
 @end table
 
 
 @end table
 
+@findex nntp-open-ssl-stream
+@item nntp-open-ssl-stream
+Opens a connection to a server over a @dfn{secure} channel.  To use this
+you must have SSLay installed
+(@file{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL}, and you also need
+@file{ssl.el} (from the W3 distributeion, for instance).  You then
+define a server as follows:
+
+@lisp
+;; Type `C-c C-c' after you've finished editing.
+;;
+;; "snews" is port 563 and is predefined in our /etc/services
+;;
+(nntp "snews.bar.com"
+      (nntp-open-connection-function nntp-open-ssl-stream)
+      (nntp-port-number "snews")
+      (nntp-address "snews.bar.com"))
+@end lisp
+
+@end table
+
 @item nntp-end-of-line
 @vindex nntp-end-of-line
 String to use as end-of-line marker when talking to the @sc{nntp}
 @item nntp-end-of-line
 @vindex nntp-end-of-line
 String to use as end-of-line marker when talking to the @sc{nntp}
@@ -11019,6 +11052,24 @@ will get this @code{From} header inserted:
 To: alt-religion-emacs@@GATEWAY
 @end example
 
 To: alt-religion-emacs@@GATEWAY
 @end example
 
+The following pre-defined functions exist:
+
+@findex nngateway-simple-header-transformation
+@table @code
+
+@item nngateway-simple-header-transformation
+Creates a @code{To} header that looks like
+@var{newsgroup}@@@code{nngateway-address}.
+
+@findex nngateway-mail2news-header-transformation
+
+@item nngateway-mail2news-header-transformation
+Creates a @code{To} header that looks like
+@samp{mail2news}@@@code{nngateway-address}.
+
+@end table
+
+
 @end table
 
 So, to use this, simply say something like:
 @end table
 
 So, to use this, simply say something like:
@@ -15728,7 +15779,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.11.
+* Quassia Gnus::       Two times two is four, or Gnus 5.6.12.
 @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
@@ -16263,7 +16314,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.11:
+New features in Gnus 5.6.12:
 
 @itemize @bullet
 
 
 @itemize @bullet
 
index cdb63f4..3efd407 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Message 5.6.11 Manual
+@settitle Message 5.6.12 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.11 Manual
+@title Message 5.6.12 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.11.  Message is distributed with
+This manual corresponds to Message 5.6.12.  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.