+Thu May 16 07:40:24 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-xmas.el (gnus-xmas-topic-remove-excess-properties): Remove
+ more excess props.
+
+Thu May 16 04:31:59 1996 Lars Magne Ingebrigtsen <larsi@ylfing.ifi.uio.no>
+
+ * gnus-vis.el (gnus-button-alist): Recognize more message-ids.
+
+ * nnheader.el (nnheader-parse-head): Wouldn't get the first line
+ of naked heads.
+
+ * gnus.el (gnus-summary-refer-article): Don't connect to the refer
+ method unless using a news method.
+
+Wed May 15 11:41:09 1996 Steven L Baur <steve@miranova.com>
+
+ * nnmail.el (nnmail-get-spool-files): Fix typo.
+
Wed May 15 03:52:50 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+ * gnus.el: 0.85 is released.
+
* nnspool.el (nnspool-open-server): Use directory file name.
* gnus-topic.el (gnus-topic-create-topic): Changed prompt.
;; Next regexp stolen from highlight-headers.el.
;; Modified by Vladimir Alexiev.
(,gnus-button-url-regexp 0 t gnus-button-url 0)
- ("\\(<\\(url: \\)?news:\\([^>\n ]*\\)>\\)" 1 t
+ ("\\(<?\\(url: \\)?news:\\([^>\n\t ]*\\)>?\\)" 1 t
gnus-button-message-id 3)
("\\(<URL: *\\)?mailto: *\\([^ \n\t]+\\)>?" 0 t gnus-button-reply 2))
"Alist of regexps matching buttons in article bodies.
(let ((end (point))
(beg (progn (forward-line -1) (point))))
(remove-text-properties beg end '(gnus-group nil gnus-unread nil))
+ (remove-text-properties (1+ beg) end '(gnus-topic nil))
(goto-char end)))
(defun gnus-xmas-extent-start-open (point)
"gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version "September Gnus v0.85"
+(defconst gnus-version "September Gnus v0.86"
"Version number for this version of Gnus.")
(defvar gnus-info-nodes
gnus-refer-article-method))
number)
;; Start the special refer-article method, if necessary.
- (when gnus-refer-article-method
+ (when (and gnus-refer-article-method
+ (gnus-news-group-p gnus-newsgroup-name))
(gnus-check-server gnus-refer-article-method))
;; Fetch the header, and display the article.
(if (setq number (gnus-summary-insert-subject message-id))
(interactive)
(unless (message-news-p)
(error "This is not a news article; canceling is impossible"))
- (when (yes-or-no-p "Do you really want to cancel this article? "))
- (let (from newsgroups message-id distribution buf)
- (save-excursion
- ;; Get header info. from original article.
- (save-restriction
- (message-narrow-to-head)
- (setq from (mail-fetch-field "from")
- newsgroups (mail-fetch-field "newsgroups")
- message-id (mail-fetch-field "message-id")
- distribution (mail-fetch-field "distribution")))
- ;; Make sure that this article was written by the user.
- (unless (string-equal
- (downcase (mail-strip-quoted-names from))
- (downcase (message-make-address)))
- (error "This article is not yours"))
- ;; Make control message.
- (setq buf (set-buffer (get-buffer-create " *message cancel*")))
- (buffer-disable-undo (current-buffer))
- (erase-buffer)
- (insert "Newsgroups: " newsgroups "\n"
- "From: " (message-make-from) "\n"
- "Subject: cmsg cancel " message-id "\n"
- "Control: cancel " message-id "\n"
- (if distribution
- (concat "Distribution: " distribution "\n")
- "")
- mail-header-separator "\n"
- "This is a cancel message from " from ".\n")
- (message "Canceling your article...")
- (let ((message-syntax-checks 'dont-check-for-anything-just-trust-me))
- (funcall message-send-news-function))
- (message "Canceling your article...done")
- (kill-buffer buf))))
+ (when (yes-or-no-p "Do you really want to cancel this article? ")
+ (let (from newsgroups message-id distribution buf)
+ (save-excursion
+ ;; Get header info. from original article.
+ (save-restriction
+ (message-narrow-to-head)
+ (setq from (mail-fetch-field "from")
+ newsgroups (mail-fetch-field "newsgroups")
+ message-id (mail-fetch-field "message-id")
+ distribution (mail-fetch-field "distribution")))
+ ;; Make sure that this article was written by the user.
+ (unless (string-equal
+ (downcase (mail-strip-quoted-names from))
+ (downcase (message-make-address)))
+ (error "This article is not yours"))
+ ;; Make control message.
+ (setq buf (set-buffer (get-buffer-create " *message cancel*")))
+ (buffer-disable-undo (current-buffer))
+ (erase-buffer)
+ (insert "Newsgroups: " newsgroups "\n"
+ "From: " (message-make-from) "\n"
+ "Subject: cmsg cancel " message-id "\n"
+ "Control: cancel " message-id "\n"
+ (if distribution
+ (concat "Distribution: " distribution "\n")
+ "")
+ mail-header-separator "\n"
+ "This is a cancel message from " from ".\n")
+ (message "Canceling your article...")
+ (let ((message-syntax-checks 'dont-check-for-anything-just-trust-me))
+ (funcall message-send-news-function))
+ (message "Canceling your article...done")
+ (kill-buffer buf)))))
;;;###autoload
(defun message-supersede ()
(defun nnheader-parse-head (&optional naked)
(let ((case-fold-search t)
(cur (current-buffer))
+ (buffer-read-only nil)
end ref in-reply-to lines p)
(goto-char (point-min))
+ (when naked
+ (insert "\n"))
;; Search to the beginning of the next header. Error messages
;; do not begin with 2 or 3.
- (when (or naked (re-search-forward "^[23][0-9]+ " nil t))
- ;; This implementation of this function, with nine
- ;; search-forwards instead of the one re-search-forward and
- ;; a case (which basically was the old function) is actually
- ;; about twice as fast, even though it looks messier. You
- ;; can't have everything, I guess. Speed and elegance
- ;; doesn't always go hand in hand.
- (vector
- ;; Number.
- (if naked
+ (prog1
+ (when (or naked (re-search-forward "^[23][0-9]+ " nil t))
+ ;; This implementation of this function, with nine
+ ;; search-forwards instead of the one re-search-forward and
+ ;; a case (which basically was the old function) is actually
+ ;; about twice as fast, even though it looks messier. You
+ ;; can't have everything, I guess. Speed and elegance
+ ;; doesn't always go hand in hand.
+ (vector
+ ;; Number.
+ (if naked
+ (progn
+ (setq p (point-min))
+ 0)
+ (prog1
+ (read cur)
+ (end-of-line)
+ (setq p (point))
+ (narrow-to-region (point)
+ (or (and (search-forward "\n.\n" nil t)
+ (- (point) 2))
+ (point)))))
+ ;; Subject.
+ (progn
+ (goto-char p)
+ (if (search-forward "\nsubject: " nil t)
+ (nnheader-header-value) "(none)"))
+ ;; From.
+ (progn
+ (goto-char p)
+ (if (search-forward "\nfrom: " nil t)
+ (nnheader-header-value) "(nobody)"))
+ ;; Date.
+ (progn
+ (goto-char p)
+ (if (search-forward "\ndate: " nil t)
+ (nnheader-header-value) ""))
+ ;; Message-ID.
+ (progn
+ (goto-char p)
+ (if (search-forward "\nmessage-id: " nil t)
+ (nnheader-header-value)
+ ;; If there was no message-id, we just fake one to make
+ ;; subsequent routines simpler.
+ (concat "none+"
+ (int-to-string
+ (incf nnheader-newsgroup-none-id)))))
+ ;; References.
+ (progn
+ (goto-char p)
+ (if (search-forward "\nreferences: " nil t)
+ (nnheader-header-value)
+ ;; Get the references from the in-reply-to header if there
+ ;; were no references and the in-reply-to header looks
+ ;; promising.
+ (if (and (search-forward "\nin-reply-to: " nil t)
+ (setq in-reply-to (nnheader-header-value))
+ (string-match "<[^>]+>" in-reply-to))
+ (substring in-reply-to (match-beginning 0)
+ (match-end 0))
+ "")))
+ ;; Chars.
+ 0
+ ;; Lines.
+ (progn
+ (goto-char p)
+ (if (search-forward "\nlines: " nil t)
+ (if (numberp (setq lines (read cur)))
+ lines 0)
+ 0))
+ ;; Xref.
(progn
- (setq p (point-min))
- 0)
- (prog1
- (read cur)
- (end-of-line)
- (setq p (point))
- (narrow-to-region (point)
- (or (and (search-forward "\n.\n" nil t)
- (- (point) 2))
- (point)))))
- ;; Subject.
- (progn
- (goto-char p)
- (if (search-forward "\nsubject: " nil t)
- (nnheader-header-value) "(none)"))
- ;; From.
- (progn
- (goto-char p)
- (if (search-forward "\nfrom: " nil t)
- (nnheader-header-value) "(nobody)"))
- ;; Date.
- (progn
- (goto-char p)
- (if (search-forward "\ndate: " nil t)
- (nnheader-header-value) ""))
- ;; Message-ID.
- (progn
- (goto-char p)
- (if (search-forward "\nmessage-id: " nil t)
- (nnheader-header-value)
- ;; If there was no message-id, we just fake one to make
- ;; subsequent routines simpler.
- (concat "none+"
- (int-to-string
- (incf nnheader-newsgroup-none-id)))))
- ;; References.
- (progn
- (goto-char p)
- (if (search-forward "\nreferences: " nil t)
- (nnheader-header-value)
- ;; Get the references from the in-reply-to header if there
- ;; were no references and the in-reply-to header looks
- ;; promising.
- (if (and (search-forward "\nin-reply-to: " nil t)
- (setq in-reply-to (nnheader-header-value))
- (string-match "<[^>]+>" in-reply-to))
- (substring in-reply-to (match-beginning 0)
- (match-end 0))
- "")))
- ;; Chars.
- 0
- ;; Lines.
- (progn
- (goto-char p)
- (if (search-forward "\nlines: " nil t)
- (if (numberp (setq lines (read cur)))
- lines 0)
- 0))
- ;; Xref.
- (progn
- (goto-char p)
- (and (search-forward "\nxref: " nil t)
- (nnheader-header-value)))))))
+ (goto-char p)
+ (and (search-forward "\nxref: " nil t)
+ (nnheader-header-value)))))
+ (when naked
+ (goto-char (point-min))
+ (delete-char 1)))))
(defun nnheader-insert-nov (header)
(princ (mail-header-number header) (current-buffer))
nnmail-use-procmail)
(directory-files
nnmail-procmail-directory
- t (concat (if group (concat "/" group) "")
+ t (concat (if group (concat "^" group) "")
nnmail-procmail-suffix "$") t)))
(p procmails)
(crash (when (and (file-exists-p nnmail-crash-box)
(save-excursion
(set-buffer buffer)
(nnml-possibly-create-directory group)
- (if (not (condition-case ()
+ (when (condition-case ()
(progn
- (write-region (point-min) (point-max)
- (concat nnml-current-directory
- (int-to-string article))
- nil (if (nnheader-be-verbose 5) nil 'nomesg))
+ (write-region
+ (point-min) (point-max)
+ (concat nnml-current-directory (int-to-string article))
+ nil (if (nnheader-be-verbose 5) nil 'nomesg))
t)
- (error nil)))
- ()
+ (error nil))
(let ((chars (nnmail-insert-lines))
(art (concat (int-to-string article) "\t"))
headers)
(let* ((dir (file-name-as-directory dir))
(nov (concat dir nnml-nov-file-name))
(nov-buffer (get-buffer-create " *nov*"))
- nov-line chars file)
+ nov-line chars file headers)
(save-excursion
;; Init the nov buffer.
(set-buffer nov-buffer)
@findex gnus-unread-mark
This hook is called whenever an article is selected. It is intended to
be used for marking articles as read. The default value is
-@code{gnus-summary-mark-unread-and-read-as-read}, and will change the
+@code{gnus-summary-mark-read-and-unread-as-read}, and will change the
mark of almost any article you read to @code{gnus-unread-mark}. The
only articles not affected by this function are ticked, dormant, and
expirable articles. If you'd instead like to just have unread articles