;I've added a bit of lisp to the regular bbdb-ignore-most-messages hook
;so that clauses in the bbdb-ignore-most-messages-alist can be ANDed
;together as well as the implicit ORing already provided.
;I added this because while reading news, I want bbdb to notice people
;from my company (Oracle) and alma-mater (Stanford) except when those
;people are posting to company (oracle.*) or alma-mater (su.*) specific
;newgroups.
;Here is the elisp (I have only used this with emacs-19):
(defun marks-bbdb-ignore-most-messages-hook (&optional invert-sense)
"For use as the value of bbdb/news-auto-create-p or bbdb/mail-auto-create-p.
This will automatically create BBDB entries for messages which match
the bbdb-ignore-some-messages-alist (which see) and *no* others."
;; don't need to optimize this to check the cache, because if
;; bbdb/*-update-record uses the cache, this won't be called.
(let ((rest (if invert-sense
bbdb-ignore-some-messages-alist
bbdb-ignore-most-messages-alist))
(case-fold-search t)
(done nil)
(hit t)
(b (current-buffer))
(marker (bbdb-header-start))
field regexp fieldval)
(set-buffer (marker-buffer marker))
(save-restriction
(widen)
(while (and rest (not done))
(goto-char marker)
;; while loop added in - maw
(setq clause (car rest))
(while (and clause hit)
;; This allows ANDing values from multiple fields. Alist entries
;; can be of the form ((HEADER . REGEXP)[(HEADER . REGEXP)...])
;; or of the form (HEADER . REGEXP) This is an extension of
;; the regular features of bbdb 1.48.
(if (listp (car clause))
(setq field (car (car clause))
regexp (cdr (car clause))
fieldval (bbdb-extract-field-value field)
clause (cdr clause))
(setq field (car clause)
regexp (cdr clause)
fieldval (bbdb-extract-field-value field)))
(if (and fieldval (string-match regexp fieldval))
(setq hit t)
(setq hit nil)))
(setq rest (cdr rest)
done hit)))
(set-buffer b)
(if invert-sense
(not done)
done)))
;; Here is a sample use of the ANDing...
;;(setq bbdb-ignore-most-messages-alist
;; '((("Organization" . "[Oo]racle\\|[Ss]tanford")
;; ("Newsgroup"."[^s][^u]\\|[^o][^r]"))))
;
; Mark
;___________________________________________________________________________
;[EMAIL PROTECTED] Fax: 415-506-1113 RIPEM key on server