Hi Aaron,

Aaron Ecay wrote:

> >      (lambda (ts)
> > -      (let ((uid (format "TS%d-%s" (incf counter) uid)))
> > -        (org-icalendar--vevent entry ts uid summary loc desc cat)))
> > +      (let ((type (org-element-property :type ts))
> > +      (uid (format "TS%d-%s" (incf counter) uid)))
> > +        (when (or (eq with-timestamps 'all)
> 
> Here, I think you want to compare with t, not 'all (check the defcustom
> for ‘org-icalendar-with-timestamps’).

Thanks, fixed!

> 
> > +            (and (eq with-timestamps 'active)
> > +           (or (eq type 'active)
> > +         (eq type 'active-range)))
> 
> This is only a cosmetic comment, so feel free to disregard it, but:
> might the ‘(or ...)’ be cleaner as ‘(memq type '(active active-range))’?

Thanks, fixed! I did not like the construction with `or' but I didn't
know about `memq'. Learning Elisp as I go...

New patch is attached.

Cheers,
Viktor
> 
> -- 
> Aaron Ecay
> 
>From 52511b5e2a538d3bb0375c2e32caef0a27e1998e Mon Sep 17 00:00:00 2001
From: Viktor Rosenfeld <listuse...@gmail.com>
Date: Sun, 11 Aug 2013 03:59:29 +0200
Subject: [PATCH] ox-icalendar: fix handling of timestamps

        * ox-icalendar.el (org-icalendar-entry): Honor setting of
        `org-icalendar-with-timestamps' for timestamps on headlines
        and checkboxes.

        The setting `org-icalendar-with-timestamps' was only applied
        to timestamps which do not appear on a heading or on a
        checkbox. E.g., with `org-icalendar-with-timestamps' set to
        'active, an heading containing an inactive timestamp on would
        be exported. This patch fixes this.

TINYCHANGE
---
 lisp/ox-icalendar.el | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/lisp/ox-icalendar.el b/lisp/ox-icalendar.el
index c6ab295..ab83a48 100644
--- a/lisp/ox-icalendar.el
+++ b/lisp/ox-icalendar.el
@@ -580,15 +580,22 @@ inlinetask within the section."
            ;; When collecting plain timestamps from a headline and
            ;; its title, skip inlinetasks since collection will
            ;; happen once ENTRY is one of them.
-           (let ((counter 0))
+           (let ((counter 0)
+                 (with-timestamps (plist-get info :with-timestamps)))
              (mapconcat
               'identity
               (org-element-map (cons (org-element-property :title entry)
                                      (org-element-contents inside))
                   'timestamp
                 (lambda (ts)
-                  (let ((uid (format "TS%d-%s" (incf counter) uid)))
-                    (org-icalendar--vevent entry ts uid summary loc desc cat)))
+                  (let ((type (org-element-property :type ts))
+                        (uid (format "TS%d-%s" (incf counter) uid)))
+                    (when (or (eq with-timestamps t)
+                              (and (eq with-timestamps 'active)
+                                   (memq type '(active active-range)))
+                              (and (eq with-timestamps 'inactive)
+                                   (memq type '(inactive 'inactive-range))))
+                      (org-icalendar--vevent entry ts uid summary loc desc 
cat))))
                 info nil (and (eq type 'headline) 'inlinetask))
               ""))
            ;; Task: First check if it is appropriate to export it.
-- 
1.8.3.4

Reply via email to