+1998-08-23 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
+
+ * lisp/gnus.el (gnus-version-number): Update to 6.8.7.
+
+ * Sync up with Gnus 5.6.39.
+
1998-08-16 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
* lisp/message.el: Suppress some byte-compile warnings.
+Sat Aug 22 10:28:25 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Gnus v5.6.39 is released.
+
+1998-08-22 10:06:03 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (gnus-ignored-headers): Added more headers.
+
+1998-08-21 02:49:56 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnweb.el (nnweb-type): Doc fix.
+
+ * gnus-sum.el (gnus-summary-set-process-mark): Move to the right
+ article.
+
+1998-08-20 23:10:01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnmail.el (nnmail-spool-file): Allow lists of files.
+
+1998-08-20 Per Starback <starback@update.uu.se>
+
+ * gnus/gnus-start.el (gnus-check-first-time-used): Change current
+ buffer before creating help group.
+
+1998-08-20 01:33:08 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-msg.el (gnus-message-style-insertions): New variable.
+ (gnus-message-insert-stylings): New function.
+ (gnus-configure-posting-styles): Use them.
+
+ * gnus-topic.el (gnus-topic-mode): Don't alter summary-exit-hook.
+
+ * gnus-sum.el (gnus-select-newsgroup): Don't update group.
+
+ * gnus-msg.el (gnus-setup-message): Bind message-mode-hook.
+ (gnus-inhibit-posting-styles): New variable.
+ (gnus-summary-reply): Use it.
+ (gnus-configure-posting-styles): Ditto.
+
+ * gnus-group.el (gnus-group-suspend): Don't kill dribble buffer.
+
+Thu Aug 20 00:28:35 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Gnus v5.6.38 is released.
+
+1998-08-20 00:02:50 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.el (message-mail): Doc fix.
+
+1998-08-19 23:22:02 Bill Pringlemeir <bpringle@my-dejanews.com>
+
+ * messcompat.el (message-send-mail-function): Initialized from
+ send-mail-function.
+
+1998-08-19 23:20:42 Martin Larose <larosem@IRO.UMontreal.CA>
+
+ * message.el (message-send-coding-system): New variable.
+
+1998-08-19 19:00:37 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-msg.el (gnus-configure-posting-styles): Reinstated most of
+ old code.
+
+ * gnus-start.el (gnus-save-newsrc-file): Use coding system.
+
+1980-06-08 03:53:56 Mike McEwan <mike@lotusland.demon.co.uk>
+
+ * gnus-agent.el (gnus-agent-braid-nov): Go to right place.
+
+1980-06-08 03:01:48 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
+
+ * gnus-group.el (gnus-group-suspend): Fix.
+
+1998-08-18 00:25:11 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-cite.el (gnus-cited-opened-text-button-line-format-alist):
+ New n spec.
+
+ * gnus-group.el (gnus-group-suspend): Use mapcar.
+
+1998-08-17 14:35:33 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-ems.el (gnus-add-minor-mode): Set mode var.
+
+ * gnus-start.el (gnus-slave-mode): New function.
+
+ * gnus-msg.el (gnus-post-method): Work with current in nndraft.
+
+1998-08-16 23:30:14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (gnus-request-article-this-buffer): Allow recursive
+ selection of nneething groups.
+
+ * nneething.el (nneething-address): Renamed from directory.
+
+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."
(set-buffer nntp-server-buffer)
(erase-buffer)
(nnheader-insert-file-contents file)
- (goto-char (point-min))
+ (goto-char (point-max))
(if (or (= (point-min) (point-max))
(progn
(forward-line -1)
:group 'gnus-article)
(defcustom gnus-ignored-headers
- '("^Path:" "^Posting-Version:" "^Article-I.D.:" "^Expires:"
- "^Date-Received:" "^References:" "^Control:" "^Xref:" "^Lines:"
- "^Posted:" "^Relay-Version:" "^Message-ID:" "^Nf-ID:" "^Nf-From:"
- "^Approved:" "^Sender:" "^Received:" "^Mail-from:")
+ '("^Path:" "^Expires:" "^Date-Received:" "^References:" "^Xref:" "^Lines:"
+ "^Relay-Version:" "^Message-ID:" "^Approved:" "^Sender:" "^Received:"
+ "^X-UIDL:" "^MIME-Version:" "^Return-Path:" "^In-Reply-To:"
+ "^Content-Type:" "^Content-Transfer-Encoding:" "^X-WebTV-Signature:"
+ "^X-MimeOLE:" "^X-MSMail-Priority:" "^X-Priority:" "^X-Loop:"
+ "^X-Authentication-Warning:" "^X-MIME-Autoconverted:" "^X-Face:"
+ "^X-Attribution:" "^X-Originating-IP:" "^Delivered-To:"
+ "^NNTP-[-A-Za-z]*:" "^Distribution:" "^X-no-archive:" "^X-Trace:"
+ "^X-Complaints-To:" "^X-NNTP-Posting-Host:" "^X-Orig.*:"
+ "^Abuse-Reports-To:" "^Cache-Post-Path:" "^X-Article-Creation-Date:"
+ "^X-Poster:" "^X-Mail2News-Path:" "^X-Server-Date:" "^X-Cache:"
+ "^Originator:" "^X-Problems-To:" "^X-Auth-User:" "^X-Post-Time:"
+ "^X-Admin:" "^X-UID:")
"*All headers that start with this regexp will be hidden.
This variable can also be a list of regexps of headers to be ignored.
If `gnus-visible-headers' is non-nil, this variable will be ignored."
(unless (memq article gnus-newsgroup-sparse)
(gnus-error 1
"No such article (may have expired or been canceled)")))))
- (if (or (eq result 'pseudo) (eq result 'nneething))
+ (if (or (eq result 'pseudo)
+ (eq result 'nneething))
(progn
(save-excursion
(set-buffer summary-buffer)
gnus-newsgroup-name)))
(when (and (eq (car method) 'nneething)
(vectorp header))
- (let ((dir (concat (file-name-as-directory (nth 1 method))
- (mail-header-subject header))))
+ (let ((dir (concat
+ (file-name-as-directory
+ (or (cadr (assq 'nneething-address method))
+ (nth 1 method)))
+ (mail-header-subject header))))
(when (file-directory-p dir)
(setq article 'nneething)
(gnus-group-enter-directory dir))))))))
(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))))
(defvar gnus-cited-opened-text-button-line-format-alist
`((?b (marker-position beg) ?d)
(?e (marker-position end) ?d)
+ (?n (count-lines beg end) ?d)
(?l (- end beg) ?d)))
(defvar gnus-cited-opened-text-button-line-format-spec nil)
(defvar gnus-cited-closed-text-button-line-format-alist
(defun gnus-add-minor-mode (mode name map)
(if (fboundp 'add-minor-mode)
(add-minor-mode mode name map)
+ (set (make-local-variable mode) t)
(unless (assq mode minor-mode-alist)
(push `(,mode ,name) minor-mode-alist))
(unless (assq mode minor-mode-map-alist)
(add-hook 'post-command-hook 'gnus-clear-inboxes-moved nil t)
(when gnus-use-undo
(gnus-undo-mode 1))
+ (when gnus-slave
+ (gnus-slave-mode))
(gnus-run-hooks 'gnus-group-mode-hook))
(defun gnus-update-group-mark-positions ()
(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)
The hook gnus-suspend-gnus-hook is called before actually suspending."
(interactive)
(gnus-run-hooks 'gnus-suspend-gnus-hook)
- ;; Kill Gnus buffers except for group buffer and dribble buffer.
+ ;; Kill Gnus buffers except for group mode buffer.
(let ((group-buf (get-buffer gnus-group-buffer)))
- (mapcar (function kill-buffer)
- (delete group-buf
- (delete gnus-dribble-buffer
- (append (gnus-buffers) nil))))
+ (mapcar (lambda (buf)
+ (unless (member buf (list group-buf gnus-dribble-buffer))
+ (kill-buffer buf)))
+ (gnus-buffers))
(gnus-kill-gnus-frames)
(when group-buf
(bury-buffer group-buf)
(gnus-group-real-name group) article))))
(defun gnus-request-update-mark (group article mark)
- "Return the type (`post' or `mail') of GROUP (and ARTICLE)."
+ "Allow the backend to change the mark the user tries to put on an article."
(let ((gnus-command-method (gnus-find-method-for-group group)))
(if (not (gnus-check-backend-function
'request-update-mark (car gnus-command-method)))
;;; Internal variables.
+(defvar gnus-inhibit-posting-styles nil
+ "Inhibit the use of posting styles.")
+
(defvar gnus-message-buffer "*Mail Gnus*")
(defvar gnus-article-copy nil)
(defvar gnus-last-posting-server nil)
(,article (and gnus-article-reply (gnus-summary-article-number)))
(,group gnus-newsgroup-name)
(message-header-setup-hook
- (copy-sequence message-header-setup-hook)))
+ (copy-sequence message-header-setup-hook))
+ (message-mode-hook (copy-sequence message-mode-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)
(not (eq (car group-method) 'nndraft))
(not arg))
group-method)
- (gnus-post-method
+ ((and gnus-post-method
+ (not (eq gnus-post-method 'current)))
gnus-post-method)
;; Use the normal select method.
(t gnus-select-method))))
;; Stripping headers should be specified with mail-yank-ignored-headers.
(when yank
(gnus-summary-goto-subject (car yank)))
- (let ((gnus-article-reply t))
+ (let ((gnus-article-reply t)
+ (gnus-inhibit-posting-styles t))
(gnus-setup-message (if yank 'reply-yank 'reply)
(gnus-summary-select-article)
(set-buffer (gnus-copy-article-buffer))
;;; Posting styles.
+(defvar gnus-message-style-insertions nil)
+
(defun gnus-configure-posting-styles ()
"Configure posting styles according to `gnus-posting-styles'."
- (let ((styles gnus-posting-styles)
- (gnus-newsgroup-name (or gnus-newsgroup-name ""))
- style match variable attribute value value-value)
- ;; Go through all styles and look for matches.
- (while styles
- (setq style (pop styles)
- match (pop style))
- (when (cond ((stringp match)
- ;; Regexp string match on the group name.
- (string-match match gnus-newsgroup-name))
- ((or (symbolp match)
- (gnus-functionp match))
- (cond ((gnus-functionp match)
- ;; Function to be called.
- (funcall match))
- ((boundp match)
- ;; Variable to be checked.
- (symbol-value match))))
- ((listp match)
- ;; This is a form to be evaled.
- (eval match)))
- ;; We have a match, so we set the variables.
- (while style
- (setq attribute (pop style)
- value (cadr attribute)
- variable nil)
- ;; We find the variable that is to be modified.
- (if (and (not (stringp (car attribute)))
- (not (eq 'body (car attribute)))
- (not (setq variable (cdr (assq (car attribute)
- gnus-posting-style-alist)))))
- (message "Couldn't find attribute %s" (car attribute))
- ;; We get the value.
- (setq value-value
- (cond ((stringp value)
- value)
- ((or (symbolp value)
- (gnus-functionp value))
- (cond ((gnus-functionp value)
- (funcall value))
- ((boundp value)
- (symbol-value value))))
- ((listp value)
- (eval value))))
- (if variable
- ;; This is an ordinary variable.
- (set (make-local-variable variable) value-value)
- ;; This is either a body or a header to be inserted in the
- ;; message
- (when value-value
- (let ((attr (car attribute)))
- (if (eq 'body attr)
- (save-excursion
- (goto-char (point-max))
- (insert value-value))
- (save-excursion
- (message-goto-eoh)
- (insert (if (stringp attr) attr (symbol-name attr))
- ": " value-value "\n"))))))))))))
+ (unless gnus-inhibit-posting-styles
+ (let ((styles gnus-posting-styles)
+ (gnus-newsgroup-name (or gnus-newsgroup-name ""))
+ style match variable attribute value value-value)
+ (make-local-variable 'gnus-message-style-insertions)
+ ;; Go through all styles and look for matches.
+ (while styles
+ (setq style (pop styles)
+ match (pop style))
+ (when (cond ((stringp match)
+ ;; Regexp string match on the group name.
+ (string-match match gnus-newsgroup-name))
+ ((or (symbolp match)
+ (gnus-functionp match))
+ (cond ((gnus-functionp match)
+ ;; Function to be called.
+ (funcall match))
+ ((boundp match)
+ ;; Variable to be checked.
+ (symbol-value match))))
+ ((listp match)
+ ;; This is a form to be evaled.
+ (eval match)))
+ ;; We have a match, so we set the variables.
+ (while style
+ (setq attribute (pop style)
+ value (cadr attribute)
+ variable nil)
+ ;; We find the variable that is to be modified.
+ (if (and (not (stringp (car attribute)))
+ (not (eq 'body (car attribute)))
+ (not (setq variable
+ (cdr (assq (car attribute)
+ gnus-posting-style-alist)))))
+ (message "Couldn't find attribute %s" (car attribute))
+ ;; We get the value.
+ (setq value-value
+ (cond ((stringp value)
+ value)
+ ((or (symbolp value)
+ (gnus-functionp value))
+ (cond ((gnus-functionp value)
+ (funcall value))
+ ((boundp value)
+ (symbol-value value))))
+ ((listp value)
+ (eval value))))
+ (if variable
+ ;; This is an ordinary variable.
+ (set (make-local-variable variable) value-value)
+ ;; This is either a body or a header to be inserted in the
+ ;; message.
+ (when value-value
+ (let ((attr (car attribute)))
+ (make-local-variable 'message-setup-hook)
+ (if (eq 'body attr)
+ (add-hook 'message-setup-hook
+ `(lambda ()
+ (save-excursion
+ (message-goto-body)
+ (insert ,value-value))))
+ (add-hook 'message-setup-hook
+ 'gnus-message-insert-stylings)
+ (push (cons (if (stringp attr) attr
+ (symbol-name attr))
+ value-value)
+ gnus-message-style-insertions))))))))))))
+
+(defun gnus-message-insert-stylings ()
+ (let (val)
+ (save-excursion
+ (message-goto-eoh)
+ (while (setq val (pop gnus-message-style-insertions))
+ (when (cdr val)
+ (insert (car val) ": " (cdr val) "\n"))
+ (gnus-pull (car val) gnus-message-style-insertions)))))
;;; Allow redefinition of functions.
(?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)
(function-item gnus-subscribe-zombies)
function))
-;; Suggested by a bug report by Hallvard B Furuseth.
-;; <h.b.furuseth@usit.uio.no>.
(defcustom gnus-subscribe-options-newsgroup-method
'gnus-subscribe-alphabetically
"*This function is called to subscribe newsgroups mentioned on \"options -n\" lines.
;; Go through both primary and secondary select methods and
;; request new newsgroups.
(while (setq method (gnus-server-get-method nil (pop methods)))
- (setq new-newsgroups nil)
- (setq gnus-override-subscribe-method method)
+ (setq new-newsgroups nil
+ gnus-override-subscribe-method method)
(when (and (gnus-check-server method)
(gnus-request-newgroups date method))
(save-excursion
- (setq got-new t)
- (setq hashtb (gnus-make-hashtable 100))
+ (setq got-new t
+ hashtb (gnus-make-hashtable 100))
(set-buffer nntp-server-buffer)
;; Enter all the new groups into a hashtable.
(gnus-active-to-gnus-format method hashtb 'ignore))
(gnus-group-change-level
(car groups) gnus-level-default-subscribed gnus-level-killed))
(setq groups (cdr groups)))
- (gnus-group-make-help-group)
+ (save-excursion
+ (set-buffer gnus-group-buffer)
+ (gnus-group-make-help-group))
(when gnus-novice-user
(gnus-message 7 "`A k' to list killed groups"))))))
;;; Slave functions.
;;;
+(defvar gnus-slave-mode nil)
+
+(defun gnus-slave-mode ()
+ "Minor mode for slave Gnusae."
+ (gnus-add-minor-mode 'gnus-slave-mode " Slave" (make-sparse-keymap))
+ (gnus-run-hooks 'gnus-slave-mode-hook))
+
(defun gnus-slave-save-newsrc ()
(save-excursion
(set-buffer gnus-dribble-buffer)
"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.
(let* ((entry (gnus-gethash group gnus-newsrc-hashtb))
;;!!! Dirty hack; should be removed.
(gnus-summary-ignore-duplicates
- (if (eq (car (gnus-find-method-for-group group)) 'nnvirtual)
+ (if (eq (car (gnus-find-method-for-group group)) 'nnvirtual)
t
gnus-summary-ignore-duplicates))
(info (nth 2 entry))
(setq gnus-newsgroup-processable nil)
(gnus-update-read-articles group gnus-newsgroup-unreads)
- (unless (gnus-ephemeral-group-p gnus-newsgroup-name)
- (gnus-group-update-group group))
(if (setq articles select-articles)
(setq gnus-newsgroup-unselected
(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
(delq article gnus-newsgroup-processable)))
(when (gnus-summary-goto-subject article)
(gnus-summary-show-thread)
+ (gnus-summary-goto-subject article)
(gnus-summary-update-secondary-mark article)))
(defun gnus-summary-remove-process-mark (article)
(setq gnus-newsgroup-processable (delq article gnus-newsgroup-processable))
(when (gnus-summary-goto-subject article)
(gnus-summary-show-thread)
+ (gnus-summary-goto-subject article)
(gnus-summary-update-secondary-mark article)))
(defun gnus-summary-set-saved-mark (article)
(parent (gnus-topic-parent-topic topic-name))
(all-entries entries)
(unread 0)
- old-unread entry)
+ old-unread entry new-unread)
(when (gnus-topic-goto-topic (car type))
;; Tally all the groups that belong in this topic.
(if reads
(car type) (gnus-topic-visible-p)
(not (eq (nth 2 type) 'hidden))
(gnus-group-topic-level) all-entries unread)
- (gnus-delete-line))
+ (gnus-delete-line)
+ (forward-line -1)
+ (setq new-unread (gnus-group-topic-unread)))
(when parent
(forward-line -1)
(gnus-topic-update-topic-line
parent
- (max 0 (- (or old-unread 0) (or (gnus-group-topic-unread) 0)))))
+ (- (or old-unread 0) (or new-unread 0))))
unread))
(defun gnus-topic-group-indentation ()
(gnus-topic-make-menu-bar))
(gnus-set-format 'topic t)
(gnus-add-minor-mode 'gnus-topic-mode " Topic" gnus-topic-mode-map)
- (add-hook 'gnus-summary-exit-hook 'gnus-topic-update-topic)
(add-hook 'gnus-group-catchup-group-hook 'gnus-topic-update-topic)
(set (make-local-variable 'gnus-group-prepare-function)
'gnus-group-prepare-topics)
(gnus-uu-reginize-string (gnus-summary-article-subject))))
list-of-subjects)
(save-excursion
- (if (not subject)
- ()
+ (when subject
;; Collect all subjects matching subject.
(let ((case-fold-search t)
(data gnus-newsgroup-data)
(defconst gnus-product-name "Shoe-gnus"
"Product name of this version of gnus.")
-(defconst gnus-version-number "6.8.6"
+(defconst gnus-version-number "6.8.7"
"Version number for this version of gnus.")
(defconst gnus-version
- (format "%s %s (based on Gnus 5.6.36; for SEMI 1.8, FLIM 1.8/1.9)"
+ (format "%s %s (based on Gnus 5.6.39; for SEMI 1.8, FLIM 1.8/1.9)"
gnus-product-name gnus-version-number)
"Version string for this version of gnus.")
gnus-uu-decode-binhex gnus-uu-decode-uu-view
gnus-uu-decode-uu-and-save-view gnus-uu-decode-unshar-view
gnus-uu-decode-unshar-and-save-view gnus-uu-decode-save-view
- gnus-uu-decode-binhex-view gnus-uu-unmark-thread)
+ gnus-uu-decode-binhex-view gnus-uu-unmark-thread
+ gnus-uu-mark-over)
("gnus-uu" gnus-uu-delete-work-dir gnus-quote-arg-for-sh-or-csh
gnus-uu-unmark-thread)
("gnus-msg" (gnus-summary-send-map keymap)
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
(gnus-server-to-method method))
((equal method gnus-select-method)
gnus-select-method)
- ((and (stringp (car method)) group)
+ ((and (stringp (car method))
+ group)
(gnus-server-extend-method group method))
- ((and method (not group)
+ ((and method
+ (not group)
(equal (cadr method) ""))
method)
(t
:group 'message-various
:type 'hook)
+(defvar message-send-coding-system 'binary
+ "Coding system to encode outgoing mail.")
+
;;; Internal variables.
(defvar message-buffer-list nil)
(set-buffer errbuf)
(erase-buffer))))
(let ((default-directory "/")
- (coding-system-for-write 'binary))
+ (coding-system-for-write message-send-coding-system))
(apply 'call-process-region
(append (list (point-min) (point-max)
(if (boundp 'sendmail-program)
(run-hooks 'message-send-mail-hook)
;; send the message
(case
- (let ((coding-system-for-write 'binary))
+ (let ((coding-system-for-write message-send-coding-system))
(apply
'call-process-region 1 (point-max) message-qmail-inject-program
nil nil nil
(defun message-mail (&optional to subject
other-headers continue switch-function
yank-action send-actions)
- "Start editing a mail message to be sent."
+ "Start editing a mail message to be sent.
+OTHER-HEADERS is an alist of header/value pairs."
(interactive)
(let ((message-this-is-mail t))
(message-pop-to-buffer (message-buffer-name "mail" to))
(defvar message-send-hook mail-send-hook
"Hook run before sending messages.")
+(defvar message-send-mail-function send-mail-function
+ "Function to call to send the current buffer as mail.
+The headers should be delimited by a line whose contents match the
+variable `mail-header-separator'.")
+
(provide 'messcompat)
;;; messcompat.el ends here
(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")))))
(defvoo nneething-map nil)
(defvoo nneething-read-only nil)
(defvoo nneething-active nil)
-(defvoo nneething-directory nil)
+(defvoo nneething-address nil)
\f
(nnheader-init-server-buffer)
(if (nneething-server-opened server)
t
- (unless (assq 'nneething-directory defs)
- (setq defs (append defs (list (list 'nneething-directory server)))))
+ (unless (assq 'nneething-address defs)
+ (setq defs (append defs (list (list 'nneething-address server)))))
(nnoo-change-server 'nneething server defs)))
\f
(defun nneething-create-mapping ()
;; Read nneething-active and nneething-map.
- (when (file-exists-p nneething-directory)
+ (when (file-exists-p nneething-address)
(let ((map-file (nneething-map-file))
- (files (directory-files nneething-directory))
+ (files (directory-files nneething-address))
touched map-files)
(when (file-exists-p map-file)
(ignore-errors
(defun nneething-file-name (article)
"Return the file name of ARTICLE."
- (concat (file-name-as-directory nneething-directory)
+ (concat (file-name-as-directory nneething-address)
(if (numberp article)
(cadr (assq article nneething-map))
article)))
If this variable is a directory (i. e., it's name ends with a \"/\"),
treat all files in that directory as incoming spool files."
:group 'nnmail-files
- :type 'file)
+ :type '(choice (file :tag "File")
+ (repeat :tag "Files" file)))
(defcustom nnmail-crash-box "~/.gnus-crash-box"
"File where Gnus will store mail while processing it."
\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))
"Where nnweb will save its files.")
(defvoo nnweb-type 'dejanews
- "What search engine type is being used.")
+ "What search engine type is being used.
+Valid types include `dejanews', `dejanewsold', `reference',
+and `altavista'.")
(defvoo nnweb-type-definition
'((dejanews
+1998-08-18 00:30:05 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Article Hiding): Addition.
+
+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 pg cp
@c @direntry
@c * Gnus: (gnus). The news reader gnus.
-@c @end direntry
@iftex
@finalout
@end iftex
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
@table @samp
@item b
-Start point of the hidden text.
+Starting point of the hidden text.
@item e
-End point of the hidden text.
+Ending point of the hidden text.
@item l
-Length of the hidden text.
+Number of characters in the hidden region.
+@item n
+Number of lines of hidden text.
@end table
@item gnus-cited-lines-visible
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
Andreas Jaeger,
Randell Jesup,
Fred Johansen,
+Gareth Jones,
Simon Josefsson,
Greg Klanderman,
Karl Kleinpaste,
Peter Skov Knudsen,
Shuhei Kobayashi, @c Kobayashi
+Koseki Yoshinori, @c Koseki
Thor Kristoffersen,
Jens Lautenbacher,
+Martin Larose,
Seokchan Lee, @c Lee
Carsten Leonhardt,
James LewisMoss,
Stephen Peters,
Jens-Ulrik Holger Petersen,
Ulrich Pfeifer,
+Matt Pharr,
John McClary Prevost,
+Bill Pringlemeir,
Mike Pullen,
Jim Radford,
Colin Rafferty,
Chuck Thompson,
Philippe Troin,
James Troup,
+Trung Tran-Duc,
Aaron M. Ucko,
Aki Vehtari,
Didier Verna,
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