From 124f1807c4b7beafedde654dcd298ae92caf5b09 Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Sun, 22 Nov 2015 11:29:13 -0500 Subject: [PATCH] Improve EUDC to BBDB 3 export * eudc-vars.el (eudc-ldap-bbdb-conversion-alist): Change phone entry to single item. Add company conversion. * eudc-export.el (eudc-bbdbify-company): New function. (bbdb-parse-phone): Declare function. (eudc-bbdbify-phone): Add BBDB 3 support. (Bug#21971) --- lisp/net/eudc-export.el | 9 ++++++++- lisp/net/eudc-vars.el | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lisp/net/eudc-export.el b/lisp/net/eudc-export.el index a65f555f89e..a9fac516745 100644 --- a/lisp/net/eudc-export.el +++ b/lisp/net/eudc-export.el @@ -167,8 +167,13 @@ LOCATION is used as the address location for bbdb." ;; External. (declare-function bbdb-parse-phone-number "ext:bbdb-com" (string &optional number-type)) +(declare-function bbdb-parse-phone "ext:bbdb-com" (string &optional style)) (declare-function bbdb-string-trim "ext:bbdb" (string)) +(defun eudc-bbdbify-company (&rest organizations) + "Return ORGANIZATIONS as a list compatible with BBDB." + organizations) + (defun eudc-bbdbify-phone (phone location) "Parse PHONE into a vector compatible with BBDB. PHONE is either a string supposedly containing a phone number or @@ -179,7 +184,9 @@ LOCATION is used as the phone location for BBDB." ((stringp phone) (let (phone-list) (condition-case err - (setq phone-list (bbdb-parse-phone-number phone)) + (setq phone-list (if (eudc--using-bbdb-3-or-newer-p) + (bbdb-parse-phone phone) + (bbdb-parse-phone-number phone))) (error (if (string= "phone number unparsable." (cadr err)) (if (not (y-or-n-p (format "BBDB claims %S to be unparsable--insert anyway? " phone))) diff --git a/lisp/net/eudc-vars.el b/lisp/net/eudc-vars.el index 8cffa8e466a..a08d175fd6e 100644 --- a/lisp/net/eudc-vars.el +++ b/lisp/net/eudc-vars.el @@ -369,7 +369,8 @@ BBDB fields. SPECs are sexps which are evaluated: '((name . cn) (net . mail) (address . (eudc-bbdbify-address postaladdress "Address")) - (phone . ((eudc-bbdbify-phone telephonenumber "Phone")))) + (phone . (eudc-bbdbify-phone telephonenumber "Phone")) + (company . (eudc-bbdbify-company o))) "A mapping from BBDB to LDAP attributes. This is a list of cons cells (BBDB-FIELD . SPEC-OR-LIST) where BBDB-FIELD is the name of a field that must be defined in your BBDB -- 2.39.5