Post by Tim CrossInteresting. I briefly tried bbdb3 about 2 weeks ago. While it did
seem to work in some areas, most of the time it just silently failed.
For example, completing mail addresses from within VM buffers, adding
notes, addning new records based on current message etc.
I'd also be interested in seeing any working configuration file. I
really didn't have time to look at this in any depth - plan to when
time permits, but no idea when that will be.
Here is my configuration file for bbdb3. I still need to make vm-pcrisis fully
bbdb3 compliant.
;;;------------------------------------------------------------
(add-to-list 'load-path "/path/to/bbdb3/lisp")
;; Additionnal bbdb files not included in bbdb3 release: `bbdb-sc',
;; `bbdb-snarf', `new-vm-pcrisis', `bbdb-vcard', `bbdb-vcard-export',
;; etc.
(add-to-list 'load-path "/path/to/bbdb-contrib")
(require 'bbdb-loaddefs)
(require 'bbdb)
;;------------------------------------------------------------------
;; configuration for BBDB-3 when used without a MUA.
;;------------------------------------------------------------------
(add-to-list 'bbdb-address-format-list
'(("Italy")
"spcC" "@%s\n@%p @%c@ (%S)@\n%C@" "@%c@"))
(setq bbdb-default-country "Italy")
(defun my-bbdb-edit-address-default (address)
(let ((street (bbdb-edit-address-street (bbdb-address-streets address)))
(postcode (bbdb-error-retry
(bbdb-parse-postcode
(bbdb-read-string "Postcode: " (bbdb-address-postcode address)))))
(city (bbdb-read-string "City: " (bbdb-address-city address))))
(list street
city
"" ; (bbdb-read-string "State:Spain " (bbdb-address-state address))
postcode
(bbdb-read-string "Country: " (or (bbdb-address-country address)
bbdb-default-country)))))
(defun bbdb-edit-address-default (address)
(my-bbdb-edit-address-default address))
(setq bbdb-phone-style nil) ; free-style numbering plan
;;;-------------------------------------------------------------------
;;; Configuration for BBDB-3 when used with VM
;;;-------------------------------------------------------------------
(require 'bbdb-vm)
(bbdb-initialize 'vm 'mail)
(bbdb-mua-auto-update-init 'vm)
(setq bbdb-mail-user-agent 'vm-user-agent)
(add-hook 'mail-setup-hook 'bbdb-mail-aliases)
(setq bbdb-complete-mail-allow-cycling t)
(setq bbdb-mail-avoid-redundancy t)
(setq bbdb-accept-name-mismatch 0)
(setq bbdb-new-mails-always-primary t)
;; Automatically create BBDB entries for messages which do *not*
;; match the `bbdb-ignore-message-alist'
;(setq bbdb/mail-auto-create-p 'bbdb-ignore-some-messages-hook)
; !!!!! Ok with bbdb2 but not with BBDB3 !!!!!!
(setq bbdb-ignore-message-alist
'(("From" .
"SPAM\\|postmaster\\|MAILER-DAEMON\\|Sweep\\|Mail Delivery\\|Message
Delivery\\|Microsoft\\|Net Email\\|")) )
(setq bbdb-accept-message-alist nil)
;; To ignore new addresses in all folders except the `vm-primary-inbox'
;; or those matching `bbdb/vm-primary-inbox-regexp'
(setq bbdb-add-mails 'rf-bbdb/vm-ignore-old-addresses)
;;----------------------------
;; Piece stolen from `bbdb-rf'
(defcustom rf-bbdb/vm-primary-inbox-regexp
(if (boundp 'vm-primary-inbox) vm-primary-inbox)
"A regexp matching folder names of primary VM inboxes."
:group 'bbdb-rf
:type 'string)
(defun rf-bbdb/vm-ignore-old-folders ()
"Hook for ignoring all folders except in-boxes.
Set `bbdb/mail-auto-create-p' to this function in order to ignore new
addresses in all folders except the `vm-primary-inbox' or those matching
`bbdb/vm-primary-inbox-regexp'."
(interactive)
(save-excursion
(vm-select-folder-buffer)
(if (and (string-match (or rf-bbdb/vm-primary-inbox-regexp
vm-primary-inbox)
(buffer-name))
(bbdb-ignore-some-messages-hook))
'prompt)))
(defun rf-bbdb/vm-ignore-old-addresses ()
"Hook for ignoring all addresses except in in-boxes.
Set `bbdb-always-add-addresses' to this function in order to ignore new
addresses in all folders except the `vm-primary-inbox' or those matching
`bbdb/vm-primary-inbox-regexp'."
(if (member major-mode '(vm-mode vm-virtual-mode vm-summary-mode
vm-presentation-mode))
(save-excursion
(vm-select-folder-buffer)
(if (string-match (or rf-bbdb/vm-primary-inbox-regexp
vm-primary-inbox)
(buffer-name))
'ask ; ask the user
nil ; do not add it
))
nil))
;; End of piece stolen from `bbdb-rf'
;;-----------------------------------
; Automatically add some text to the notes field of the BBDB record
; corresponding to the current record based on the header of the
; current message.
(add-hook 'bbdb-notice-mail-hook 'bbdb-auto-notes)
(setq bbdb-auto-notes-rules
(list
;; to save when I last received a message of that person
'("Date" (".*" lastmail 0 t))
'("User-Agent" (".*" mailer 0))
'("X-Mailer" (".*" mailer 0))
'("X-Newsreader" (".*" mailer 0))
))
; For each record that has a 'vm-folder' attribute, add an element
; (email-regexp . folder) to the `vm-auto-folder-alist'.
;(bbdb/vm-set-auto-folder-alist)
; !!!!!!!!!!!! Absent from BBDB3 !!!!!!!!!!!!!!
;; I prefer to bind bbdb-complete-name to C-tab instead of M-tab as
;; under Linux this later key binding means "make next window active".
(define-key vm-mail-mode-map [(control tab)] 'bbdb-complete-mail)
;;;-----------------------------------------------------------------