Make Org work with bbdb 3.0

* lisp/org-bbdb.el (org-bbdb-old): New variable.
(org-bbdb-store-link):
(org-bbdb-open): Check for `org-bbdb-old'.
(org-bbdb-open-old):
(org-bbdb-open-new): New functions.

Patch by Ivan Kanis
This commit is contained in:
Carsten Dominik 2011-12-31 17:04:27 +01:00
parent 4e0fe88f7e
commit 5e11e51efe

View file

@ -118,6 +118,9 @@
(defvar date) ;; dynamically scoped from Org (defvar date) ;; dynamically scoped from Org
;; Support for version 2.35
(defvar org-bbdb-old (fboundp 'bbdb-record-get-field-internal))
;; Customization ;; Customization
(defgroup org-bbdb-anniversaries nil (defgroup org-bbdb-anniversaries nil
@ -195,8 +198,11 @@ date year)."
"Store a link to a BBDB database entry." "Store a link to a BBDB database entry."
(when (eq major-mode 'bbdb-mode) (when (eq major-mode 'bbdb-mode)
;; This is BBDB, we make this link! ;; This is BBDB, we make this link!
(let* ((name (bbdb-record-name (bbdb-current-record))) (let* ((rec (bbdb-current-record))
(company (bbdb-record-getprop (bbdb-current-record) 'company)) (name (bbdb-record-name rec))
(company (if org-bbdb-old
(bbdb-record-getprop rec 'company)
(car (bbdb-record-get-field rec 'organization))))
(link (org-make-link "bbdb:" name))) (link (org-make-link "bbdb:" name)))
(org-store-link-props :type "bbdb" :name name :company company (org-store-link-props :type "bbdb" :name name :company company
:link link :description name) :link link :description name)
@ -218,24 +224,49 @@ italicized, in all other cases it is left unchanged."
(require 'bbdb) (require 'bbdb)
(let ((inhibit-redisplay (not debug-on-error)) (let ((inhibit-redisplay (not debug-on-error))
(bbdb-electric-p nil)) (bbdb-electric-p nil))
(catch 'exit (if org-bbdb-old
;; Exact match on name (org-bbdb-open-old)
(bbdb-name (concat "\\`" name "\\'") nil) (org-bbdb-open-new))))
(if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil))
;; Exact match on name (defun org-bbdb-open-old ()
(bbdb-company (concat "\\`" name "\\'") nil) (catch 'exit
(if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil)) ;; Exact match on name
;; Partial match on name (bbdb-name (concat "\\`" name "\\'") nil)
(bbdb-name name nil) (if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil))
(if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil)) ;; Exact match on name
;; Partial match on company (bbdb-company (concat "\\`" name "\\'") nil)
(bbdb-company name nil) (if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil))
(if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil)) ;; Partial match on name
;; General match including network address and notes (bbdb-name name nil)
(bbdb name nil) (if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil))
(when (= 0 (buffer-size (get-buffer "*BBDB*"))) ;; Partial match on company
(delete-window (get-buffer-window "*BBDB*")) (bbdb-company name nil)
(error "No matching BBDB record"))))) (if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil))
;; General match including network address and notes
(bbdb name nil)
(when (= 0 (buffer-size (get-buffer "*BBDB*")))
(delete-window (get-buffer-window "*BBDB*"))
(error "No matching BBDB record"))))
(defun org-bbdb-open-new ()
(catch 'exit
;; Exact match on name
(bbdb-search-name (concat "\\`" name "\\'") nil)
(if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil))
;; Exact match on name
(bbdb-search-organization (concat "\\`" name "\\'") nil)
(if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil))
;; Partial match on name
(bbdb-search-name name nil)
(if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil))
;; Partial match on company
(bbdb-search-organization name nil)
(if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil))
;; General match including network address and notes
(bbdb name nil)
(when (= 0 (buffer-size (get-buffer "*BBDB*")))
(delete-window (get-buffer-window "*BBDB*"))
(error "No matching BBDB record"))))
(defun org-bbdb-anniv-extract-date (time-str) (defun org-bbdb-anniv-extract-date (time-str)
"Convert YYYY-MM-DD to (month date year). "Convert YYYY-MM-DD to (month date year).