+Tue Feb 4 03:49:59 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Gnus v5.4.11 is released.
+
+Tue Feb 4 01:57:56 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nnvirtual.el (nnvirtual-last-accessed-component-group): New
+ variable.
+ (nnvirtual-request-article): Use it and allow fetching by
+ Message-ID.
+
+ * gnus-dup.el (gnus-dup-enter-articles): Don't enter canceled
+ articles into dup lists.
+
+ * nnvirtual.el (nnvirtual-update-read-and-marked): Check that we
+ have a current group.
+
+ * message.el (message-mode): Add "field" menu under XEmacs.
+
Mon Feb 3 07:46:33 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Gnus v5.4.10 is released.
(when (and (not (gnus-data-pseudo-p datum))
(> (gnus-data-number datum) 0)
(gnus-data-read-p datum)
+ (not (= (gnus-data-mark datum) gnus-canceled-mark))
(setq msgid (mail-header-id (gnus-data-header datum)))
(not (nnheader-fake-message-id-p msgid))
(not (intern-soft msgid gnus-dup-hashtb)))
(defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
+(defvar gnus-use-installed-gnus t
+ "*If non-nil Use installed version of Gnus.")
+
+(defvar gnus-use-installed-tm running-xemacs
+ "*If non-nil use installed version of tm.")
+
+(defvar gnus-use-installed-mailcrypt running-xemacs
+ "*If non-nil use installed version of mailcrypt.")
+
(defvar gnus-emacs-lisp-directory (if running-xemacs
"/usr/local/lib/xemacs/"
"/usr/local/share/emacs/")
"gnus-5.0.15/lisp/")
"Directory where Gnus Emacs lisp is found.")
-(defvar gnus-sgnus-lisp-directory (concat gnus-emacs-lisp-directory
- "sgnus/lisp/")
- "Directory where September Gnus Emacs lisp is found.")
-
(defvar gnus-tm-lisp-directory (concat gnus-emacs-lisp-directory
"site-lisp/")
"Directory where TM Emacs lisp is found.")
"Directory where Mailcrypt Emacs Lisp is found.")
(defvar gnus-bbdb-lisp-directory (concat gnus-emacs-lisp-directory
- "site-lisp/bbdb-1.50/")
+ "site-lisp/bbdb-1.51/")
"Directory where Big Brother Database is found.")
-(defvar gnus-use-tm t
+(defvar gnus-use-tm running-xemacs
"Set this if you want MIME support for Gnus")
(defvar gnus-use-mhe nil
"Set this if you want to use MH-E for mail reading")
"Set this if you want to use Mailcrypt for dealing with PGP messages")
(defvar gnus-use-bbdb nil
"Set this if you want to use the Big Brother DataBase")
-(defvar gnus-use-september nil
- "Set this if you are using the experimental September Gnus")
-(let ((gnus-directory (if gnus-use-september
- gnus-sgnus-lisp-directory
- gnus-gnus-lisp-directory)))
- (when (null (member gnus-directory load-path))
- (push gnus-directory load-path)))
+(when (and (not gnus-use-installed-gnus)
+ (null (member gnus-gnus-lisp-directory load-path)))
+ (push gnus-gnus-lisp-directory load-path))
;;; We can't do this until we know where Gnus is.
(require 'message)
;;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
(when gnus-use-tm
- (when (null (member gnus-tm-lisp-directory load-path))
+ (when (and (not gnus-use-installed-tm)
+ (null (member gnus-tm-lisp-directory load-path)))
(setq load-path (cons gnus-tm-lisp-directory load-path)))
- (load "mime-setup"))
+ ;; tm may or may not be dumped with XEmacs. In Sunpro it is, otherwise
+ ;; it isn't.
+ (unless (featurep 'mime-setup)
+ (load "mime-setup")))
;;; Mailcrypt by
;;; Jin Choi <jin@atype.com>
;;; Patrick LoPresti <patl@lcs.mit.edu>
(when gnus-use-mailcrypt
- (when (null (member gnus-mailcrypt-lisp-directory load-path))
+ (when (and (not gnus-use-installed-mailcrypt)
+ (null (member gnus-mailcrypt-lisp-directory load-path)))
(setq load-path (cons gnus-mailcrypt-lisp-directory load-path)))
(autoload 'mc-install-write-mode "mailcrypt" nil t)
(autoload 'mc-install-read-mode "mailcrypt" nil t)
;;; Jamie Zawinski <jwz@lucid.com>
(when gnus-use-bbdb
+ ;; bbdb will never be installed with emacs.
(when (null (member gnus-bbdb-lisp-directory load-path))
(setq load-path (cons gnus-bbdb-lisp-directory load-path)))
(autoload 'bbdb "bbdb-com"
;;;### (autoloads (gnus gnus-slave gnus-no-server) "gnus" "lisp/gnus.el" (12473 2137))
;;; Generated autoloads from lisp/gnus.el
-(autoload 'gnus-slave-no-server "gnus" "\
+;; Don't redo this if autoloads already exist
+(unless (fboundp 'gnus)
+ (autoload 'gnus-slave-no-server "gnus" "\
Read network news as a slave without connecting to local server." t nil)
-(autoload 'gnus-no-server "gnus" "\
+ (autoload 'gnus-no-server "gnus" "\
Read network news.
If ARG is a positive number, Gnus will use that as the
startup level. If ARG is nil, Gnus will be started at level 2.
prompt the user for the name of an NNTP server to use.
As opposed to `gnus', this command will not connect to the local server." t nil)
-(autoload 'gnus-slave "gnus" "\
+ (autoload 'gnus-slave "gnus" "\
Read news as a slave." t nil)
-(autoload 'gnus "gnus" "\
+ (autoload 'gnus "gnus" "\
Read network news.
If ARG is non-nil and a positive number, Gnus will use that as the
startup level. If ARG is non-nil and not a positive number, Gnus will
;;; These have moved out of gnus.el into other files.
;;; FIX FIX FIX: should other things be in gnus-setup? or these not in it?
-(autoload 'gnus-update-format "gnus-spec" "\
+ (autoload 'gnus-update-format "gnus-spec" "\
Update the format specification near point." t nil)
-(autoload 'gnus-fetch-group "gnus-group" "\
+ (autoload 'gnus-fetch-group "gnus-group" "\
Start Gnus if necessary and enter GROUP.
Returns whether the fetching was successful or not." t nil)
-(defalias 'gnus-batch-kill 'gnus-batch-score)
+ (defalias 'gnus-batch-kill 'gnus-batch-score)
-(autoload 'gnus-batch-score "gnus-kill" "\
+ (autoload 'gnus-batch-score "gnus-kill" "\
Run batched scoring.
Usage: emacs -batch -l gnus -f gnus-batch-score <newsgroups> ...
Newsgroups is a list of strings in Bnews format. If you want to score
the comp hierarchy, you'd say \"comp.all\". If you would not like to
-score the alt hierarchy, you'd say \"!alt.all\"." t nil)
+score the alt hierarchy, you'd say \"!alt.all\"." t nil))
(provide 'gnus-setup)
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "5.4.10"
+(defconst gnus-version-number "5.4.11"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Gnus v%s" gnus-version-number)
;; Shut up.
+(defvar byte-compile-default-warnings)
+
(defun maybe-fbind (args)
(while args
(or (fboundp (car args))
(when (string-match "XEmacs\\|Lucid" emacs-version)
(message-setup-toolbar))
(easy-menu-add message-mode-menu message-mode-map)
+ (easy-menu-add message-mode-field-menu message-mode-map)
;; Allow mail alias things.
(if (fboundp 'mail-abbrevs-setup)
(mail-abbrevs-setup)
(kill-buffer vbuf)))))))
+(defvoo nnvirtual-last-accessed-component-group nil)
(deffoo nnvirtual-request-article (article &optional group server buffer)
- (when (and (nnvirtual-possibly-change-server server)
- (numberp article))
- (let* ((amap (nnvirtual-map-article article))
- (cgroup (car amap)))
- (cond
- ((not amap)
- (nnheader-report 'nnvirtual "No such article: %s" article))
- ((not (gnus-check-group cgroup))
- (nnheader-report
- 'nnvirtual "Can't open server where %s exists" cgroup))
- ((not (gnus-request-group cgroup t))
- (nnheader-report 'nnvirtual "Can't open component group %s" cgroup))
- (t
- (if buffer
- (save-excursion
- (set-buffer buffer)
- (gnus-request-article-this-buffer (cdr amap) cgroup))
- (gnus-request-article (cdr amap) cgroup)))))))
+ (when (nnvirtual-possibly-change-server server)
+ (if (stringp article)
+ ;; This is a fetch by Message-ID.
+ (cond
+ ((not nnvirtual-last-accessed-component-group)
+ (nnheader-report
+ 'nnvirtual "Don't know what server to request from"))
+ (t
+ (save-excursion
+ (when buffer
+ (set-buffer buffer))
+ (let ((method (gnus-find-method-for-group
+ nnvirtual-last-accessed-component-group)))
+ (funcall (gnus-get-function method 'request-article)
+ article nil (nth 1 method) buffer)))))
+ ;; This is a fetch by number.
+ (let* ((amap (nnvirtual-map-article article))
+ (cgroup (car amap)))
+ (cond
+ ((not amap)
+ (nnheader-report 'nnvirtual "No such article: %s" article))
+ ((not (gnus-check-group cgroup))
+ (nnheader-report
+ 'nnvirtual "Can't open server where %s exists" cgroup))
+ ((not (gnus-request-group cgroup t))
+ (nnheader-report 'nnvirtual "Can't open component group %s" cgroup))
+ (t
+ (setq nnvirtual-last-accessed-component-group cgroup)
+ (if buffer
+ (save-excursion
+ (set-buffer buffer)
+ (gnus-request-article-this-buffer (cdr amap) cgroup))
+ (gnus-request-article (cdr amap) cgroup))))))))
(deffoo nnvirtual-open-server (server &optional defs)
"Copy marks from the virtual group to the component groups.
If READ-P is not nil, update the (un)read status of the components.
If UPDATE-P is not nil, call gnus-group-update-group on the components."
- (let ((unreads (and read-p
- (nnvirtual-partition-sequence
- (gnus-list-of-unread-articles
- (nnvirtual-current-group)))))
- (type-marks (mapcar (lambda (ml)
- (cons (car ml)
- (nnvirtual-partition-sequence (cdr ml))))
- (gnus-info-marks (gnus-get-info
- (nnvirtual-current-group)))))
- mark type groups carticles info entry)
-
- ;; Ok, atomically move all of the (un)read info, clear any old
- ;; marks, and move all of the current marks. This way if someone
- ;; hits C-g, you won't leave the component groups in a half-way state.
- (gnus-atomic-progn
- ;; move (un)read
- (let ((gnus-newsgroup-active nil)) ;workaround guns-update-read-articles
- (while (setq entry (pop unreads))
- (gnus-update-read-articles (car entry) (cdr entry))))
-
- ;; clear all existing marks on the component groups
- (setq groups nnvirtual-component-groups)
- (while groups
- (when (and (setq info (gnus-get-info (pop groups)))
- (gnus-info-marks info))
- (gnus-info-set-marks info nil)))
+ (when nnvirtual-current-group
+ (let ((unreads (and read-p
+ (nnvirtual-partition-sequence
+ (gnus-list-of-unread-articles
+ (nnvirtual-current-group)))))
+ (type-marks (mapcar (lambda (ml)
+ (cons (car ml)
+ (nnvirtual-partition-sequence (cdr ml))))
+ (gnus-info-marks (gnus-get-info
+ (nnvirtual-current-group)))))
+ mark type groups carticles info entry)
+
+ ;; Ok, atomically move all of the (un)read info, clear any old
+ ;; marks, and move all of the current marks. This way if someone
+ ;; hits C-g, you won't leave the component groups in a half-way state.
+ (gnus-atomic-progn
+ ;; move (un)read
+ (let ((gnus-newsgroup-active nil)) ;workaround guns-update-read-articles
+ (while (setq entry (pop unreads))
+ (gnus-update-read-articles (car entry) (cdr entry))))
+
+ ;; clear all existing marks on the component groups
+ (setq groups nnvirtual-component-groups)
+ (while groups
+ (when (and (setq info (gnus-get-info (pop groups)))
+ (gnus-info-marks info))
+ (gnus-info-set-marks info nil)))
- ;; Ok, currently type-marks is an assq list with keys of a mark type,
- ;; with data of an assq list with keys of component group names
- ;; and the articles which correspond to that key/group pair.
- (while (setq mark (pop type-marks))
- (setq type (car mark))
- (setq groups (cdr mark))
- (while (setq carticles (pop groups))
- (gnus-add-marked-articles (car carticles) type (cdr carticles)
- nil t))))
+ ;; Ok, currently type-marks is an assq list with keys of a mark type,
+ ;; with data of an assq list with keys of component group names
+ ;; and the articles which correspond to that key/group pair.
+ (while (setq mark (pop type-marks))
+ (setq type (car mark))
+ (setq groups (cdr mark))
+ (while (setq carticles (pop groups))
+ (gnus-add-marked-articles (car carticles) type (cdr carticles)
+ nil t))))
- ;; possibly update the display, it is really slow
- (when update-p
- (setq groups nnvirtual-component-groups)
- (while groups
- (gnus-group-update-group (pop groups) t)))
- ))
+ ;; possibly update the display, it is really slow
+ (when update-p
+ (setq groups nnvirtual-component-groups)
+ (while groups
+ (gnus-group-update-group (pop groups) t))))))
(defun nnvirtual-current-group ()
+Tue Feb 4 02:33:31 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.texi (Splitting Mail): Addition.
+
Mon Feb 3 07:31:47 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
* gnus.texi (Mode Lines): Addition.
mail belongs in that group.
The last of these groups should always be a general one, and the regular
-expression should @emph{always} be @samp{} so that it matches any
-mails that haven't been matched by any of the other regexps.
+expression should @emph{always} be @samp{} so that it matches any mails
+that haven't been matched by any of the other regexps. (These rules are
+processed from the beginning of the alist toward the end. The first
+rule to make a match will "win", unless you have crossposting enabled.
+In that case, all matching rules will "win".)
If you like to tinker with this yourself, you can set this variable to a
function of your choice. This function will be called without any