Synch with Oort Gnus.
[elisp/gnus.git-] / README-gnus-bbdb.en
1 -*- mode: text; fill-column: 70; -*-
2
3 ---
4  If BBDB is used then, bbdb-gnus.elc can't be shared with them before
5 Semi-gnus 6.8.X. It is necessary to byte-compile it again.
6
7 ;; It is a simple way that only bbdb-gnus.el is byte-compiled after
8 ;; gnus starts.
9
10 ---
11 gnus-bbdb.el
12
13  This is the BBDB API module for Semi-gnus. `mime-bbdb' should not be
14 necessary for Semi-gnus, if that module were used.
15
16  You need FLIM 1.11.3 or later.
17
18  If you are using bbdb-auto-notes-hook, the patch listed at the end
19 of this file should be applied. If not, it might not.
20
21  EXAMPLE:
22
23 ;; You need to set nothing for `mime-bbdb'.
24 ;(setq mime-bbdb/use-mail-extr nil)
25 ;(eval-after-load "mail-extr" '(require 'mime-bbdb))
26
27 (require 'bbdb)
28 (require 'gnus-bbdb)
29 (bbdb-initialize 'sc)  ;; 'Gnus or 'gnus should be deleted.
30 (add-hook 'gnus-startup-hook 'gnus-bbdb-insinuate)
31
32 ;; No need to use the following lines under T-gnus 6.15.5 and later.
33 ;(eval-after-load "message"
34 ;  '(add-hook 'message-setup-hook 'gnus-bbdb-insinuate-message))
35
36  If you would like to decode the quoted encoded words forcibly, even
37 though FLIM does not decode them, put the following lines in your
38 .gnus file.
39
40 (setq gnus-bbdb/decode-field-body-function
41       (function
42        (lambda (field-body field-name)
43          (eword-decode-string field-body))))
44
45 ---
46  This is a patch for bbdb-com.el, bbdb-hooks.el and bbdb.el.
47
48 ------ cut here ------ cut here ------ cut here ------ cut here ------
49 --- bbdb-2.34/lisp/bbdb-com.el~ Tue Jan 15 23:00:57 2002
50 +++ bbdb-2.34/lisp/bbdb-com.el  Thu Jan 31 03:55:01 2002
51 @@ -1686,7 +1686,7 @@
52            ;; to be enclosed in quotes.  Double-quotes and backslashes have
53            ;; already been escaped.  This quotes a few extra characters as
54            ;; well (!,%, and $) just for common sense.
55 -          ((string-match "[][\000-\037\177()<>@,;:.!$%]" name)
56 +         ((string-match "[][\000-\037\177<>@,;.!$%]" name)
57             (format "\"%s\" <%s>" name net))
58            (t
59             (format "%s <%s>" name net)))))
60 --- bbdb-2.34/lisp/bbdb-hooks.el~       Tue Jan 15 09:00:11 2002
61 +++ bbdb-2.34/lisp/bbdb-hooks.el        Thu Jan 31 03:55:01 2002
62 @@ -36,4 +36,6 @@
63  ;;
64  
65 +(eval-when-compile (require 'cl))
66 +
67  (require 'bbdb)
68  (require 'bbdb-com)
69 @@ -405,13 +407,23 @@
70           ignore
71           field pairs fieldval  ; do all bindings here for speed
72           regexp string notes-field-name notes
73 -         replace-p)
74 +         replace-p extract-field-value-funtion)
75      (set-buffer (marker-buffer marker))
76      (save-restriction
77 -      (widen)
78 -      (goto-char marker)
79 -      (if (and (setq fieldval (bbdb-extract-field-value "From"))
80 -               (string-match (bbdb-user-mail-names) fieldval))
81 +      (let ((function-list bbdb-extract-field-value-function-list)
82 +           function)
83 +       (or (progn
84 +             (while (and (not extract-field-value-funtion)
85 +                         (setq function (car function-list)))
86 +               (setq extract-field-value-funtion (funcall function)
87 +                     function-list (cdr function-list)))
88 +             extract-field-value-funtion)
89 +           (progn
90 +             (widen)
91 +             (goto-char marker)
92 +             (setq extract-field-value-funtion 'bbdb-extract-field-value))))
93 +      (if (and (setq fieldval (funcall extract-field-value-funtion "From"))
94 +              (string-match (bbdb-user-mail-names) fieldval))
95            ;; Don't do anything if this message is from us.  Note that we have
96            ;; to look at the message instead of the record, because the record
97            ;; will be of the recipient of the message if it is from us.
98 @@ -421,7 +433,7 @@
99            (goto-char marker)
100            (setq field (car (car ignore-all))
101                  regexp (cdr (car ignore-all))
102 -                fieldval (bbdb-extract-field-value field))
103 +                fieldval (funcall extract-field-value-funtion field))
104            (if (and fieldval
105                     (string-match regexp fieldval))
106                (setq ignore t)
107 @@ -434,7 +446,8 @@
108                  pairs (cdr (car rest))  ; (REGEXP . STRING) or
109                                          ; (REGEXP FIELD-NAME STRING) or
110                                          ; (REGEXP FIELD-NAME STRING REPLACE-P)
111 -                fieldval (bbdb-extract-field-value field)) ; e.g., Subject line
112 +                fieldval (funcall extract-field-value-funtion field))
113 +                                        ; e.g., Subject line
114            (when fieldval
115              ;; we perform the auto notes stuff only for authors of a message
116              ;; or if explicitly requested
117 --- bbdb-2.34/lisp/bbdb.el~     Tue Jan 15 23:00:58 2002
118 +++ bbdb-2.34/lisp/bbdb.el      Thu Jan 31 03:55:01 2002
119 @@ -737,6 +737,7 @@
120  (defvar bbdb-showing-changed-ones nil)
121  (defvar bbdb-modified-p nil)
122  (defvar bbdb-address-print-formatting-alist) ; "bbdb-print"
123 +(defvar bbdb-extract-field-value-function-list nil)
124  
125  (defvar bbdb-debug t)
126  (defmacro bbdb-debug (&rest body)
127 ------ cut here ------ cut here ------ cut here ------ cut here ------
128
129 ---