From: Lars Magne Ingebrigtsen Date: Wed, 5 Mar 1997 05:44:34 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=commitdiff_plain;h=24569251c145a08620ce6d05734fa19e352a8b31 *** empty log message *** --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 92211b58e..5d95fa9e6 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,22 @@ +Tue Feb 4 03:49:59 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.11 is released. + +Tue Feb 4 01:57:56 1997 Lars Magne Ingebrigtsen + + * 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 * gnus.el: Gnus v5.4.10 is released. diff --git a/lisp/gnus-dup.el b/lisp/gnus-dup.el index 1f1f8fc98..23a7c2b3a 100644 --- a/lisp/gnus-dup.el +++ b/lisp/gnus-dup.el @@ -117,6 +117,7 @@ seen in the same session." (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))) diff --git a/lisp/gnus-setup.el b/lisp/gnus-setup.el index d3ddccf0e..1638c5936 100644 --- a/lisp/gnus-setup.el +++ b/lisp/gnus-setup.el @@ -35,6 +35,15 @@ (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/") @@ -44,10 +53,6 @@ "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.") @@ -57,10 +62,10 @@ "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") @@ -76,14 +81,10 @@ "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) @@ -93,16 +94,21 @@ ;;; MORIOKA Tomohiko (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 ;;; Patrick LoPresti (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) @@ -116,6 +122,7 @@ ;;; Jamie Zawinski (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" @@ -161,10 +168,12 @@ ;;;### (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. @@ -172,10 +181,10 @@ If ARG is non-nil and not a positive number, Gnus will 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 @@ -185,21 +194,21 @@ prompt the user for the name of an NNTP server to use." t nil) ;;; 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 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) diff --git a/lisp/gnus.el b/lisp/gnus.el index 725275924..f0b39798c 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -198,7 +198,7 @@ is restarted, and sometimes reloaded." :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) diff --git a/lisp/lpath.el b/lisp/lpath.el index eb6baf547..c1f850faa 100644 --- a/lisp/lpath.el +++ b/lisp/lpath.el @@ -1,5 +1,7 @@ ;; Shut up. +(defvar byte-compile-default-warnings) + (defun maybe-fbind (args) (while args (or (fboundp (car args)) diff --git a/lisp/message.el b/lisp/message.el index b09dd7e17..9ed90a49b 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -1098,6 +1098,7 @@ C-c C-r message-caesar-buffer-body (rot13 the message body)." (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) diff --git a/lisp/nnvirtual.el b/lisp/nnvirtual.el index 214f7b1b2..c221e9216 100644 --- a/lisp/nnvirtual.el +++ b/lisp/nnvirtual.el @@ -184,26 +184,42 @@ to virtual article number.") (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) @@ -391,49 +407,49 @@ to virtual article number.") "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 () diff --git a/texi/ChangeLog b/texi/ChangeLog index 3a021d8c3..1d7b1a4a9 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,7 @@ +Tue Feb 4 02:33:31 1997 Lars Magne Ingebrigtsen + + * gnus.texi (Splitting Mail): Addition. + Mon Feb 3 07:31:47 1997 Lars Magne Ingebrigtsen * gnus.texi (Mode Lines): Addition. diff --git a/texi/gnus.texi b/texi/gnus.texi index 62c520fee..c8b762ecd 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -8606,8 +8606,11 @@ argument. It should return a non-@code{nil} value if it thinks that the 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