From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?Q?=C5=81ukasz?= Stelmach Subject: Re: [PATCH] sexp may retrurn a list Date: Sun, 24 Oct 2010 22:01:47 +0200 Message-ID: <87d3qz8ims.fsf@kotik.lan> References: <87hbgicnfb.fsf@dasa3.iem.pw.edu.pl> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from [140.186.70.92] (port=46385 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PA6lY-000185-Ec for emacs-orgmode@gnu.org; Sun, 24 Oct 2010 16:02:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PA6lW-0003OL-LK for emacs-orgmode@gnu.org; Sun, 24 Oct 2010 16:02:04 -0400 Received: from lo.gmane.org ([80.91.229.12]:36762) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PA6lW-0003OG-AD for emacs-orgmode@gnu.org; Sun, 24 Oct 2010 16:02:02 -0400 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1PA6lU-0001Bq-K9 for emacs-orgmode@gnu.org; Sun, 24 Oct 2010 22:02:00 +0200 Received: from 87-205-172-252.adsl.inetia.pl ([87.205.172.252]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 24 Oct 2010 22:02:00 +0200 Received: from lukasz.stelmach by 87-205-172-252.adsl.inetia.pl with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 24 Oct 2010 22:02:00 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Łukasz Stelmach writes: > I've disovered, that %%(org-bbdb-anniversaries) returns (as every other > sexp) a string. Which is OK if there is only one. > > Anniversaries: John Doe's 10th wedding anniversary > > Unfortunately the agenda view becomes awful if we have noted Jane's > weeding date too > > Anniversaries: John Doe's 10th wedding anniversary; Jane Doe's 10th wedding anniversary > > And what if we know 3 Eves and 5 Adams and it's Christmas Eve? (Hint: > their name day) [...] As Thomas Bauman pointed out, there are functions that can be used in sexps which return cons cells like this (nil . "Full Moon 3:35am (CEST)") (this one is diary-lunar-phases), these aren't properly supported by the previous version of my patch. This one can distinguish between such a cons cell and a "real" list. ("John Doe's 10th wedding anniversary" "Jane Doe's 10th wedding anniversary") This is because (consp (cdr '(a . b))) ; => nil so org-diary-sexp-entry can be made return (cdr result) only in case of the former cons cell. The third condition in the `cond' block is IMHO enough as it is now, but if you think adding (listp (cdr result)) may help then be it. --8<---------------cut here---------------start------------->8--- diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index ede62e8..8544a62 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -4499,17 +4499,20 @@ the documentation of `org-diary'." category (org-get-category beg) todo-state (org-get-todo-state)) - (if (string-match "\\S-" result) - (setq txt result) - (setq txt "SEXP entry returned empty string")) - - (setq txt (org-format-agenda-item - "" txt category tags 'time)) - (org-add-props txt props 'org-marker marker) - (org-add-props txt nil - 'org-category category 'date date 'todo-state todo-state - 'type "sexp") - (push txt ee)))) + (dolist (r (if (stringp result) + (list result) + result)) ;; we expect a list here + (if (string-match "\\S-" r) + (setq txt r) + (setq txt "SEXP entry returned empty string")) + + (setq txt (org-format-agenda-item + "" txt category tags 'time)) + (org-add-props txt props 'org-marker marker) + (org-add-props txt nil + 'org-category category 'date date 'todo-state todo-state + 'type "sexp") + (push txt ee))))) (nreverse ee))) (defun org-diary-class (m1 d1 y1 m2 d2 y2 dayname &rest skip-weeks) diff --git a/lisp/org-bbdb.el b/lisp/org-bbdb.el index 53514f7..0d3134d 100644 --- a/lisp/org-bbdb.el +++ b/lisp/org-bbdb.el @@ -338,8 +338,7 @@ This is used by Org to re-create the anniversary hash table." (setq text (append text (list tmp))) (setq text (list tmp))))) )) - (when text - (mapconcat 'identity text "; ")))) + text)) (defun org-bbdb-complete-link () "Read a bbdb link with name completion." diff --git a/lisp/org.el b/lisp/org.el index b482b8e..c1d4e7d 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -15024,7 +15024,10 @@ D may be an absolute day number, or a calendar-type list (month day year)." (sleep-for 2)))))) (cond ((stringp result) result) ((and (consp result) + (not (consp (cdr result))) (stringp (cdr result))) (cdr result)) + ((and (consp result) + (stringp (car result))) result) (result entry) (t nil)))) --8<---------------cut here---------------end--------------->8--- -- Miłego dnia, Łukasz Stelmach