From 71435b5871c19fa1e7e4d5f5e620959ec1b4f8a4 Mon Sep 17 00:00:00 2001 From: yamaoka Date: Sat, 22 Feb 2003 02:29:02 +0000 Subject: [PATCH] Synch to Oort Gnus. --- lisp/ChangeLog | 10 ++++ lisp/gnus-registry.el | 61 ++++++++++++++--------- lisp/gnus-sum.el | 42 +++++++++------- texi/ChangeLog | 6 +++ texi/gnus-ja.texi | 132 ++++++++++++++++++++++++------------------------- texi/gnus.texi | 115 +++++++++++++++++++++--------------------- 6 files changed, 198 insertions(+), 168 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 9147072..0cac25e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2003-02-21 Teodor Zlatanov + + * gnus-sum.el (gnus-summary-move-article) + (gnus-summary-expire-articles): send data header for article, not + just article ID + + * gnus-registry.el (gnus-registry-hashtb, gnus-register-action) + (gnus-register-spool-action): added hashtable of message ID keys + with message motion data + 2003-02-21 Florian Weimer From Reiner Steib . diff --git a/lisp/gnus-registry.el b/lisp/gnus-registry.el index 79b4ad5..7aab355 100644 --- a/lisp/gnus-registry.el +++ b/lisp/gnus-registry.el @@ -33,29 +33,46 @@ (require 'gnus-sum) (require 'nnmail) -;; (defcustom gnus-summary-article-spool-hook nil -;; "*A hook called after an article is spooled." -;; :group 'gnus-summary -;; :type 'hook) - -(defun regtest (action id from &optional to method) - (message "Registry: article %s %s from %s to %s" - id - (if method "respooling" "going") - (gnus-group-guess-full-name from) - (if to (gnus-group-guess-full-name to) "the Bit Bucket in the sky"))) - -(defun regtest-nnmail (id group) - (message "Registry: article %s spooled to %s" +(defvar gnus-registry-hashtb nil + "*The article registry by Message ID.") +(setq gnus-registry-hashtb (make-hash-table + :size 4096 + :test 'equal)) ; we test message ID strings equality + +;; sample data-header +;; (defvar tzz-header '(49 "Re[2]: good news" "\"Jonathan Pryor\" " "Mon, 17 Feb 2003 10:41:46 +-0800" "<88288020@dytqq>" "" 896 18 "lockgroove.bwh.harvard.edu spam.asian:49" nil)) + +;; (maphash (lambda (key value) (message "key: %s value: %s" key value)) gnus-registry-hashtb) +;; (clrhash gnus-registry-hashtb) + +(defun gnus-register-action (action data-header from &optional to method) + (let* ((id (mail-header-id data-header)) + (hash-entry (gethash id gnus-registry-hashtb))) + (gnus-message 5 "Registry: article %s %s from %s to %s" + id + (if method "respooling" "going") + (gnus-group-guess-full-name from) + (if to (gnus-group-guess-full-name to) "the Bit Bucket")) + (unless hash-entry + (setq hash-entry (puthash id (list data-header) gnus-registry-hashtb))) + (puthash id (cons (list action from to method) + (gethash id gnus-registry-hashtb)) gnus-registry-hashtb))) + +(defun gnus-register-spool-action (id group) + (gnus-message 5 "Registry: article %s spooled to %s" id - (gnus-group-prefixed-name group gnus-internal-registry-spool-current-method t))) - -;;(add-hook 'gnus-summary-article-move-hook 'regtest) ; also does copy, respool, and crosspost -;;(add-hook 'gnus-summary-article-delete-hook 'regtest) -;;(add-hook 'gnus-summary-article-expire-hook 'regtest) -(add-hook 'nnmail-spool-hook 'regtest-nnmail) - -;; TODO: + (gnus-group-prefixed-name + group + gnus-internal-registry-spool-current-method + t))) + +(add-hook 'gnus-summary-article-move-hook 'gnus-register-action) ; also does copy, respool, and crosspost +(add-hook 'gnus-summary-article-delete-hook 'gnus-register-action) +(add-hook 'gnus-summary-article-expire-hook 'gnus-register-action) +(add-hook 'nnmail-spool-hook 'gnus-register-spool-action) + +;; TODO: a lot of things +;; TODO: we have to load and save the registry through gnus-save-newsrc-file (provide 'gnus-registry) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 1f5a4e7..636f4a7 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -8924,14 +8924,15 @@ ACTION can be either `move' (the default), `crosspost' or `copy'." (nnheader-get-report (car to-method)))) ((eq art-group 'junk) (when (eq action 'move) - (let ((id (mail-header-id (gnus-data-header - (assoc article (gnus-data-list nil)))))) - (gnus-summary-mark-article article gnus-canceled-mark) - (gnus-message 4 "Deleted article %s" article) - ;; run the move/copy/crosspost/respool hook - (run-hook-with-args 'gnus-summary-article-delete-hook - action id gnus-newsgroup-name nil - select-method)))) + (gnus-summary-mark-article article gnus-canceled-mark) + (gnus-message 4 "Deleted article %s" article) + ;; run the delete hook + (run-hook-with-args 'gnus-summary-article-delete-hook + action + (gnus-data-header + (assoc article (gnus-data-list nil))) + gnus-newsgroup-name nil + select-method))) (t (let* ((pto-group (gnus-group-prefixed-name (car art-group) to-method)) @@ -9018,15 +9019,17 @@ ACTION can be either `move' (the default), `crosspost' or `copy'." article gnus-newsgroup-name (current-buffer)))) ;; run the move/copy/crosspost/respool hook - (let ((id (mail-header-id (gnus-data-header - (assoc article (gnus-data-list nil)))))) (run-hook-with-args 'gnus-summary-article-move-hook - action id gnus-newsgroup-name to-newsgroup - select-method))) + action + (gnus-data-header + (assoc article (gnus-data-list nil))) + gnus-newsgroup-name + to-newsgroup + select-method)) ;;;!!!Why is this necessary? (set-buffer gnus-summary-buffer) - + (gnus-summary-goto-subject article) (when (eq action 'move) (gnus-summary-mark-article article gnus-canceled-mark)))) @@ -9244,12 +9247,13 @@ This will be the case if the article has both been mailed and posted." (when (and (not (memq article es)) (gnus-data-find article)) (gnus-summary-mark-article article gnus-canceled-mark) - (let ((id (mail-header-id (gnus-data-header - (assoc article - (gnus-data-list nil)))))) - (run-hook-with-args 'gnus-summary-article-expire-hook - 'delete id gnus-newsgroup-name nil - nil))))))) + (run-hook-with-args 'gnus-summary-article-expire-hook + 'delete + (gnus-data-header + (assoc article (gnus-data-list nil))) + gnus-newsgroup-name + nil + nil)))))) (gnus-message 6 "Expiring articles...done"))))) (defun gnus-summary-expire-articles-now () diff --git a/texi/ChangeLog b/texi/ChangeLog index d56c912..39408ae 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,9 @@ +2003-02-21 Jesper Harder + + * gnus.texi (Mailing List): Fix. + + * gnus.texi: Markup fixes. + 2003-02-18 Reiner Steib * gnus.texi (Article Washing): Mention `g'. diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index b906ff4..bc79e2c 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -3063,7 +3063,7 @@ form $B$N(B @code{nil} $B$O$=$3$GI>2A$5$l$^$9!#(B $B$G$-$^$9!#$G$b$$$/$D$+$N%Q%i%a!<%?!"Nc$($P(B @code{visible} $B$O8zNO$rH/4x$7(B $B$^$;$s!#Nc$G$9!#(B -@example +@lisp (setq gnus-parameters '(("mail\\..*" (gnus-show-threads nil) @@ -3082,7 +3082,7 @@ form $B$N(B @code{nil} $B$O$=$3$GI>2A$5$l$^$9!#(B ("list\\..*" (total-expire . t) (broken-reply-to . t)))) -@end example +@end lisp $BJ8;zNs$NCM$O!"(B@code{to-group} $B$NNc$,<($9$h$&$K!"@55,I=8=$K$h$kCV$-49$($r(B $Bl9g$O!"$3$NJQ?t$rJQ99$7$?8e$K%5!<%P!<%P%C%U%!$K(B `^' $B$GF~$C$FE,@Z$J(B -$B%a!<%k%5!<%P!<(B ($BNc$($P(B nnml) $B$G(B `g' $B$r2!$7!":F@8@.$9$kI,MW$,$"$j$^$9!#(B +$B$"$k>l9g$O!"$3$NJQ?t$rJQ99$7$?8e$K%5!<%P!<%P%C%U%!$K(B @kbd{^} $B$GF~$C$FE,(B +$B@Z$J%a!<%k%5!<%P!<(B ($BNc$($P(B nnml) $B$G(B @kbd{g} $B$r2!$7!":F@8@.$9$kI,MW$,$"$j(B +$B$^$9!#(B @vindex gnus-summary-line-format gnus $B$K!"(B@code{gnus-summary-line-format} $BJQ?t$N(B @code{%n} $B;EMM(B @@ -6744,13 +6745,13 @@ gnus $B$OA4$F$N5-;v$N40A4$J(B @code{References} $BMs$r8+$F!"F1$8%9%l%C%I$KB0$ @vindex gnus-thread-operation-ignore-subject $B%9%l%C%I$r:n@.$9$k$H$-$KI=Bj$rL5;k$9$k$H!"<+A3$K%9%l%C%I$K$O$$$/$D$+$N0c$C(B $B$?I=Bj$,$"$k$3$H$K$J$j$^$9!#$=$l$+(B -$B$i(B `T k' (@code{gnus-summary-kill-thread}) $B$N$h$&$JL?Na$rH/$9$k$H$-$K!"(B -$BA4BN$N%9%l%C%I$r:o=|$9$k$N$G$O$J$/!"8=:_$N5-;v$HF1$8I=Bj$r;}$DItJ,$@$1$r(B -$B:o=|$7$?$$$H$-$,$"$k$+$b$7$l$^$;$s!#$b$7$3$NH/A[$,NI$$$H;W$&$N$G$"$l$P!"(B -@code{gnus-thread-operation-ignore-subject} $B$r$$$8$/$k$3$H$,$G$-$^$9!#$3(B -$B$l$,(B @code{nil} $B$G$J$$$H(B ($B$3$l$,%G%#%U%)%k%H$G$9$,(B)$B!"%9%l%C%I$NL?Na$rl=j$rDs0F$9$k;v$,$G$-$^$9!#Nc$($P!"(Bgnus $B$K4XO"$7$?(B $B5-;v$r%U%!%$%k(B @file{gnus-stuff} $B$K!"(BVM $B$K4XO"$7$?5-;v(B -$B$r(B @code{vm-stuff} $BJ]B8$7$?$1$l$P!"$3$NJQ?t$r0J2<$N$h$&$K$9$k;v$,$G$-$^(B +$B$r(B @file{vm-stuff} $BJ]B8$7$?$1$l$P!"$3$NJQ?t$r0J2<$N$h$&$K$9$k;v$,$G$-$^(B $B$9(B: @lisp @@ -7544,7 +7545,7 @@ Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9 @vindex gnus-uu-user-view-rules @cindex sox $B$3$NJQ?t$O%U%!%$%k$r1\Mw$9$k$H$-$K:G=i$KD4$Y$i$l$^$9!#Nc$($P!"$b(B -$B$7(B @samp{.au} $B2;%U%!%$%k$rJQ49$9$k$?$a$K(B @code{sox} $B$r;H$$$?$$$H$-$O!"'$($l$PNI$$$G$7$g$&!#$3$l$K$h$C$F35N,%P%C%U%!$G$N0J2<$NL?Na$,;H$($k$h(B -$B$&$K$J$j$^$9!#(B +$B$3$l$K$h$C$F35N,%P%C%U%!$G$N0J2<$NL?Na$,;H$($k$h$&$K$J$j$^$9!#(B @table @kbd @item C-c C-n h @@ -12108,7 +12104,7 @@ Gnus $B$r;H$C$F?7$7$$%a!<%k$rFI$`;v$OHs>o$K4JC1$G$9!#$"$J$?$N%a!<%k%P%C%/(B $B:#$d!"$N%0%k!<%W$HF1$8$h$&$KFI$`;v$,$G$-$^(B $B$9!#(B @@ -12494,7 +12490,7 @@ Maildir $B$+$i%a!<%k$rA0$G$9!#=i4|CM$O4D6-JQ(B -$B?t(B @code{MAILDIR} $B$+$iA0!#(B @item l -`imap-default-user' $B$G@_Dj$5$l$?%f!<%6L>!#(B +@code{imap-default-user} $B$G@_Dj$5$l$?%f!<%6L>!#(B @item p $B%5!<%P!<$N%]!<%HHV9f!#(B @@ -13726,7 +13722,7 @@ rmail box $B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#4{DjCM(B @item nnml-directory @vindex nnml-directory $BA4$F$N(B @code{nnml} $B%G%#%l%/%H%j!<$O$3$N%G%#%l%/%H%j!<$N2<$KCV$+$l$^$9!#(B -$B4{DjCM$O(B `message-directory' $B$NCM(B ($B$=$N4{DjCM$O(B @file{~/Mail}) $B$G$9!#(B +$B4{DjCM$O(B @code{message-directory} $B$NCM(B ($B$=$N4{DjCM$O(B @file{~/Mail}) $B$G$9!#(B @item nnml-active-file @vindex nnml-active-file @@ -14013,9 +14009,9 @@ Rand MH $B%a!<%k1\Mw%7%9%F%`$O(B UNIX $B%7%9%F%`$K$+$J$jD9$$4VB8:_$7$F$$$^$9! @item nnfolder $B4pK\E*$K(B @code{nnfolder} $B$N8z2L$O%0%k!<%WKh$N(B @code{nnmbox} ($B>e$G@bL@$5(B -$B$l$F$$$k:G=i$NJ}K!(B) $B$G$9!#$9$J$o$A!"(B@code{nnmbox} $B<+?H$O(B *$BA4$F(B* $B$N%a!<%k(B -$B$r0l$D$N%U%!%$%k$KF~$l$^$9(B; @code{nnfolder} $B$O%a!<%k%0%k!<%W$=$l$>$l(B -$B$,(B Unix mail box $B%U%!%$%k$r;}$D$h$&$K>/$7:GE,2=$r$7$^$9!#(B +$B$l$F$$$k:G=i$NJ}K!(B) $B$G$9!#$9$J$o$A!"(B@code{nnmbox} $B<+?H$O(B @emph{$BA4$F(B} $B$N(B +$B%a!<%k$r0l$D$N%U%!%$%k$KF~$l$^$9(B; @code{nnfolder} $B$O%a!<%k%0%k!<%W$=$l$>(B +$B$l$,(B Unix mail box $B%U%!%$%k$r;}$D$h$&$K>/$7:GE,2=$r$7$^$9!#(B @code{nnmobx} $B$h$j$b!"$=$l$>$l$N%0%k!<%W$rJL$K2r@O$9$k$N$GB.$/!"$=$N$&$((B $B%a!<%k$r0\F0$5$;$k$N$K:G>.8B$NO+NO$rMW5a$9$kC1=c$J(B Unix mail box $B7A<0$r(B $BDs6!$7$^$9!#2C$($F!"(Bgnus $B$,$=$l$>$l$NJL$N%0%k!<%W$K$I$N$/$i$$$N%a%C%;!<(B @@ -14302,7 +14298,7 @@ Slashdot (@uref{http://slashdot.org/}) $B$O?M5$$N$"$k%K%e!<%9%5%$%H$G!"%K%e!<( @item nnslashdot-directory @vindex nnslashdot-directory @code{nnslashdot} $B$,%U%!%$%k$rJ]B8$9$k>l=j$G$9!#=i4|CM(B -$B$O(B @samp{~/News/slashdot/} $B$G$9!#(B +$B$O(B @file{~/News/slashdot/} $B$G$9!#(B @item nnslashdot-active-url @vindex nnslashdot-active-url @@ -14353,7 +14349,7 @@ http://www.tcj.com/messboard.ubbcgi/ RET}$B!#(B($B6=L#$N$"$k2q5D<<(B @item nnultimate-directory @vindex nnultimate-directory @code{nnultimate} $B$,%U%!%$%k$rJ]B8$9$k%G%#%l%/%H%j!<$G$9!#=i4|CM(B -$B$O(B @samp{~/News/ultimate/} $B$G$9!#(B +$B$O(B @file{~/News/ultimate/} $B$G$9!#(B @end table @node Web Archive @@ -14382,7 +14378,7 @@ an_egroup RET egroups RET www.egroups.comRET your@@email.address RET}$B!#(B @item nnwarchive-directory @vindex nnwarchive-directory @code{nnwarchive} $B$,%U%!%$%k$rJ]B8$9$k%G%#%l%/%H%j!<$G$9!#=i4|CM(B -$B$O(B @samp{~/News/warchive} $B$G$9!#(B +$B$O(B @file{~/News/warchive} $B$G$9!#(B @item nnwarchive-login @vindex nnwarchive-login @@ -14651,7 +14647,7 @@ Web Newspaper $B$K4X$9$k0J2<$N(B @code{nnshimbun} $BJQ?t$rJQ$($k$3$H$,2DG=$G$ @item nnrss-directory @vindex nnrss-directory @code{nnrss} $B$,%U%!%$%k$r=q$-9~$`%G%#%l%/%H%j!<$G!"%G%#%U%)%k%H(B -$B$O(B @samp{~/News/rss/} $B$G$9!#(B +$B$O(B @file{~/News/rss/} $B$G$9!#(B @end table $B35N,%P%C%U%!$K@bL@$rI=<($5$;$?$$$J$i$P!"0J2<$N%3!<%I$,Lr$KN)$D$G$7$g$&!#(B @@ -14749,7 +14745,7 @@ Gnus $B$O%&%'%V%Z!<%8$rH$7$F2<$5$$!#(B) @@ -16510,10 +16506,10 @@ gnus $B%(!<%8%'%s%H$,$=$N5-;v$r(B spam $B$@$H8+Pv$7$?$i??!#$3$NH/8+E*o$K3Ne$N=R8l$O$=$NJ,N`$KB0$9$k(B*$BA4$F(B*$B$N%0%k!<%W$KE,MQ$5$l$^$9!#$7$+$7!"J,N`Cf(B -$B$N8D!9$N%0%k!<%W$KFCDj$N=R8l$rK>$s$@$j!"BUBF2a$.$F?7$7$$J,N`$r@_Dj$G$-$J(B -$B$$$H$-$O!"%0%k!<%W$N8D!9$N=R8l$r%0%k!<%W%Q%i%a!<%?$Ge$N=R8l$O$=$NJ,N`$KB0$9$k(B @emph{$BA4$F(B} $B$N%0%k!<%W$KE,MQ$5$l$^$9!#$7$+$7!"(B +$BJ,N`Cf$N8D!9$N%0%k!<%W$KFCDj$N=R8l$rK>$s$@$j!"BUBF2a$.$F?7$7$$J,N`$r@_Dj(B +$B$G$-$J$$$H$-$O!"%0%k!<%W$N8D!9$N=R8l$r%0%k!<%W%Q%i%a!<%?$Ge$G=R$Y$i$l$F$$$k;HMQ2DG=$J%9%3%"IU$1%-!<%o!<%I(B -*$B$N$_(B* $B$G$"$kI,MW$,$"$j$^$9!#(B +$B$3$l$i$N%9%3%"%U%!%$%k$O>e$G=R$Y$i$l$F$$$k;HMQ2DG=$J%9%3%"IU$1%-!<%o!<(B +$B%I(B @emph{$B$N$_(B} $B$G$"$kI,MW$,$"$j$^$9!#(B $BNc(B: @@ -16621,7 +16617,7 @@ gnus $B%(!<%8%'%s%H$,$=$N5-;v$r(B spam $B$@$H8+Pv$7$?$i??!#$3$NH/8+E*l9g$@$1!"$=$l$i$rMQ0U$7(B $B$F2<$5$$!#(B -@example +@lisp (defvar gnus-group-spam-exit-processor-blackbox "blackbox" "$B35N,$r=P$k$H$-$K8F$P$l$k(B blackbox $B$N(B spam $B%W%m%;%C%5!l9g!"<-=q$r:n$k$H$-$K==J,$KCm0U$7$J$1$l$P$J$j(B $B$^$;$s!#(B @@ -21708,12 +21704,12 @@ Spam $BMQ$N%0%k!<%W$G$9!#%G%#%U%)%k%H$O(B @samp{mail.spam} $B$G$9!#(B $B$-$NHs(B-spam $B%3%l%/%7%g%s$KN>J}$H$bF~$C$F$$$J$1$l$P$J$i$J$$$3$H$KCm0U$7$F(B $B2<$5$$!#(B -@example +@lisp (setq nnmail-split-fancy `(| (: spam-stat-split-fancy) ("Subject" "\\bspam-stat\\b" "mail.emacs") "mail.misc")) -@end example +@end lisp $B$3$l$rEAE}E*$J_I2a$HAH$_9g$o$;$k$3$H$b$G$-$^$9!#$3$3$G$O2f!9$O$9$Y$F(B $B$N(B HTML $B$@$1$N%a!<%k$r(B @samp{mail.spam.filtered} $B%0%k!<%W$KF~$l$k$b$N$H(B @@ -21721,13 +21717,13 @@ Spam $BMQ$N%0%k!<%W$G$9!#%G%#%U%)%k%H$O(B @samp{mail.spam} $B$G$9!#(B $B<-=q$r:n$k$H$-$K!"(B@samp{mail.spam.filtered} $B$N%a!<%k$,(B spam $B$^$?$O(B $BHs(B-spam $B%3%l%/%7%g%s$N$I$A$i$K$bF~$k$Y$-$G$O$J$$$3$H$KCm0U$7$F2<$5$$(B! -@example +@lisp (setq nnmail-split-fancy `(| ("Content-Type" "text/html" "mail.spam.filtered") (: spam-stat-split-fancy) ("Subject" "\\bspam-stat\\b" "mail.emacs") "mail.misc")) -@end example +@end lisp @node Low-level interface to the spam-stat dictionary @subsubsection spam-$BE}7W(B (spam-stat) $B<-=q$X$NDc3,AX%$%s%?!<%U%'!<%9(B @@ -21783,10 +21779,10 @@ Spam $B$G$O$J$$DL>o$N%a!<%k$@$H$O$b$O$d9M$($i$l$J$$%a!<%k$,$"$k%P%C%U%!$G(B $B$=$l$r;H$&A0$K!"I,$:<-=q$,(B load $B$5$l$F$$$k$h$&$K$7$F2<$5$$!#$3$l$K(B $B$O(B @file{~/.gnus} $B%U%!%$%k$K0J2<$,I,MW$G$9(B: -@example +@lisp (require 'spam-stat) (spam-stat-load) -@end example +@end lisp $BBeI=E*$J%F%9%H$O0J2<$N4X?t8F=P$7$rI,MW$H$7$^$9(B: @@ -24649,9 +24645,9 @@ description-buffer = *description-line $B$3$N%^%/%m$O!"$[$H$s$IA4It$N%P%C%/%(%s%I$,;}$D$Y$-6&DL4X?t$r$$$/$D$+Dj5A(B $B$7$^$9!#(B -@example +@lisp (nnoo-define-basics nndir) -@end example +@end lisp @item deffoo $B$3$N%^%/%m$O$^$5$K(B @code{defun} $B$N$h$&$J$b$N$G!"F10l$N0z?t$r