EUDC: Support BBDB >= 3

Fixes: bug#19678

Co-authored-by: Thomas Fitzsimmons <fitzsim@fitzsim.org>
* net/eudcb-bbdb.el (eudc-bbdb-field): New function.
(eudc-bbdb-filter-non-matching-record): Call eudc-bbdb-field.
(eudc-bbdb-format-record-as-result): Likewise.
This commit is contained in:
Sergio Durigan Junior 2015-03-06 03:18:36 -05:00 committed by Thomas Fitzsimmons
parent 6b134bcba9
commit 6df13146cc
2 changed files with 29 additions and 2 deletions

View file

@ -1,3 +1,10 @@
2015-03-06 Sergio Durigan Junior <sergiodj@sergiodj.net>
Thomas Fitzsimmons <fitzsim@fitzsim.org>
* net/eudcb-bbdb.el (eudc-bbdb-field): New function.
(eudc-bbdb-filter-non-matching-record): Call eudc-bbdb-field.
(eudc-bbdb-format-record-as-result): Likewise.
2015-03-08 Dmitry Gutov <dgutov@yandex.ru>
* progmodes/ruby-mode.el (ruby-font-lock-keywords): Use

View file

@ -42,6 +42,24 @@
(defvar eudc-bbdb-current-query nil)
(defvar eudc-bbdb-current-return-attributes nil)
(defvar bbdb-version)
(defun eudc-bbdb-field (field-symbol)
"Convert FIELD-SYMBOL so that it is recognized by the current BBDB version.
BBDB < 3 used `net'; BBDB >= 3 uses `mail'."
;; This just-in-time translation permits upgrading from BBDB 2 to
;; BBDB 3 without restarting Emacs.
(if (and (eq field-symbol 'net)
(or
;; MELPA versions of BBDB may have a bad package version,
;; but they're all version 3 or later.
(equal bbdb-version "@PACKAGE_VERSION@")
;; Development versions of BBDB can have the format "X.YZ
;; devo". Split the string just in case.
(version<= "3" (car (split-string bbdb-version)))))
'mail
field-symbol))
(defvar eudc-bbdb-attributes-translation-alist
'((name . lastname)
(email . net)
@ -85,7 +103,9 @@
(progn
(setq bbdb-val
(eval (list (intern (concat "bbdb-record-"
(symbol-name attr)))
(symbol-name
(eudc-bbdb-field
attr))))
'record)))
(if (listp bbdb-val)
(if eudc-bbdb-enable-substring-matches
@ -168,7 +188,7 @@ The record is filtered according to `eudc-bbdb-current-return-attributes'"
(setq val (eval
(list (intern
(concat "bbdb-record-"
(symbol-name attr)))
(symbol-name (eudc-bbdb-field attr))))
'record))))
(t
(error "Unknown BBDB attribute")))