*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 20:08:59 +0000 (20:08 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 20:08:59 +0000 (20:08 +0000)
lisp/ChangeLog
lisp/gnus.el
lisp/message.el
lisp/messcompat.el [new file with mode: 0644]
lisp/nnheader.el
lisp/nntp.el
texi/ChangeLog
texi/gnus.texi

index ec3de2e..ad0f027 100644 (file)
@@ -1,3 +1,50 @@
+Thu Jul  4 06:08:11 1996  Lars Magne Ingebrigtsen  <larsi@aegir.ifi.uio.no>
+
+       * nntp.el (nntp-open-telnet): Working function.
+       (nntp-telnet-parameters, (nntp-telnet-user-name,
+       nntp-telnet-passwd): New variables.
+
+       * gnus.el (gnus-summary-prepare-threads): Would infloop.
+       (gnus-summary-isearch-article): Don't go to the start of the
+       article. 
+
+Thu Jul  4 05:44:22 1996  Steven L. Baur  <steve@miranova.com>
+
+       * gnus.el (gnus-article-hide-pem): New command and keystroke.
+
+Thu Jul  4 05:00:58 1996  Lars Magne Ingebrigtsen  <larsi@aegir.ifi.uio.no>
+
+       * gnus.el (gnus-summary-local-variables): Init reffed to 0.
+       (gnus-set-global-variables): Set reffed.
+
+Wed Jul  3 06:15:28 1996  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el (gnus-reffed-article-number): Make buffer-local.
+
+Wed Jul  3 03:17:42 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
+
+       * gnus.el (gnus-article-setup-buffer): Make the original buffer go
+       away on exit.
+
+       * message.el (message-reply): Insert proper number of commas. 
+       (message-tokenize-header): Tokenize properly.
+
+Wed Jul  3 03:01:59 1996  Joe Wells  <jbw@cs.bu.edu>
+
+       * gnus.el (gnus-check-new-newsgroups): Doc fix.
+
+Wed Jul  3 02:58:09 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
+
+       * gnus.el: Gnus v5.2.33 is released.
+
+Wed Jul  3 00:27:35 1996  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+       * nnheader.el (nnheader-re-read-dir): Prefer efs over ange-ftp.
+
+Sun Jun 30 23:19:38 1996  Lars Magne Ingebrigtsen  <larsi@aegir.ifi.uio.no>
+
+       * gnus.el: Gnus v5.2.32 is released.
+
 Sun Jun 30 21:57:31 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
 
        * gnus.el (gnus-check-bogus-groups-hook): New hook.
index 3dbff5c..046f156 100644 (file)
@@ -540,15 +540,26 @@ whether it is read or not.")
   "*If non-nil, the \\<gnus-group-mode-map>\\[gnus-group-get-new-news-this-group] command will advance point to the next group.")
 
 (defvar gnus-check-new-newsgroups t
-  "*Non-nil means that Gnus will add new newsgroups at startup.
-If this variable is `ask-server', Gnus will ask the server for new
-groups since the last time it checked. This means that the killed list
-is no longer necessary, so you could set `gnus-save-killed-list' to
-nil.
-
-A variant is to have this variable be a list of select methods.         Gnus
-will then use the `ask-server' method on all these select methods to
-query for new groups from all those servers.
+  "*Non-nil means that Gnus will run gnus-find-new-newsgroups at startup.
+This normally finds new newsgroups by comparing the active groups the
+servers have already reported with those Gnus already knows, either alive
+or killed.
+
+When any of the following are true, gnus-find-new-newsgroups will instead
+ask the servers (primary, secondary, and archive servers) to list new
+groups since the last time it checked:
+  1. This variable is `ask-server'.
+  2. This variable is a list of select methods (see below).
+  3. `gnus-read-active-file' is nil or `some'.
+  4. A prefix argument is given to gnus-find-new-newsgroups interactively.
+
+Thus, if this variable is `ask-server' or a list of select methods or
+`gnus-read-active-file' is nil or `some', then the killed list is no
+longer necessary, so you could safely set `gnus-save-killed-list' to nil.
+
+This variable can be a list of select methods which Gnus will query with
+the `ask-server' method in addition to the primary, secondary, and archive
+servers.
 
 Eg.
   (setq gnus-check-new-newsgroups
@@ -1761,7 +1772,7 @@ variable (string, integer, character, etc).")
   "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
   "The mail address of the Gnus maintainers.")
 
-(defconst gnus-version-number "5.2.32"
+(defconst gnus-version-number "5.2.33"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
@@ -1981,7 +1992,7 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.")
     gnus-newsgroup-history gnus-newsgroup-ancient
     gnus-newsgroup-sparse
     (gnus-newsgroup-adaptive . gnus-use-adaptive-scoring)
-    gnus-newsgroup-adaptive-score-file
+    gnus-newsgroup-adaptive-score-file (gnus-reffed-article-number . -1)
     (gnus-newsgroup-expunged-tally . 0)
     gnus-cache-removable-articles gnus-newsgroup-cached
     gnus-newsgroup-data gnus-newsgroup-data-reverse
@@ -7166,6 +7177,7 @@ and the second element is the address."
     "s" gnus-article-hide-signature
     "c" gnus-article-hide-citation
     "p" gnus-article-hide-pgp
+    "P" gnus-article-hide-pem
     "\C-c" gnus-article-hide-citation-maybe)
 
   (gnus-define-keys (gnus-summary-wash-highlight-map "H" gnus-summary-wash-map)
@@ -7612,6 +7624,7 @@ This is all marks except unread, ticked, dormant, and expirable."
          (article-buffer gnus-article-buffer)
          (original gnus-original-article-buffer)
          (gac gnus-article-current)
+         (reffed gnus-reffed-article-number)
          (score-file gnus-current-score-file))
       (save-excursion
        (set-buffer gnus-group-buffer)
@@ -7624,6 +7637,7 @@ This is all marks except unread, ticked, dormant, and expirable."
        (setq gnus-summary-buffer summary)
        (setq gnus-article-buffer article-buffer)
        (setq gnus-original-article-buffer original)
+       (setq gnus-reffed-article-number reffed)
        (setq gnus-current-score-file score-file)))))
 
 (defun gnus-summary-last-article-p (&optional article)
@@ -8620,8 +8634,7 @@ or a straight list of headers."
           ;; If the article lies outside the current limit,
           ;; then we do not display it.
           ((and (not (memq number gnus-newsgroup-limit))
-                ;(not gnus-tmp-dummy-line)
-                )
+                (not gnus-tmp-dummy-line))
            (setq gnus-tmp-gathered
                  (nconc (mapcar
                          (lambda (h) (mail-header-number (car h)))
@@ -8907,7 +8920,6 @@ If READ-ALL is non-nil, all articles in the group are selected."
              gnus-newsgroup-end
              (mail-header-number
               (gnus-last-element gnus-newsgroup-headers))))
-      (setq gnus-reffed-article-number -1)
       ;; GROUP is successfully selected.
       (or gnus-newsgroup-headers t)))))
 
@@ -11252,7 +11264,7 @@ If REGEXP-P (the prefix) is non-nil, do regexp isearch."
   (gnus-summary-select-article)
   (gnus-configure-windows 'article)
   (gnus-eval-in-buffer-window gnus-article-buffer
-    (goto-char (point-min))
+    ;;(goto-char (point-min))
     (isearch-forward regexp-p)))
 
 (defun gnus-summary-search-article-forward (regexp &optional backward)
@@ -13615,6 +13627,7 @@ The following commands are available:
       (set-buffer (get-buffer-create gnus-original-article-buffer))
       (buffer-disable-undo (current-buffer))
       (setq major-mode 'gnus-original-article-mode)
+      (gnus-add-current-to-buffer-list)
       (make-local-variable 'gnus-original-article))
     (if (get-buffer name)
        (save-excursion
@@ -14350,6 +14363,35 @@ always hide."
            (gnus-hide-text (match-beginning 0) (match-end 0) props))
          (widen))))))
 
+(defun gnus-article-hide-pem (&optional arg)
+  "Toggle hiding of any PEM headers and signatures in the current article.
+If given a negative prefix, always show; if given a positive prefix,
+always hide."
+  (interactive (gnus-hidden-arg))
+  (unless (gnus-article-check-hidden-text 'pem arg)
+    (save-excursion
+      (set-buffer gnus-article-buffer)
+      (let ((props (nconc (list 'gnus-type 'pem) gnus-hidden-properties))
+           buffer-read-only end)
+       (widen)
+       (goto-char (point-min))
+       ;; hide the horrendously ugly "header".
+       (and (search-forward "\n-----BEGIN PRIVACY-ENHANCED MESSAGE-----\n"
+                            nil
+                            t)
+            (setq end (1+ (match-beginning 0)))
+            (gnus-hide-text
+             end
+             (if (search-forward "\n\n" nil t)
+                 (match-end 0)
+               (point-max))
+             props))
+       ;; hide the trailer as well
+       (and (search-forward "\n-----END PRIVACY-ENHANCED MESSAGE-----\n"
+                            nil
+                            t)
+            (gnus-hide-text (match-beginning 0) (match-end 0) props))))))
+
 (defun gnus-article-hide-signature (&optional arg)
   "Hide the signature in the current article.
 If given a negative prefix, always show; if given a positive prefix,
index d6bde1b..8c12673 100644 (file)
@@ -515,13 +515,16 @@ The cdr of ech entry is a function for applying the face to a region.")
 \",\" is used as the separator."
   (let ((regexp (format "[%s]+" (or separator ",")))
        (beg 1)
+       (first t)
        quoted elems)
     (save-excursion
       (message-set-work-buffer)
       (insert header)
       (goto-char (point-min))
       (while (not (eobp))
-       (forward-char 1)
+       (if first
+           (setq first nil)
+         (forward-char 1))
        (cond ((and (> (point) beg)
                    (or (eobp)
                        (and (looking-at regexp)
@@ -2468,10 +2471,9 @@ Headers already prepared in the buffer are not modified."
              (message-set-work-buffer)
              (unless never-mct
                (insert (or reply-to from "")))
-             (insert 
-              (if (bolp) "" ", ") (or to "")
-              (if mct (concat (if (bolp) "" ", ") mct) "")
-              (if cc (concat (if (bolp) "" ", ") cc) ""))
+             (insert (if (bolp) "" ", ") (or to ""))
+             (insert (if mct (concat (if (bolp) "" ", ") mct) ""))
+             (insert (if cc (concat (if (bolp) "" ", ") cc) ""))
              ;; Remove addresses that match `rmail-dont-reply-to-names'. 
              (insert (prog1 (rmail-dont-reply-to (buffer-string))
                        (erase-buffer)))
@@ -2480,7 +2482,7 @@ Headers already prepared in the buffer are not modified."
                    (mapcar
                     (lambda (addr)
                       (cons (mail-strip-quoted-names addr) addr))
-                    (nreverse (mail-parse-comma-list))))
+                    (message-tokenize-header (buffer-string))))
              (let ((s ccalist))
                (while s
                  (setq ccalist (delq (assoc (car (pop s)) s) ccalist)))))
diff --git a/lisp/messcompat.el b/lisp/messcompat.el
new file mode 100644 (file)
index 0000000..c178e20
--- /dev/null
@@ -0,0 +1,89 @@
+;;; messcompat.el --- making message mode compatible with mail mode
+;; Copyright (C) 1996 Free Software Foundation, Inc.
+
+;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+;; Keywords: mail, news
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; This file tries to provide backward compatability with sendmail.el
+;; for Message mode.  It should be used by simply adding 
+;;
+;; (require 'messcompat)
+;;
+;; to the .emacs file.  Loading it after Message mode has been
+;; loaded will have no effect.
+
+;;; Code:
+
+(require 'sendmail)
+
+(defvar message-from-style mail-from-style
+  "*Specifies how \"From\" headers look.
+
+If `nil', they contain just the return address like:
+       king@grassland.com
+If `parens', they look like:
+       king@grassland.com (Elvis Parsley)
+If `angles', they look like:
+       Elvis Parsley <king@grassland.com>
+
+Otherwise, most addresses look like `angles', but they look like
+`parens' if `angles' would need quoting and `parens' would not.")
+
+(defvar message-interactive mail-interactive
+  "Non-nil means when sending a message wait for and display errors.
+nil means let mailer mail back a message to report errors.")
+
+(defvar message-setup-hook mail-setup-hook
+  "Normal hook, run each time a new outgoing message is initialized.
+The function `message-setup' runs this hook.")
+
+(defvar message-mode-hook mail-mode-hook
+  "Hook run in message mode buffers.")
+
+(defvar message-indentation-spaces mail-indentation-spaces 
+  "*Number of spaces to insert at the beginning of each cited line.
+Used by `message-yank-original' via `message-yank-cite'.")
+
+(defvar message-cite-function (car mail-citation-hook)
+  "*Function for citing an original message.")
+
+(defvar message-signature mail-signature
+  "*String to be inserted at the end of the message buffer.
+If t, the `message-signature-file' file will be inserted instead.
+If a function, the result from the function will be used instead.
+If a form, the result from the form will be used instead.")
+
+;;;###autoload
+(defvar message-signature-file mail-signature-file
+  "*File containing the text inserted at end of message. buffer.")
+
+(defvar message-default-headers mail-default-headers
+  "*A string containing header lines to be inserted in outgoing messages.
+It is inserted before you edit the message, so you can edit or delete
+these lines.")
+
+(defvar message-send-hook mail-send-hook
+  "Hook run before sending messages.")
+
+(provide 'messcompat)
+
+;;; messcompat.el ends here
index 1c93816..5957002 100644 (file)
@@ -597,12 +597,12 @@ without formatting."
 (defvar efs-path-regexp)
 (defun nnheader-re-read-dir (path)
   "Re-read directory PATH if PATH is on a remote system."
-  (if (boundp 'ange-ftp-path-format)
-      (when (string-match (car ange-ftp-path-format) path)
-       (ange-ftp-re-read-dir path))
-    (if (boundp 'efs-path-regexp)
+    (if (or (fboundp 'efs-re-read-dir) (boundp 'efs-path-regexp))
        (when (string-match efs-path-regexp path)
-         (efs-re-read-dir path)))))
+         (efs-re-read-dir path))
+     (if (or (fboundp 'ange-ftp-re-read-dir) (boundp 'ange-ftp-path-format))
+      (when (string-match (car ange-ftp-path-format) path)
+       (ange-ftp-re-read-dir path)))))
 
 (fset 'nnheader-run-at-time 'run-at-time)
 (fset 'nnheader-cancel-timer 'cancel-timer)
index 8b34460..616583c 100644 (file)
@@ -92,13 +92,25 @@ does an rlogin on the remote system, and then does a telnet to the
 NNTP server available there (see nntp-rlogin-parameters).")
 
 (defvoo nntp-rlogin-parameters '("telnet" "${NNTPSERVER:=localhost}" "nntp")
-  "*Parameters to `nntp-open-login'.
+  "*Parameters to `nntp-open-rlogin'.
 That function may be used as `nntp-open-server-function'.  In that
 case, this list will be used as the parameter list given to rsh.")
 
 (defvoo nntp-rlogin-user-name nil
   "*User name on remote system when using the rlogin connect method.")
 
+(defvoo nntp-telnet-parameters '("exec" "telnet" "${NNTPSERVER:=localhost}" "nntp")
+  "*Parameters to `nntp-open-telnet'.
+That function may be used as `nntp-open-server-function'.  In that
+case, this list will be executed as a command after logging in
+via telnet.")
+
+(defvoo nntp-telnet-user-name nil
+  "User name to log in via telnet with.")
+
+(defvoo nntp-telnet-passwd nil
+  "Password to use to log in via telnet with.")
+
 (defvoo nntp-address nil
   "*The name of the NNTP server.")
 
@@ -1088,7 +1100,8 @@ If SERVICE, this this as the port number."
                   (condition-case nil
                       (nntp-wait-for-response "^[23].*\r?\n" 'slow)
                     (error nil)
-                    (quit nil)))
+                    ;(quit nil)
+                    ))
             (unless status
               (nntp-close-server-internal server)
               (nnheader-report 
@@ -1105,8 +1118,7 @@ If SERVICE, this this as the port number."
            ((null server)
             (nnheader-report 'nntp "NNTP server is not specified."))
            (t                          ; We couldn't open the server.
-            (nnheader-report 
-             'nntp (buffer-substring (point-min) (point-max)))))
+            (nnheader-report 'nntp (buffer-string))))
       (when timer 
        (nnheader-cancel-timer timer))
       (message "")
@@ -1186,23 +1198,52 @@ If SERVICE, this this as the port number."
                            nntp-rlogin-parameters " ")))))
     proc))
 
-(defun nntp-telnet-to-machine ()
-  (let (b)
-    (telnet "localhost")
+(defun nntp-wait-for-string (regexp)
+  "Wait until string arrives in the buffer."
+  (let ((buf (current-buffer)))
     (goto-char (point-min))
-    (while (not (re-search-forward "^login: *" nil t))
-      (sit-for 1)
-      (goto-char (point-min)))
-    (goto-char (point-max))
-    (insert "larsi")
-    (telnet-send-input)
-    (setq b (point))
-    (while (not (re-search-forward ">" nil t))
+    (while (not (re-search-forward regexp nil t))
+      (accept-process-output)
       (sit-for 1)
-      (goto-char b))
-    (goto-char (point-max))
-    (insert "ls")
-    (telnet-send-input)))
+      (set-buffer buf)
+      (goto-char (point-min)))))
+
+(defun nntp-open-telnet (server)
+  (save-excursion
+    (set-buffer nntp-server-buffer)
+    (erase-buffer)
+    (let ((proc (start-process
+                "nntpd" nntp-server-buffer "telnet"))
+         (case-fold-search t))
+      (when (memq (process-status proc) '(open run))
+       (process-send-string proc "set escape \^X\n")
+       (process-send-string proc (concat "open " server "\n"))
+       (nntp-wait-for-string "^\r*login:")
+       (process-send-string
+        proc (concat
+              (or nntp-telnet-user-name
+                  (setq nntp-telnet-user-name (read-string "login: ")))
+              "\n"))
+       (nntp-wait-for-string "^\r*password:")
+       (process-send-string
+        proc (concat
+              (or nntp-telnet-passwd
+                  (setq nntp-telnet-passwd
+                        (nnmail-read-passwd "Password: ")))
+              "\n"))
+       (erase-buffer)
+       (nntp-wait-for-string "bash\\|\$ *\r?$\\|> *\r?")
+       (process-send-string
+        proc (concat (mapconcat 'identity nntp-telnet-parameters " ") "\n"))
+       (nntp-wait-for-string "^\r*200")
+       (beginning-of-line)
+       (delete-region (point-min) (point))
+       (process-send-string proc "\^]")
+       (process-send-string proc "mode character\n")
+       (sit-for 2)
+       (forward-line 1)
+       (delete-region (point) (point-max)))
+      proc)))
 
 (defun nntp-close-server-internal (&optional server)
   "Close connection to news server."
@@ -1210,7 +1251,8 @@ If SERVICE, this this as the port number."
   (if nntp-server-process
       (delete-process nntp-server-process))
   (setq nntp-server-process nil)
-  (setq nntp-address ""))
+  ;(setq nntp-address "")
+  )
 
 (defun nntp-accept-response ()
   "Read response of server.
index 3055ee6..ccac24c 100644 (file)
@@ -1,3 +1,11 @@
+Thu Jul  4 05:45:32 1996  Lars Magne Ingebrigtsen  <larsi@aegir.ifi.uio.no>
+
+       * gnus.texi (Article Hiding): Addition.
+
+Wed Jul  3 03:07:08 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
+
+       * gnus.texi (Followups To Yourself): Deletia.
+
 Wed Jun 19 16:30:55 1996  Lars Magne Ingebrigtsen  <larsi@nipling.ifi.uio.no>
 
        * gnus.texi (Censorship): Removed.
index 4a8456d..8948f16 100644 (file)
@@ -5051,6 +5051,12 @@ Hide signature (@code{gnus-article-hide-signature}).
 @findex gnus-article-hide-pgp
 Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). 
 
+@item W W P
+@kindex W W P (Summary)
+@findex gnus-article-hide-pem
+Hide @sc{pem} (privacy enhavnced hessages) gruft
+(@code{gnus-article-hide-pem}).
+
 @item W W c
 @kindex W W c (Summary)
 @findex gnus-article-hide-citation
@@ -5168,7 +5174,9 @@ Treat overstrike (@code{gnus-article-treat-overstrike}).
 @item W w
 @kindex W w (Summary)
 @findex gnus-article-fill-cited-article
-Do word wrap (@code{gnus-article-fill-cited-article}).
+Do word wrap (@code{gnus-article-fill-cited-article}).  If you use this
+function in @code{gnus-article-display-hook}, it should be run fairly
+late and certainly after any highlighting.
 
 @item W c
 @kindex W c (Summary)
@@ -9586,8 +9594,7 @@ your own article.
 
 @vindex gnus-inews-article-hook
 These two functions are both primarily meant to be used in hooks like
-@code{gnus-inews-article-hook}.  
-
+@code{message-send-hook}.  
 
 @node Scoring Tips
 @section Scoring Tips