--- /dev/null
+-*- 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 ------
+
+---
--- /dev/null
+-*- 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 ------
+
+---