emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Thomas Baumann <dtbaumann@yahoo.de>
To: emacs-orgmode@gnu.org
Cc: Carsten Dominik <carsten@orgmode.org>
Subject: Re: [PATCH] org-bbdb: allow anniversaries with unknown years
Date: Tue, 08 Feb 2011 17:05:49 +0100	[thread overview]
Message-ID: <m37hdacy02.fsf@norvel.baumann-gauting.site> (raw)
In-Reply-To: 1297078995-9030-1-git-send-email-cwg@falma.de

Christoph Groth <cwg@falma.de> writes:

> 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))

Thanks for adding this feature.

Carsten, could you please check this in?

The ChangeLog should mention that any customized
"org-bbdb-anniversary-format-alist" has to be updated, otherwise there
will be an "Bad sexp at line 637 in /home/tb/org/diary.org:
(org-bbdb-anniversaries)" error with the new format.

Thomas

  parent reply	other threads:[~2011-02-08 16:06 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-10 10:15 org-bbdb: anniversaries with unknown years Christoph Groth
2010-10-10 10:34 ` Carsten Dominik
2010-10-10 11:16   ` Richard Riley
2010-10-10 11:26     ` Carsten Dominik
2010-10-10 11:57       ` Richard Riley
2010-10-25 16:33         ` Thomas Baumann
2011-02-07 11:43   ` [PATCH] org-bbdb: allow " Christoph Groth
2011-02-08 15:57     ` [Accepted] " Bastien Guerry
2011-02-08 15:58     ` [PATCH] " Bastien
2011-02-08 16:05     ` Thomas Baumann [this message]
2011-02-09 14:42       ` Christoph Groth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m37hdacy02.fsf@norvel.baumann-gauting.site \
    --to=dtbaumann@yahoo.de \
    --cc=carsten@orgmode.org \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).