;;; bbdb-init.el --- Initialize BBDB
;; This file is part of Michael Olson's Emacs settings.
;; The code in this file may be used, distributed, and modified
;; without restriction.
;; I use initsplit.el to separate customize settings on a per-project
;; basis.
;; Add working directories to load path
;(add-to-list 'load-path "/stuff/proj/emacs/bbdb/bits")
;(add-to-list 'load-path "/stuff/proj/emacs/bbdb/lisp")
;; Initialize
(require 'bbdb)
;;; Hacks
;; Show X-Face header
(autoload 'gnus-convert-face-to-png "gnus-fun")
(defun my-bbdb-display-faces ()
"Search for face properties and display the faces."
(let ((inhibit-read-only t)
(default-enable-multibyte-characters nil)
(all-records bbdb-records)
face x-face record)
(goto-char (point-min))
(mapc
(lambda (record)
(setq x-face (bbdb-record-getprop (car record) 'x-face)
face (bbdb-record-getprop (car record) 'face))
;; Display Face
(when face
(insert-image (create-image (gnus-convert-face-to-png face)
nil t))
(insert " "))
;; Display X-Face
(when x-face
(insert-image (gnus-create-image (uncompface x-face)
nil t :face 'tooltip))
(insert " "))
;; Move to the next record, suppress error on reaching last
(condition-case nil
(bbdb-next-record 1)
(error nil)))
all-records)
;; Remove all x-face and face lines from the display
(goto-char (point-min))
(save-match-data
(while (re-search-forward "^ *\\(x-\\)?face: " nil t)
(beginning-of-line)
(kill-line 1)))))
(add-hook 'bbdb-list-hook 'my-bbdb-display-faces)
;;; Variables
;; Declare which header lines to assimilate
(setq bbdb-auto-notes-alist
(list
'("Organization" (".*" company 0))
'("Newsgroups" ("[^,]+" newsgroups 0))
'("Subject" (".*" last-subj 0 t))
'("User-Agent" (".*" mailer 0 t))
'("X-Mailer" (".*" mailer 0 t))
'("X-Newsreader" (".*" mailer 0 t))
'("X-URL" (".*" www 0))
'("X-Face" (".+" x-face 0 'replace))
'("Face" (".+" face 0 'replace))
'("X-PGP-Fingerprint" (".*" pgp-fingerprint 0))
'("X-PGP-Public-Key-ID" (".*" pgp-key 0))
'("X-Pgp-Fingerprint" (".*" pgp-fingerprint 0))
'("X-Pgp-Public-Key-Id" (".*" pgp-key 0))
'("X-Gpg-Fingerprint" (".*" pgp-fingerprint 0))
'("X-Gpg-Public-Key-Id" (".*" pgp-key 0))
'("X-Gpg-Key-ID" (".*" pgp-key 0))
))
(add-hook 'bbdb-notice-hook 'bbdb-auto-notes-hook)
;;; Customizations
(custom-set-variables
'(bbdb-completion-display-record nil)
'(bbdb-default-country "")
'(bbdb-file "~/.emacs.d/.bbdb")
'(bbdb-save-db-timeout 0)
'(bbdb-send-mail-style (quote message))
'(bbdb-use-pop-up nil))
(custom-set-faces)
;;; bbdb-init.el ends here