+Sun Aug 16 18:59:41 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Gnus v5.6.37 is released.
+
+1998-08-16 14:52:43 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.el: Autoload gnus-summary-wide-reply.
+
+ * gnus-sum.el (gnus-get-newsgroup-headers): Return the value of
+ In-Reply-To.
+
+ * gnus-msg.el (gnus-setup-message): Posting styles have to be
+ configured in message-mode-hook.
+
+ * nntp.el (nntp-connection-timeout): Restored.
+ (nntp-open-connection): Use it.
+
+1998-08-15 22:46:49 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-group.el (gnus-group-make-useful-group): Doc fix.
+
+ * gnus-art.el (gnus-article-push-button): Place point where you
+ click.
+
+1998-08-15 Mike McEwan <mike@lotusland.demon.co.uk>
+
+ * gnus-agent.el (gnus-agent-save-group-info): Update "groups" file
+ if `nntp-server-list-active-group' is nil.
+
+1998-08-15 00:35:03 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-score.el (gnus-summary-increase-score): Swap t and r.
+
+ * gnus-sum.el (gnus-remove-thread): Didn't work with sparse
+ threads.
+
+1998-08-14 François Pinard <pinard@iro.umontreal.ca>
+
+ * nndoc.el (nndoc-generate-mime-parts-head): Use original Subject,
+ Message-ID, and References in fully blown articles.
+
Fri Aug 14 23:03:51 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Gnus v5.6.36 is released.
(defun gnus-agent-save-group-info (method group active)
(when (gnus-agent-method-p method)
(let* ((gnus-command-method method)
- (file (gnus-agent-lib-file "active")))
+ (file (if nntp-server-list-active-group
+ (gnus-agent-lib-file "active")
+ (gnus-agent-lib-file "groups"))))
(gnus-make-directory (file-name-directory file))
(nnheader-temp-write file
(when (file-exists-p file)
(insert-file-contents file))
(goto-char (point-min))
- (when (re-search-forward (concat "^" (regexp-quote group) " ") nil t)
- (gnus-delete-line))
- (insert group " " (number-to-string (cdr active)) " "
- (number-to-string (car active)) "\n")))))
+ (if nntp-server-list-active-group
+ (progn
+ (when (re-search-forward
+ (concat "^" (regexp-quote group) " ") nil t)
+ (gnus-delete-line))
+ (insert group " " (number-to-string (cdr active)) " "
+ (number-to-string (car active)) "\n"))
+ (when (re-search-forward (concat (regexp-quote group) " ") nil t)
+ (gnus-delete-line))
+ (insert-buffer-substring nntp-server-buffer))))))
(defun gnus-agent-group-path (group)
"Translate GROUP into a path."
(let* ((pos (posn-point (event-start event)))
(data (get-text-property pos 'gnus-data))
(fun (get-text-property pos 'gnus-callback)))
+ (goto-char pos)
(when fun
(funcall fun data))))
(gnus-group-position-point)))
(defun gnus-group-make-useful-group (group method)
+ "Create one of the groups described in `gnus-useful-groups'."
(interactive
(let ((entry (assoc (completing-read "Create group: " gnus-useful-groups
nil t)
(copy-sequence message-header-setup-hook)))
(add-hook 'message-header-setup-hook 'gnus-inews-insert-gcc)
(add-hook 'message-header-setup-hook 'gnus-inews-insert-archive-gcc)
- (add-hook 'message-setup-hook 'gnus-configure-posting-styles)
+ (add-hook 'message-mode-hook 'gnus-configure-posting-styles)
(unwind-protect
(progn
,@forms)
(?b "body" "" nil body-string)
(?h "head" "" nil body-string)
(?i "message-id" nil t string)
- (?t "references" "message-id" nil string)
+ (?r "references" "message-id" nil string)
(?x "xref" nil nil string)
(?l "lines" nil nil number)
(?d "date" nil nil date)
(?f "followup" nil nil string)
- (?r "thread" nil nil string)))
+ (?t "thread" nil nil string)))
(char-to-type
'((?s s "substring" string)
(?e e "exact string" string)
"Remove the thread that has ID in it."
(let (headers thread last-id)
;; First go up in this thread until we find the root.
- (setq last-id (gnus-root-id id))
- (setq headers (list (car (gnus-id-to-thread last-id))
- (caadr (gnus-id-to-thread last-id))))
+ (setq last-id (gnus-root-id id)
+ headers (message-flatten-list (gnus-id-to-thread last-id)))
;; We have now found the real root of this thread. It might have
;; been gathered into some loose thread, so we have to search
;; through the threads to find the thread we wanted.
(setq ref2 (substring in-reply-to (match-beginning 0)
(match-end 0)))
(when (> (length ref2) (length ref))
- (setq ref ref2))))
+ (setq ref ref2)))
+ ref)
(setq ref nil))))
;; Chars.
(progn
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "5.6.36"
+(defconst gnus-version-number "5.6.37"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Gnus v%s" gnus-version-number)
gnus-post-news gnus-summary-reply gnus-summary-reply-with-original
gnus-summary-mail-forward gnus-summary-mail-other-window
gnus-summary-resend-message gnus-summary-resend-bounced-mail
+ gnus-summary-wide-reply
gnus-bug)
("gnus-picon" :interactive t gnus-article-display-picons
gnus-group-display-picons gnus-picons-article-display-x-face
(goto-char (point-min))
(nndoc-generate-mime-parts-head article t)))
-(defun nndoc-generate-mime-parts-head (article &optional full-subject)
- (let ((entry (cdr (assq article nndoc-dissection-alist))))
- (let ((subject (concat "<" (nth 5 entry) ">"))
+(defun nndoc-generate-mime-parts-head (article &optional body-present)
+ (let ((entry (cdr (assq (if body-present 1 article) nndoc-dissection-alist))))
+ (let ((subject (if body-present
+ nndoc-mime-subject
+ (concat "<" (nth 5 entry) ">")))
(message-id (nth 6 entry))
(references (nth 7 entry)))
- (insert nndoc-mime-header
- "Subject: "
- (cond ((not full-subject) subject)
- (nndoc-mime-subject (concat nndoc-mime-subject " " subject))
- (t subject))
- "\n")
+ (insert nndoc-mime-header)
+ (and subject (insert "Subject: " subject "\n"))
(and message-id (insert "Message-ID: " message-id "\n"))
(and references (insert "References: " references "\n")))))
\f
+(defvoo nntp-connection-timeout nil
+ "*Number of seconds to wait before an nntp connection times out.
+If this variable is nil, which is the default, no timers are set.")
+
;;; Internal variables.
(defvar nntp-record-commands nil
(ignore-errors
(nntp-send-string process "QUIT")
(unless (eq nntp-open-connection-function 'nntp-open-network-stream)
+ ;; Ok, this is evil, but when using telnet and stuff
+ ;; as the connection method, it's important that the
+ ;; QUIT command actually is sent out before we kill
+ ;; the process.
(sleep-for 1))))
(when (buffer-name (process-buffer process))
(kill-buffer (process-buffer process)))
"Open a connection to PORT on ADDRESS delivering output to BUFFER."
(run-hooks 'nntp-prepare-server-hook)
(let* ((pbuffer (nntp-make-process-buffer buffer))
+ (timer
+ (and nntp-connection-timeout
+ (nnheader-run-at-time
+ nntp-connection-timeout nil
+ `(lambda ()
+ (when (buffer-name ,pbuffer)
+ (kill-buffer ,pbuffer))))))
(process
(condition-case ()
(let ((coding-system-for-read nntp-coding-system-for-read)
(funcall nntp-open-connection-function pbuffer))
(error nil)
(quit nil))))
- (when process
+ (when timer
+ (nnheader-cancel-timer timer))
+ (when (and (buffer-name pbuffer)
+ process)
(process-kill-without-query process)
(nntp-wait-for process "^.*\n" buffer nil t)
(if (memq (process-status process) '(open run))
-@echo off
-
-rem Written by David Charlap <shamino@writeme.com>
-
-rem There are two catches, however. The emacs.bat batch file may not exist
-rem in all distributions. It is part of the Voelker build of Emacs 19.34
-rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html). If the user
-rem installs Gnus with some other build, he may have to replace calls to
-rem %1\emacs.bat with something else.
-rem
-rem Also, the emacs.bat file that Voelker ships does not accept more than 9
-rem parameters, so the attempts to compile the .texi files will fail. To
-rem fix that (at least on NT. I don't know about Win95), the following
-rem change should be made to emacs.bat:
-rem
-rem %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
-rem
-rem should become
-rem
-rem %emacs_dir%\bin\emacs.exe %*
-rem
-rem which will allow the batch file to accept an unlimited number of
-rem parameters.
-
-if "%1" == "" goto usage
-
-cd lisp
-call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile
-if not "%2" == "copy" goto info
-copy *.el* %1\lisp
-
-:info
-cd ..\texi
-call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
-call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
-if not "%2" == "copy" goto done
-copy gnus %1\info
-copy gnus-?? %1\info
-copy message %1\info
-
-:etc
-cd ..\etc
-copy gnus-tut.txt %1\etc
-
-:done
-cd ..
-goto end
-
-:usage
-echo Usage: make ^<emacs-dir^> [copy]
-echo.
-echo where: ^<emacs-dir^> is the directory you installed emacs in
-echo eg. d:\emacs\19.34
-echo copy indicates that the compiled files should be copied to your
-echo emacs lisp, info, and etc directories
-
-:end
+@echo off\r
+\r
+rem Written by David Charlap <shamino@writeme.com>\r
+\r
+rem There are two catches, however. The emacs.bat batch file may not exist\r
+rem in all distributions. It is part of the Voelker build of Emacs 19.34\r
+rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html). If the user\r
+rem installs Gnus with some other build, he may have to replace calls to\r
+rem %1\emacs.bat with something else.\r
+rem \r
+rem Also, the emacs.bat file that Voelker ships does not accept more than 9\r
+rem parameters, so the attempts to compile the .texi files will fail. To\r
+rem fix that (at least on NT. I don't know about Win95), the following\r
+rem change should be made to emacs.bat:\r
+rem \r
+rem %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9\r
+rem \r
+rem should become\r
+rem \r
+rem %emacs_dir%\bin\emacs.exe %*\r
+rem \r
+rem which will allow the batch file to accept an unlimited number of\r
+rem parameters.\r
+\r
+if "%1" == "" goto usage\r
+\r
+cd lisp\r
+call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile\r
+if not "%2" == "copy" goto info\r
+copy *.el* %1\lisp\r
+\r
+:info\r
+cd ..\texi\r
+call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer\r
+call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer\r
+if not "%2" == "copy" goto done\r
+copy gnus %1\info\r
+copy gnus-?? %1\info\r
+copy message %1\info\r
+\r
+:etc\r
+cd ..\etc\r
+copy gnus-tut.txt %1\etc\r
+\r
+:done\r
+cd ..\r
+goto end\r
+\r
+:usage\r
+echo Usage: make ^<emacs-dir^> [copy]\r
+echo.\r
+echo where: ^<emacs-dir^> is the directory you installed emacs in\r
+echo eg. d:\emacs\19.34\r
+echo copy indicates that the compiled files should be copied to your\r
+echo emacs lisp, info, and etc directories\r
+\r
+:end\r
+1998-08-16 14:53:45 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (NNTP): Reinstated.
+ (Asynchronous Fetching): No header prefetch.
+
+1998-08-15 13:01:41 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Summary Score Commands): Change.
+
1998-08-14 01:31:36 Simon Josefsson <jas@pdc.kth.se>
* gnus.texi (Posting Styles): New 'body style.
@synindex vr cp
@synindex pg cp
@c @direntry
-@c * Gnus: (gnus). The news reader Gnus.
+@c * Gnus: (gnus). The newsreader Gnus.
@c @end direntry
@iftex
@finalout
this command without a prefix, Gnus will guess at the file type.
@xref{Document Groups}.
+@item G u
+@kindex G u (Group)
+@vindex gnus-useful-groups
+@findex gnus-group-make-useful-group
+Create one of the groups mentioned in @code{gnus-useful-groups}
+(@code{gnus-group-make-useful-group}).
+
@item G w
@kindex G w (Group)
@findex gnus-group-make-web-group
The default value is @code{(read exit)}.
-@vindex gnus-use-header-prefetch
-If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
-from the next group.
+@c @vindex gnus-use-header-prefetch
+@c If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
+@c from the next group.
@node Article Caching
by the @code{nntp-maximum-request} variable, and is 400 by default. If
your network is buggy, you should set this to 1.
-@c @item nntp-connection-timeout
-@c @vindex nntp-connection-timeout
-@c If you have lots of foreign @code{nntp} groups that you connect to
-@c regularly, you're sure to have problems with @sc{nntp} servers not
-@c responding properly, or being too loaded to reply within reasonable
-@c time. This is can lead to awkward problems, which can be helped
-@c somewhat by setting @code{nntp-connection-timeout}. This is an integer
-@c that says how many seconds the @code{nntp} backend should wait for a
-@c connection before giving up. If it is @code{nil}, which is the default,
-@c no timeouts are done.
-@c
+@item nntp-connection-timeout
+@vindex nntp-connection-timeout
+If you have lots of foreign @code{nntp} groups that you connect to
+regularly, you're sure to have problems with @sc{nntp} servers not
+responding properly, or being too loaded to reply within reasonable
+time. This is can lead to awkward problems, which can be helped
+somewhat by setting @code{nntp-connection-timeout}. This is an integer
+that says how many seconds the @code{nntp} backend should wait for a
+connection before giving up. If it is @code{nil}, which is the default,
+no timeouts are done.
+
@c @item nntp-command-timeout
@c @vindex nntp-command-timeout
@c @cindex PPP connections
@item x
Score on the Xref line---i.e., the cross-posting line.
-@item t
-Score on thread---the References line.
+@item r
+Score on the References line.
@item d
Score on the date.
@item h
Score on the head.
+
+@item t
+Score on thead.
+
@end table
@item
Subject of article with @samp{Fwd:} prepended to it.
@end table
+@item message-wash-forwarded-subjects
+@vindex message-wash-forwarded-subjects
+If this variable is @code{t}, the subjects of forwarded messages have
+the evidence of previous forwards (such as @samp{Fwd:}, @samp{Re:},
+@samp{(fwd)}) removed before the new subject is
+constructed. The default value is @code{nil}.
+
@end table