Sync up with gnus-6_8.
authorkeiichi <keiichi>
Mon, 16 Nov 1998 03:16:51 +0000 (03:16 +0000)
committerkeiichi <keiichi>
Mon, 16 Nov 1998 03:16:51 +0000 (03:16 +0000)
README-gnus-bbdb.en [new file with mode: 0644]
README-gnus-bbdb.ja [new file with mode: 0644]
README.branch [new file with mode: 0644]
README.branch.ja [new file with mode: 0644]
README.semi
README.semi.ja [new file with mode: 0644]
TODO.ja
lisp/gnus-art.el
lisp/gnus-msg.el
lisp/message.el
lisp/pop3-fma.el

diff --git a/README-gnus-bbdb.en b/README-gnus-bbdb.en
new file mode 100644 (file)
index 0000000..b99d805
--- /dev/null
@@ -0,0 +1,104 @@
+-*- mode: text; fill-column: 70; -*-
+
+---
+ If BBDB is used then, bbdb-gnus.elc can't be shared with them before
+Semi-gnus 6.8.X. It is necessary to byte-compile it again.
+
+;; It is a simple way that only bbdb-gnus.el is byte-compiled after
+;; gnus starts.
+
+---
+gnus-bbdb.el
+
+ This is the BBDB API module for Semi-gnus. `mime-bbdb' should not be
+necessary for Semi-gnus, if that module were used.
+
+ You need FLIM 1.11.3 or later.
+
+ If you are using bbdb-auto-notes-hook, the patch listed at the end
+of this file should be applied. If not, it might not.
+
+ EXAMPLE:
+
+;; You need to set nothing for `mime-bbdb'.
+;(setq mime-bbdb/use-mail-extr nil)
+;(eval-after-load "mail-extr" '(require 'mime-bbdb))
+
+(require 'bbdb)
+(require 'gnus-bbdb)
+(bbdb-initialize 'sc)  ;; 'Gnus or 'gnus should be deleted.
+(add-hook 'gnus-startup-hook 'gnus-bbdb-insinuate)
+
+ If you would like to decode the quoted encoded words forcibly, even
+though FLIM does not decode them, put the following lines in your
+.gnus file.
+
+(setq gnus-bbdb/decode-field-body-function
+      (function
+       (lambda (field-body field-name)
+         (eword-decode-string field-body))))
+
+---
+ This is a patch for bbdb.el / bbdb-hooks.el.
+
+------ cut here ------ cut here ------ cut here ------ cut here ------
+--- bbdb-hooks.el~     Tue Oct 13 03:13:50 1998
++++ bbdb-hooks.el      Fri Oct 30 17:05:53 1998
+@@ -352,12 +352,22 @@
+       (marker (bbdb-header-start))
+       field pairs fieldval  ; do all bindings here for speed
+       regexp string notes-field-name notes
+-       replace-p replace-or-add-msg)
++      replace-p replace-or-add-msg
++      extract-field-value-funtion)
+     (set-buffer (marker-buffer marker))
+     (save-restriction
+-      (widen)
+-      (goto-char marker)
+-      (if (and (setq fieldval (bbdb-extract-field-value "From"))
++      (let ((function-list bbdb-extract-field-value-function-list)
++          function)
++      (or (progn
++            (while (and (not extract-field-value-funtion)
++                        (setq function (pop function-list)))
++              (setq extract-field-value-funtion (funcall function)))
++            extract-field-value-funtion)
++          (progn
++            (widen)
++            (goto-char marker)
++            (setq extract-field-value-funtion 'bbdb-extract-field-value))))
++      (if (and (setq fieldval (funcall extract-field-value-funtion "From"))
+              (string-match (bbdb-user-mail-names) fieldval))
+         ;; Don't do anything if this message is from us.  Note that we have
+         ;; to look at the message instead of the record, because the record
+@@ -368,7 +378,7 @@
+         (goto-char marker)
+         (setq field (car (car ignore-all))
+               regexp (cdr (car ignore-all))
+-              fieldval (bbdb-extract-field-value field))
++              fieldval (funcall extract-field-value-funtion field))
+         (if (and fieldval
+                  (string-match regexp fieldval))
+             (setq ignore t)
+@@ -382,7 +392,7 @@
+               pairs (cdr (car rest))  ; (REGEXP . STRING) or
+                                       ; (REGEXP FIELD-NAME STRING) or
+                                       ; (REGEXP FIELD-NAME STRING REPLACE-P)
+-              fieldval (bbdb-extract-field-value field)) ; e.g., Subject line
++              fieldval (funcall extract-field-value-funtion field)) ; e.g., Subject line
+         (if fieldval
+             (while pairs
+               (setq regexp (car (car pairs))
+--- bbdb.el~   Tue Oct 13 03:14:55 1998
++++ bbdb.el    Fri Oct 30 17:05:53 1998
+@@ -620,6 +620,7 @@
+ (defvar bbdb-showing-changed-ones nil)
+ (defvar bbdb-modified-p nil)
+ (defvar bbdb-elided-display nil)
++(defvar bbdb-extract-field-value-function-list nil)
+ (defvar bbdb-debug t)
+ (defmacro bbdb-debug (&rest body)
+------ cut here ------ cut here ------ cut here ------ cut here ------
+
+---
diff --git a/README-gnus-bbdb.ja b/README-gnus-bbdb.ja
new file mode 100644 (file)
index 0000000..18f3e9b
--- /dev/null
@@ -0,0 +1,104 @@
+-*- mode: text; fill-column: 70; -*-
+
+---
+BBDB \e$B$r;HMQ$5$l$F$$$kJ}$O!"\e(B bbdb-gnus.elc \e$B$r\e(B Semi-gnus 6.8.X \e$B0JA0$N$b\e(B
+\e$B$N$H6&M-$9$k$3$H$O$G$-$^$;$s!#I,$:!"\e(B byte-compile \e$B$7D>$7$F$/$@$5$$!#\e(B
+
+;; gnus \e$B$r5/F0$7$?$"$H$G!"\e(B bbdb-gnus.el \e$B$N$_$r\e(B byte-compile \e$B$9$k$H$$$&\e(B
+;; \e$B$N$,$*<j7Z$G$9!#\e(B :-)
+
+---
+gnus-bbdb.el
+
+Semi-gnus \e$B$KFC2=$7$?\e(B BBDB API \e$B%b%8%e!<%k$G$9!#$3$N%b%8%e!<%k$r;HMQ$9$k\e(B
+\e$B$3$H$K$h$C$F!"\e(B Semi-gnus \e$B$G;HMQ$9$k>l9g$K$O\e(B mime-bbdb \e$B$,ITMW$K$J$j$^$9!#\e(B
+
+1.11.3 \e$B0J9_$N\e(B FLIM \e$B$,I,MW$G$9!#\e(B
+
+bbdb-auto-notes-hook \e$B$r;HMQ$7$F$$$J$$J}$K$OITMW$G$9$,!";HMQ$7$F$$$kJ}\e(B
+\e$B$O\e(B bbdb.el / bbdb-hooks.el \e$B$K$3$N%U%!%$%k$N:G8e$K$"$k\e(B patch \e$B$r$"$F$kI,\e(B
+\e$BMW$,$"$j$^$9!#\e(B
+
+\e$B@_DjNc\e(B:
+
+;; mime-bbdb \e$B$K4X$9$k@_Dj$OITMW$G$9!#\e(B
+;(setq mime-bbdb/use-mail-extr nil)
+;(eval-after-load "mail-extr" '(require 'mime-bbdb))
+
+(require 'bbdb)
+(require 'gnus-bbdb)
+(bbdb-initialize 'sc)  ;; 'gnus / 'Gnus \e$B$O$O$:$7$F$/$@$5$$!#\e(B
+(add-hook 'gnus-startup-hook 'gnus-bbdb-insinuate)
+
+FLIM \e$B$G$O\e(B quote \e$B$5$l$?\e(B eword encoded word \e$B$O\e(B decode \e$B$5$l$^$;$s$,!"$=$l\e(B
+\e$B$r6/@)E*$K\e(B decode \e$B$7$?$$>l9g$K$O!"<!$N@_Dj$r2C$($F$/$@$5$$!#\e(B
+
+(setq gnus-bbdb/decode-field-body-function
+      (function
+       (lambda (field-body field-name)
+         (eword-decode-string field-body))))
+
+---
+\e$B0J2<$O\e(B bbdb.el / bbdb-hooks.el \e$B$K$"$F$k\e(B patch \e$B$G$9!#\e(B
+
+------ cut here ------ cut here ------ cut here ------ cut here ------
+--- bbdb-hooks.el~     Tue Oct 13 03:13:50 1998
++++ bbdb-hooks.el      Fri Oct 30 17:05:53 1998
+@@ -352,12 +352,22 @@
+       (marker (bbdb-header-start))
+       field pairs fieldval  ; do all bindings here for speed
+       regexp string notes-field-name notes
+-       replace-p replace-or-add-msg)
++      replace-p replace-or-add-msg
++      extract-field-value-funtion)
+     (set-buffer (marker-buffer marker))
+     (save-restriction
+-      (widen)
+-      (goto-char marker)
+-      (if (and (setq fieldval (bbdb-extract-field-value "From"))
++      (let ((function-list bbdb-extract-field-value-function-list)
++          function)
++      (or (progn
++            (while (and (not extract-field-value-funtion)
++                        (setq function (pop function-list)))
++              (setq extract-field-value-funtion (funcall function)))
++            extract-field-value-funtion)
++          (progn
++            (widen)
++            (goto-char marker)
++            (setq extract-field-value-funtion 'bbdb-extract-field-value))))
++      (if (and (setq fieldval (funcall extract-field-value-funtion "From"))
+              (string-match (bbdb-user-mail-names) fieldval))
+         ;; Don't do anything if this message is from us.  Note that we have
+         ;; to look at the message instead of the record, because the record
+@@ -368,7 +378,7 @@
+         (goto-char marker)
+         (setq field (car (car ignore-all))
+               regexp (cdr (car ignore-all))
+-              fieldval (bbdb-extract-field-value field))
++              fieldval (funcall extract-field-value-funtion field))
+         (if (and fieldval
+                  (string-match regexp fieldval))
+             (setq ignore t)
+@@ -382,7 +392,7 @@
+               pairs (cdr (car rest))  ; (REGEXP . STRING) or
+                                       ; (REGEXP FIELD-NAME STRING) or
+                                       ; (REGEXP FIELD-NAME STRING REPLACE-P)
+-              fieldval (bbdb-extract-field-value field)) ; e.g., Subject line
++              fieldval (funcall extract-field-value-funtion field)) ; e.g., Subject line
+         (if fieldval
+             (while pairs
+               (setq regexp (car (car pairs))
+--- bbdb.el~   Tue Oct 13 03:14:55 1998
++++ bbdb.el    Fri Oct 30 17:05:53 1998
+@@ -620,6 +620,7 @@
+ (defvar bbdb-showing-changed-ones nil)
+ (defvar bbdb-modified-p nil)
+ (defvar bbdb-elided-display nil)
++(defvar bbdb-extract-field-value-function-list nil)
+ (defvar bbdb-debug t)
+ (defmacro bbdb-debug (&rest body)
+------ cut here ------ cut here ------ cut here ------ cut here ------
+
+---
diff --git a/README.branch b/README.branch
new file mode 100644 (file)
index 0000000..188fbd6
--- /dev/null
@@ -0,0 +1,109 @@
+README.branch --- description of branches and tags. (DRAFT)
+========================================================================
+
+Semi-gnus revision tree (1998-07-16)
+
+    vendor      personal    main trunk      public
+    branch      branches                    branches
+------------------------------------------------------------------------
+qGnus 0.??  ------> Semi-gnus 6.0.0
+       :                        :
+       :        himi     <--  6.0.7
+       :        ichikawa <--  6.0.8
+       :        akr      <--  6.2.3
+       :        shuhei-k <--  6.3.1
+Gnus 5.6.11 ------>           6.3.3
+       :                      6.4.0 (for SEMI 1.5)
+       :                     (6.4.?)------> for SEMI 1.5
+       :                        |    \
+       :                        |     \
+(Synch with original Gnus       |      ---> for SEMI 1.6
+ was done many times, but    (6.4.?)------> 6.5 (for SEMI 1.7)
+ we don't include them.)        |        /    6.5.0
+       :                        |    (?)/
+       :                        |   <---
+       :                     (6.5.?)------> 6.6 (for SEMI 1.8, FLIM 1.7)
+       :                        |    \        6.6.0        stable branch
+       :                        |     \
+       :                        |      ---> 6.7 (for SEMI 1.8, FLIM 1.7)
+       :                        |             6.7.0       develop branch
+       :     sync               |               :
+Gnus 5.6.22 ------>             |   feedback  6.7.7
+       :                     (6.7.8)<------   6.7.8
+       :                        |    \
+       :                        |     \
+       :                        |      ---> 6.8 (for SEMI 1.8, FLIM 1.8)
+       :     sync               |             6.8.0
+Gnus 5.6.24 ------>             |             6.8.1
+       :                        :               :
+       :                        :               :
+========================================================================
+
+The Vendor Branch
+
+    Original version of Gnus.
+    Each version has a tag of the form "qgnus-0_XY" or "gnus-5_X_Y" or
+    "pgnus-0_XY".
+
+    The branch tag for the vendor branch is "larsi".
+
+The Main Trunk
+
+    Semi-gnus was developed on the main trunk until current branch-
+    management plan (See "Public Branches" below) was introduced.
+    Each version has a tag of the form "gnus-6_N2_N3". (0 < N2 < 5)
+
+Public Branches
+
+    Current main stream of Semi-gnus development.
+
+    [Goal and policy of public branches here ???]
+
+    Each branch has a tag of the form "gnus-N1_N2" and each version
+    has a tag of the form "gnus-N1_N2_N3".
+
+    N1, N2, and N3 are changed by the following rules.
+
+    N1 will be incremented if any fundamental architecture change is
+    made.  Of cource, in this case, N2 and N3 will be reset to zero.
+
+    N2 will be incremented and new branch will be made if any "major
+    changes" are made.  "major changes" include API changes, major
+    version up of original Gnus, or synchronization with original Gnus
+    which requires design decision.
+
+    N3 will be incremented if some "minor changes" are made.  "minor
+    changes" include small bug fix or synchronization with original Gnus
+    without design decision.
+
+    The following branch tags are currently available.
+
+       for-semi-1_5    Semi-gnus for SEMI 1.5 API
+       for-semi-1_6    Semi-gnus for SEMI 1.6 API
+       gnus-6_5        Semi-gnus for SEMI 1.7 API
+       gnus-6_6        Semi-gnus for SEMI 1.8, FLIM 1.7 API (stable)
+       gnus-6_7        Semi-gnus for SEMI 1.8, FLIM 1.7 API (develop)
+       gnus-6_8        Semi-gnus for SEMI 1.8, FLIM 1.8 API
+
+Personal Branches
+
+    Some Semi-gnus developers have their own "personal branches".
+    Each personal branch may have its own goal and/or policy.
+    See README.${tag} (if exists) for information of each branch.
+
+    The following branch tags are curretly available.
+
+       himi            Owner: Miyashita Hisashi
+       ichikawa        Owner: Tatsuya Ichikawa
+       akr             Owner: Tanaka Akira
+       shuhei-k        Owner: Shuhei KOBAYASHI
+
+"semi-gnus" Tag
+
+    Was assigned to the latest stable version.
+    Currently not maintained. (XXX: ???)
+
+"for-semi-N1_N2" Tags
+
+    Were assigned to corresponding version of SEMI API N1.N2.
+    We will not use this convention any longer. (XXX: ???)
diff --git a/README.branch.ja b/README.branch.ja
new file mode 100644 (file)
index 0000000..d458624
--- /dev/null
@@ -0,0 +1,110 @@
+README.branch.ja --- branch \e$B$H\e(B tag \e$B$N@bL@\e(B (\e$BAp9F\e(B)
+========================================================================
+
+Semi-gnus revision tree (1998-07-16)
+
+    vendor      personal    main trunk      public
+    branch      branches                    branches
+------------------------------------------------------------------------
+qGnus 0.??  ------> Semi-gnus 6.0.0
+       :                        :
+       :        himi     <--  6.0.7
+       :        ichikawa <--  6.0.8
+       :        akr      <--  6.2.3
+       :        shuhei-k <--  6.3.1
+Gnus 5.6.11 ------>           6.3.3
+       :                      6.4.0 (for SEMI 1.5)
+       :                     (6.4.?)------> for SEMI 1.5
+       :                        |    \
+       :                        |     \
+(\e$B85$N\e(B Gnus \e$B$H$N\e(B Sync \e$B$O2?EY\e(B     |      ---> for SEMI 1.6
\e$B$b$J$5$l$F$$$^$9$,!"$3$3$K\e(B  (6.4.?)------> 6.5 (for SEMI 1.7)
\e$B$O=q$-$^$;$s!#\e(B)                |        /    6.5.0
+       :                        |    (?)/
+       :                        |   <---
+       :                     (6.5.?)------> 6.6 (for SEMI 1.8, FLIM 1.7)
+       :                        |    \        6.6.0        stable branch
+       :                        |     \
+       :                        |      ---> 6.7 (for SEMI 1.8, FLIM 1.7)
+       :                        |             6.7.0       develop branch
+       :     sync               |               :
+Gnus 5.6.22 ------>             |   feedback  6.7.7
+       :                     (6.7.8)<------   6.7.8
+       :                        |    \
+       :                        |     \
+       :                        |      ---> 6.8 (for SEMI 1.8, FLIM 1.8)
+       :     sync               |             6.8.0
+Gnus 5.6.24 ------>             |             6.8.1
+       :                        :               :
+       :                        :               :
+========================================================================
+
+The Vendor Branch
+
+    Gnus \e$B$N85$N%P!<%8%g%s$G$9!#\e(B
+    \e$B$=$l$>$l$N%P!<%8%g%s$O\e(B "qgnus-0_XY" \e$B$d\e(B "gnus-5_X_Y" \e$B$d\e(B
+    "pgnus-0_XY" \e$B$H$$$&7A<0$N\e(B tag \e$B$,IU$$$F$$$^$9!#\e(B
+
+    vendor branch \e$B$N\e(B branch tag \e$B$O\e(B "larsi" \e$B$G$9!#\e(B
+
+The Main Trunk
+
+    \e$B8=:_$N\e(B branch \e$B4IM}7W2h$,F3F~$5$l$k$^$G!"\e(BSemi-gnus \e$B$O\e(B main trunk \e$B$G\e(B
+    \e$B3+H/$5$l$F$$$^$7$?\e(B (\e$B2<$N\e(B "Public Branches" \e$B$rFI$s$G$/$@$5$$\e(B)\e$B!#$=$l\e(B
+    \e$B$>$l$N%P!<%8%g%s$O\e(B "gnus-6_N2_N3" \e$B$H$$$&7A<0$G$9!#\e(B(0 < N2 < 5)
+
+Public Branches
+
+    \e$B8=:_$N\e(B Semi-gnus \e$B3+H/$N<gN.$G$9!#\e(B
+
+    [public branch \e$B$NL\I8$H<g5A$r=q$/\e(B ???]
+
+    \e$B$=$l$>$l$N\e(B branch \e$B$O\e(B "gnus-N1_N2" \e$B$H$$$&7A<0$N\e(B tag \e$B$,IU$$$F$$$F!"\e(B
+    \e$B$=$l$>$l$N%P!<%8%g%s$O\e(B "gnus-N1_N2_N3" \e$B$H$$$&7A<0$N\e(B tag \e$B$,IU$$$F$$\e(B
+    \e$B$^$9!#\e(B
+
+    N1, N2, N3 \e$B$O0J2<$N5,B'$K=>$C$FJQ99$5$l$^$9!#\e(B
+
+    N1 \e$B$O4pACE*$J;EAH$_$NJQ99$,$J$5$l$?$H$-$KA}$d$5$l$^$9!#$b$A$m$s!"\e(B
+    \e$B$3$N>l9g$O\e(B N2 \e$B$H\e(B N3 \e$B$O\e(B 0 \e$B$K$J$j$^$9!#\e(B
+
+    N2 \e$B$O?7$7$$\e(B branch \e$B$,\e(B "\e$B<g$JJQ99\e(B" \e$B$r9T$C$?$H$-$KA}$d$5$l$^$9!#\e(B "\e$B<g\e(B
+    \e$B$JJQ99\e(B" \e$B$H$O!"\e(BAPI \e$B$NJQ99!"85$N\e(B Gnus \e$B$NBg$-$J99?7!"@_7W$N7hDj$rH<$&\e(B
+    \e$B$h$&$J85$N\e(B Gnus \e$B$H$NF14|$J$I$G$9!#\e(B
+
+    N3 \e$B$O\e(B "\e$B>.$5$JJQ99\e(B" \e$B$,$J$5$l$?$H$-$KA}$d$5$l$^$9!#\e(B"\e$B>.$5$JJQ99\e(B" \e$B$O>.\e(B
+    \e$B$5$J%P%0=$@5$d!"@_7W$N7hDj$rH<$o$J$$85$N\e(B Gnus \e$B$H$NF14|$J$I$G$9!#\e(B
+
+    \e$B8=:_$O0J2<$N\e(B branch tag \e$B$,;HMQ2DG=$G$9!#\e(B
+    The following branch tags are currently available.
+
+       for-semi-1_5    Semi-gnus for SEMI 1.5 API
+       for-semi-1_6    Semi-gnus for SEMI 1.6 API
+       gnus-6_5        Semi-gnus for SEMI 1.7 API
+       gnus-6_6        Semi-gnus for SEMI 1.8, FLIM 1.7 API (stable)
+       gnus-6_7        Semi-gnus for SEMI 1.8, FLIM 1.7 API (develop)
+       gnus-6_8        Semi-gnus for SEMI 1.8, FLIM 1.8 API
+
+Personal Branches
+
+    Semi-gnus \e$B3+H/<T$NCf$K$O<+J,$N\e(B "personal branch" \e$B$r;}$C$F$$$k?M$b\e(B
+    \e$B$$$^$9!#$=$l$>$l$N\e(B personal branch \e$B$OL\I8!"<g5A$r;}$C$F$$$k$G$7$g\e(B
+    \e$B$&!#$=$l$>$l$N\e(B branch \e$B$N>pJs$O\e(B (\e$BB8:_$9$k$J$i$P!"\e(B) README.${tag} \e$B$r\e(B
+    \e$BFI$s$G$/$@$5$$!#\e(B
+
+    \e$B0J2<$N\e(B branch tag \e$B$,8=:_;HMQ2DG=$G$9!#\e(B
+
+       himi            Owner: Miyashita Hisashi
+       ichikawa        Owner: Tatsuya Ichikawa
+       akr             Owner: Tanaka Akira
+       shuhei-k        Owner: Shuhei KOBAYASHI
+
+"semi-gnus" Tag
+
+    \e$B$3$l$O:G?7$N0BDjHG$K3d$jEv$F$i$l$F$$$^$7$?!#8=:_$O0];}$5$l$F$$$^$;\e(B
+    \e$B$s!#\e(B(XXX: ???)
+
+"for-semi-N1_N2" Tags
+
+    \e$B$3$l$O\e(B SEMI API N1.N2 \e$B$KBP1~$9$k%P!<%8%g%s$K3d$jEv$F$i$l$F$$$^$7$?!#\e(B
+    \e$B$3$N=,47$O$b$&;H$o$l$^$;$s!#\e(B(XXX: ???)
index b297fe7..92809fe 100644 (file)
@@ -8,13 +8,14 @@ all features of Gnus and gnus-mime, so there are no need to install
 Gnus to use it, and you must not use gnus-mime for SEMI.
 
   It requires SEMI package, so please get and install SEMI package
-before to install it.
-
+before to install it. You can get SEMI from
+ftp://ftp.jaist.ac.jp/pub/elisp/semi/
+Required environment for SEMI is written in README.en of SEMI package.
 
 How to get? (via CVS)
 =====================
 
-(0) cvs login
+(0) cvs login (first time only)
 
     % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
        login
@@ -52,12 +53,15 @@ Major tags are following:
     himi               himi branch
 
     ichikawa           ichikawa branch
+                       Based on pGnus.
 
     akr                        akr branch
 
     shuhei-k           shuhei-k branch
                        Mail-Followup-To/Mail-Reply-To, gnus-cache fix.
 
+For more detailed information, please read README.branch.
+
 
 How to get? (via ftp)
 =====================
@@ -92,4 +96,5 @@ Semi-gnus.  To join the Semi-gnus ML, send an empty e-mail to
     semi-gnus-ja-help@meadow.scphys.kyoto-u.ac.jp      (Japanese)
 
   In addition, we need developers.  If you would like to develop it,
-please send mail to cvs@chamonix.jaist.ac.jp.
+please send mail to cvs@chamonix.jaist.ac.jp with your account name
+and UNIX /etc/passwd style crypted password.
diff --git a/README.semi.ja b/README.semi.ja
new file mode 100644 (file)
index 0000000..c91c0a3
--- /dev/null
@@ -0,0 +1,107 @@
+\e$B$3$N%Q%C%1!<%8$K$O\e(B Semi-gnus \e$B$,F~$C$F$$$^$9!#\e(B
+
+Semi-gnus \e$B$H$O!)\e(B
+==================
+
+  Semi-gnus \e$B$O\e(B SEMI \e$B$N$?$a$N\e(B gnus-mime \e$B$H\e(B Gnus \e$B$NAH9g$;$rCV$-49$($k$b\e(B
+\e$B$N$G$9!#\e(BGnus \e$B$H\e(B gnus-mime \e$B$NA4$F$N5!G=$r;}$C$F$$$^$9$N$G!"$3$l$r;HMQ$9\e(B
+\e$B$k$?$a$K\e(B Gnus \e$B$r%$%s%9%H!<%k$9$kI,MW$O$J$/!"\e(BSEMI \e$B$N$?$a$N\e(B gnus-mime \e$B$O\e(B
+\e$B;HMQ$7$F$O$$$1$^$;$s!#\e(B
+
+  SEMI \e$B%Q%C%1!<%8$rMW5a$7$^$9$N$G!"%$%s%9%H!<%k$9$kA0$K\e(B SEMI \e$B%Q%C%1!<\e(B
+\e$B%8$r%$%s%9%H!<%k$7$F$/$@$5$$!#\e(BSEMI \e$B$O\e(B
+ftp://ftp.jaist.ac.jp/pub/elisp/semi/ \e$B$+$i<hF@$9$k$3$H$,$G$-$^$9!#I,MW\e(B
+\e$B$J4D6-$O\e(B SEMI \e$B$N\e(B README.ja \e$B$r;2>H$7$F$/$@$5$$!#\e(B
+
+
+\e$B<hF@J}K!\e(B (CVS)
+=====================
+
+(0) cvs login (\e$B=i2s$N$_\e(B)
+
+    % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
+       login
+
+    CVS password: [CR] # \e$B6uJ8;zNs\e(B
+
+(1) checkout
+
+    % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
+       checkout [-r TAG] gnus
+
+(2) compile
+
+    % cd gnus
+    % make EMACS=<file name of your emacs>
+
+(3) update
+
+    % cvs update [-r TAG]
+
+\e$B<g$J%?%0$O0J2<$N$h$&$K$J$C$F$$$^$9\e(B:
+
+    semi-gnus          \e$B:G?7$N0BDjHG$K3d$jEv$F$i$l$^$9!#Hs>o$KJ]<iE*$G\e(B
+                       \e$B$9!#\e(B(\e$B8=:_$O;HMQ$5$l$F$$$^$;$s!#\e(B)
+
+    for-semi-N1_N2     SEMI API N1.N2 (N1 \e$B$H\e(B N2 \e$B$O<+A3?t\e(B) \e$B$KBP1~$7$F\e(B
+                       \e$B:G?7$N0BDjHG$K3d$jEv$F$i$l$^$9!#\e(B(\e$BNc\e(B
+                       `for-semi-1_3' \e$B$O\e(B SEMI API 1.3 \e$BMQ$G$9!#\e(B)
+                       (\e$B8=:_$O;HMQ$5$l$F$$$^$;$s!#\e(B)
+
+    gnus-N1_N2_N3      gnus(Gnus) N1.N2.N3 \e$B$K3d$jEv$F$i$l$^$9!#\e(B
+                       (\e$BNc\e(B `gnus-6_2_1' \e$B$O\e(B gnus 6.2.1 \e$B$G$9!#\e(B)
+
+    larsi              \e$B85$N\e(B Gnus
+
+    himi               himi branch
+
+    ichikawa           ichikawa branch
+                       Based on pGnus
+       
+    akr                        akr branch
+
+    shuhei-k           shuhei-k branch
+                       Mail-Followup-To/Mail-Reply-To, gnus-cache fix.
+
+\e$B>\$7$/$O!"\e(BREADME.branch.ja \e$B$r;2>H$7$F$/$@$5$$!#\e(B
+
+
+\e$B<hF@J}K!\e(B (ftp)
+=====================
+
+  \e$B$[$\KhF|$N\e(B snapshot \e$B$,\e(B
+
+    ftp://ftp.jaist.ac.jp/pub/GNU/elisp/semi-gnus/
+
+  \e$B$+$i<hF@2DG=$G$9!#\e(B
+
+  \e$BCm0U\e(B: \e$B$3$l$i$N\e(B snapshot \e$B$O$=$NF|$N4V$K\e(B repository \e$B$K2?$+JQ99$,$"$C$?\e(B
+  \e$B$H$-$K<+F0E*$K:n@.$5$l!"IaDL$O%F%9%H$5$l$F$$$^$;$s!#\e(B
+
+
+\e$B3+H/$X$N;22CJ}K!\e(B
+=======================
+
+  Gnus \e$B$N%P%0$r8+$D$1$?$H$-$O!"\e(B`M-x gnus-bug' \e$B$H$7$F!"\e(BGnus \e$B$N0];}<T$K\e(B
+  \e$B%P%0Js9p$rAw$C$F$/$@$5$$!#\e(B
+
+  Semi-gnus \e$B$N%P%0$r8+$D$1$?$+!"\e(BGnus \e$B$N%P%0$G$"$k$+$I$&$+$,J,$+$i$J$$\e(B
+  \e$B$H$-$O!"%P%0Js9p$r\e(B Semi-gnus \e$B%a!<%j%s%0%j%9%H$KAw$C$F$/$@$5$$\e(B:
+
+    semi-gnus-en@meadow.scphys.kyoto-u.ac.jp   (\e$B1Q8l\e(B)
+    semi-gnus-ja@meadow.scphys.kyoto-u.ac.jp   (\e$BF|K\8l\e(B)
+
+Semi-gnus \e$B$N2~A1$N$?$a$NDs0F$b4?7^$5$l$^$9!#\e(B
+
+  Semi-gnus ML \e$B$G$O!"\e(BSemi-gnus \e$B4XO"$N%P%0$rJs9p$7$?$j!":G?7$N\e(B
+  Semi-gnus \e$B$N%j%j!<%9$r<hF@$7$?$j!"\e(BSemi-gnus \e$B$N>-Mh$N3HD%$r5DO@$7$?$j\e(B
+  \e$B$9$k$3$H$,$G$-$^$9!#\e(BSemi-gnus ML \e$B$K;22C$9$k$?$a$K$O\e(B
+
+    semi-gnus-en-help@meadow.scphys.kyoto-u.ac.jp      (\e$B1Q8l\e(B)
+    semi-gnus-ja-help@meadow.scphys.kyoto-u.ac.jp      (\e$BF|K\8l\e(B)
+
+  \e$B$K6u$N%a!<%k$rAw$C$F$/$@$5$$!#\e(B
+
+  \e$B2C$($F!"3+H/<T$rI,MW$H$7$F$$$^$9!#3+H/$K;22C$7$?$$>l9g$O!"\e(B
+cvs@chamonix.jaist.ac.jp \e$B$K%"%+%&%s%HL>$H\e(B UNIX \e$B$N\e(B /etc/passwd \e$B$NMM<0$G\e(B
+\e$B0E9f2=$5$l$?%Q%9%o!<%I$r%a!<%k$rAw$C$F$/$@$5$$!#\e(B
diff --git a/TODO.ja b/TODO.ja
index cd7293d..ebac890 100644 (file)
--- a/TODO.ja
+++ b/TODO.ja
@@ -11,7 +11,7 @@ To do list.
 *1998/10/02-2 \e$B@_Dj%U%!%$%k72FI$_9~$_;~$N\e(B coding-system \e$BLdBj\e(B
 
 ----------- \e$BL$BP:v\e(B -----------
-    
+
 *1998/09/25-1 message/partial \e$B$N7k9g5!G=$N2~NI\e(B
 
        Subject \e$B$G\e(B summary \e$B$r8!:w$9$kBe$o$j$K!"\e(Bgnus-newsgroup-headers \e$B$J\e(B
@@ -22,11 +22,6 @@ To do list.
     Offline \e$B;~$K%a%C%;!<%8$r:n@.$7$?>l9g!"\e(B Message-Id \e$B$N7A<0$,ITEv$J$b\e(B
     \e$B$N$K$J$C$F$7$^$&!#\e(B
 
-*1998/10/02-5 Edit article \e$B;~$K%a%C%;!<%8$rGK2u$9$kLdBj\e(B
-
-    nnml \e$BEy$GJ]B8$7$F$"$k%a%C%;!<%8$G\e(B edit article \e$B$r;HMQ$7$FJT=8$r9T$C\e(B
-    \e$B$?>l9g!"\e(B MIME entity \e$B$rGK2u$7$F$7$^$&!#\e(B
-
 *1998/10/02-6 smtpmail.el \e$B:o=|\e(B
 
     \e$B8=:_!"\e(B Semi-gnus \e$B$G$O\e(B smtpmail.el \e$B$r;HMQ$7$F$$$J$$$N$G:o=|$9$k!#\e(B
@@ -63,7 +58,7 @@ To do list.
 
     \e$B$3$3$K$O!"B>%V%i%s%A$GBP:vCf$^$?$O!"BP:v:Q$G\e(B gnus-V1_V2 \e$B;^$K<h$j9~\e(B
     \e$B$^$l$F$$$J$$$b$N$r4^$`!#\e(B
-    
+
 *1998/10/02-3 message/partial \e$B;HMQ;~$N\e(B Message-Id \e$BLdBj\e(B
 
     message/partial \e$B7A<0$G%a%C%;!<%8$rAw?.$7$?>l9g!"A4%Q!<%H$N\e(B
@@ -107,3 +102,7 @@ To do list.
 *1998/10/02-1 Draft \e$B$NJT=8!&Aw?.;~$N\e(B encode / decode \e$BLdBj\e(B
 
     1998/11/04 - \e$B40N;\e(B
+
+*1998/10/02-5 Edit article \e$B;~$K%a%C%;!<%8$rGK2u$9$kLdBj\e(B
+
+    1998/11/12 - \e$B40N;\e(B
index 9fc4012..3504acc 100644 (file)
@@ -3,6 +3,7 @@
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;;     MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;;     Katsumi Yamaoka  <yamaoka@jpl.org>
 ;; Keywords: mail, news, MIME
 
 ;; This file is part of GNU Emacs.
@@ -2007,6 +2008,38 @@ commands:
     (mime-maybe-hide-echo-buffer))
   (gnus-run-hooks 'gnus-mime-article-prepare-hook))
 
+(defun gnus-article-make-full-mail-header (&optional number charset)
+  "Create a new mail header structure in a raw article buffer."
+  (unless (and number charset)
+    (save-current-buffer
+      (set-buffer gnus-summary-buffer)
+      (unless number
+       (setq number (or (cdr gnus-article-current) 0)))
+      (unless charset
+       (setq charset (or default-mime-charset 'x-ctext)))))
+  (goto-char (point-min))
+  (let ((header-end (if (search-forward "\n\n" nil t)
+                       (1- (point))
+                     (goto-char (point-max))))
+       (chars (- (point-max) (point)))
+       (lines (count-lines (point) (point-max)))
+       (default-mime-charset charset)
+       xref)
+    (narrow-to-region (point-min) header-end)
+    (setq xref (std11-fetch-field "xref"))
+    (prog1
+       (make-full-mail-header
+        number
+        (std11-fetch-field "subject")
+        (std11-fetch-field "from")
+        (std11-fetch-field "date")
+        (std11-fetch-field "message-id")
+        (std11-fetch-field "references")
+        chars
+        lines
+        (when xref (concat "Xref: " xref)))
+      (widen))))
+
 (defun gnus-article-prepare (article &optional all-headers header)
   "Prepare ARTICLE in article mode buffer.
 ARTICLE should either be an article number or a Message-ID.
@@ -2100,25 +2133,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
                      (or all-headers gnus-show-all-headers))))
            (when (or (numberp article)
                      (stringp article))
-             ;; Hooks for getting information from the article.
-             ;; This hook must be called before being narrowed.
-             (let ((method
-                    (if gnus-show-mime
-                        (progn
-                          (setq mime-message-structure gnus-current-headers)
-                           (if (or (not gnus-strict-mime)
-                                  (mime-fetch-field "MIME-Version"))
-                              gnus-article-display-method-for-mime
-                            gnus-article-display-method-for-encoded-word))
-                      gnus-article-display-method-for-traditional)))
-               (gnus-run-hooks 'gnus-tmp-internal-hook)
-               (gnus-run-hooks 'gnus-article-prepare-hook)
-               ;; Display message.
-               (funcall method)
-               ;; Associate this article with the current summary buffer.
-               (setq gnus-article-current-summary summary-buffer)
-               ;; Perform the article display hooks.
-               (gnus-run-hooks 'gnus-article-display-hook))
+             (gnus-article-prepare-display)
              ;; Do page break.
              (goto-char (point-min))
              (setq gnus-page-broken
@@ -2132,6 +2147,26 @@ If ALL-HEADERS is non-nil, no headers are hidden."
            (set-window-point (get-buffer-window (current-buffer)) (point))
            t))))))
 
+(defun gnus-article-prepare-display ()
+  "Make the current buffer look like a nice article."
+  (let ((method
+        (if gnus-show-mime
+            (progn
+              (mime-parse-buffer)
+              (if (or (not gnus-strict-mime)
+                      (mime-fetch-field "MIME-Version"))
+                  gnus-article-display-method-for-mime
+                gnus-article-display-method-for-encoded-word))
+          gnus-article-display-method-for-traditional)))
+    (gnus-run-hooks 'gnus-tmp-internal-hook)
+    (gnus-run-hooks 'gnus-article-prepare-hook)
+    ;; Display message.
+    (funcall method)
+    ;; Associate this article with the current summary buffer.
+    (setq gnus-article-current-summary (current-buffer))
+    ;; Perform the article display hooks.
+    (gnus-run-hooks 'gnus-article-display-hook)))
+
 (defun gnus-article-wash-status ()
   "Return a string which display status of article washing."
   (save-excursion
@@ -2561,6 +2596,12 @@ If given a prefix, show the hidden text instead."
   :group 'gnus-article-various
   :type 'hook)
 
+(defcustom gnus-article-edit-article-setup-function
+  'gnus-article-mime-edit-article-setup
+  "Function called to setup an editing article buffer."
+  :group 'gnus-article-various
+  :type 'function)
+
 (defvar gnus-article-edit-done-function nil)
 
 (defvar gnus-article-edit-mode-map nil)
@@ -2618,6 +2659,8 @@ groups."
     (gnus-configure-windows 'edit-article)
     (setq gnus-article-edit-done-function exit-func)
     (setq gnus-prev-winconf winconf)
+    (when gnus-article-edit-article-setup-function
+      (funcall gnus-article-edit-article-setup-function))
     (gnus-message 6 "C-c C-c to end edits")))
 
 (defun gnus-article-edit-done (&optional arg)
@@ -2648,6 +2691,8 @@ groups."
   (let ((func gnus-article-edit-done-function)
        (buf (current-buffer))
        (start (window-start)))
+    (remove-hook 'gnus-article-mode-hook
+                'gnus-article-mime-edit-article-unwind)
     (gnus-article-edit-exit)
     (save-excursion
       (set-buffer buf)
@@ -2699,6 +2744,86 @@ groups."
       (query-replace-regexp "\\([.!?][])}]* \\)\\([[({A-Z]\\)" "\\1 \\2"))))
 
 ;;;
+;;; Article editing with MIME-Edit
+;;;
+
+(defcustom gnus-article-mime-edit-article-setup-hook nil
+  "Hook run after setting up a MIME editing article buffer."
+  :group 'gnus-article-various
+  :type 'hook)
+
+(defun gnus-article-mime-edit-article-unwind ()
+  "Unwind `gnus-article-buffer' if article editing was given up."
+  (remove-hook 'gnus-article-mode-hook 'gnus-article-mime-edit-article-unwind)
+  (when mime-edit-mode-flag
+    (mime-edit-exit 'nomime 'no-error)
+    (message ""))
+  (when (featurep 'font-lock)
+    (setq font-lock-defaults nil)
+    (font-lock-mode 0)))
+
+(defun gnus-article-mime-edit-article-setup ()
+  "Convert current buffer to MIME-Edit buffer and turn on MIME-Edit mode
+after replacing with the original article."
+  (setq gnus-show-mime t)
+  (setq gnus-article-edit-done-function
+       `(lambda (&rest args)
+          (when mime-edit-mode-flag
+            (mime-edit-exit)
+            (message ""))
+          (goto-char (point-min))
+          (let (case-fold-search)
+            (when (re-search-forward
+                   (format "^%s$" (regexp-quote mail-header-separator))
+                   nil t)
+              (replace-match "")))
+          (when (featurep 'font-lock)
+            (setq font-lock-defaults nil)
+            (font-lock-mode 0))
+          (apply ,gnus-article-edit-done-function args)
+          (set-buffer gnus-original-article-buffer)
+          (erase-buffer)
+          (insert-buffer gnus-article-buffer)
+          (setq gnus-current-headers (gnus-article-make-full-mail-header))
+          (gnus-article-prepare-display)))
+  (define-key (current-local-map) "\C-c\C-k" 'gnus-article-mime-edit-exit)
+  (erase-buffer)
+  (insert-buffer gnus-original-article-buffer)
+  (mime-edit-again)
+  (when (featurep 'font-lock)
+    (set (make-local-variable 'font-lock-defaults)
+        '(message-font-lock-keywords t))
+    (font-lock-set-defaults)
+    (turn-on-font-lock))
+  (add-hook 'gnus-article-mode-hook 'gnus-article-mime-edit-article-unwind)
+  (gnus-run-hooks 'gnus-article-mime-edit-article-setup-hook))
+
+(defun gnus-article-mime-edit-exit ()
+  "Exit the article MIME editing without updating."
+  (interactive)
+  (let ((winconf gnus-prev-winconf)
+       buf)
+    (when mime-edit-mode-flag
+      (mime-edit-exit)
+      (message ""))
+    (goto-char (point-min))
+    (let (case-fold-search)
+      (when (re-search-forward
+            (format "^%s$" (regexp-quote mail-header-separator)) nil t)
+       (replace-match "")))
+    (when (featurep 'font-lock)
+      (setq font-lock-defaults nil)
+      (font-lock-mode 0))
+    ;; We remove all text props from the article buffer.
+    (setq buf (format "%s" (buffer-string)))
+    (set-buffer (get-buffer-create gnus-original-article-buffer))
+    (erase-buffer)
+    (insert buf)
+    (setq gnus-current-headers (gnus-article-make-full-mail-header))
+    (gnus-article-prepare-display)
+    (set-window-configuration winconf)))
+
+;;;
 ;;; Article highlights
 ;;;
 
index 34eebdf..1991c52 100644 (file)
@@ -953,14 +953,15 @@ this is a reply."
   (interactive "P")
   (gnus-summary-select-article t)
   (set-buffer gnus-original-article-buffer)
-  (gnus-setup-message 'compose-bounce
-    (let* ((references (mail-fetch-field "references"))
-          (parent (and references (gnus-parent-id references))))
-      (message-bounce)
-      ;; If there are references, we fetch the article we answered to.
-      (and fetch parent
-          (gnus-summary-refer-article parent)
-          (gnus-summary-show-all-headers)))))
+  (let (gnus-message-setup-hook)
+    (gnus-setup-message 'compose-bounce
+      (let* ((references (mail-fetch-field "references"))
+            (parent (and references (gnus-parent-id references))))
+       (message-bounce)
+       ;; If there are references, we fetch the article we answered to.
+       (and fetch parent
+            (gnus-summary-refer-article parent)
+            (gnus-summary-show-all-headers))))))
 
 ;;; Gcc handling.
 
index 65c8b91..75498be 100644 (file)
@@ -157,6 +157,11 @@ If this variable is nil, no such courtesy message will be added."
   :group 'message-interface
   :type 'regexp)
 
+(defcustom message-bounce-setup-function 'message-bounce-setup-for-mime-edit
+  "Function to setup a re-sending bounced message."
+  :group 'message-sending
+  :type 'function)
+
 ;;;###autoload
 (defcustom message-from-style 'default
   "*Specifies how \"From\" headers look.
@@ -482,6 +487,12 @@ the signature is inserted."
   :group 'message-various
   :type 'hook)
 
+(defcustom message-bounce-setup-hook nil
+  "Normal hook, run each time a a re-sending bounced message is initialized.
+The function `message-bounce' runs this hook."
+  :group 'message-various
+  :type 'hook)
+
 (defcustom message-mode-hook nil
   "Hook run in message mode buffers."
   :group 'message-various
@@ -4143,6 +4154,13 @@ Optional NEWS will use news to forward instead of mail."
       (kill-buffer (current-buffer)))
     (message "Resending message to %s...done" address)))
 
+(defun message-bounce-setup-for-mime-edit ()
+  (goto-char (point-min))
+  (when (search-forward (concat "\n" mail-header-separator "\n") nil t)
+    (replace-match "\n\n"))
+  (set (make-local-variable 'message-setup-hook) nil)
+  (mime-edit-again))
+
 ;;;###autoload
 (defun message-bounce ()
   "Re-mail the current message.
@@ -4182,6 +4200,9 @@ you."
       (message-remove-header message-ignored-bounced-headers t)
       (goto-char (point-max))
       (insert mail-header-separator))
+    (when message-bounce-setup-function
+      (funcall message-bounce-setup-function))
+    (run-hooks 'message-bounce-setup-hook)
     (message-position-point)))
 
 ;;;
index 8ceecff..d0ff5ac 100644 (file)
@@ -257,7 +257,8 @@ Please do not set this valiable non-nil if you do not use Meadow.")
   (setq passwd (nth 2 (assoc mailhost pop3-fma-password)))
   (pop3-fma-decode-string passwd))
 
-(setq pop3-read-passwd 'pop3-fma-read-passwd)
+(setq pop3-read-passwd 'pop3-fma-read-passwd
+      nnmail-read-passwd 'pop3-fma-read-passwd)
 ;;
 ;; Set multiple pop3 server's password
 (defun pop3-fma-store-password (passwd)