+Mon Nov 24 18:46:37 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Quassia Gnus v0.15 is released.
+
+Mon Nov 24 18:07:21 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-ems.el: Also check major version names.
+
+1997-10-05 SL Baur <steve@altair.xemacs.org>
+
+ * message.el (require 'rmail): Put guard around.
+ * nnbabyl.el (require 'rmail): Ditto.
+
+Mon Nov 24 17:36:00 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * message.el (message-reply): Respect Mail-Copies-To even when
+ `to-address'.
+
+Mon Nov 24 17:32:47 1997 Thor Kristoffersen <thor@unik.no>
+
+ * nntp.el (nntp-request-close): Sleep one second.
+
+Mon Nov 24 16:18:19 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-sum.el (gnus-summary-read-group-1): Update marks when not
+ entering group.
+
+ * gnus-start.el (gnus-setup-news): Get correct value of archive
+ server.
+
+Wed Oct 8 20:29:35 1997 Robert Bihlmeyer <robbe@orcus.priv.at>
+
+ * message.el (message-make-organization): Don't let the
+ environment variable override a user-set organization.
+
+Mon Nov 24 14:09:00 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nnml.el (nnml-open-nov): Don't use find-file.
+
+ * gnus-sum.el (gnus-last-newsgroup-variables-set): New variable.
+ (gnus-set-global-variables): Don't do to much; gets run off of
+ pre-command-hook.
+ Got rid of gnus-set-global-variables throughout.
+ (gnus-summary-exit): Update adaptive scoring here.
+ (gnus-summary-isearch-article): Widen.
+
+ * nnml.el (nnml-parse-head): Work in empty buffers.
+
+1997-10-14 Hrvoje Niksic <hniksic@srce.hr>
+
+ * gnus-xmas.el (gnus-xmas-group-startup-message): Check for image
+ formats correctly.
+ (gnus-xmas-modeline-glyph): Ditto.
+
+Mon Nov 24 13:58:12 1997 Hrvoje Niksic <hniksic@srce.hr>
+
+ * gnus-spec.el (gnus-compile): Work under XEmacs.
+
+Mon Nov 24 07:15:45 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nnoo.el (nnoo-change-server): Push the right parent packend onto
+ the alist.
+
Sun Nov 23 16:21:41 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Quassia Gnus v0.14 is released.
the mark instead. The difference between N and the actual number of
articles marked is returned."
(interactive "p")
- (gnus-set-global-variables)
(let ((backward (< n 0))
(n (abs n)))
(while (and
If N is negative, unmark backward instead. The difference between N and
the actual number of articles unmarked is returned."
(interactive "p")
- (gnus-set-global-variables)
(gnus-agent-mark-article n t))
(defun gnus-agent-toggle-mark (n)
If N is negative, toggle backward instead. The difference between N and
the actual number of articles toggled is returned."
(interactive "p")
- (gnus-set-global-variables)
(gnus-agent-mark-article n 'toggle))
(defun gnus-summary-set-agent-mark (article &optional unmark)
Optional argument FILENAME specifies file name.
Directory to save to is default to `gnus-article-save-directory'."
(interactive)
- (gnus-set-global-variables)
(setq filename (gnus-read-save-file-name
"Save %s in rmail file:" filename
gnus-rmail-save-name gnus-newsgroup-name
Optional argument FILENAME specifies file name.
Directory to save to is default to `gnus-article-save-directory'."
(interactive)
- (gnus-set-global-variables)
(setq filename (gnus-read-save-file-name
"Save %s in Unix mail file:" filename
gnus-mail-save-name gnus-newsgroup-name
Optional argument FILENAME specifies file name.
Directory to save to is default to `gnus-article-save-directory'."
(interactive)
- (gnus-set-global-variables)
(setq filename (gnus-read-save-file-name
"Save %s in file:" filename
gnus-file-save-name gnus-newsgroup-name
Optional argument FILENAME specifies file name.
The directory to save in defaults to `gnus-article-save-directory'."
(interactive)
- (gnus-set-global-variables)
(setq filename (gnus-read-save-file-name
"Save %s body in file:" filename
gnus-file-save-name gnus-newsgroup-name
(defun gnus-summary-save-in-pipe (&optional command)
"Pipe this article to subprocess."
(interactive)
- (gnus-set-global-variables)
(setq command
(cond ((eq command 'default)
gnus-last-shell-command)
"The directory containing the Sound Files.")
(defvar gnus-audio-au-player "/usr/bin/showaudio"
- "Executable program for playing sun AU format sound files")
-(defvar gnus-audio-wav-player "/usr/local/bin/play"
- "Executable program for playing WAV files")
+ "Executable program for playing sun AU format sound files.")
+(defvar gnus-audio-wav-player "/usr/local/bin/play"
+ "Executable program for playing WAV files.")
-;;; The following isn't implemented yet. Wait for Red Gnus.
+;;; The following isn't implemented yet. Wait for Millennium Gnus.
;(defvar gnus-audio-effects-enabled t
; "When t, Gnus will use sound effects.")
;(defvar gnus-audio-enable-hooks nil
If not given a prefix, use the process marked articles instead.
Returns the list of articles entered."
(interactive "P")
- (gnus-set-global-variables)
(let ((articles (gnus-summary-work-articles n))
article out)
(while (setq article (pop articles))
If not given a prefix, use the process marked articles instead.
Returns the list of articles removed."
(interactive "P")
- (gnus-set-global-variables)
(gnus-cache-change-buffer gnus-newsgroup-name)
(let ((articles (gnus-summary-work-articles n))
article out)
(defun gnus-draft-edit-message ()
"Enter a mail/post buffer to edit and send the draft."
(interactive)
- (gnus-set-global-variables)
(let ((article (gnus-summary-article-number)))
(gnus-draft-setup article gnus-newsgroup-name)
(push
(defun gnus-draft-send-message (&optional n)
"Send the current draft."
(interactive "P")
- (gnus-set-global-variables)
(let ((articles (gnus-summary-work-articles n))
article)
(while (setq article (pop articles))
(gnus-xmas-define))
((or (not (boundp 'emacs-minor-version))
- (< emacs-minor-version 30))
+ (and (< emacs-major-version 20)
+ (< emacs-minor-version 30)))
;; Remove the `intangible' prop.
(let ((props (and (boundp 'gnus-hidden-properties)
gnus-hidden-properties)))
article)
(while (setq article (pop articles))
(gnus-summary-goto-subject article)
- (gnus-set-global-variables)
(bbb-summary-rate-article score
(mail-header-id
(gnus-summary-article-header article)))))
+++ /dev/null
-;;; gnus-load.el --- automatically extracted custom dependencies
-;;
-;;; Code:
-
-(put 'nnmail 'custom-loads '("nnmail"))
-(put 'gnus-article-emphasis 'custom-loads '("gnus-art"))
-(put 'gnus-article-headers 'custom-loads '("gnus-sum" "gnus-art"))
-(put 'nnmail-procmail 'custom-loads '("nnmail"))
-(put 'gnus-score-kill 'custom-loads '("gnus-kill"))
-(put 'gnus-visual 'custom-loads '("smiley" "gnus" "gnus-picon" "gnus-art" "earcon"))
-(put 'gnus-score-expire 'custom-loads '("gnus-score" "gnus-kill"))
-(put 'gnus-summary-maneuvering 'custom-loads '("gnus-sum"))
-(put 'gnus-start 'custom-loads '("gnus" "gnus-util" "gnus-start" "gnus-int" "gnus-group"))
-(put 'gnus-extract-view 'custom-loads '("gnus-uu" "gnus-sum"))
-(put 'gnus-various 'custom-loads '("gnus-sum"))
-(put 'gnus-article-washing 'custom-loads '("gnus-art"))
-(put 'gnus-score-files 'custom-loads '("gnus-score"))
-(put 'message-news 'custom-loads '("message"))
-(put 'gnus-thread 'custom-loads '("gnus-sum"))
-(put 'languages 'custom-loads '("cus-edit"))
-(put 'development 'custom-loads '("cus-edit"))
-(put 'gnus-treading 'custom-loads '("gnus-sum"))
-(put 'nnmail-various 'custom-loads '("nnmail"))
-(put 'extensions 'custom-loads '("wid-edit"))
-(put 'message-various 'custom-loads '("message"))
-(put 'gnus-summary-exit 'custom-loads '("gnus-sum"))
-(put 'news 'custom-loads '("message" "gnus"))
-(put 'gnus 'custom-loads '("nnmail" "gnus" "gnus-win" "gnus-uu" "gnus-eform" "gnus-dup" "gnus-demon" "gnus-cache" "gnus-async" "gnus-art"))
-(put 'gnus-summary-visual 'custom-loads '("gnus-sum"))
-(put 'gnus-group-listing 'custom-loads '("gnus-group"))
-(put 'gnus-score 'custom-loads '("gnus" "gnus-nocem"))
-(put 'gnus-group-select 'custom-loads '("gnus-sum"))
-(put 'message-buffers 'custom-loads '("message"))
-(put 'gnus-threading 'custom-loads '("gnus-sum"))
-(put 'gnus-score-decay 'custom-loads '("gnus-score"))
-(put 'help 'custom-loads '("cus-edit"))
-(put 'gnus-nocem 'custom-loads '("gnus-nocem"))
-(put 'gnus-cite 'custom-loads '("gnus-cite"))
-(put 'gnus-demon 'custom-loads '("gnus-demon"))
-(put 'gnus-message 'custom-loads '("message"))
-(put 'gnus-score-default 'custom-loads '("gnus-sum" "gnus-score"))
-(put 'nnmail-duplicate 'custom-loads '("nnmail"))
-(put 'message-interface 'custom-loads '("message"))
-(put 'nnmail-files 'custom-loads '("nnmail"))
-(put 'gnus-edit-form 'custom-loads '("gnus-eform"))
-(put 'emacs 'custom-loads '("cus-edit"))
-(put 'gnus-summary-mail 'custom-loads '("gnus-sum"))
-(put 'gnus-topic 'custom-loads '("gnus-topic"))
-(put 'wp 'custom-loads '("cus-edit"))
-(put 'gnus-summary-choose 'custom-loads '("gnus-sum"))
-(put 'widget-browse 'custom-loads '("wid-browse"))
-(put 'external 'custom-loads '("cus-edit"))
-(put 'message-headers 'custom-loads '("message"))
-(put 'message-forwarding 'custom-loads '("message"))
-(put 'message-faces 'custom-loads '("message"))
-(put 'environment 'custom-loads '("cus-edit"))
-(put 'gnus-article-mime 'custom-loads '("gnus-sum" "gnus-art"))
-(put 'gnus-duplicate 'custom-loads '("gnus-dup"))
-(put 'nnmail-retrieve 'custom-loads '("nnmail"))
-(put 'widgets 'custom-loads '("wid-edit" "wid-browse"))
-(put 'earcon 'custom-loads '("earcon"))
-(put 'hypermedia 'custom-loads '("wid-edit"))
-(put 'gnus-group-levels 'custom-loads '("gnus-group"))
-(put 'gnus-summary-format 'custom-loads '("gnus-sum"))
-(put 'gnus-files 'custom-loads '("nnmail" "gnus"))
-(put 'gnus-windows 'custom-loads '("gnus-win"))
-(put 'gnus-article-buttons 'custom-loads '("gnus-art"))
-(put 'gnus-summary 'custom-loads '("gnus" "gnus-sum"))
-(put 'gnus-article-hiding 'custom-loads '("gnus-sum" "gnus-art"))
-(put 'gnus-group 'custom-loads '("gnus" "gnus-topic"))
-(put 'gnus-article-various 'custom-loads '("gnus-sum" "gnus-art"))
-(put 'gnus-summary-marks 'custom-loads '("gnus-sum"))
-(put 'gnus-article-saving 'custom-loads '("gnus-art"))
-(put 'nnmail-expire 'custom-loads '("nnmail"))
-(put 'message-mail 'custom-loads '("message"))
-(put 'faces 'custom-loads '("wid-edit" "cus-edit" "message" "gnus"))
-(put 'gnus-summary-various 'custom-loads '("gnus-sum"))
-(put 'applications 'custom-loads '("cus-edit"))
-(put 'gnus-extract-archive 'custom-loads '("gnus-uu"))
-(put 'message 'custom-loads '("message"))
-(put 'message-sending 'custom-loads '("message"))
-(put 'editing 'custom-loads '("cus-edit"))
-(put 'gnus-score-adapt 'custom-loads '("gnus-score"))
-(put 'message-insertion 'custom-loads '("message"))
-(put 'gnus-extract-post 'custom-loads '("gnus-uu"))
-(put 'mail 'custom-loads '("message" "gnus"))
-(put 'gnus-summary-sort 'custom-loads '("gnus-sum"))
-(put 'customize 'custom-loads '("wid-edit" "custom" "cus-face" "cus-edit"))
-(put 'nnmail-split 'custom-loads '("nnmail"))
-(put 'gnus-asynchronous 'custom-loads '("gnus-async"))
-(put 'gnus-article-highlight 'custom-loads '("gnus-art"))
-(put 'gnus-extract 'custom-loads '("gnus-uu"))
-(put 'gnus-article 'custom-loads '("gnus-cite" "gnus-art"))
-(put 'gnus-group-foreign 'custom-loads '("gnus-group"))
-(put 'programming 'custom-loads '("cus-edit"))
-(put 'nnmail-prepare 'custom-loads '("nnmail"))
-(put 'picons 'custom-loads '("gnus-picon"))
-(put 'gnus-article-signature 'custom-loads '("gnus-art"))
-(put 'gnus-group-various 'custom-loads '("gnus-group"))
-
-(provide 'gnus-load)
-
-;;; gnus-load.el ends here
(defun gnus-summary-post-news ()
"Start composing a news message."
(interactive)
- (gnus-set-global-variables)
(gnus-post-news 'post gnus-newsgroup-name))
(defun gnus-summary-followup (yank &optional force-news)
(interactive
(list (and current-prefix-arg
(gnus-summary-work-articles 1))))
- (gnus-set-global-variables)
(when yank
(gnus-summary-goto-subject (car yank)))
(save-window-excursion
prefix `a', cancel using the standard posting method; if not
post using the current select method."
(interactive (gnus-interactive "P\ny"))
- (gnus-set-global-variables)
(let ((articles (gnus-summary-work-articles n))
(message-post-method
`(lambda (arg)
This is done simply by taking the old article and adding a Supersedes
header line with the old Message-ID."
(interactive)
- (gnus-set-global-variables)
(let ((article (gnus-summary-article-number)))
(gnus-setup-message 'reply-yank
(gnus-summary-select-article t)
(list (and current-prefix-arg
(gnus-summary-work-articles 1))))
;; Stripping headers should be specified with mail-yank-ignored-headers.
- (gnus-set-global-variables)
(when yank
(gnus-summary-goto-subject (car yank)))
(let ((gnus-article-reply t))
"Forward the current message to another user.
If FULL-HEADERS (the prefix), include full headers when forwarding."
(interactive "P")
- (gnus-set-global-variables)
(gnus-setup-message 'forward
(gnus-summary-select-article)
(set-buffer gnus-original-article-buffer)
permanence, and the string to be used. The numerical prefix will be
used as score."
(interactive (gnus-interactive "P\ny"))
- (gnus-set-global-variables)
(let* ((nscore (gnus-score-default score))
(prefix (if (< nscore 0) ?L ?I))
(increase (> nscore 0))
(defun gnus-summary-raise-score (n)
"Raise the score of the current article by N."
(interactive "p")
- (gnus-set-global-variables)
(gnus-summary-set-score (+ (gnus-summary-article-score)
(or n gnus-score-interactive-default-score ))))
(defun gnus-summary-set-score (n)
"Set the score of the current article to N."
(interactive "p")
- (gnus-set-global-variables)
(save-excursion
(gnus-summary-show-thread)
(let ((buffer-read-only nil))
(defun gnus-summary-current-score ()
"Return the score of the current article."
(interactive)
- (gnus-set-global-variables)
(gnus-message 1 "%s" (gnus-summary-article-score)))
(defun gnus-score-change-score-file (file)
(defun gnus-score-edit-current-scores (file)
"Edit the current score alist."
(interactive (list gnus-current-score-file))
- (gnus-set-global-variables)
(let ((winconf (current-window-configuration)))
(when (buffer-name gnus-summary-buffer)
(gnus-score-save))
If N is nil and any articles have been marked with the process mark,
move those articles instead."
(interactive "P")
- (gnus-set-global-variables)
(let* ((articles (gnus-summary-work-articles n))
(tmp-buf (get-buffer-create "*soup work*"))
(area (gnus-soup-area gnus-newsgroup-name))
(defun gnus-compile ()
"Byte-compile the user-defined format specs."
(interactive)
- (when gnus-xemacs
- (error "Can't compile specs under XEmacs"))
(let ((entries gnus-format-specs)
(byte-compile-warnings '(unresolved callargs redefine))
entry gnus-tmp-func)
(if (eq (car entry) 'version)
(setq gnus-format-specs (delq entry gnus-format-specs))
(when (and (listp (caddr entry))
- (not (eq 'byte-code (caaddr entry))))
+ (not (eq 'byte-code (caaddr entry)))
+ ;; Under XEmacs, it's (funcall #<compiled-function ...>)
+ (not (and (eq 'funcall (caaddr entry))
+ (compiled-function-p (car (cdaddr entry))))))
(fset 'gnus-tmp-func `(lambda () ,(caddr entry)))
(byte-compile 'gnus-tmp-func)
(setcar (cddr entry) (gnus-byte-code 'gnus-tmp-func)))))
;; Read the newsrc file and create `gnus-newsrc-hashtb'.
(gnus-read-newsrc-file rawfile))
- (when (and (not (assoc "archive" gnus-server-alist))
- (gnus-archive-server-wanted-p))
+ ;; Make sure the archive server is available to all and sundry.
+ (setq gnus-server-alist (delq (assoc "archive" gnus-server-alist)
+ gnus-server-alist))
+ (when (gnus-archive-server-wanted-p)
(push (cons "archive" gnus-message-archive-method)
gnus-server-alist))
(make-local-variable 'gnus-summary-mark-positions)
(make-local-hook 'post-command-hook)
(add-hook 'post-command-hook 'gnus-clear-inboxes-moved nil t)
+ (make-local-hook 'pre-command-hook)
+ (add-hook 'pre-command-hook 'gnus-set-global-variables nil t)
(run-hooks 'gnus-summary-mode-hook)
(gnus-update-format-specifications nil 'summary 'summary-mode 'summary-dummy)
(gnus-update-summary-mark-positions))
(score-file gnus-current-score-file))
(save-excursion
(set-buffer gnus-group-buffer)
- (setq gnus-newsgroup-name name)
- (setq gnus-newsgroup-marked marked)
- (setq gnus-newsgroup-unreads unread)
- (setq gnus-current-headers headers)
- (setq gnus-newsgroup-data data)
- (setq gnus-article-current gac)
- (setq gnus-summary-buffer summary)
- (setq gnus-article-buffer article-buffer)
- (setq gnus-original-article-buffer original)
- (setq gnus-reffed-article-number reffed)
- (setq gnus-current-score-file score-file)
+ (setq gnus-newsgroup-name name
+ gnus-newsgroup-marked marked
+ gnus-newsgroup-unreads unread
+ gnus-current-headers headers
+ gnus-newsgroup-data data
+ gnus-article-current gac
+ gnus-summary-buffer summary
+ gnus-article-buffer article-buffer
+ gnus-original-article-buffer original
+ gnus-reffed-article-number reffed
+ gnus-current-score-file score-file)
;; The article buffer also has local variables.
(when (gnus-buffer-live-p gnus-article-buffer)
(set-buffer gnus-article-buffer)
(kill-buffer (current-buffer))
(if (not quit-config)
(progn
+ ;; Update the info -- marks might need to be removed,
+ ;; for instance.
+ (gnus-summary-update-info)
(set-buffer gnus-group-buffer)
(gnus-group-jump-to-group group)
(gnus-group-next-unread-group 1))
(defun gnus-summary-simplify-subject-query ()
"Query where the respool algorithm would put this article."
(interactive)
- (gnus-set-global-variables)
(gnus-summary-select-article)
(message (gnus-general-simplify-subject (gnus-summary-article-subject))))
(set var (delq article (symbol-value var))))))))))
(defun gnus-update-missing-marks (missing)
- "Go through the list of MISSING articles and remove them mark lists."
+ "Go through the list of MISSING articles and remove them from the mark lists."
(when missing
(let ((types gnus-article-mark-lists)
var m)
(defun gnus-summary-universal-argument (arg)
"Perform any operation on all articles that are process/prefixed."
(interactive "P")
- (gnus-set-global-variables)
(let ((articles (gnus-summary-work-articles arg))
func article)
(if (eq
"Exit and then reselect the current newsgroup.
The prefix argument ALL means to select all articles."
(interactive "P")
- (gnus-set-global-variables)
(when (gnus-ephemeral-group-p gnus-newsgroup-name)
(error "Ephemeral groups can't be reselected"))
(let ((current-subject (gnus-summary-article-number))
;; Do the cross-ref thing.
(when gnus-use-cross-reference
(gnus-mark-xrefs-as-read group headers gnus-newsgroup-unreads))
- ;; Do adaptive scoring, and possibly save score files.
- (when gnus-newsgroup-adaptive
- (gnus-score-adaptive))
- (when gnus-use-scoring
- (gnus-score-save))
;; Do not switch windows but change the buffer to work.
(set-buffer gnus-group-buffer)
(unless (gnus-ephemeral-group-p gnus-newsgroup-name)
"Exit reading current newsgroup, and then return to group selection mode.
gnus-exit-group-hook is called with no arguments if that value is non-nil."
(interactive)
- (gnus-set-global-variables)
(gnus-kill-save-kill-buffer)
(let* ((group gnus-newsgroup-name)
(quit-config (gnus-group-quit-config gnus-newsgroup-name))
;; Make all changes in this group permanent.
(unless quit-config
(run-hooks 'gnus-exit-group-hook)
- (gnus-summary-update-info))
+ (gnus-summary-update-info)
+ ;; Do adaptive scoring, and possibly save score files.
+ (when gnus-newsgroup-adaptive
+ (gnus-score-adaptive))
+ (when gnus-use-scoring
+ (gnus-score-save)))
(gnus-close-group group)
;; Make sure where we were, and go to next newsgroup.
(set-buffer gnus-group-buffer)
(defun gnus-summary-exit-no-update (&optional no-questions)
"Quit reading current newsgroup without updating read article info."
(interactive)
- (gnus-set-global-variables)
(let* ((group gnus-newsgroup-name)
(quit-config (gnus-group-quit-config group)))
(when (or no-questions
initially. If NEXT-GROUP, go to this group. If BACKWARD, go to
previous group instead."
(interactive "P")
- (gnus-set-global-variables)
;; Stop pre-fetching.
(gnus-async-halt-prefetch)
(let ((current-group gnus-newsgroup-name)
"Make the summary buffer take up the entire Emacs frame.
Given a prefix, will force an `article' buffer configuration."
(interactive "P")
- (gnus-set-global-variables)
(if arg
(gnus-configure-windows 'article 'force)
(gnus-configure-windows 'summary 'force)))
If SUBJECT, only articles with SUBJECT are selected.
If BACKWARD, the previous article is selected instead of the next."
(interactive "P")
- (gnus-set-global-variables)
(cond
;; Is there such an article?
((and (gnus-summary-search-forward unread subject backward)
If MOVE, move to the previous unread article if point is at
the beginning of the buffer."
(interactive "P")
- (gnus-set-global-variables)
(let ((article (gnus-summary-article-number))
(article-window (get-buffer-window gnus-article-buffer t))
endp)
"Scroll up (or down) one line current article.
Argument LINES specifies lines to be scrolled up (or down if negative)."
(interactive "p")
- (gnus-set-global-variables)
(gnus-configure-windows 'article)
(gnus-summary-show-thread)
(when (eq (gnus-summary-select-article nil nil 'pseudo) 'old)
(defun gnus-summary-next-same-subject ()
"Select next article which has the same subject as current one."
(interactive)
- (gnus-set-global-variables)
(gnus-summary-next-article nil (gnus-summary-article-subject)))
(defun gnus-summary-prev-same-subject ()
"Select previous article which has the same subject as current one."
(interactive)
- (gnus-set-global-variables)
(gnus-summary-prev-article nil (gnus-summary-article-subject)))
(defun gnus-summary-next-unread-same-subject ()
"Select next unread article which has the same subject as current one."
(interactive)
- (gnus-set-global-variables)
(gnus-summary-next-article t (gnus-summary-article-subject)))
(defun gnus-summary-prev-unread-same-subject ()
"Select previous unread article which has the same subject as current one."
(interactive)
- (gnus-set-global-variables)
(gnus-summary-prev-article t (gnus-summary-article-subject)))
(defun gnus-summary-first-unread-article ()
"Select the first unread article.
Return nil if there are no unread articles."
(interactive)
- (gnus-set-global-variables)
(prog1
(when (gnus-summary-first-subject t)
(gnus-summary-show-thread)
"Select the first article.
Return nil if there are no articles."
(interactive)
- (gnus-set-global-variables)
(prog1
(when (gnus-summary-first-subject)
(gnus-summary-show-thread)
(defun gnus-summary-best-unread-article ()
"Select the unread article with the highest score."
(interactive)
- (gnus-set-global-variables)
(let ((best -1000000)
(data gnus-newsgroup-data)
article score)
"Limit the summary buffer to the next N articles.
If not given a prefix, use the process marked articles instead."
(interactive "P")
- (gnus-set-global-variables)
(prog1
(let ((articles (gnus-summary-work-articles n)))
(setq gnus-newsgroup-processable nil)
"Restore the previous limit.
If given a prefix, remove all limits."
(interactive "P")
- (gnus-set-global-variables)
(when total
(setq gnus-newsgroup-limits
(list (mapcar (lambda (h) (mail-header-number h))
list of marks.
Returns how many articles were removed."
(interactive "sMarks: \nP")
- (gnus-set-global-variables)
(prog1
(let ((data gnus-newsgroup-data)
(marks (if (listp marks) marks
(defun gnus-summary-limit-to-score (&optional score)
"Limit to articles with score at or above SCORE."
(interactive "P")
- (gnus-set-global-variables)
(setq score (if score
(prefix-numeric-value score)
(or gnus-summary-default-score 0)))
(defun gnus-summary-limit-include-thread (id)
"Display all the hidden articles that in the current thread."
(interactive (list (mail-header-id (gnus-summary-article-header))))
- (gnus-set-global-variables)
(let ((articles (gnus-articles-in-thread
(gnus-id-to-thread (gnus-root-id id)))))
(prog1
(defun gnus-summary-limit-include-dormant ()
"Display all the hidden articles that are marked as dormant."
(interactive)
- (gnus-set-global-variables)
(unless gnus-newsgroup-dormant
(error "There are no dormant articles in this group"))
(prog1
(defun gnus-summary-limit-exclude-dormant ()
"Hide all dormant articles."
(interactive)
- (gnus-set-global-variables)
(prog1
(gnus-summary-limit-to-marks (list gnus-dormant-mark) 'reverse)
(gnus-summary-position-point)))
(defun gnus-summary-limit-exclude-childless-dormant ()
"Hide all dormant articles that have no children."
(interactive)
- (gnus-set-global-variables)
(let ((data (gnus-data-list t))
articles d children)
;; Find all articles that are either not dormant or have
If N is negative, go to ancestor -N instead.
The difference between N and the number of articles fetched is returned."
(interactive "p")
- (gnus-set-global-variables)
(let ((skip 1)
error header ref)
(when (not (natnump n))
"Fetch all articles mentioned in the References header.
Return the number of articles fetched."
(interactive)
- (gnus-set-global-variables)
(let ((ref (mail-header-references (gnus-summary-article-header)))
(current (gnus-summary-article-number))
(n 0))
If LIMIT (the numerical prefix), fetch that many old headers instead
of what's specified by the `gnus-refer-thread-limit' variable."
(interactive "P")
- (gnus-set-global-variables)
(let ((id (mail-header-id (gnus-summary-article-header)))
(limit (if limit (prefix-numeric-value limit)
gnus-refer-thread-limit))
If FORCE, force a digest interpretation. If not, try
to guess what the document format is."
(interactive "P")
- (gnus-set-global-variables)
(let ((conf gnus-current-window-configuration))
(save-excursion
(gnus-summary-select-article))
"Do incremental search forward on the current article.
If REGEXP-P (the prefix) is non-nil, do regexp isearch."
(interactive "P")
- (gnus-set-global-variables)
(gnus-summary-select-article)
(gnus-configure-windows 'article)
(gnus-eval-in-buffer-window gnus-article-buffer
- ;;(goto-char (point-min))
- (isearch-forward regexp-p)))
+ (save-restriction
+ (widen)
+ (isearch-forward regexp-p))))
(defun gnus-summary-search-article-forward (regexp &optional backward)
"Search for an article containing REGEXP forward.
(concat ", default " gnus-last-search-regexp)
"")))
current-prefix-arg))
- (gnus-set-global-variables)
(if (string-equal regexp "")
(setq regexp (or gnus-last-search-regexp ""))
(setq gnus-last-search-regexp regexp))
current-prefix-arg))
(when (equal header "Body")
(setq header ""))
- (gnus-set-global-variables)
;; Hidden thread subtrees must be searched as well.
(gnus-summary-show-all-threads)
;; We don't want to change current point nor window configuration.
(defun gnus-summary-beginning-of-article ()
"Scroll the article back to the beginning."
(interactive)
- (gnus-set-global-variables)
(gnus-summary-select-article)
(gnus-configure-windows 'article)
(gnus-eval-in-buffer-window gnus-article-buffer
(defun gnus-summary-end-of-article ()
"Scroll to the end of the article."
(interactive)
- (gnus-set-global-variables)
(gnus-summary-select-article)
(gnus-configure-windows 'article)
(gnus-eval-in-buffer-window gnus-article-buffer
If ARG (the prefix) is non-nil, show the raw article without any
article massaging functions being run."
(interactive "P")
- (gnus-set-global-variables)
(if (not arg)
;; Select the article the normal way.
(gnus-summary-select-article nil 'force)
If ARG is a positive number, turn header display on.
If ARG is a negative number, turn header display off."
(interactive "P")
- (gnus-set-global-variables)
(setq gnus-show-all-headers
(cond ((or (not (numberp arg))
(zerop arg))
If ARG is a positive number, show the entire header.
If ARG is a negative number, hide the unwanted header lines."
(interactive "P")
- (gnus-set-global-variables)
(save-excursion
(set-buffer gnus-article-buffer)
(let* ((buffer-read-only nil)
(defun gnus-summary-show-all-headers ()
"Make all header lines visible."
(interactive)
- (gnus-set-global-variables)
(gnus-article-show-all-headers))
(defun gnus-summary-toggle-mime (&optional arg)
"Toggle MIME processing.
If ARG is a positive number, turn MIME processing on."
(interactive "P")
- (gnus-set-global-variables)
(setq gnus-show-mime
(if (null arg) (not gnus-show-mime)
(> (prefix-numeric-value arg) 0)))
The numerical prefix specifies how many places to rotate each letter
forward."
(interactive "P")
- (gnus-set-global-variables)
(gnus-summary-select-article)
(let ((mail-header-separator ""))
(gnus-eval-in-buffer-window gnus-article-buffer
(defun gnus-summary-stop-page-breaking ()
"Stop page breaking in the current article."
(interactive)
- (gnus-set-global-variables)
(gnus-summary-select-article)
(gnus-eval-in-buffer-window gnus-article-buffer
(widen)
(interactive "P")
(unless action
(setq action 'move))
- (gnus-set-global-variables)
;; Disable marking as read.
(let (gnus-mark-article-hook)
(save-window-excursion
(let ((ms-alist (mapcar (lambda (m) (cons (cadr m) m)) ms)))
(cdr (assoc (completing-read "Server name: " ms-alist nil t)
ms-alist))))))))
- (gnus-set-global-variables)
(unless method
(error "No method given for respooling"))
(if (assoc (symbol-name
(defun gnus-summary-import-article (file)
"Import a random file into a mail newsgroup."
(interactive "fImport file: ")
- (gnus-set-global-variables)
(let ((group gnus-newsgroup-name)
(now (current-time))
atts lines)
(defun gnus-summary-expire-articles (&optional now)
"Expire all articles that are marked as expirable in the current group."
(interactive)
- (gnus-set-global-variables)
(when (gnus-check-backend-function
'request-expire-articles gnus-newsgroup-name)
;; This backend supports expiry.
This means that *all* articles that are marked as expirable will be
deleted forever, right now."
(interactive)
- (gnus-set-global-variables)
(or gnus-expert-user
(gnus-yes-or-no-p
"Are you really, really, really sure you want to delete all these messages? ")
If N is nil and articles have been marked with the process mark,
delete these instead."
(interactive "P")
- (gnus-set-global-variables)
(unless (gnus-check-backend-function 'request-expire-articles
gnus-newsgroup-name)
(error "The current newsgroup does not support article deletion"))
(defun gnus-summary-respool-query (&optional silent)
"Query where the respool algorithm would put this article."
(interactive)
- (gnus-set-global-variables)
(let (gnus-mark-article-hook)
(gnus-summary-select-article)
(save-excursion
If UNMARK is positive, remove any kind of mark.
If UNMARK is negative, tick articles."
(interactive "P")
- (gnus-set-global-variables)
(when unmark
(setq unmark (prefix-numeric-value unmark)))
(let ((count
If UNMARK is positive, remove any kind of mark.
If UNMARK is negative, tick articles."
(interactive "P")
- (gnus-set-global-variables)
(when unmark
(setq unmark (prefix-numeric-value unmark)))
(let ((count
the process mark instead. The difference between N and the actual
number of articles marked is returned."
(interactive "p")
- (gnus-set-global-variables)
(let ((backward (< n 0))
(n (abs n)))
(while (and
If N is negative, unmark backward instead. The difference between N and
the actual number of articles unmarked is returned."
(interactive "p")
- (gnus-set-global-variables)
(gnus-summary-mark-as-processable n t))
(defun gnus-summary-unmark-all-processable ()
"Remove the process mark from all articles."
(interactive)
- (gnus-set-global-variables)
(save-excursion
(while gnus-newsgroup-processable
(gnus-summary-remove-process-mark (car gnus-newsgroup-processable))))
If N is negative, mark backward instead. The difference between N and
the actual number of articles marked is returned."
(interactive "p")
- (gnus-set-global-variables)
(gnus-summary-mark-forward n gnus-expirable-mark))
(defun gnus-summary-mark-article-as-replied (article)
(defun gnus-summary-set-bookmark (article)
"Set a bookmark in current article."
(interactive (list (gnus-summary-article-number)))
- (gnus-set-global-variables)
(when (or (not (get-buffer gnus-article-buffer))
(not gnus-current-article)
(not gnus-article-current)
(defun gnus-summary-remove-bookmark (article)
"Remove the bookmark from the current article."
(interactive (list (gnus-summary-article-number)))
- (gnus-set-global-variables)
;; Remove old bookmark, if one exists.
(let ((old (assq article gnus-newsgroup-bookmarks)))
(if old
If N is negative, mark backward instead. The difference between N and
the actual number of articles marked is returned."
(interactive "p")
- (gnus-set-global-variables)
(gnus-summary-mark-forward n gnus-dormant-mark))
(defun gnus-summary-set-process-mark (article)
The difference between N and the actual number of articles marked is
returned."
(interactive "p")
- (gnus-set-global-variables)
(let ((backward (< n 0))
(gnus-summary-goto-unread
(and gnus-summary-goto-unread
(defun gnus-summary-mark-below (score mark)
"Mark articles with score less than SCORE with MARK."
(interactive "P\ncMark: ")
- (gnus-set-global-variables)
(setq score (if score
(prefix-numeric-value score)
(or gnus-summary-default-score 0)))
(defun gnus-summary-kill-below (&optional score)
"Mark articles with score below SCORE as read."
(interactive "P")
- (gnus-set-global-variables)
(gnus-summary-mark-below score gnus-killed-mark))
(defun gnus-summary-clear-above (&optional score)
"Clear all marks from articles with score above SCORE."
(interactive "P")
- (gnus-set-global-variables)
(gnus-summary-mark-above score gnus-unread-mark))
(defun gnus-summary-tick-above (&optional score)
"Tick all articles with score above SCORE."
(interactive "P")
- (gnus-set-global-variables)
(gnus-summary-mark-above score gnus-ticked-mark))
(defun gnus-summary-mark-above (score mark)
"Mark articles with score over SCORE with MARK."
(interactive "P\ncMark: ")
- (gnus-set-global-variables)
(setq score (if score
(prefix-numeric-value score)
(or gnus-summary-default-score 0)))
(defun gnus-summary-limit-include-expunged (&optional no-error)
"Display all the hidden articles that were expunged for low scores."
(interactive)
- (gnus-set-global-variables)
(let ((buffer-read-only nil))
(let ((scored gnus-newsgroup-scored)
headers h)
in the current summary buffer limitation.
The number of articles marked as read is returned."
(interactive "P")
- (gnus-set-global-variables)
(prog1
(save-excursion
(when (or quietly
"Mark all unticked articles before the current one as read.
If ALL is non-nil, also mark ticked and dormant articles as read."
(interactive "P")
- (gnus-set-global-variables)
(save-excursion
(gnus-save-hidden-threads
(let ((beg (point)))
(defun gnus-summary-catchup-all (&optional quietly)
"Mark all articles in this newsgroup as read."
(interactive "P")
- (gnus-set-global-variables)
(gnus-summary-catchup t quietly))
(defun gnus-summary-catchup-and-exit (&optional all quietly)
"Mark all articles not marked as unread in this newsgroup as read, then exit.
If prefix argument ALL is non-nil, all articles are marked as read."
(interactive "P")
- (gnus-set-global-variables)
(when (gnus-summary-catchup all quietly nil 'fast)
;; Select next newsgroup or exit.
(if (eq gnus-auto-select-next 'quietly)
(defun gnus-summary-catchup-all-and-exit (&optional quietly)
"Mark all articles in this newsgroup as read, and then exit."
(interactive "P")
- (gnus-set-global-variables)
(gnus-summary-catchup-and-exit t quietly))
;; Suggested by "Arne Eofsson" <arne@hodgkin.mbi.ucla.edu>.
If given a prefix, mark all articles, unread as well as ticked, as
read."
(interactive "P")
- (gnus-set-global-variables)
(save-excursion
(gnus-summary-catchup all))
(gnus-summary-next-article t nil nil t))
(defun gnus-summary-rethread-current ()
"Rethread the thread the current article is part of."
(interactive)
- (gnus-set-global-variables)
(let* ((gnus-show-threads t)
(article (gnus-summary-article-number))
(id (mail-header-id (gnus-summary-article-header)))
"Toggle showing conversation threads.
If ARG is positive number, turn showing conversation threads on."
(interactive "P")
- (gnus-set-global-variables)
(let ((current (or (gnus-summary-article-number) gnus-newsgroup-end)))
(setq gnus-show-threads
(if (null arg) (not gnus-show-threads)
(defun gnus-summary-show-all-threads ()
"Show all threads."
(interactive)
- (gnus-set-global-variables)
(save-excursion
(let ((buffer-read-only nil))
(subst-char-in-region (point-min) (point-max) ?\^M ?\n t)))
"Show thread subtrees.
Returns nil if no thread was there to be shown."
(interactive)
- (gnus-set-global-variables)
(let ((buffer-read-only nil)
(orig (point))
;; first goto end then to beg, to have point at beg after let
(defun gnus-summary-hide-all-threads ()
"Hide all thread subtrees."
(interactive)
- (gnus-set-global-variables)
(save-excursion
(goto-char (point-min))
(gnus-summary-hide-thread)
"Hide thread subtrees.
Returns nil if no threads were there to be hidden."
(interactive)
- (gnus-set-global-variables)
(let ((buffer-read-only nil)
(start (point))
(article (gnus-summary-article-number)))
If SILENT, don't output messages."
(interactive "p")
- (gnus-set-global-variables)
(let ((backward (< n 0))
(n (abs n)))
(while (and (> n 0)
Returns the difference between N and the number of skips actually
done."
(interactive "p")
- (gnus-set-global-variables)
(gnus-summary-next-thread (- n)))
(defun gnus-summary-go-down-thread ()
Returns the difference between N and how many steps down that were
taken."
(interactive "p")
- (gnus-set-global-variables)
(let ((up (< n 0))
(n (abs n)))
(while (and (> n 0)
Returns the difference between N and how many steps down that were
taken."
(interactive "p")
- (gnus-set-global-variables)
(gnus-summary-down-thread (- n)))
(defun gnus-summary-top-thread ()
"Go to the top of the thread."
(interactive)
- (gnus-set-global-variables)
(while (gnus-summary-go-up-thread))
(gnus-summary-article-number))
If the prefix argument is positive, remove any kinds of marks.
If the prefix argument is negative, tick articles instead."
(interactive "P")
- (gnus-set-global-variables)
(when unmark
(setq unmark (prefix-numeric-value unmark)))
(let ((articles (gnus-summary-articles-in-thread)))
(defun gnus-summary-sort (predicate reverse)
"Sort summary buffer by PREDICATE. REVERSE means reverse order."
- (gnus-set-global-variables)
(let* ((thread (intern (format "gnus-thread-sort-by-%s" predicate)))
(article (intern (format "gnus-article-sort-by-%s" predicate)))
(gnus-thread-sort-functions
save those articles instead.
The variable `gnus-default-article-saver' specifies the saver function."
(interactive "P")
- (gnus-set-global-variables)
(let* ((articles (gnus-summary-work-articles n))
(save-buffer (save-excursion
(nnheader-set-temp-buffer " *Gnus Save*")))
If N is nil and any articles have been marked with the process mark,
pipe those articles instead."
(interactive "P")
- (gnus-set-global-variables)
(let ((gnus-default-article-saver 'gnus-summary-save-in-pipe))
(gnus-summary-save-article arg t))
(gnus-configure-windows 'pipe))
If N is nil and any articles have been marked with the process mark,
save those articles instead."
(interactive "P")
- (gnus-set-global-variables)
(let ((gnus-default-article-saver 'gnus-summary-save-in-mail))
(gnus-summary-save-article arg)))
If N is nil and any articles have been marked with the process mark,
save those articles instead."
(interactive "P")
- (gnus-set-global-variables)
(let ((gnus-default-article-saver 'gnus-summary-save-in-rmail))
(gnus-summary-save-article arg)))
If N is nil and any articles have been marked with the process mark,
save those articles instead."
(interactive "P")
- (gnus-set-global-variables)
(let ((gnus-default-article-saver 'gnus-summary-save-in-file))
(gnus-summary-save-article arg)))
If N is nil and any articles have been marked with the process mark,
save those articles instead."
(interactive "P")
- (gnus-set-global-variables)
(let ((gnus-default-article-saver 'gnus-summary-write-to-file))
(gnus-summary-save-article arg)))
If N is nil and any articles have been marked with the process mark,
save those articles instead."
(interactive "P")
- (gnus-set-global-variables)
(let ((gnus-default-article-saver 'gnus-summary-save-body-in-file))
(gnus-summary-save-article arg)))
(defun gnus-summary-pipe-message (program)
"Pipe the current article through PROGRAM."
(interactive "sProgram: ")
- (gnus-set-global-variables)
(gnus-summary-select-article)
(let ((mail-header-separator "")
(art-buf (get-buffer gnus-article-buffer)))
(defun gnus-summary-edit-global-kill (article)
"Edit the \"global\" kill file."
(interactive (list (gnus-summary-article-number)))
- (gnus-set-global-variables)
(gnus-group-edit-global-kill article))
(defun gnus-summary-edit-local-kill ()
"Edit a local kill file applied to the current newsgroup."
(interactive)
- (gnus-set-global-variables)
(setq gnus-current-headers (gnus-summary-article-header))
- (gnus-set-global-variables)
(gnus-group-edit-local-kill
(gnus-summary-article-number) gnus-newsgroup-name))
(prin1 form (current-buffer))))
(defun gnus-prin1-to-string (form)
- "The same as `prin1', but but `print-quoted' to t."
- (let ((print-quoted t))
+ "The same as `prin1', but bind `print-quoted' and `print-readably' to t."
+ (let ((print-quoted t)
+ (print-readably t))
(prin1-to-string form)))
(defun gnus-make-directory (directory)
(defun gnus-uu-mark-by-regexp (regexp &optional unmark)
"Ask for a regular expression and set the process mark on all articles that match."
(interactive (list (read-from-minibuffer "Mark (regexp): ")))
- (gnus-set-global-variables)
(let ((articles (gnus-uu-find-articles-matching regexp)))
(while articles
(if unmark
(defun gnus-uu-mark-series ()
"Mark the current series with the process mark."
(interactive)
- (gnus-set-global-variables)
(let ((articles (gnus-uu-find-articles-matching)))
(while articles
(gnus-summary-set-process-mark (car articles))
(defun gnus-uu-mark-region (beg end &optional unmark)
"Set the process mark on all articles between point and mark."
(interactive "r")
- (gnus-set-global-variables)
(save-excursion
(goto-char beg)
(while (< (point) end)
(defun gnus-uu-mark-thread ()
"Marks all articles downwards in this thread."
(interactive)
- (gnus-set-global-variables)
(let ((level (gnus-summary-thread-level)))
(while (and (gnus-summary-set-process-mark (gnus-summary-article-number))
(zerop (gnus-summary-next-subject 1))
(defun gnus-uu-unmark-thread ()
"Unmarks all articles downwards in this thread."
(interactive)
- (gnus-set-global-variables)
(let ((level (gnus-summary-thread-level)))
(while (and (gnus-summary-remove-process-mark
(gnus-summary-article-number))
(defun gnus-uu-mark-sparse ()
"Mark all series that have some articles marked."
(interactive)
- (gnus-set-global-variables)
(let ((marked (nreverse gnus-newsgroup-processable))
subject articles total headers)
(unless marked
(defun gnus-uu-mark-all ()
"Mark all articles in \"series\" order."
(interactive)
- (gnus-set-global-variables)
(setq gnus-newsgroup-processable nil)
(save-excursion
(let ((data gnus-newsgroup-data)
(let* ((logo-xpm (expand-file-name "gnus.xpm" gnus-xmas-glyph-directory))
(logo-xbm (expand-file-name "gnus.xbm" gnus-xmas-glyph-directory))
(glyph (make-glyph
- `(,@(if (featurep 'xpm)
- (list
- (vector 'xpm
- ':file logo-xpm
- ':color-symbols
- `(("thing" . ,(car gnus-xmas-logo-colors))
- ("shadow" . ,(cadr gnus-xmas-logo-colors))
- ("background" . ,(face-background 'default))))))
- ,(vector 'xbm :file logo-xbm)
- ,(vector 'nothing)))))
+ (cond ((featurep 'xpm)
+ `[xpm
+ :file ,logo-xpm
+ :color-symbols
+ (("thing" . ,(car gnus-xmas-logo-colors))
+ ("shadow" . ,(cadr gnus-xmas-logo-colors))
+ ("background" . ,(face-background 'default)))])
+ ((featurep 'xbm)
+ `[xbm :file ,logo-xbm])
+ (t [nothing])))))
(insert " ")
(set-extent-begin-glyph (make-extent (point) (point)) glyph)
(goto-char (point-min))
(progn
(setq gnus-xmas-glyph-directory (message-xmas-find-glyph-directory "gnus"))
(let* ((file-xpm (expand-file-name "gnus-pointer.xpm"
- gnus-xmas-glyph-directory))
+ gnus-xmas-glyph-directory))
(file-xbm (expand-file-name "gnus-pointer.xbm"
- gnus-xmas-glyph-directory))
+ gnus-xmas-glyph-directory))
(glyph (make-glyph
;; Gag gag gag.
- `(
- ,@(if (featurep 'xpm)
- ;; Let's try a nifty XPM
- (list (vector 'xpm ':file file-xpm)))
- ;; Then a not-so-nifty XBM
- ,(vector 'xbm ':file file-xbm)
- ;; Then the simple string
- ,(vector 'string ':data "Gnus:")))))
+ (cond ((featurep 'xpm)
+ ;; Let's try a nifty XPM
+ `[xpm :file ,file-xpm])
+ ((featurep 'xbm)
+ ;; Then a not-so-nifty XBM
+ [xbm :file ,file-xbm])
+ ;; Then the simple string
+ (t [string :data "Gnus:"])))))
(set-glyph-face glyph 'modeline-buffer-id)
glyph)))
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "0.14"
+(defconst gnus-version-number "0.15"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Quassia Gnus v%s" gnus-version-number)
(eval-when-compile (require 'cl))
(require 'mailheader)
-(require 'rmail)
+(condition-case nil
+ (require 'rmail)
+ (t (message "Ignore any errors about rmail from this file")))
(require 'nnheader)
(require 'timezone)
(require 'easymenu)
(defun message-make-organization ()
"Make an Organization header."
(let* ((organization
- (or (getenv "ORGANIZATION")
- (when message-user-organization
+ (when message-user-organization
(if (message-functionp message-user-organization)
(funcall message-user-organization)
- message-user-organization)))))
+ message-user-organization))))
(save-excursion
(message-set-work-buffer)
(cond ((stringp organization)
(unless follow-to
(if (or (not wide)
to-address)
- (setq follow-to (list (cons 'To (or to-address reply-to from))))
+ (progn
+ (setq follow-to (list (cons 'To (or to-address reply-to from))))
+ (when (and wide mct)
+ (push (cons 'Cc mct) follow-to)))
(let (ccalist)
(save-excursion
(message-set-work-buffer)
;;; Code:
(require 'nnheader)
-(require 'rmail)
+(condition-case nil
+ (require 'rmail)
+ (t (message "Ignore rmail errors from this file, you don't have rmail")))
(require 'nnmail)
(require 'nnoo)
(eval-when-compile (require 'cl))
(deffoo nndraft-request-expire-articles (articles group &optional server force)
(nndraft-possibly-change-group group)
(let* ((nnmh-allow-delete-final t)
- (res (nnmh-request-expire-articles
- articles group server force))
+ (res (nnoo-parent-function 'nndraft
+ 'nnmh-request-expire-articles
+ (list articles group server force)))
article)
;; Delete all the "state" files of articles that have been expired.
(while articles
(deffoo nndraft-request-accept-article (group &optional server last noinsert)
(nndraft-possibly-change-group group)
(let ((gnus-verbose-backends nil))
- (nnmh-request-accept-article group server last noinsert)))
+ (nnoo-parent-function 'nndraft 'nnmh-request-accept-article
+ (list group server last noinsert))))
(deffoo nndraft-request-create-group (group &optional server args)
(nndraft-possibly-change-group group)
(defvoo nnml-generate-active-function 'nnml-generate-active-info)
+(defvar nnml-nov-buffer-file-name nil)
+
\f
;;; Interface functions.
(save-excursion
(save-restriction
(goto-char (point-min))
- (narrow-to-region
- (point)
- (1- (or (search-forward "\n\n" nil t) (point-max))))
+ (unless (zerop (buffer-size))
+ (narrow-to-region
+ (point)
+ (1- (or (search-forward "\n\n" nil t) (point-max)))))
;; Fold continuation lines.
(goto-char (point-min))
(while (re-search-forward "\\(\r?\n[ \t]+\\)+" nil t)
(defun nnml-open-nov (group)
(or (cdr (assoc group nnml-nov-buffer-alist))
- (let ((buffer (nnheader-find-file-noselect
- (concat (nnmail-group-pathname group nnml-directory)
- nnml-nov-file-name))))
+ (let ((buffer (get-buffer-create (format " *nnml overview %s*" group))))
(save-excursion
(set-buffer buffer)
- (buffer-disable-undo (current-buffer)))
+ (set (make-local-variable 'nnml-nov-buffer-file-name)
+ (concat (nnmail-group-pathname group nnml-directory)
+ nnml-nov-file-name))
+ (erase-buffer)
+ (nnheader-insert-file-contents nnml-nov-buffer-file-name))
(push (cons group buffer) nnml-nov-buffer-alist)
buffer)))
(when (buffer-name (cdar nnml-nov-buffer-alist))
(set-buffer (cdar nnml-nov-buffer-alist))
(when (buffer-modified-p)
- (nnmail-write-region 1 (point-max) (buffer-file-name) nil 'nomesg))
+ (nnmail-write-region 1 (point-max) nnml-nov-buffer-file-name
+ nil 'nomesg))
(set-buffer-modified-p nil)
(kill-buffer (current-buffer)))
(setq nnml-nov-buffer-alist (cdr nnml-nov-buffer-alist)))))
(defvar nnoo-definition-alist nil)
(defvar nnoo-state-alist nil)
+(defvar nnoo-parent-backend nil)
(defmacro defvoo (var init &optional doc &rest map)
"The same as `defvar', only takes list of variables to MAP to."
(or (cdr imp)
(nnoo-functions (car imp))))
(while functions
- (unless (fboundp (setq function
- (nnoo-symbol backend (nnoo-rest-symbol
- (car functions)))))
+ (unless (fboundp
+ (setq function
+ (nnoo-symbol backend
+ (nnoo-rest-symbol (car functions)))))
(eval `(deffoo ,function (&rest args)
(,call-function ',backend ',(car functions) args))))
(pop functions)))))
(defun nnoo-parent-function (backend function args)
- (let ((pbackend (nnoo-backend function)))
- (nnoo-change-server pbackend (nnoo-current-server backend)
+ (let ((pbackend (nnoo-backend function))
+ (nnoo-parent-backend backend))
+ (nnoo-change-server pbackend
+ (nnoo-current-server backend)
(cdr (assq pbackend (nnoo-parents backend))))
(apply function args)))
(defun nnoo-execute (backend function &rest args)
"Execute FUNCTION on behalf of BACKEND."
- (let ((pbackend (nnoo-backend function)))
- (nnoo-change-server pbackend (nnoo-current-server backend)
+ (let ((pbackend (nnoo-backend function))
+ (nnoo-parent-backend backend))
+ (nnoo-change-server pbackend
+ (nnoo-current-server backend)
(cdr (assq pbackend (nnoo-parents backend))))
(apply function args)))
(let* ((bstate (cdr (assq backend nnoo-state-alist)))
(current (car bstate))
(parents (nnoo-parents backend))
+ (server (if nnoo-parent-backend
+ (format "%s+%s" nnoo-parent-backend server)
+ server))
(bvariables (nnoo-variables backend))
state def)
+ ;; If we don't have a current state, we push an empty state
+ ;; onto the alist.
(unless bstate
(push (setq bstate (list backend nil))
nnoo-state-alist)
(set (car def) (cadr def))))
(while parents
(nnoo-change-server
- (caar parents) server
+ (caar parents) (format "%s+%s" backend server)
(mapcar (lambda (def) (list (car def) (symbol-value (cadr def))))
(cdar parents)))
(pop parents))))
(when (memq (process-status process) '(open run))
(set-process-sentinel process nil)
(ignore-errors
- (nntp-send-string process "QUIT")))
+ (nntp-send-string process "QUIT")
+ (sleep-for 1)))
(when (buffer-name (process-buffer process))
(kill-buffer (process-buffer process))))
(nnoo-close-server 'nntp)))
(when (memq (process-status process) '(open run))
(set-process-sentinel process nil)
(ignore-errors
- (nntp-send-string process "QUIT")))
+ (nntp-send-string process "QUIT")
+ (sleep-for 1)))
(when (buffer-name (process-buffer process))
(kill-buffer (process-buffer process))))))
+Mon Nov 24 16:01:20 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.texi (Faces & Fonts): New.
+
Mon Oct 13 00:08:06 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
* gnus.texi (Agent Commands): Addition.
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Quassia Gnus 0.110 Manual
+@settitle Quassia Gnus 0.15 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Quassia Gnus 0.110 Manual
+@title Quassia Gnus 0.15 Manual
@author by Lars Magne Ingebrigtsen
@page
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Quassia Gnus 0.110.
+This manual corresponds to Quassia Gnus 0.15.
@end ifinfo
(t . my-group-face-5)))
@end lisp
+Also @pxref{Faces & Fonts}.
+
Variables that are dynamically bound when the forms are evaluated
include:
highlighting will be done according to the @code{gnus-header-face-alist}
variable, which is a list where each element has the form @var{(regexp
name content)}. @var{regexp} is a regular expression for matching the
-header, @var{name} is the face used for highlighting the header name and
-@var{content} is the face for highlighting the header value. The first
-match made will be used. Note that @var{regexp} shouldn't have @samp{^}
-prepended---Gnus will add one.
+header, @var{name} is the face used for highlighting the header name
+(@pxref{Faces & Fonts}) and @var{content} is the face for highlighting
+the header value. The first match made will be used. Note that
+@var{regexp} shouldn't have @samp{^} prepended---Gnus will add one.
@item W H c
@kindex W H c (Summary)
@item gnus-cite-face-list
@vindex gnus-cite-face-list
-List of faces used for highlighting citations. When there are citations
-from multiple articles in the same message, Gnus will try to give each
-citation from each article its own face. This should make it easier to
-see who wrote what.
+List of faces used for highlighting citations (@pxref{Faces & Fonts}).
+When there are citations from multiple articles in the same message,
+Gnus will try to give each citation from each article its own face.
+This should make it easier to see who wrote what.
@item gnus-supercite-regexp
@vindex gnus-supercite-regexp
* Symbolic Prefixes:: How to supply some Gnus functions with options.
* Formatting Variables:: You can specify what buffers should look like.
* Windows Configuration:: Configuring the Gnus buffer windows.
+* Faces & Fonts:: How to change how faces look.
* Compilation:: How to speed Gnus up.
* Mode Lines:: Displaying information in the mode lines.
* Highlighting and Menus:: Making buffers look all nice and cozy.
@code{gnus-always-force-window-configuration} to non-@code{nil}.
+@node Faces & Fonts
+@section Faces & Fonts
+@cindex faces
+@cindex fonts
+@cindex colors
+
+Fiddling with fonts and faces used to be very difficult, but these days
+it is very simple. You simply say @kbd{M-x customize-face}, pick out
+the face you want to alter, and alter it via the standard Customize
+interface.
+
+
@node Compilation
@section Compilation
@cindex compilation
@vindex gnus-picons-database
The location of the picons database. Should point to a directory
containing the @file{news}, @file{domains}, @file{users} (and so on)
-subdirectories. Defaults to @file{/usr/local/faces}.
+subdirectories. Defaults to @file{/usr/local/faces/}.
@item gnus-picons-news-directory
@vindex gnus-picons-news-directory
Joev Dubach,
Michael Welsh Duggan,
Paul Eggert,
+Enami Tsugutomo, @c Enami
Michael Ernst,
Luc Van Eycken,
Sam Falkner,
Michelangelo Grigni,
D. Hall,
Magnus Hammerin,
-Kenichi Handa, @c ?
+Kenichi Handa, @c Handa
Raja R. Harinath,
Hisashige Kenji, @c Hisashige
Marc Horowitz,
Shuhei Kobayashi, @c Kobayashi
Thor Kristoffersen,
Jens Lautenbacher,
-Seokchan Lee, @c ?
+Seokchan Lee, @c Lee
Carsten Leonhardt,
James LewisMoss,
Christian Limpach,
Chuck Thompson,
Philippe Troin,
James Troup,
-Enami Tsugutomo, @c ?
Aaron M. Ucko,
Didier Verna,
Jan Vroonhof,
flag = "y" / "n" / "m" / "j" / "x" / "=" group
@end example
+For a full description of this file, see the manual pages for
+@samp{innd}, in particular @samp{active(5)}.
+
@node Newsgroups File Format
@subsubsection Newsgroups File Format
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Message 0.110 Manual
+@settitle Message 0.15 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Message 0.110 Manual
+@title Message 0.15 Manual
@author by Lars Magne Ingebrigtsen
@page
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Message 0.110. Message is distributed with
+This manual corresponds to Message 0.15. Message is distributed with
the Gnus distribution bearing the same version number as this manual
has.
@end table
-Note that RFC1036 says that a signature should be preceded by the three
+Note that RFC1036bis says that a signature should be preceded by the three
characters @samp{-- } on a line by themselves. This is to make it
easier for the recipient to automatically recognize and process the
signature. So don't remove those characters, even though you might feel
* include the texi/dir file in the distribution.
* format spec to "tab" to a position.
+
+* Move all prompting to the new `M-n' default style.
+
+* have nntp cache the authinfo passwords.