-1998-06-26 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * lisp/gnus.el (gnus-version-number): Update to 6.7.3.
-
- * lisp/gnus-sum.el (gnus-summary-move-article): Use
- `gnus-request-article-this-buffer'.
- (gnus-request-partial-message): Likewise.
-
- * lisp/gnus-art.el (gnus-article-prepare): Use
- `gnus-request-article-this-buffer'.
- (gnus-request-article-this-buffer): Renamed from
- `gnus-request-original-article'; abolish conventional
- implementation.
- - Abolish unused setting for `mime-view-show-summary-method'.
-
-1998-06-26 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * readme, texi/ChangeLog, texi/gnus.texi, texi/message.texi,
- lisp/ChangeLog, lisp/gnus.el, lisp/nnmail.el, lisp/nnheader.el,
- lisp/nngateway.el, lisp/nnfolder.el, lisp/nnagent.el,
- lisp/message.el, lisp/gnus-sum.el, lisp/gnus-score.el,
- lisp/gnus-salt.el, lisp/gnus-msg.el, lisp/gnus-cus.el,
- lisp/gnus-cache.el, lisp/gnus-art.el: Sync up with gnus-5_6_15.
-
1998-06-24 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * texi/gnus.texi, texi/message.texi, texi/ChangeLog: Sync up with
- Gnus 5.6.13.
-
-1998-06-14 Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
-
- * Sync up with Gnus 5.6.13.
-
-1998-06-24 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * lisp/gnus-art.el (gnus-article-display-mime-message): Don't
- `save-excursion'.
- (gnus-article-prepare): Use `mime-fetch-field' instead of
- `mime-entity-fetch-field'.
-
-1998-06-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * lisp/gnus-art.el (gnus-article-display-mime-message): Use
- `mime-display-message' instead of `mime-view-buffer'.
- (gnus-article-display-traditional-message): Set
- `gnus-article-buffer'.
- (gnus-article-display-message-with-encoded-word): Modify for
- `gnus-article-display-traditional-message'.
- (gnus-article-prepare): Use `mime-parse-buffer' and
- `mime-entity-fetch-field'; don't set gnus-article-buffer.
-
-1998-06-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * lisp/gnus-sum.el (gnus-summary-move-article): Use
- `gnus-request-original-article' instead of
- `gnus-request-article-this-buffer'.
-
-1998-06-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * texi/gnus-ja.texi, texi/gnus.texi (Using MIME): Modify
- description about new display mechanism.
-
-1998-06-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * lisp/gnus.el (gnus-version-number): Update to 6.6.0.
- (gnus-version): Modify for this branch.
-
- * lisp/gnus-art.el (gnus-article-display-method-for-mime): New
- variable; abolish `gnus-show-mime-method'.
- (gnus-article-display-method-for-encoded-word): New variable;
- abolish `gnus-decode-encoded-word-method'.
- (gnus-article-display-method-for-traditional): New variable.
- (gnus-article-display-mime-message): New function; abolish
- `gnus-article-preview-mime-message'.
- (gnus-article-display-traditional-message): New function.
- (gnus-article-display-message-with-encoded-word): New function;
- abolish `gnus-article-decode-encoded-word'.
- (gnus-article-prepare): Change display mechanism; use
- `gnus-request-original-article' instead of
- `gnus-request-article-this-buffer'.
- (gnus-request-original-article): New function.
+ * lisp/gnus-sum.el (gnus-request-partial-message): Fix typo.
1998-06-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
*** Old dejanews archives can now be read by nnweb.
+*** Byte-compilation of user-specs now works under XEmacs.
-Fri Jun 26 04:23:12 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
-
- * gnus.el: Gnus v5.6.15 is released.
-
-Fri Jun 26 03:39:32 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-
- * nnfolder.el (nnfolder-request-replace-article): Delete old
- delimiter.
-
- * gnus-msg.el (gnus-summary-reply): Use it.
-
- * message.el (message-reply): Removed parameter.
- (message-wide-reply): Ditto.
-
- * gnus-msg.el (gnus-msg-treat-broken-reply-to): New function.
-
- * gnus-art.el (gnus-check-group-server): New function.
- (gnus-request-article-this-buffer): Don't try to waken the server
- before needing to.
-
-Thu Jun 25 10:35:48 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-
- * gnus-sum.el (gnus-summary-delete-article): Sort the articles
- before deleting.
-
- * nngateway.el (nngateway-request-post): Return success.
-
- * nnheader.el (nnheader-insert-file-contents): Bind more hooks.
-
- * gnus-sum.el (gnus-summary-limit-to-age): Reverse logic.
-
- * gnus-score.el (gnus-summary-score-entry): Removed interactive
- spec.
- ((gnus-summary-score-map "V" gnus-summary-mode-map)): Removed
- keystroke.
-
- * gnus-art.el (gnus-article-show-summary): Position point.
-
- * gnus-cache.el (gnus-cache-update-article): Change group first.
-
- * gnus.el (gnus-short-group-name): Collapse more.
-
-Thu Jun 25 08:48:06 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
-
- * gnus.el: Gnus v5.6.14 is released.
-
-Thu Jun 25 05:13:31 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-
- * gnus-sum.el (gnus-rebuild-thread): Accept a line argument.
- (gnus-rebuild-thread): Would skip around a lot when `P'-ing past
- the beginning.
-
- * gnus-msg.el (gnus-post-method): Present all known servers if
- `C-u 0'.
-
- * gnus-salt.el (gnus-pick-mode-map): Reinstated keymap.
-
- * gnus-sum.el (gnus-build-sparse-threads): Put the proper date
- in.
-
-Wed Jun 24 07:52:30 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
-
- * gnus.el: Gnus v5.6.13 is released.
-
-Wed Jun 24 07:47:04 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-
- * gnus-topic.el (gnus-topic-rename): Disallow "nil".
-
-Wed Jun 24 07:33:17 1998 Vladimir Alexiev <vladimir@cs.ualberta.ca>
-
- * nnvirtual.el (nnvirtual-update-xref-header): Regexp-quote group
- name.
-
-Wed Jun 24 06:15:27 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-
- * gnus-sum.el (gnus-build-sparse-threads): Give all the sparse
- articles the date of the current child.
-
- * gnus-topic.el (gnus-group-topic-parameters): Didn't compute.
-
-Wed Jun 24 03:27:44 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
-
- * gnus.el: Gnus v5.6.12 is released.
-
-Wed Jun 10 11:06:35 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * message.el (message-mail-other-window): Bind message-this-is-mail.
- (message-mail-other-frame): Likewise.
- (message-news-other-window): Bind message-this-is-news.
- (message-news-other-frame): Likewise.
-
-1998-06-09 Sam Steingold <sds@goems.com>
-
- * gnus-uu.el (gnus-uu-default-view-rules): make sed kill ^M only
- at the end of line.
-
-1998-06-05 Hrvoje Niksic <hniksic@srce.hr>
-
- * nnmail.el (nnmail-get-split-group): Don't regexp-quote
- nnmail-procmail-suffix.
-
-Wed Jun 24 03:04:05 1998 Kim-Minh Kaplan <kaplan@sky.fr>
-
- * gnus-sum.el (gnus-build-get-header): Fix obarray.
-
-Wed Jun 24 02:49:57 1998 Castor <castor@my-dejanews.com>
-
- * nntp.el (nntp-open-ssl-stream):
-
-Wed Jun 24 02:31:46 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-
- * gnus-sum.el (gnus-nov-parse-line): Cleaned up.
- (gnus-build-all-threads): Put things in the wrong obarray.
-
-Wed Jun 24 01:43:26 1998 Decklin Foster <djarum@base.org>
-
- * nngateway.el (nngateway-mail2news-header-transformation): New
- function.
-
-Wed Jun 24 00:25:45 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-
- * message.el (message-shorten-references): New function.
- (message-header-format-alist): Use it.
-
- * gnus-start.el (gnus-always-read-dribble-file): Customized.
-
- * message.el (message-generate-new-buffers): Dox fox.
-
-Tue Jun 23 23:58:48 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-
- * gnus-topic.el (gnus-topic-prepare-topic): Respect visible topic
- param.
- (gnus-topic-hierarchical-parameters): New function.
-
-1998-06-02 Didier Verna <verna@inf.enst.fr>
-
- * gnus-picon.el (gnus-get-buffer-name): use get-buffer-create
- instead of get-buffer
-
-Wed Jun 3 04:41:45 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-
- * nnkiboze.el (nnkiboze-request-delete-group): Delete .newsrc
- file.
-
- * nnmail.el (nnmail-article-group): Nuke looong lines.
-
- * gnus-art.el (gnus-button-alist): Buggy default.
-
Wed Jun 3 04:03:37 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Gnus v5.6.11 is released.
:group 'gnus-article-mime
:type 'boolean)
-(defcustom gnus-article-display-method-for-mime
- 'gnus-article-display-mime-message
- "Function to display a MIME message.
+(defcustom gnus-show-mime-method 'gnus-article-preview-mime-message
+ "Function to process a MIME message.
The function is called from the article buffer."
:group 'gnus-article-mime
:type 'function)
-(defcustom gnus-article-display-method-for-encoded-word
- 'gnus-article-display-message-with-encoded-word
- "*Function to display a message with MIME encoded-words.
-The function is called from the article buffer."
- :group 'gnus-article-mime
- :type 'function)
-
-(defcustom gnus-article-display-method-for-traditional
- 'gnus-article-display-traditional-message
- "*Function to display a traditional message.
+(defcustom gnus-decode-encoded-word-method 'gnus-article-decode-encoded-word
+ "*Function to decode MIME encoded words.
The function is called from the article buffer."
:group 'gnus-article-mime
:type 'function)
;;; @@ article filters
;;;
-(defun gnus-article-display-mime-message ()
- "Article display method for MIME message."
+(defun gnus-article-preview-mime-message ()
(make-local-variable 'mime-button-mother-dispatcher)
(setq mime-button-mother-dispatcher
(function gnus-article-push-button))
(set-buffer gnus-summary-buffer)
default-mime-charset))
)
- (mime-display-message mime-message-structure
- gnus-article-buffer nil gnus-article-mode-map)
- )
+ (save-excursion
+ (mime-view-buffer gnus-original-article-buffer gnus-article-buffer
+ nil gnus-article-mode-map)
+ ))
(run-hooks 'gnus-mime-article-prepare-hook)
)
-(defun gnus-article-display-traditional-message ()
- "Article display method for traditional message."
- (set-buffer gnus-article-buffer)
- (let (buffer-read-only)
- (erase-buffer)
- (insert-buffer-substring gnus-original-article-buffer)
- ))
-
-(defun gnus-article-display-message-with-encoded-word ()
- "Article display method for message with encoded-words."
+(defun gnus-article-decode-encoded-word ()
+ "Header filter for gnus-article-mode."
(let ((charset (save-excursion
(set-buffer gnus-summary-buffer)
default-mime-charset)))
- (gnus-article-display-traditional-message)
- (let (buffer-read-only)
- (eword-decode-header charset)
- (goto-char (point-min))
- (if (search-forward "\n\n" nil t)
- (decode-mime-charset-region (match-end 0) (point-max) charset))
- )
+ (eword-decode-header charset)
+ (goto-char (point-min))
+ (if (search-forward "\n\n" nil t)
+ (decode-mime-charset-region (match-end 0) (point-max) charset))
(mime-maybe-hide-echo-buffer)
)
(gnus-run-hooks 'gnus-mime-article-prepare-hook)
(unless (eq major-mode 'gnus-summary-mode)
(set-buffer gnus-summary-buffer))
(setq gnus-summary-buffer (current-buffer))
+ ;; Make sure the connection to the server is alive.
+ (unless (gnus-server-opened
+ (gnus-find-method-for-group gnus-newsgroup-name))
+ (gnus-check-server (gnus-find-method-for-group gnus-newsgroup-name))
+ (gnus-request-group gnus-newsgroup-name t))
(let* ((gnus-article (if header (mail-header-number header) article))
(summary-buffer (current-buffer))
(internal-hook gnus-article-internal-prepare-hook)
result)
(save-excursion
(gnus-article-setup-buffer)
- (set-buffer gnus-original-article-buffer)
+ (set-buffer gnus-article-buffer)
;; Deactivate active regions.
(when (and (boundp 'transient-mark-mode)
transient-mark-mode)
(or all-headers gnus-show-all-headers))))
(when (or (numberp article)
(stringp article))
- (let ((method
- (if gnus-show-mime
- (progn
- (mime-parse-buffer)
- (if (or (not gnus-strict-mime)
- (mime-fetch-field "MIME-Version"))
- gnus-article-display-method-for-mime
- gnus-article-display-method-for-encoded-word))
- gnus-article-display-method-for-traditional)))
- ;; Hooks for getting information from the article.
- ;; This hook must be called before being narrowed.
+ ;; Hooks for getting information from the article.
+ ;; This hook must be called before being narrowed.
+ (let (buffer-read-only)
(gnus-run-hooks 'internal-hook)
(gnus-run-hooks 'gnus-article-prepare-hook)
- ;; Display message.
- (funcall method)
+ ;; Decode MIME message.
+ (when gnus-show-mime
+ (if (or (not gnus-strict-mime)
+ (gnus-fetch-field "Mime-Version"))
+ (funcall gnus-show-mime-method)
+ (funcall gnus-decode-encoded-word-method)))
;; Perform the article display hooks.
(gnus-run-hooks 'gnus-article-display-hook))
;; Do page break.
(error "There is no summary buffer for this article buffer")
(gnus-article-set-globals)
(gnus-configure-windows 'article)
- (gnus-summary-goto-subject gnus-current-article)
- (gnus-summary-position-point)))
+ (gnus-summary-goto-subject gnus-current-article)))
(defun gnus-article-describe-briefly ()
"Describe article mode commands briefly."
(when (gnus-visual-p 'article-highlight 'highlight)
(gnus-article-highlight-some)))
-(defun gnus-check-group-server ()
- ;; Make sure the connection to the server is alive.
- (unless (gnus-server-opened
- (gnus-find-method-for-group gnus-newsgroup-name))
- (gnus-check-server (gnus-find-method-for-group gnus-newsgroup-name))
- (gnus-request-group gnus-newsgroup-name t)))
-
(defun gnus-request-article-this-buffer (article group)
"Get an article and insert it into this buffer."
(let (do-update-line)
(gnus-kill-all-overlays)
(setq group (or group gnus-newsgroup-name))
+ ;; Open server if it has closed.
+ (gnus-check-server (gnus-find-method-for-group group))
+
;; Using `gnus-request-article' directly will insert the article into
;; `nntp-server-buffer' - so we'll save some time by not having to
;; copy it from the server buffer into the article buffer.
(assq article gnus-newsgroup-reads)))
gnus-canceled-mark))
nil)
+ ;; We first check `gnus-original-article-buffer'.
+ ((and (get-buffer gnus-original-article-buffer)
+ (numberp article)
+ (save-excursion
+ (set-buffer gnus-original-article-buffer)
+ (and (equal (car gnus-original-article) group)
+ (eq (cdr gnus-original-article) article))))
+ (insert-buffer-substring gnus-original-article-buffer)
+ 'article)
;; Check the backlog.
((and gnus-keep-backlog
(gnus-backlog-request-article group article (current-buffer)))
(buffer-read-only nil))
(erase-buffer)
(gnus-kill-all-overlays)
- (gnus-check-group-server)
(when (gnus-request-article article group (current-buffer))
(when (numberp article)
(gnus-async-prefetch-next group article gnus-summary-buffer)
;; Associate this article with the current summary buffer.
(setq gnus-article-current-summary gnus-summary-buffer)
+
+ ;; Take the article from the original article buffer
+ ;; and place it in the buffer it's supposed to be in.
+ (when (and (get-buffer gnus-article-buffer)
+ (equal (buffer-name (current-buffer))
+ (buffer-name (get-buffer gnus-article-buffer))))
+ (save-excursion
+ (if (get-buffer gnus-original-article-buffer)
+ (set-buffer gnus-original-article-buffer)
+ (set-buffer (get-buffer-create gnus-original-article-buffer))
+ (buffer-disable-undo (current-buffer))
+ (setq major-mode 'gnus-original-article-mode)
+ (setq buffer-read-only t)
+ (gnus-add-current-to-buffer-list))
+ (let (buffer-read-only)
+ (erase-buffer)
+ (insert-buffer-substring gnus-article-buffer))
+ (setq gnus-original-article (cons group article))))
;; Update sparse articles.
(when (and do-update-line
("\\bin\\( +article\\| +message\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2
t gnus-button-message-id 3)
("\\(<URL: *\\)mailto: *\\([^> \n\t]+\\)>" 0 t gnus-url-mailto 2)
- ("mailto:\\([a-zA-Z.-@_+0-9%]+\\)" 0 t gnus-url-mailto 1)
+ ("mailto:\\([a-zA-Z.-@_+0-9%]+\\)" 0 t gnus-url-mailto 2)
("\\bmailto:\\([^ \n\t]+\\)" 0 t gnus-url-mailto 1)
;; This is how URLs _should_ be embedded in text...
("<URL: *\\([^>]*\\)>" 0 t gnus-button-embedded-url 1)
'gnus-original-article-mode
#'mime-preview-quitting-method-for-gnus)
+(set-alist 'mime-view-show-summary-method
+ 'gnus-original-article-mode
+ #'mime-preview-quitting-method-for-gnus)
+
(defun gnus-following-method (buf)
(set-buffer buf)
(message-followup)
(defun gnus-cache-update-article (group article)
"If ARTICLE is in the cache, remove it and re-enter it."
- (gnus-cache-change-buffer group)
- (when (gnus-cache-possibly-remove-article article nil nil nil t)
+ (when (gnus-cache-possibly-remove-article article nil nil nil t)
(let ((gnus-use-cache nil))
(gnus-cache-possibly-enter-article
gnus-newsgroup-name article (gnus-summary-article-header article)
(push (list 'gnus-inews-add-to-address pgroup)
message-send-actions)))
(set-buffer gnus-article-copy)
- (gnus-msg-treat-broken-reply-to)
- (message-wide-reply to-address)))
+ (message-wide-reply to-address
+ (gnus-group-find-parameter
+ gnus-newsgroup-name 'broken-reply-to))))
(when yank
(gnus-inews-yank-articles yank))))))
-(defun gnus-msg-treat-broken-reply-to ()
- "Remove the Reply-to header iff broken-reply-to."
- (when (gnus-group-find-parameter
- gnus-newsgroup-name 'broken-reply-to)
- (save-restriction
- (message-narrow-to-head)
- (message-remove-header "reply-to"))))
-
(defun gnus-post-method (arg group &optional silent)
"Return the posting method based on GROUP and ARG.
If SILENT, don't prompt the user."
gnus-post-method
(list gnus-post-method)))
gnus-secondary-select-methods
- (mapcar 'cdr gnus-server-alist)
(list gnus-select-method)
(list group-method)))
method-alist post-methods method)
;;; as well include the Emacs version as well.
;;; The following function works with later GNU Emacs, and XEmacs.
(defun gnus-extended-version ()
- "Stringified gnus version."
+ "Stringified Gnus version."
(interactive)
gnus-version)
(gnus-setup-message (if yank 'reply-yank 'reply)
(gnus-summary-select-article)
(set-buffer (gnus-copy-article-buffer))
- (gnus-msg-treat-broken-reply-to)
- (message-reply nil wide)
+ (message-reply nil wide (gnus-group-find-parameter
+ gnus-newsgroup-name 'broken-reply-to))
(when yank
(gnus-inews-yank-articles yank)))))
"." gnus-pick-article
gnus-down-mouse-2 gnus-pick-mouse-pick-region
"\r" gnus-pick-start-reading
- "t" gnus-uu-mark-thread
- "T" gnus-uu-unmark-thread
- "U" gnus-summary-unmark-all-processable
- "v" gnus-uu-mark-over
- "r" gnus-uu-mark-region
- "R" gnus-uu-unmark-region
- "e" gnus-uu-mark-by-regexp
- "E" gnus-uu-mark-by-regexp
- "b" gnus-uu-mark-buffer
- "B" gnus-uu-unmark-buffer
- gnus-mouse-2 gnus-pick-mouse-pick
- "X" gnus-pick-start-reading
+ ;; "t" gnus-uu-mark-thread
+ ;; "T" gnus-uu-unmark-thread
+ ;; "U" gnus-summary-unmark-all-processable
+ ;; "v" gnus-uu-mark-over
+ ;; "r" gnus-uu-mark-region
+ ;; "R" gnus-uu-unmark-region
+ ;; "e" gnus-uu-mark-by-regexp
+ ;; "E" gnus-uu-mark-by-regexp
+ ;; "b" gnus-uu-mark-buffer
+ ;; "B" gnus-uu-unmark-buffer
+ ;;gnus-mouse-2 gnus-pick-mouse-pick
+ ;; "X" gnus-pick-start-reading
))
(defun gnus-pick-make-menu-bar ()
(gnus-define-keys (gnus-summary-score-map "V" gnus-summary-mode-map)
"s" gnus-summary-set-score
+ "a" gnus-summary-score-entry
"S" gnus-summary-current-score
"c" gnus-score-change-score-file
"C" gnus-score-customize
DATE is the expire date, or nil for no expire, or 'now for immediate expire.
If optional argument `PROMPT' is non-nil, allow user to edit match.
If optional argument `SILENT' is nil, show effect of score entry."
+ (interactive
+ (list (completing-read "Header: "
+ gnus-header-index
+ (lambda (x) (fboundp (nth 2 x)))
+ t)
+ (read-string "Match: ")
+ (if (y-or-n-p "Use regexp match? ") 'r 's)
+ (and current-prefix-arg
+ (prefix-numeric-value current-prefix-arg))
+ (cond ((not (y-or-n-p "Add to score file? "))
+ 'now)
+ ((y-or-n-p "Expire kill? ")
+ (current-time-string))
+ (t nil))))
;; Regexp is the default type.
(when (eq type t)
(setq type 'r))
:group 'gnus-newsrc
:type 'hook)
-(defcustom gnus-always-read-dribble-file nil
- "Uncoditionally read the dribble file."
- :group 'gnus-newsrc
- :type 'boolean)
-
;;; Internal variables
+(defvar gnus-always-read-dribble-file nil
+ "Uncoditionally read the dribble file.")
+
(defvar gnus-newsrc-file-version nil)
(defvar gnus-override-subscribe-method nil)
(defvar gnus-dribble-buffer nil)
(require 'gnus-range)
(require 'gnus-int)
(require 'gnus-undo)
+(require 'std11)
(require 'mime-view)
(autoload 'gnus-summary-limit-include-cached "gnus-cache" nil t)
(defun gnus-dependencies-add-header (header dependencies force-new)
"Enter HEADER into the DEPENDENCIES table if it is not already there.
-If FORCE-NEW is not nil, enter HEADER into the DEPENDENCIES table even
+If FORCE-NEW is not NIL, enter HEADER into the DEPENDENCIES table even
if it was already present.
-If `gnus-summary-ignore-duplicates' is nil then duplicate Message-IDs
+If `gnus-summary-ignore-duplicates' is NIL then duplicate Message-IDs
will not be entered in the DEPENDENCIES table. Otherwise duplicate
Message-IDs will be renamed be renamed to a unique Message-ID before
being entered.
-Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise."
+Returns HEADER if it was entered in the DEPENDENCIES. Returns NIL otherwise."
+
(let* ((id (mail-header-id header))
(id-dep (and id (intern id dependencies)))
ref ref-dep ref-header)
- ;; Enter this `header' in the `dependencies' table.
+ ;; Enter this `header' in the `dependencies' table
(cond
((not id-dep)
(setq header nil))
- ;; The first two cases do the normal part: enter a new `header'
- ;; in the `dependencies' table.
+ ;; The first two cases do the normal part : enter a new `header'
+ ;; in the `dependencies' table,
((not (boundp id-dep))
(set id-dep (list header)))
((null (car (symbol-value id-dep)))
;; From here the `header' was already present in the
;; `dependencies' table.
+
(force-new
- ;; Overrides an existing entry;
- ;; just set the header part of the entry.
+ ;; Overrides an existing entry,
+ ;; Just set the header part of the entry.
(setcar (symbol-value id-dep) header))
;; Renames the existing `header' to a unique Message-ID.
(list header))
(mail-header-set-id header id))
- ;; The last case ignores an existing entry, except it adds any
- ;; additional Xrefs (in case the two articles came from different
- ;; servers.
- ;; Also sets `header' to `nil' meaning that the `dependencies'
- ;; table was *not* modified.
+ ;; - The last case ignores an existing entry, except it adds
+ ;; any additional Xrefs (in case the two articles came from
+ ;; different servers.
+ ;; Also sets `header' to `nil' meaning that the
+ ;; `dependencies' table was *not* modified.
(t
(mail-header-set-xref
(car (symbol-value id-dep))
(boundp ref-dep)
(setq ref-header (car (symbol-value ref-dep))))
(if (string= id ref)
- ;; Yuk! This is a reference loop. Make the article be a
+ ;; Yuk ! This is a reference loop. Make the article be a
;; root article.
(progn
- (debug)
(mail-header-set-references (car (symbol-value id-dep)) "none")
(setq ref nil))
(setq ref (gnus-parent-id (mail-header-references ref-header)))))
(defun gnus-build-sparse-threads ()
(let ((headers gnus-newsgroup-headers)
header references generation relations
- cthread subject child end pthread relation new-child date)
+ cthread subject child end pthread relation new-child)
;; First we create an alist of generations/relations, where
;; generations is how much we trust the relation, and the relation
;; is parent/child.
(not (string= references "")))
(insert references)
(setq child (mail-header-id header)
- subject (mail-header-subject header)
- date (mail-header-date header)
- generation 0)
+ subject (mail-header-subject header))
+ (setq generation 0)
(while (search-backward ">" nil t)
(setq end (1+ (point)))
(if (search-backward "<" nil t)
(push (list (incf generation)
child (setq child new-child)
- subject date)
+ subject)
relations)))
(push (list (1+ generation) child nil subject) relations)
(erase-buffer)))
(kill-buffer (current-buffer)))
;; Sort over trustworthiness.
- (mapcar
- (lambda (relation)
- (when (gnus-dependencies-add-header
- (make-full-mail-header
- gnus-reffed-article-number
- (nth 3 relation) "" (nth 4 relation)
- (nth 1 relation)
- (or (nth 2 relation) "") 0 0 "")
- gnus-newsgroup-dependencies nil)
- (push gnus-reffed-article-number gnus-newsgroup-limit)
- (push gnus-reffed-article-number gnus-newsgroup-sparse)
- (push (cons gnus-reffed-article-number gnus-sparse-mark)
- gnus-newsgroup-reads)
- (decf gnus-reffed-article-number)))
- (sort relations 'car-less-than-car))
+ (mapc #'(lambda (relation)
+ (when (gnus-dependencies-add-header
+ (make-full-mail-header gnus-reffed-article-number
+ (cadddr relation)
+ "" "" (cadr relation)
+ (or (caddr relation) "") 0 0 "")
+ gnus-newsgroup-dependencies nil)
+ (push gnus-reffed-article-number gnus-newsgroup-limit)
+ (push gnus-reffed-article-number gnus-newsgroup-sparse)
+ (push (cons gnus-reffed-article-number gnus-sparse-mark)
+ gnus-newsgroup-reads)
+ (decf gnus-reffed-article-number)))
+ (sort relations 'car-less-than-car))
(gnus-message 7 "Making sparse threads...done")))
(defun gnus-build-old-threads ()
(setq heads nil)))))
gnus-newsgroup-dependencies)))
-;; The following macros and functions were written by Felix Lee
-;; <flee@cse.psu.edu>.
-
-(defmacro gnus-nov-read-integer ()
- '(prog1
- (if (= (following-char) ?\t)
- 0
- (let ((num (ignore-errors (read buffer))))
- (if (numberp num) num 0)))
- (unless (eobp)
- (search-forward "\t" eol 'move))))
-
-(defmacro gnus-nov-skip-field ()
- '(search-forward "\t" eol 'move))
-
-(defmacro gnus-nov-field ()
- '(buffer-substring (point) (if (gnus-nov-skip-field) (1- (point)) eol)))
-
-;; This function has to be called with point after the article number
-;; on the beginning of the line.
-(defsubst gnus-nov-parse-line (number dependencies &optional force-new)
- (let ((eol (gnus-point-at-eol))
- (buffer (current-buffer))
- header)
-
- ;; overview: [num subject from date id refs chars lines misc]
- (unwind-protect
- (progn
- (narrow-to-region (point) eol)
- (unless (eobp)
- (forward-char))
-
- (setq header
- (make-full-mail-header
- number ; number
- (funcall
- gnus-unstructured-field-decoder (gnus-nov-field)) ; subject
- (funcall
- gnus-structured-field-decoder (gnus-nov-field)) ; from
- (gnus-nov-field) ; date
- (or (gnus-nov-field)
- (nnheader-generate-fake-message-id)) ; id
- (gnus-nov-field) ; refs
- (gnus-nov-read-integer) ; chars
- (gnus-nov-read-integer) ; lines
- (unless (= (following-char) ?\n)
- (gnus-nov-field))))) ; misc
-
- (widen))
-
- (when gnus-alter-header-function
- (funcall gnus-alter-header-function header))
- (gnus-dependencies-add-header header dependencies force-new)))
-
(defun gnus-build-get-header (id)
;; Look through the buffer of NOV lines and find the header to
;; ID. Enter this line into the dependencies hash table, and return
;; the id of the parent article (if any).
- (let ((deps gnus-newsgroup-dependencies)
- found header)
+ (let (found header)
(prog1
(save-excursion
(set-buffer nntp-server-buffer)
(when found
(beginning-of-line)
(and
- (setq header (gnus-nov-parse-line
- (read (current-buffer)) deps))
+ (setq header (gnus-nov-parse-line (read (current-buffer))
+ gnus-newsgroup-dependencies))
(gnus-parent-id (mail-header-references header))))))
(when header
(let ((number (mail-header-number header)))
(defun gnus-build-all-threads ()
"Read all the headers."
(let ((gnus-summary-ignore-duplicates t)
- (dependencies gnus-newsgroup-dependencies)
found header article)
(save-excursion
(set-buffer nntp-server-buffer)
(goto-char (point-min))
(while (not (eobp))
(ignore-errors
- (setq article (read (current-buffer))
- header (gnus-nov-parse-line
- article dependencies)))
+ (setq article (read (current-buffer)))
+ (setq header (gnus-nov-parse-line article
+ gnus-newsgroup-dependencies)))
(when header
(push header gnus-newsgroup-headers)
(if (memq (setq article (mail-header-number header))
(setcar thread old)
nil))))
-(defun gnus-rebuild-thread (id &optional line)
- "Rebuild the thread containing ID.
-If LINE, insert the rebuilt thread starting on line LINE."
+(defun gnus-rebuild-thread (id)
+ "Rebuild the thread containing ID."
(let ((buffer-read-only nil)
old-pos current thread data)
(if (not gnus-show-threads)
(setq thread (cons subject (gnus-sort-threads roots))))))
(let (threads)
;; We then insert this thread into the summary buffer.
- (when line
- (goto-char (point-min))
- (forward-line (1- line)))
(let (gnus-newsgroup-data gnus-newsgroup-threads)
(if gnus-show-threads
(gnus-summary-prepare-threads (gnus-cut-threads (list thread)))
(setq data (nreverse gnus-newsgroup-data))
(setq threads gnus-newsgroup-threads))
;; We splice the new data into the data structure.
- ;;!!! This is kinda bogus. We assume that in LINE is non-nil,
- ;;!!! then we want to insert at the beginning of the buffer.
- ;;!!! That happens to be true with Gnus now, but that may
- ;;!!! change in the future. Perhaps.
- (gnus-data-enter-list (if line nil current) data (- (point) old-pos))
- (setq gnus-newsgroup-threads (nconc threads gnus-newsgroup-threads))
- (when line
- (gnus-data-compute-positions)))))
+ (gnus-data-enter-list current data (- (point) old-pos))
+ (setq gnus-newsgroup-threads (nconc threads gnus-newsgroup-threads)))))
(defun gnus-number-to-header (number)
"Return the header for article NUMBER."
(setq id (mail-header-id header)
ref (gnus-parent-id (mail-header-references header))))
- (when (setq header
- (gnus-dependencies-add-header
- header dependencies force-new))
- (push header headers))
+ (setq header
+ (gnus-dependencies-add-header header dependencies force-new))
+ (if header
+ (push header headers))
(goto-char (point-max))
(widen))
(nreverse headers)))))
+;; The following macros and functions were written by Felix Lee
+;; <flee@cse.psu.edu>.
+
+(defmacro gnus-nov-read-integer ()
+ '(prog1
+ (if (= (following-char) ?\t)
+ 0
+ (let ((num (ignore-errors (read buffer))))
+ (if (numberp num) num 0)))
+ (unless (eobp)
+ (search-forward "\t" eol 'move))))
+
+(defmacro gnus-nov-skip-field ()
+ '(search-forward "\t" eol 'move))
+
+(defmacro gnus-nov-field ()
+ '(buffer-substring (point) (if (gnus-nov-skip-field) (1- (point)) eol)))
+
+;; (defvar gnus-nov-none-counter 0)
+
+;; This function has to be called with point after the article number
+;; on the beginning of the line.
+(defun gnus-nov-parse-line (number dependencies &optional force-new)
+ (let ((eol (gnus-point-at-eol))
+ (buffer (current-buffer))
+ header ref id id-dep ref-dep)
+
+ ;; overview: [num subject from date id refs chars lines misc]
+ (unwind-protect
+ (progn
+ (narrow-to-region (point) eol)
+ (unless (eobp)
+ (forward-char))
+
+ (setq header
+ (make-full-mail-header
+ number ; number
+ (funcall
+ gnus-unstructured-field-decoder (gnus-nov-field)) ; subject
+ (funcall
+ gnus-structured-field-decoder (gnus-nov-field)) ; from
+ (gnus-nov-field) ; date
+ (or (gnus-nov-field)
+ (nnheader-generate-fake-message-id)) ; id
+ (gnus-nov-field) ; refs
+ (gnus-nov-read-integer) ; chars
+ (gnus-nov-read-integer) ; lines
+ (unless (= (following-char) ?\n)
+ (gnus-nov-field))))) ; misc
+
+ (widen))
+
+ (when gnus-alter-header-function
+ (funcall gnus-alter-header-function header))
+
+ (setq id (mail-header-id header)
+ ref (gnus-parent-id (mail-header-references header)))
+
+ (gnus-dependencies-add-header header dependencies force-new)
+
+ header))
+
;; Goes through the xover lines and returns a list of vectors
(defun gnus-get-newsgroup-headers-xover (sequence &optional
force-new dependencies
(mail-header-set-xref headers xref)))))))
(defun gnus-summary-insert-subject (id &optional old-header use-old-header)
- "Find article ID and insert the summary line for that article.
-OLD-HEADER can either be a header or a line number to insert
-the subject line on."
- (let* ((line (and (numberp old-header) old-header))
- (old-header (and (vectorp old-header) old-header))
- (header (cond ((and old-header use-old-header)
+ "Find article ID and insert the summary line for that article."
+ (let ((header (cond ((and old-header use-old-header)
old-header)
((and (numberp id)
(gnus-number-to-header id))
gnus-newsgroup-sparse))
(setq gnus-newsgroup-ancient (delq number gnus-newsgroup-ancient))
(push number gnus-newsgroup-limit)
- (gnus-rebuild-thread (mail-header-id header) line)
+ (gnus-rebuild-thread (mail-header-id header))
(gnus-summary-goto-subject number nil t))
(when (and (numberp number)
(> number 0))
;; We read in the article if we have to.
(and (not data)
force
- (gnus-summary-insert-subject
- article
- (if (or (numberp force) (vectorp force)) force)
- t)
+ (gnus-summary-insert-subject article (and (vectorp force) force) t)
(setq data (gnus-data-find article)))
(goto-char b)
(if (not data)
(not unread) (not subject))
(gnus-summary-goto-article
(if backward (1- gnus-newsgroup-begin) (1+ gnus-newsgroup-end))
- nil (count-lines (point-min) (point))))
+ nil t))
;; Go to next/previous group.
(t
(unless (gnus-ephemeral-group-p gnus-newsgroup-name)
(defun gnus-summary-goto-article (article &optional all-headers force)
"Fetch ARTICLE (article number or Message-ID) and display it if it exists.
-If ALL-HEADERS is non-nil, no header lines are hidden.
-If FORCE, go to the article even if it isn't displayed. If FORCE
-is a number, it is the line the article is to be displayed on."
+If ALL-HEADERS is non-nil, no header lines are hidden."
(interactive
(list
(completing-read
(nnmail-time-since (nnmail-date-to-time date))
cutoff))
(when (if younger-p
- is-younger
- (not is-younger))
+ (not is-younger)
+ is-younger)
(push (gnus-data-number d) articles))))
(gnus-summary-limit (nreverse articles)))
(gnus-summary-position-point)))
gnus-newsgroup-name)
(error "The current newsgroup does not support article deletion"))
;; Compute the list of articles to delete.
- (let ((articles (sort (copy-sequence (gnus-summary-work-articles n)) '<))
+ (let ((articles (gnus-summary-work-articles n))
not-deleted)
(if (and gnus-novice-user
(not (gnus-yes-or-no-p
(when result
(symbol-name result))))
-(defun gnus-current-topics (&optional topic)
- "Return a list of all current topics, lowest in hierarchy first.
-If TOPIC, start with that topic."
- (let ((topic (or topic (gnus-current-topic)))
+(defun gnus-current-topics ()
+ "Return a list of all current topics, lowest in hierarchy first."
+ (let ((topic (gnus-current-topic))
topics)
(while topic
(push topic topics)
active
(- (1+ (cdr active)) (car active))))
clevel (or (gnus-info-level info)
- (if (member group gnus-zombie-list)
- gnus-level-zombie gnus-level-killed))))
+ (if (member group gnus-zombie-list) gnus-level-zombie gnus-level-killed))))
(and
unread ; nil means that the group is dead.
(<= clevel level)
(defun gnus-group-topic-parameters (group)
"Compute the group parameters for GROUP taking into account inheritance from topics."
- (let ((params-list (copy-sequence (gnus-group-get-parameter group))))
+ (let ((params-list (list (gnus-group-get-parameter group)))
+ topics params param out)
(save-excursion
(gnus-group-goto-group group)
- (nconc params-list
- (gnus-topic-hierarchical-parameters (gnus-current-topic))))))
-
-(defun gnus-topic-hierarchical-parameters (topic)
- "Return a topic list computed for TOPIC."
- (let ((topics (gnus-current-topics topic))
- params-list param out params)
- (while topics
- (push (gnus-topic-parameters (pop topics)) params-list))
- ;; We probably have lots of nil elements here, so
- ;; we remove them. Probably faster than doing this "properly".
- (setq params-list (delq nil params-list))
- ;; Now we have all the parameters, so we go through them
- ;; and do inheritance in the obvious way.
- (while (setq params (pop params-list))
- (while (setq param (pop params))
- (when (atom param)
- (setq param (cons param t)))
- ;; Override any old versions of this param.
- (setq out (delq (assq (car param) out) out))
- (push param out)))
- ;; Return the resulting parameter list.
- out))
+ (setq topics (gnus-current-topics))
+ (while topics
+ (push (gnus-topic-parameters (pop topics)) params-list))
+ ;; We probably have lots of nil elements here, so
+ ;; we remove them. Probably faster than doing this "properly".
+ (setq params-list (delq nil params-list))
+ ;; Now we have all the parameters, so we go through them
+ ;; and do inheritance in the obvious way.
+ (while (setq params (pop params-list))
+ (while (setq param (pop params))
+ (when (atom param)
+ (setq param (cons param t)))
+ ;; Override any old versions of this param.
+ (setq out (delq (assq (car param) out) out))
+ (push param out)))
+ ;; Return the resulting parameter list.
+ out)))
;;; General utility functions
If SILENT, don't insert anything. Return the number of unread
articles in the topic and its subtopics."
(let* ((type (pop topicl))
- (entries (gnus-topic-find-groups
- (car type) list-level
- (or all
- (cdr (assq 'visible
- (gnus-topic-hierarchical-parameters
- (car type)))))
- lowest))
+ (entries (gnus-topic-find-groups (car type) list-level all lowest))
(visiblep (and (eq (nth 1 type) 'visible) (not silent)))
(gnus-group-indentation
(make-string (* gnus-topic-indent-level level) ? ))
;; Check whether the new name exists.
(when (gnus-topic-find-topology new-name)
(error "Topic '%s' already exists"))
- ;; "nil" is an invalid name, for reasons I'd rather not go
- ;; into here. Trust me.
- (when (equal new-name "nil")
- (error "Invalid name: %s" nil))
;; Do the renaming.
(let ((top (gnus-topic-find-topology old-name))
(entry (assoc old-name gnus-topic-alist)))
;; Default viewing action rules
(defcustom gnus-uu-default-view-rules
- '(("\\.te?xt$\\|\\.doc$\\|read.*me\\|\\.c?$\\|\\.h$\\|\\.bat$\\|\\.asm$\\|makefile" "cat %s | sed 's/\r$//'")
- ("\\.pas$" "cat %s | sed 's/\r$//'")
+ '(("\\.te?xt$\\|\\.doc$\\|read.*me\\|\\.c?$\\|\\.h$\\|\\.bat$\\|\\.asm$\\|makefile" "cat %s | sed s/\r//g")
+ ("\\.pas$" "cat %s | sed s/\r//g")
("\\.[1-9]$" "groff -mandoc -Tascii %s | sed s/\b.//g")
("\\.\\(jpe?g\\|gif\\|tiff?\\|p[pgb]m\\|xwd\\|xbm\\|pcx\\)$" "xv")
("\\.tga$" "tgatoppm %s | xv -")
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "6.7.3"
+(defconst gnus-version-number "6.6.0"
"Version number for this version of gnus.")
(defconst gnus-version
- (format "Semi-gnus %s (based on Gnus 5.6.15; for SEMI 1.8)"
+ (format "Semi-gnus %s (based on Gnus 5.6.11; for SEMI 1.8)"
gnus-version-number)
"Version string for this version of gnus.")
"Collapse GROUP name LEVELS.
Select methods are stripped and any remote host name is stripped down to
just the host name."
- (let* ((name "")
- (foreign "")
- (depth 0)
- (skip 1)
+ (let* ((name "") (foreign "") (depth -1) (skip 1)
(levels (or levels
(progn
(while (string-match "\\." group skip)
:type 'boolean)
(defcustom message-generate-new-buffers t
- "*Non-nil means that a new message buffer will be created whenever `message-setup' is called.
+ "*Non-nil means that a new message buffer will be created whenever `mail-setup' is called.
If this is a function, call that function with three parameters: The type,
the to address and the group name. (Any of these may be nil.) The function
should return the new buffer name."
(Lines)
(Expires)
(Message-ID)
- (References . message-shorten-references)
+ (References . message-fill-references)
(X-Mailer)
(X-Newsreader))
"Alist used for formatting headers.")
If FIRST, only remove the first instance of the header.
Return the number of headers removed."
(goto-char (point-min))
- (let ((regexp (if is-regexp header (concat "^" (regexp-quote header) ":")))
+ (let ((regexp (if is-regexp header (concat "^" header ":")))
(number 0)
(case-fold-search t)
last)
(replace-match " " t t))
(goto-char (point-max)))))
-(defun message-shorten-references (header references)
- "Limit REFERENCES to be shorter than 988 characters."
- (let ((max 988)
- (cut 4)
- refs)
- (nnheader-temp-write nil
- (insert references)
- (goto-char (point-min))
- (while (re-search-forward "<[^>]+>" nil t)
- (push (match-string 0) refs))
- (setq refs (nreverse refs))
- (while (> (length (mapconcat 'identity refs " ")) max)
- (when (< (length refs) (1+ cut))
- (decf cut))
- (setcdr (nthcdr cut refs) (cddr (nthcdr cut refs)))))
- (insert (capitalize (symbol-name header)) ": "
- (mapconcat 'identity refs " ") "\n")))
-
(defun message-position-point ()
"Move point to where the user probably wants to find it."
(message-narrow-to-headers)
(Subject . ,(or subject ""))))))
;;;###autoload
-(defun message-reply (&optional to-address wide)
+(defun message-reply (&optional to-address wide ignore-reply-to)
"Start editing a reply to the article in the current buffer."
(interactive)
(let ((cur (current-buffer))
to (message-fetch-field "to")
cc (message-fetch-field "cc")
mct (message-fetch-field "mail-copies-to")
- reply-to (message-fetch-field "reply-to")
+ reply-to (unless ignore-reply-to (message-fetch-field "reply-to"))
references (message-fetch-field "references")
message-id (message-fetch-field "message-id" t))
;; Remove any (buggy) Re:'s that are present and make a
cur)))
;;;###autoload
-(defun message-wide-reply (&optional to-address)
+(defun message-wide-reply (&optional to-address ignore-reply-to)
"Make a \"wide\" reply to the message in the current buffer."
(interactive)
- (message-reply to-address t))
+ (message-reply to-address t ignore-reply-to))
;;;###autoload
(defun message-followup (&optional to-newsgroups)
(same-window-buffer-names nil)
(same-window-regexps nil))
(message-pop-to-buffer (message-buffer-name "mail" to)))
- (let ((message-this-is-mail t))
- (message-setup `((To . ,(or to "")) (Subject . ,(or subject ""))))))
+ (message-setup `((To . ,(or to "")) (Subject . ,(or subject "")))))
;;;###autoload
(defun message-mail-other-frame (&optional to subject)
(same-window-buffer-names nil)
(same-window-regexps nil))
(message-pop-to-buffer (message-buffer-name "mail" to)))
- (let ((message-this-is-mail t))
- (message-setup `((To . ,(or to "")) (Subject . ,(or subject ""))))))
+ (message-setup `((To . ,(or to "")) (Subject . ,(or subject "")))))
;;;###autoload
(defun message-news-other-window (&optional newsgroups subject)
(same-window-buffer-names nil)
(same-window-regexps nil))
(message-pop-to-buffer (message-buffer-name "news" nil newsgroups)))
- (let ((message-this-is-news t))
- (message-setup `((Newsgroups . ,(or newsgroups ""))
- (Subject . ,(or subject ""))))))
+ (message-setup `((Newsgroups . ,(or newsgroups ""))
+ (Subject . ,(or subject "")))))
;;;###autoload
(defun message-news-other-frame (&optional newsgroups subject)
(same-window-buffer-names nil)
(same-window-regexps nil))
(message-pop-to-buffer (message-buffer-name "news" nil newsgroups)))
- (let ((message-this-is-news t))
- (message-setup `((Newsgroups . ,(or newsgroups ""))
- (Subject . ,(or subject ""))))))
+ (message-setup `((Newsgroups . ,(or newsgroups ""))
+ (Subject . ,(or subject "")))))
;;; underline.el
(require 'nnheader)
(require 'nnoo)
-(eval-when-compile (require 'cl))
+(require 'cl)
(require 'gnus-agent)
(require 'nnml)
(require 'message)
(require 'nnmail)
(require 'nnoo)
-(eval-when-compile (require 'cl))
+(require 'cl)
(require 'gnus-util)
(nnoo-declare nnfolder)
(save-excursion
(set-buffer buffer)
(goto-char (point-min))
- (if (looking-at "X-From-Line: ")
- (replace-match "From ")
- (unless (looking-at message-unix-mail-delimiter)
- (insert "From nobody " (current-time-string) "\n")))
+ (when (looking-at "X-From-Line: ")
+ (replace-match "From "))
(nnfolder-normalize-buffer)
(set-buffer nnfolder-current-buffer)
(goto-char (point-min))
(if (not (nnfolder-goto-article article))
nil
- (nnfolder-delete-mail)
+ (nnfolder-delete-mail t)
(insert-buffer-substring buffer)
(nnfolder-save-buffer)
t)))
(insert mail-header-separator "\n")
(widen)
(let (message-required-mail-headers)
- (funcall message-send-mail-function))
- t))))
+ (funcall message-send-mail-function))))))
;;; Internal functions
(insert "To: " (nnheader-replace-chars-in-string newsgroups ?. ?-)
"@" gateway "\n")))
-(defun nngateway-mail2news-header-transformation (gateway)
- "Transform the headers for sending to a mail2news gateway."
- (message-remove-header "to")
- (message-remove-header "cc")
- (goto-char (point-min))
- (insert "To: mail2news@" gateway "\n"))
-
(nnoo-define-skeleton nngateway)
(provide 'nngateway)
(let ((format-alist nil)
(auto-mode-alist (nnheader-auto-mode-alist))
(default-major-mode 'fundamental-mode)
- (enable-local-variables nil)
(after-insert-file-functions nil)
- (find-file-hooks nil)
(coding-system-for-read nnheader-file-coding-system))
(insert-file-contents filename visit beg end replace)))
(let ((files (nconc
(nnkiboze-score-file group)
(list (nnkiboze-nov-file-name)
- (nnkiboze-nov-file-name ".newsrc")))))
+ (concat nnkiboze-directory
+ (nnheader-translate-file-chars
+ (concat group ".newsrc")))))))
(while files
(and (file-exists-p (car files))
(file-writable-p (car files))
(goto-char (1+ (match-beginning 0)))
(insert prefix)))))
-(defun nnkiboze-nov-file-name (&optional suffix)
+(defun nnkiboze-nov-file-name ()
(concat (file-name-as-directory nnkiboze-directory)
(nnheader-translate-file-chars
- (concat (nnkiboze-prefixed-name nnkiboze-current-group)
- (or suffix ".nov")))))
+ (concat (nnkiboze-prefixed-name nnkiboze-current-group) ".nov"))))
(provide 'nnkiboze)
;;; Code:
-(require 'cl)
+(eval-when-compile (require 'cl))
(require 'nnheader)
(require 'timezone)
(file-name-as-directory
nnmail-procmail-directory)))
"\\([^/]*\\)"
- nnmail-procmail-suffix "$")
+ (regexp-quote nnmail-procmail-suffix) "$")
(expand-file-name file))
(let ((procmail-group (substring (expand-file-name file)
(match-beginning 1)
(goto-char (point-min))
(while (re-search-forward "\\(\r?\n[ \t]+\\)+" nil t)
(replace-match " " t t))
- ;; Nuke pathologically long headers. Since Gnus applies
- ;; pathologically complex regexps to the buffer, lines
- ;; that are looong will take longer than the Universe's
- ;; existence to process.
- (goto-char (point-min))
- (while (not (eobp))
- (end-of-line)
- (if (> (current-column) 1024)
- (gnus-delete-line)
- (forward-line 1)))
;; Allow washing.
- (goto-char (point-min))
(run-hooks 'nnmail-split-hook)
(if (and (symbolp nnmail-split-methods)
(fboundp nnmail-split-methods))
(defvoo nntp-server-list-active-group 'try)
(eval-and-compile
- (autoload 'nnmail-read-passwd "nnmail")
- (autoload 'open-ssl-stream "ssl"))
+ (autoload 'nnmail-read-passwd "nnmail"))
\f
(defun nntp-open-network-stream (buffer)
(open-network-stream "nntpd" buffer nntp-address nntp-port-number))
-(defun nntp-open-ssl-stream (buffer)
- (let* ((ssl-program-arguments '("-connect" (concat host ":" service)))
- (proc (open-ssl-stream "nntpd" buffer nntp-address nntp-port-number)))
- (save-excursion
- (set-buffer buffer)
- (nntp-wait-for-string "^\r*20[01]")
- (beginning-of-line)
- (delete-region (point-min) (point))
- proc)))
-
(defun nntp-read-server-type ()
"Find out what the name of the server we have connected to is."
;; Wait for the status string to arrive.
(replace-match "" t t))
(goto-char (point-min))
(when (re-search-forward
- (concat (regexp-quote (gnus-group-real-name group)) ":[0-9]+")
+ (concat (gnus-group-real-name group) ":[0-9]+")
nil t)
(replace-match "" t t))
(unless (= (point) (point-max))
(deffoo nnweb-request-delete-group (group &optional force server)
(nnweb-possibly-change-server group server)
- (gnus-delete-assoc group nnweb-group-alist)
+ (gnus-pull group nnweb-group-alist)
(gnus-delete-file (nnweb-overview-file group))
t)
-Thu Jun 25 11:24:14 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-
- * gnus.texi (Summary Score Commands): Deletia.
-
-Wed Jun 24 00:37:32 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-
- * gnus.texi (Auto Save): Addition.
- (Mail-To-News Gateways): Addition.
- (NNTP): Addition.
-
Wed Jun 3 03:30:47 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
* message.texi (Message Headers): Addition.
\e$B3J9%$N5-;v$GKd$a9~$`$3$H$5$(2DG=$K$7$^$9!#\e(B
@vindex gnus-show-mime
-@vindex gnus-article-display-method-for-mime
+@vindex gnus-show-mime-method
@vindex gnus-strict-mime
-@findex gnus-article-display-mime-message
-Gnus \e$B$O\e(B @code{gnus-article-display-method-for-mime} \e$B$K5-;v$r2!$7IU$1$k$3\e(B
-\e$B$H$G\e(B @sc{mime} \e$B$r07$$$^$9!#$3$N=i4|CM$O\e(B
-@code{gnus-article-display-mime-message} \e$B$G$9!#$3$N4X?t$O\e(B SEMI MIME-View
-\e$B%W%m%0%i%`$r8F$S=P$7$F<B:]$N=hM}$r9T$$$^$9!#\e(BSEMI MIME-View \e$B$K4X$9$k>\$7\e(B
-\e$B$$>pJs$O!"%^%K%e%"%k$r;2>H$7$F$/$@$5$$!J$^$@$J$$$1$I\e(B(;_;)\e$B!K!#\e(B
+@findex metamail-buffer
+Gnus \e$B$O\e(B @code{gnus-show-mime-method} \e$B$K5-;v$r2!$7IU$1$k$3$H$G\e(B @sc{mime} \e$B$r\e(B
+\e$B07$$$^$9!#$3$l$O%G%#%U%)%k%H$G$O\e(B @code{gnus-show-mime-method} \e$B$G$9!#$3$N4X\e(B
+\e$B?t$O\e(B SEMI MIME-View \e$B%W%m%0%i%`$r8F$S=P$7$F<B:]$N=hM}$r9T$$$^$9!#\e(BSEMI
+MIME-View \e$B$K4X$9$k>\$7$$>pJs$O!"%^%K%e%"%k$r;2>H$7$F$/$@$5$$!J$^$@$J$$$1$I\e(B
+(;_;)\e$B!K!#\e(B
@sc{mime} \e$B$r>o$K;HMQ$7$?$1$l$P!"\e(B@code{gnus-show-mime} \e$B$r\e(B
@code{t} \e$B$K@_Dj$7$F$/$@$5$$!#$7$+$7!"\e(B@code{gnus-strict-mime} \e$B$,\e(B
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Semi-gnus 6.7.2 Manual
+@settitle Semi-gnus 6.4.0 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Semi-gnus 6.7.2 Manual
+@title Semi-gnus 6.4.0 Manual
@author by Lars Magne Ingebrigtsen
@page
API. So Semi-gnus does not discriminate various language communities.
Oh, if you are a Klingon, please wait Unicode Next Generation.
-This manual corresponds to Semi-gnus 6.7.2.
+This manual corresponds to Semi-gnus 6.4.0.
@end ifinfo
normally the user's home directory.) The dribble file will get the same
file permissions as the @code{.newsrc} file.
-@vindex gnus-always-read-dribble-file
-If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will
-read the dribble file on startup without querying the user.
-
@node The Active File
@section The Active File
methods.
@vindex gnus-activate-foreign-newsgroups
-If @code{gnus-activate-foreign-newsgroups} is a positive number,
-gnus will check all foreign groups with this level or lower at startup.
-This might take quite a while, especially if you subscribe to lots of
-groups from different @sc{nntp} servers. Also @pxref{Group Levels};
-@code{gnus-activate-level} also affects activation of foreign
-newsgroups.
+If @code{gnus-activate-foreign-newsgroups} is a positive number, gnus
+will check all foreign groups with this level or lower at startup. This
+might take quite a while, especially if you subscribe to lots of groups
+from different @sc{nntp} servers.
@node Group Parameters
other naughty stuff in innocent-looking articles.
@vindex gnus-show-mime
-@vindex gnus-article-display-method-for-mime
+@vindex gnus-show-mime-method
@vindex gnus-strict-mime
-@findex gnus-article-display-mime-message
+@findex metamail-buffer
Gnus handles @sc{mime} by pushing the articles through
-@code{gnus-article-display-method-for-mime}, which is
-@code{gnus-article-display-mime-message} by default. This function
-calls the SEMI MIME-View program to actually do the work. For more
-information on SEMI MIME-View, see its manual page (however it is not
-existed yet, sorry).
+@code{gnus-show-mime-method}, which is @code{gnus-show-mime-method} by
+default. This function calls the SEMI MIME-View program to actually do
+the work. For more information on SEMI MIME-View, see its manual page
+(however it is not existed yet, sorry).
Set @code{gnus-show-mime} to @code{t} if you want to use
@sc{mime} all the time. However, if @code{gnus-strict-mime} is
@findex nntp-open-network-stream
@item nntp-open-connection-function
@vindex nntp-open-connection-function
-This function is used to connect to the remote system. Four pre-made
-functions are supplied:
-
-@table @code
-@item nntp-open-network-stream
-This is the default, and simply connects to some port or other on the
-remote system.
-
-@item nntp-open-rlogin
-Does an @samp{rlogin} on the
+This function is used to connect to the remote system. Three pre-made
+functions are @code{nntp-open-network-stream}, which is the default, and
+simply connects to some port or other on the remote system. The other
+two are @code{nntp-open-rlogin}, which does an @samp{rlogin} on the
remote system, and then does a @samp{telnet} to the @sc{nntp} server
-available there.
+available there, and @code{nntp-open-telnet}, which does a @samp{telnet}
+to the remote system and then another @samp{telnet} to get to the
+@sc{nntp} server.
@code{nntp-open-rlogin}-related variables:
@end table
-@item nntp-open-telnet
-Does a @samp{telnet} to the remote system and then another @samp{telnet}
-to get to the @sc{nntp} server.
-
@code{nntp-open-telnet}-related variables:
@table @code
@end table
-@findex nntp-open-ssl-stream
-@item nntp-open-ssl-stream
-Opens a connection to a server over a @dfn{secure} channel. To use this
-you must have SSLay installed
-(@file{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL}, and you also need
-@file{ssl.el} (from the W3 distributeion, for instance). You then
-define a server as follows:
-
-@lisp
-;; Type `C-c C-c' after you've finished editing.
-;;
-;; "snews" is port 563 and is predefined in our /etc/services
-;;
-(nntp "snews.bar.com"
- (nntp-open-connection-function nntp-open-ssl-stream)
- (nntp-port-number "snews")
- (nntp-address "snews.bar.com"))
-@end lisp
-
-@end table
-
@item nntp-end-of-line
@vindex nntp-end-of-line
String to use as end-of-line marker when talking to the @sc{nntp}
To: alt-religion-emacs@@GATEWAY
@end example
-The following pre-defined functions exist:
-
-@findex nngateway-simple-header-transformation
-@table @code
-
-@item nngateway-simple-header-transformation
-Creates a @code{To} header that looks like
-@var{newsgroup}@@@code{nngateway-address}.
-
-@findex nngateway-mail2news-header-transformation
-
-@item nngateway-mail2news-header-transformation
-Creates a @code{To} header that looks like
-@samp{mail2news}@@@code{nngateway-address}.
-
-@end table
-
-
@end table
So, to use this, simply say something like:
around with your score files behind Gnus' back and want to see the
effect you're having.
+@item V a
+@kindex V a (Summary)
+@findex gnus-summary-score-entry
+Add a new score entry, and allow specifying all elements
+(@code{gnus-summary-score-entry}).
+
@item V c
@kindex V c (Summary)
@findex gnus-score-change-score-file
* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
* September Gnus:: The Thing Formally Known As Gnus 5.3/5.3.
* Red Gnus:: Third time best---Gnus 5.4/5.5.
-* Quassia Gnus:: Two times two is four, or Gnus 5.6.15.
+* Quassia Gnus:: Two times two is four, or Gnus 5.6.11.
@end menu
These lists are, of course, just @emph{short} overviews of the
@node Quassia Gnus
@subsubsection Quassia Gnus
-New features in Gnus 5.6.15:
+New features in Gnus 5.6.11:
@itemize @bullet
Allow Gnus Agent scoring to use normal score files.
@item
-Rething the Agent active file thing. `M-g' doesn't update the active
-file, for instance.
-
-@item
-With dummy roots, `^' and then selecing the first article
-in any other dummy thread will make gnus highlight the
-dummy root instead of the first article.
-
-@item
Solve the halting problem.
@c TODO
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Message 5.6.15 Manual
+@settitle Message 5.6.11 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Message 5.6.15 Manual
+@title Message 5.6.11 Manual
@author by Lars Magne Ingebrigtsen
@page
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Message 5.6.15. Message is distributed with
+This manual corresponds to Message 5.6.11. Message is distributed with
the Gnus distribution bearing the same version number as this manual
has.