*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 21:36:26 +0000 (21:36 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 21:36:26 +0000 (21:36 +0000)
16 files changed:
lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-group.el
lisp/gnus-salt.el
lisp/gnus-score.el
lisp/gnus-spec.el
lisp/gnus-sum.el
lisp/gnus.el
lisp/message.el
lisp/nndoc.el
lisp/nntp.el
lisp/nnvirtual.el
lisp/nnweb.el
lisp/smiley.el
texi/ChangeLog
texi/gnus.texi

index ff4a4b4..258c169 100644 (file)
@@ -1,3 +1,48 @@
+Sun Aug 25 23:09:18 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * message.el (message-send-mail-with-qmail): Use
+       `message-qmail-program', which doesn't exist.
+
+       * nndoc.el (nndoc-type-alist): Slack digests are guessable.
+
+Sun Aug 25 21:27:17 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
+
+       * gnus-salt.el (gnus-pick-mode): Nixed out the format.
+       (gnus-summary-pick-line-format): Buggy def.
+
+       * gnus-sum.el (gnus-summary-read-document): Provide a quit-conf.
+       (gnus-summary-read-document): Do better names.
+
+       * nnvirtual.el (nnvirtual-close-group): Don't do the unread
+       setting on ephemeral groups.
+
+       * nntp.el (nntp-retrieve-groups): Would infloop.
+
+Sun Aug 25 02:52:11 1996  Sudish Joseph  <sudish@MindSpring.COM>
+
+       * message.el (message-qmail-inject-program): New variable.
+       (message-qmail-inject-args): New variable.
+       (message-send-mail-with-qmail): New function, suitable for use
+       as message-send-mail-function.
+
+Sun Aug 25 20:41:45 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
+
+       * nnweb.el (nnweb-fetch-form): Clear buffer file name. 
+
+       * nntp.el (nntp-request-article): Would try to copy to the same
+       buffer. 
+
+       * gnus-group.el (gnus-group-read-ephemeral-group): Better error
+       message. 
+
+       * nnweb.el (nnweb-request-group): Better error report. 
+
+       * gnus-score.el (gnus-score-load-file): Gave `nil' as a day param.
+
+Sun Aug 25 03:32:51 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.el: Red Gnus v0.14 is released.
+
 Sun Aug 25 00:16:44 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
        * gnus-util.el (gnus-prin1): New function.
index 6cfcac9..8df6224 100644 (file)
@@ -890,7 +890,6 @@ If end of article, return non-nil.  Otherwise return nil.
 Argument LINES specifies lines to be scrolled up."
   (interactive "p")
   (move-to-window-line -1)
-  ;; Fixed by enami@ptgd.sony.co.jp (enami tsugutomo)
   (if (save-excursion
        (end-of-line)
        (and (pos-visible-in-window-p)  ;Not continuation line.
index 35daf95..377c606 100644 (file)
@@ -1299,14 +1299,13 @@ Returns whether the fetching was successful or not."
 
 ;; Enter a group that is not in the group buffer.  Non-nil is returned
 ;; if selection was successful.
-(defun gnus-group-read-ephemeral-group
-  (group method &optional activate quit-config request-only)
+(defun gnus-group-read-ephemeral-group (group method &optional activate 
+                                             quit-config request-only)
   "Read GROUP from METHOD as an ephemeral group.
 If ACTIVATE, request the group first.
-If QUIT-CONFIG, use that window configuration when
-exiting from the ephemeral group.
-If REQUEST-ONLY, don't actually read the group; just
-request it.
+If QUIT-CONFIG, use that window configuration when exiting from the
+ephemeral group.
+If REQUEST-ONLY, don't actually read the group; just request it.
 
 Return the name of the group is selection was successful."
   (let ((group (if (gnus-group-foreign-p group) group
@@ -1322,7 +1321,8 @@ Return the name of the group is selection was successful."
       (error "Unable to contact server: %s" (gnus-status-message method)))
     (when activate
       (unless (gnus-request-group group)
-       (error "Couldn't request group")))
+       (error "Couldn't request group: %s" 
+              (nnheader-get-report (car method)))))
     (if request-only
        group
       (condition-case ()
index 5ccf02b..be9fd49 100644 (file)
@@ -44,7 +44,7 @@
   "*If non-nil, mark all unpicked articles as read.")
 
 (defvar gnus-summary-pick-line-format
-  "%-5p %U\%R\%z\%I\%(%[%4L: %-20,20n%]%) %s\n"
+  "%-5P %U\%R\%z\%I\%(%[%4L: %-20,20n%]%) %s\n"
   "*The format specification of the lines in pick buffers.
 It accepts the same format specs that `gnus-summary-line-format' does.")
 
@@ -108,11 +108,8 @@ It accepts the same format specs that `gnus-summary-line-format' does.")
       (make-local-variable 'gnus-auto-select-first)
       (setq gnus-auto-select-first nil)
       ;; Change line format.
-      (make-local-variable 'gnus-summary-line-format)
-      (setq gnus-summary-line-format 
-           gnus-summary-pick-line-format)
-      (make-local-variable 'gnus-summary-line-format-spec)
-      (setq gnus-summary-line-format nil)
+      (setq gnus-summary-line-format gnus-summary-pick-line-format)
+      (setq gnus-summary-line-format-spec nil)
       (gnus-update-format-specifications nil 'summary)
       (gnus-update-summary-mark-positions)
       ;; Set up the menu.
index 9732f6f..79c7985 100644 (file)
@@ -984,7 +984,8 @@ SCORE is the score to add."
          (eval (car (gnus-score-get 'eval alist))))
       ;; Perform possible decays.
       (when (and gnus-decay-scores
-                (gnus-decay-scores alist decay))
+                (gnus-decay-scores 
+                 alist (or decay (gnus-time-to-day (current-time)))))
        (gnus-score-set 'touched '(t) alist)
        (gnus-score-set 'decay (list (gnus-time-to-day (current-time)))))
       ;; We do not respect eval and files atoms from global score
index 1938377..e23b911 100644 (file)
 (defun gnus-update-format-specifications (&optional force &rest types)
   "Update all (necessary) format specifications."
   ;; Make the indentation array.
-
   ;; See whether all the stored info needs to be flushed.
   (when (or force
            (not (equal emacs-version
          (setq new-format (symbol-value
                            (intern (format "gnus-%s-line-format" type))))))
       (setq entry (cdr (assq type gnus-format-specs)))
-      (if (and entry
+      (if (and (car entry)
               (equal (car entry) new-format))
          ;; Use the old format.
          (set (intern (format "gnus-%s-line-format-spec" type))
index ab459e3..dbc1c62 100644 (file)
@@ -419,6 +419,8 @@ variable.")
 The hook is intended to mark an article as read (or unread)
 automatically when it is selected.")
 
+;;; Internal variables
+
 (defvar gnus-summary-display-table 
   ;; Change the display table. Odd characters have a tendency to mess
   ;; up nicely formatted displays - we make all possible glyphs
@@ -444,8 +446,6 @@ automatically when it is selected.")
     table)
   "Display table used in summary mode buffers.")
 
-;;; Internal variables
-
 (defvar gnus-original-article nil)
 (defvar gnus-article-internal-prepare-hook nil)
 (defvar gnus-newsgroup-process-stack nil)
@@ -2202,7 +2202,8 @@ If NO-DISPLAY, don't generate a summary buffer."
       (run-hooks 'gnus-select-group-hook)
       ;; Set any local variables in the group parameters.
       (gnus-summary-set-local-parameters gnus-newsgroup-name)
-      (gnus-update-format-specifications)
+      (gnus-update-format-specifications
+       nil 'summary 'summary-mode 'summary-dummy)
       ;; Do score processing.
       (when gnus-use-scoring
        (gnus-possibly-score-headers))
@@ -4945,16 +4946,16 @@ article."
          (gnus-summary-display-article article)
        (gnus-eval-in-buffer-window gnus-article-buffer
          (setq endp (gnus-article-next-page lines)))
-       (if endp
-           (cond (circular
-                  (gnus-summary-beginning-of-article))
-                 (lines
-                  (gnus-message 3 "End of message"))
-                 ((null lines)
-                  (if (and (eq gnus-summary-goto-unread 'never)
-                           (not (gnus-summary-last-article-p article)))
-                      (gnus-summary-next-article)
-                    (gnus-summary-next-unread-article)))))))
+       (when endp
+         (cond (circular
+                (gnus-summary-beginning-of-article))
+               (lines
+                (gnus-message 3 "End of message"))
+               ((null lines)
+                (if (and (eq gnus-summary-goto-unread 'never)
+                         (not (gnus-summary-last-article-p article)))
+                    (gnus-summary-next-article)
+                  (gnus-summary-next-unread-article)))))))
     (gnus-summary-recenter)
     (gnus-summary-position-point)))
 
@@ -5633,9 +5634,12 @@ Obeys the standard process/prefix convention."
      ((not groups)
       (error "None of the articles could be interpreted as documents"))
      ((gnus-group-read-ephemeral-group
-       (setq vgroup (format "%s-%s" gnus-newsgroup-name (current-time-string)))
+       (setq vgroup (format
+                    "%s-%s" gnus-newsgroup-name
+                    (format-time-string "%Y%m%dT%H%M%S" (current-time))))
        `(nnvirtual ,vgroup (nnvirtual-component-groups ,groups))
-       t))
+       t
+       (cons (current-buffer) 'summary)))
      (t
       (error "Couldn't select virtual nndoc group")))))
       
index 51fb590..b80cb48 100644 (file)
@@ -28,7 +28,7 @@
 
 (eval '(run-hooks 'gnus-load-hook))
 
-(defconst gnus-version-number "0.14"
+(defconst gnus-version-number "0.15"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Red Gnus v%s" gnus-version-number)
 (defmacro gnus-sethash (string value hashtable)
   "Set hash value.  Arguments are STRING, VALUE, and HASHTABLE."
   `(set (intern ,string ,hashtable) ,value))
+(put 'nnheader-temp-write 'edebug-form-spec '(form form form))
 
 (defmacro gnus-group-unread (group)
   "Get the currently computed number of unread articles in GROUP."
index 4f3dc08..1b39948 100644 (file)
@@ -203,8 +203,8 @@ If nil, message won't autosave.")
 The headers should be delimited by a line whose contents match the
 variable `mail-header-separator'.
 
-Legal values include `message-send-mail-with-mh' and
-`message-send-mail-with-sendmail', which is the default.")
+Legal values include `message-send-mail-with-sendmail' (the default),
+`message-send-mail-with-mh' and `message-send-mail-with-qmail'.")
 
 ;;;###autoload
 (defvar message-send-news-function 'message-send-news
@@ -238,6 +238,18 @@ using the \"poster\" value.  If it is the symbol `ask', query the user
 whether to ignore the \"poster\" value.  If it is the symbol `use',
 always use the value.")
 
+;; qmail-related stuff
+(defvar message-qmail-inject-program "/var/qmail/bin/qmail-inject"
+  "Location of the qmail-inject program.")
+
+(defvar message-qmail-inject-args nil
+  "Arguments passed to qmail-inject programs.
+This should be a list of strings, one string for each argument.
+
+For e.g., if you wish to set the envelope sender address so that bounces
+go to the right place or to deal with listserv's usage of that address, you
+might set this variable to '(\"-f\" \"you@some.where\").")
+
 (defvar gnus-post-method)
 (defvar gnus-select-method)
 ;;;###autoload
@@ -373,6 +385,9 @@ these lines.")
 The value should be an expression to test whether the problem will
 actually occur.")
 
+;;; Internal variables.
+;;; Well, not really internal.
+
 (defvar message-mode-syntax-table 
   (let ((table (copy-syntax-table text-mode-syntax-table)))
     (modify-syntax-entry ?% ". " table)
@@ -1434,6 +1449,47 @@ the user from the mailer."
       (when (bufferp errbuf)
        (kill-buffer errbuf)))))
 
+(defun message-send-mail-with-qmail ()
+  "Pass the prepared message buffer to qmail-inject.
+Refer to the documentation for the variable `message-send-mail-function'
+to find out how to use this."
+  ;; replace the header delimiter with a blank line
+  (goto-char (point-min))
+  (re-search-forward
+   (concat "^" (regexp-quote mail-header-separator) "\n"))
+  (replace-match "\n")
+  ;; send the message
+  (case
+      (apply
+       'call-process-region 1 (point-max) message-qmail-inject-program
+       nil nil nil
+       ;; qmail-inject's default behaviour is to look for addresses on the
+       ;; command line; if there're none, it scans the headers.
+       ;; yes, it does The Right Thing w.r.t. Resent-To and it's kin.
+       ;;
+       ;; in general, ALL of qmail-inject's defaults are perfect for simply
+       ;; reading a formatted (i.e., at least a To: or Resent-To header)
+       ;; message from stdin.
+       ;;
+       ;; qmail also has the advantage of not having being raped by
+       ;; various vendors, so we don't have to allow for that, either --
+       ;; compare this with message-send-mail-with-sendmail and weep 
+       ;; for sendmail's lost innocence.
+       ;;
+       ;; all this is way cool coz it lets us keep the arguments entirely
+       ;; free for -inject-arguments -- a big win for the user and for us
+       ;; since we don't have to play that double-guessing game and the user
+       ;; gets full control (no gestapo'ish -f's, for instance). --sj
+       message-qmail-inject-args)
+    ;; qmail-inject doesn't say anything on it's stdout/stderr,
+    ;; we have to look at the retval instead
+    (0 nil)
+    (1   (error "qmail-inject reported permanent failure."))
+    (111 (error "qmail-inject reported transient failure."))
+    ;; should never happen
+    (t   (error "qmail-inject reported unknown failure."))))
+
+
 (defun message-send-mail-with-mh ()
   "Send the prepared message buffer with mh."
   (let ((mh-previous-window-config nil)
index 30efcea..b6f560c 100644 (file)
@@ -96,7 +96,7 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf', `forward',
      (body-begin . "^ ?$")
      (file-end . "^End of")
      (prepare-body-function . nndoc-unquote-dashes)
-     (subtype digest))  ;; impossible to really guess?
+     (subtype digest guess))
     (lanl-gov-announce
       (article-begin . "^\\\\\\\\\n")
       (head-begin . "^Paper.*:")
index d54b4a4..4d6a408 100644 (file)
@@ -243,7 +243,7 @@ server there that you can connect to. See also `nntp-open-connection-function'")
   "Retrieve group info on GROUPS."
   (nntp-possibly-change-group nil server)
   (save-excursion
-    (set-buffer nntp-server-buffer)
+    (set-buffer (nntp-find-connection-buffer nntp-server-buffer))
     ;; The first time this is run, this variable is `try'.  So we
     ;; try.   
     (when (eq nntp-server-list-active-group 'try)
@@ -295,12 +295,12 @@ server there that you can connect to. See also `nntp-open-connection-function'")
        (while (re-search-forward "^[.2-5]" nil t)
          (delete-region (match-beginning 0) 
                         (progn (forward-line 1) (point))))
+       (copy-to-buffer nntp-server-buffer (point-min) (point-max))
        'active))))
 
- (defun nntp-try-list-active (group)
+(defun nntp-try-list-active (group)
   (nntp-list-active-group group)
   (save-excursion
-    (set-buffer nntp-server-buffer)
     (goto-char (point-min))
     (cond ((looking-at "5[0-9]+")
           (setq nntp-server-list-active-group nil))
@@ -317,7 +317,8 @@ server there that you can connect to. See also `nntp-open-connection-function'")
   (when (nntp-send-command-and-decode
         "\r?\n\\.\r?\n" "ARTICLE"
         (if (numberp article) (int-to-string article) article))
-    (when buffer
+    (when (and buffer
+              (not (equal buffer nntp-server-buffer)))
       (save-excursion
        (set-buffer nntp-server-buffer)
        (copy-to-buffer buffer (point-min) (point-max))
index 201baab..709f197 100644 (file)
@@ -241,7 +241,8 @@ virtual group.")
   mark)
     
 (deffoo nnvirtual-close-group (group &optional server)
-  (when (nnvirtual-possibly-change-server server)
+  (when (and (nnvirtual-possibly-change-server server)
+            (not (gnus-ephemeral-group-p group)))
     ;; Copy (un)read articles.
     (nnvirtual-update-reads)
     ;; We copy the marks from this group to the component
index d5bd81a..017e839 100644 (file)
@@ -91,7 +91,7 @@
     (funcall (nnweb-definition 'map)))
   (cond
    ((not nnweb-articles)
-    (nnheader-report 'nnweb "Couldn't request search"))
+    (nnheader-report 'nnweb "No matching articles"))
    (t
     (nnheader-report 'nnweb "Opened group %s" group)
     (nnheader-insert
        (old-asynch url-be-asynchronous)
        (url-request-data nil)
        (url-request-extra-headers nil)
-       (url-working-buffer (generate-new-buffer-name " *dejanews*")))
+       (url-working-buffer (generate-new-buffer-name " *nnweb*")))
     (setq-default url-be-asynchronous t)
     (save-excursion
       (set-buffer (get-buffer-create url-working-buffer))
        (url-request-method 'POST)
        (url-request-extra-headers 
         '(("Content-type" . "application/x-www-form-urlencoded"))))
-    (url-insert-file-contents url)))
+    (prog1
+       (url-insert-file-contents url)
+      (setq buffer-file-name nil))))
 
 (defun nnweb-decode-entities ()
   (goto-char (point-min))
index 6f71d05..9c6548e 100644 (file)
@@ -37,7 +37,7 @@
 
 (require 'annotations)
 (require 'messagexmas)
-(eval-when-compile (require 'cl))
+(require 'cl)
 
 (defvar smiley-data-directory (message-xmas-find-glyph-directory "smilies")
   "Location of the smiley faces files.")
@@ -143,12 +143,12 @@ If this is a symbol, take its value.")
        (when (extentp (setq ext (extent-property ant 'smiley-extent)))
          (set-extent-property ext 'invisible nil)
          (hide-annotation ant))
-      (if pt
-         (while (setq ext (extent-at pt (event-buffer event) nil ext 'at))
-           (when (annotationp (setq ant 
-                                    (extent-property ext 'smiley-annotation)))
-             (reveal-annotation ant)
-             (set-extent-property ext 'invisible t)))))))
+      (when pt
+       (while (setq ext (extent-at pt (event-buffer event) nil ext 'at))
+         (when (annotationp (setq ant 
+                                  (extent-property ext 'smiley-annotation)))
+           (reveal-annotation ant)
+           (set-extent-property ext 'invisible t)))))))
 
 ;;;###autoload
 (defun smiley-buffer (&optional buffer st nd)
@@ -180,11 +180,12 @@ If this is a symbol, take its value.")
                (let ((ext (make-extent start end))
                      (ant (make-annotation glyph end 'text)))
                  ;; set text extent params
-                 (set-extent-property ext 'invisible t)
                  (set-extent-property ext 'end-open t)
+                 (set-extent-property ext 'start-open t)
+                 (set-extent-property ext 'invisible t)
                  (set-extent-property ext 'keymap smiley-map)
                  (set-extent-property ext 'mouse-face gnus-article-mouse-face)
-;                (set-extent-property ext 'intangible t)
+                 (set-extent-property ext 'intangible t)
                  ;; set annotation params
                  (set-extent-property ant 'mouse-face gnus-article-mouse-face)
                  (set-extent-property ant 'keymap smiley-map)
index 1d19cd3..5c26561 100644 (file)
@@ -1,3 +1,11 @@
+Sun Aug 25 23:39:03 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.texi: Include the version number.
+
+Sun Aug 25 21:31:33 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
+
+       * gnus.texi (Really Various Summary Commands): Addition.
+
 Sat Aug 17 22:24:34 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
 
        * gnus.texi (Startup Files): Addition.
index c65d5a2..161fd71 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Red Gnus Manual
+@settitle Red Gnus 0.15 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -230,7 +230,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Red Gnus Manual
+@title Red Gnus 0.15 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -6286,7 +6286,10 @@ command understands the process/prefix convention
 @item C-t
 @kindex C-t (Summary)
 @findex gnus-summary-toggle-truncation
-Toggle truncation of summary lines (@code{gnus-summary-toggle-truncation}).
+Toggle truncation of summary lines
+(@code{gnus-summary-toggle-truncation}).  This will probably confuse the
+line centering function in the summary buffer, so it's not a good idea
+to have truncation switched off while reading articles.
 
 @item =
 @kindex = (Summary)