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