Anniversaries in BBDB can be now also specified in the format MM-DD next to YYYY-MM-DD. --- doc/org.texi | 11 ++++++----- lisp/org-bbdb.el | 27 ++++++++++++++++++--------- 2 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/doc/org.texi b/doc/org.texi index b406d29..bfcef06 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -7098,14 +7098,15 @@ following to one your your agenda files: You can then go ahead and define anniversaries for a BBDB record. Basically, you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB -record and then add the date in the format @code{YYYY-MM-DD}, followed by a -space and the class of the anniversary (@samp{birthday} or @samp{wedding}, or -a format string). If you omit the class, it will default to @samp{birthday}. -Here are a few examples, the header for the file @file{org-bbdb.el} contains -more detailed information. +record and then add the date in the format @code{YYYY-MM-DD} or @code{MM-DD}, +followed by a space and the class of the anniversary (@samp{birthday} or +@samp{wedding}, or a format string). If you omit the class, it will default to +@samp{birthday}. Here are a few examples, the header for the file +@file{org-bbdb.el} contains more detailed information. @example 1973-06-22 +06-22 1955-08-02 wedding 2008-04-14 %s released version 6.01 of org-mode, %d years ago @end example diff --git a/lisp/org-bbdb.el b/lisp/org-bbdb.el index 4155f58..c04b7ff 100644 --- a/lisp/org-bbdb.el +++ b/lisp/org-bbdb.el @@ -136,12 +136,12 @@ '(("birthday" lambda (name years suffix) (concat "Birthday: [[bbdb:" name "][" name " (" - (number-to-string years) + (format "%s" years) ; handles numbers as well as strings suffix ")]]")) ("wedding" lambda (name years suffix) (concat "[[bbdb:" name "][" name "'s " - (number-to-string years) + (format "%s" years) suffix " wedding anniversary]]"))) "How different types of anniversaries should be formatted. An alist of elements (STRING . FORMAT) where STRING is the name of an @@ -239,11 +239,16 @@ italicized, in all other cases it is left unchanged." (defun org-bbdb-anniv-extract-date (time-str) "Convert YYYY-MM-DD to (month date year). -Argument TIME-STR is the value retrieved from BBDB." - (multiple-value-bind (y m d) (values-list (bbdb-split time-str "-")) - (list (string-to-number m) - (string-to-number d) - (string-to-number y)))) +Argument TIME-STR is the value retrieved from BBDB. If YYYY- is omitted +it will be considered unknown." + (multiple-value-bind (a b c) (values-list (bbdb-split time-str "-")) + (if (eq c nil) + (list (string-to-number a) + (string-to-number b) + nil) + (list (string-to-number b) + (string-to-number c) + (string-to-number a))))) (defun org-bbdb-anniv-split (str) "Split multiple entries in the BBDB anniversary field. @@ -326,8 +331,12 @@ This is used by Org to re-create the anniversary hash table." class org-bbdb-anniversary-format-alist t)) class)) ; (as format string) (name (nth 1 rec)) - (years (- y (car rec))) - (suffix (diary-ordinal-suffix years)) + (years (if (eq (car rec) nil) + "unknown" + (- y (car rec)))) + (suffix (if (eq (car rec) nil) + "" + (diary-ordinal-suffix years))) (tmp (cond ((functionp form) (funcall form name years suffix)) -- 1.7.2.3 _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode