I often include people’s names in my notes on other people, such as
when I’m tracking who introduced me to whom. The following code
modifies BBDB’s behavior to put exact matches for name, company, or
network address above matches for notes.
(defun sacha/bbdb (string elidep) "Display all entries in the BBDB matching the regexp STRING in either the name(s), company, network address, or notes. Prioritize non-note matches." (interactive (list (bbdb-search-prompt "Search records %m regexp: ") current-prefix-arg)) (let* ((bbdb-display-layout (bbdb-grovel-elide-arg elidep)) (notes (cons '* string)) (records-top (bbdb-search (bbdb-records) string string string nil nil)) (records (bbdb-search (bbdb-records) string string string notes nil)) temp) (setq temp records-top) (while temp (setq records (delete (car temp) records)) (setq temp (cdr temp))) (if (or records-top records) (bbdb-display-records (append records-top records)) ;; we could use error here, but it's not really an error. (message "No records matching '%s'" string)))) (defalias 'bbdb 'sacha/bbdb)