ox-icalendar: Fix export of diary-style timestamps

* lisp/ox-icalendar.el (org-icalendar-entry): Include timestamps of
type diary when `:with-timestamps' is `active'.
* lisp/ox.el (org-export--skip-p): Include timestamps of type diary
when `:with-timestamps' is `active'.
*
testing/lisp/test-ox-icalendar.el (test-ox-icalendar/diary-timestamp):
Unit test for exporting timestamps of type diary.
This commit is contained in:
Jack Kamm 2024-09-14 22:48:44 -07:00 committed by Ihor Radchenko
parent 0b1a4bfc48
commit c07028671d
No known key found for this signature in database
GPG Key ID: 6470762A7DA11D8B
4 changed files with 31 additions and 2 deletions

View File

@ -57,6 +57,20 @@ remote resources in the =#+include:='s. Now, an error is thrown to
avoid seemingly ignored =#+include= statements when publishing via
batch scripts.
*** Diary-style timestamps are exported together with active timestamps
~org-export-with-timestamps~ and ~org-icalendar-with-timestamps~ now
treat diary-style timestamps as a type of active timestamp for
purposes of export.
This mainly affects iCalendar export, where diary timestamps will now
be included when only active timestamps are exported (the default).
This should have minimal impact on non-iCalendar exporters, since
~org-export-with-timestamps~ was already ~t~ by default. However,
users who manually set ~org-export-with-timestamps~ to ~active~ will
now have diary timestamps included as well.
** New features
# We list the most important features, and the features that may

View File

@ -746,7 +746,7 @@ inlinetask within the section."
(lambda (ts)
(when (let ((type (org-element-property :type ts)))
(cl-case (plist-get info :with-timestamps)
(active (memq type '(active active-range)))
(active (memq type '(active active-range diary)))
(inactive (memq type '(inactive inactive-range)))
((t) t)))
(let ((uid (format "TS%d-%s" (cl-incf counter) uid)))

View File

@ -1860,7 +1860,7 @@ not exported."
(cl-case (plist-get options :with-timestamps)
((nil) t)
(active
(not (memq (org-element-property :type datum) '(active active-range))))
(not (memq (org-element-property :type datum) '(active active-range diary))))
(inactive
(not (memq (org-element-property :type datum)
'(inactive inactive-range)))))))))

View File

@ -128,5 +128,20 @@ SCHEDULED: <2023-03-26 Sun .+1m>"
(when (file-exists-p tmp-ics)
(delete-file tmp-ics))))))))
(ert-deftest test-ox-icalendar/diary-timestamp ()
"Test icalendar export of diary timestamps."
(let* ((tmp-ics (org-test-with-temp-text-in-file
"* First Sunday of the month
<%%(diary-float t 0 1)>"
(expand-file-name (org-icalendar-export-to-ics)))))
(unwind-protect
(with-temp-buffer
(insert-file-contents tmp-ics)
(save-excursion
(should (search-forward "SUMMARY:First Sunday of the month")))
(save-excursion
(should (search-forward "RRULE:FREQ=MONTHLY;BYDAY=1SU"))))
(when (file-exists-p tmp-ics) (delete-file tmp-ics)))))
(provide 'test-ox-icalendar)
;;; test-ox-icalendar.el ends here