From b19ab0bcf7b463d4b14b41bd23f2a5d62d03795a Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Tue, 4 Mar 1997 21:36:26 +0000 Subject: [PATCH] *** empty log message *** --- lisp/ChangeLog | 45 ++++++++++++++++++++++++++++++++++ lisp/gnus-art.el | 1 - lisp/gnus-group.el | 14 +++++------ lisp/gnus-salt.el | 9 +++---- lisp/gnus-score.el | 3 ++- lisp/gnus-spec.el | 3 +-- lisp/gnus-sum.el | 34 ++++++++++++++------------ lisp/gnus.el | 3 ++- lisp/message.el | 60 ++++++++++++++++++++++++++++++++++++++++++++-- lisp/nndoc.el | 2 +- lisp/nntp.el | 9 +++---- lisp/nnvirtual.el | 3 ++- lisp/nnweb.el | 8 ++++--- lisp/smiley.el | 19 ++++++++------- texi/ChangeLog | 8 +++++++ texi/gnus.texi | 9 ++++--- 16 files changed, 174 insertions(+), 56 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ff4a4b48e..258c1699d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,48 @@ +Sun Aug 25 23:09:18 1996 Lars Magne Ingebrigtsen + + * 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 + + * 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 + + * 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 + + * 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 + + * gnus.el: Red Gnus v0.14 is released. + Sun Aug 25 00:16:44 1996 Lars Magne Ingebrigtsen * gnus-util.el (gnus-prin1): New function. diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 6cfcac9e8..8df62243d 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -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. diff --git a/lisp/gnus-group.el b/lisp/gnus-group.el index 35daf9529..377c606ba 100644 --- a/lisp/gnus-group.el +++ b/lisp/gnus-group.el @@ -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 () diff --git a/lisp/gnus-salt.el b/lisp/gnus-salt.el index 5ccf02b9e..be9fd4979 100644 --- a/lisp/gnus-salt.el +++ b/lisp/gnus-salt.el @@ -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. diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index 9732f6f90..79c7985fc 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -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 diff --git a/lisp/gnus-spec.el b/lisp/gnus-spec.el index 193837700..e23b911cf 100644 --- a/lisp/gnus-spec.el +++ b/lisp/gnus-spec.el @@ -165,7 +165,6 @@ (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 @@ -188,7 +187,7 @@ (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)) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index ab459e3ec..dbc1c621b 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -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"))))) diff --git a/lisp/gnus.el b/lisp/gnus.el index 51fb59088..b80cb48eb 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -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) @@ -134,6 +134,7 @@ (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." diff --git a/lisp/message.el b/lisp/message.el index 4f3dc08de..1b3994803 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -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) diff --git a/lisp/nndoc.el b/lisp/nndoc.el index 30efcead8..b6f560c08 100644 --- a/lisp/nndoc.el +++ b/lisp/nndoc.el @@ -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.*:") diff --git a/lisp/nntp.el b/lisp/nntp.el index d54b4a406..4d6a40836 100644 --- a/lisp/nntp.el +++ b/lisp/nntp.el @@ -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)) diff --git a/lisp/nnvirtual.el b/lisp/nnvirtual.el index 201baab89..709f19716 100644 --- a/lisp/nnvirtual.el +++ b/lisp/nnvirtual.el @@ -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 diff --git a/lisp/nnweb.el b/lisp/nnweb.el index d5bd81a87..017e83917 100644 --- a/lisp/nnweb.el +++ b/lisp/nnweb.el @@ -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 @@ -188,7 +188,7 @@ (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)) @@ -211,7 +211,9 @@ (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)) diff --git a/lisp/smiley.el b/lisp/smiley.el index 6f71d05ba..9c6548e6a 100644 --- a/lisp/smiley.el +++ b/lisp/smiley.el @@ -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) diff --git a/texi/ChangeLog b/texi/ChangeLog index 1d19cd397..5c26561f5 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,11 @@ +Sun Aug 25 23:39:03 1996 Lars Magne Ingebrigtsen + + * gnus.texi: Include the version number. + +Sun Aug 25 21:31:33 1996 Lars Magne Ingebrigtsen + + * gnus.texi (Really Various Summary Commands): Addition. + Sat Aug 17 22:24:34 1996 Lars Magne Ingebrigtsen * gnus.texi (Startup Files): Addition. diff --git a/texi/gnus.texi b/texi/gnus.texi index c65d5a2d6..161fd718c 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -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) -- 2.25.1