iCalendar export: Implement alarms
* lisp/org-icalendar.el (org-icalendar-alarm-time): New option. * lisp/org-icalendar.el (org-print-icalendar-entries): timed events are exported with alarm events, a.k.a. reminders * doc/org.texi (iCalendar export): Document alarm creation.
This commit is contained in:
parent
e3b93cda2e
commit
2c31a3b00a
|
@ -10385,6 +10385,7 @@ Export only the visible part of the document.
|
|||
@vindex org-icalendar-use-deadline
|
||||
@vindex org-icalendar-use-scheduled
|
||||
@vindex org-icalendar-categories
|
||||
@vindex org-icalendar-alarm-time
|
||||
Some people use Org-mode for keeping track of projects, but still prefer a
|
||||
standard calendar application for anniversaries and appointments. In this
|
||||
case it can be useful to show deadlines and other time-stamped items in Org
|
||||
|
@ -10398,7 +10399,9 @@ to set the start and due dates for the TODO entry@footnote{See the variables
|
|||
@code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
|
||||
As categories, it will use the tags locally defined in the heading, and the
|
||||
file/tree category@footnote{To add inherited tags or the TODO state,
|
||||
configure the variable @code{org-icalendar-categories}.}.
|
||||
configure the variable @code{org-icalendar-categories}.}. See the variable
|
||||
@code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
|
||||
time.
|
||||
|
||||
@vindex org-icalendar-store-UID
|
||||
@cindex property, ID
|
||||
|
|
|
@ -47,13 +47,24 @@ The file name should be absolute, the file will be overwritten without warning."
|
|||
:group 'org-export-icalendar
|
||||
:type 'file)
|
||||
|
||||
(defcustom org-icalendar-alarm-time 0
|
||||
"Number of minutes for triggering an alarm for exported timed events.
|
||||
A zero value (the default) turns off the definition of an alarm trigger
|
||||
for timed events. If non-zero, alarms are created.
|
||||
|
||||
- a single alarm per entry is defined
|
||||
- The alarm will go off N minutes before the event
|
||||
- only a DISPLAY action is defined."
|
||||
:group 'org-export-icalendar
|
||||
:type 'integer)
|
||||
|
||||
(defcustom org-icalendar-combined-name "OrgMode"
|
||||
"Calendar name for the combined iCalendar representing all agenda files."
|
||||
:group 'org-export-icalendar
|
||||
:type 'string)
|
||||
|
||||
(defcustom org-icalendar-combined-description nil
|
||||
"Calendar description for the combined iCalendar representing all agenda files."
|
||||
"Calendar description for the combined iCalendar (all agenda files)."
|
||||
:group 'org-export-icalendar
|
||||
:type 'string)
|
||||
|
||||
|
@ -282,7 +293,7 @@ When COMBINE is non nil, add the category to each line."
|
|||
"DTSTART"))
|
||||
hd ts ts2 state status (inc t) pos b sexp rrule
|
||||
scheduledp deadlinep todo prefix due start
|
||||
tmp pri categories location summary desc uid
|
||||
tmp pri categories location summary desc uid alarm
|
||||
(sexp-buffer (get-buffer-create "*ical-tmp*")))
|
||||
(org-refresh-category-properties)
|
||||
(save-excursion
|
||||
|
@ -314,6 +325,7 @@ When COMBINE is non nil, add the category to each line."
|
|||
(org-id-get-create)
|
||||
(or (org-id-get) (org-id-new)))
|
||||
categories (org-export-get-categories)
|
||||
alarm ""
|
||||
deadlinep nil scheduledp nil)
|
||||
(if (looking-at re2)
|
||||
(progn
|
||||
|
@ -362,6 +374,17 @@ When COMBINE is non nil, add the category to each line."
|
|||
";INTERVAL=" (match-string 1 ts)))
|
||||
(setq rrule ""))
|
||||
(setq summary (or summary hd))
|
||||
;; create an alarm entry if the entry is timed. this is not very general in that:
|
||||
;; (a) only one alarm per entry is defined,
|
||||
;; (b) only minutes are allowed for the trigger period ahead of the start time, and
|
||||
;; (c) only a DISPLAY action is defined.
|
||||
;; [ESF]
|
||||
(let ((t1 (ignore-errors (org-parse-time-string ts 'nodefault))))
|
||||
(if (and (> org-icalendar-alarm-time 0)
|
||||
(car t1) (nth 1 t1) (nth 2 t1))
|
||||
(setq alarm (format "\nBEGIN:VALARM\nACTION:DISPLAY\nDESCRIPTION:%s\nTRIGGER:-P0D0H%dM0S\nEND:VALARM" summary org-icalendar-alarm-time))
|
||||
(setq alarm ""))
|
||||
)
|
||||
(if (string-match org-bracket-link-regexp summary)
|
||||
(setq summary
|
||||
(replace-match (if (match-end 3)
|
||||
|
@ -378,7 +401,7 @@ UID: %s
|
|||
%s
|
||||
%s%s
|
||||
SUMMARY:%s%s%s
|
||||
CATEGORIES:%s
|
||||
CATEGORIES:%s%s
|
||||
END:VEVENT\n"
|
||||
(concat prefix uid)
|
||||
(org-ical-ts-to-string ts "DTSTART")
|
||||
|
@ -388,7 +411,8 @@ END:VEVENT\n"
|
|||
(concat "\nDESCRIPTION: " desc) "")
|
||||
(if (and location (string-match "\\S-" location))
|
||||
(concat "\nLOCATION: " location) "")
|
||||
categories)))))
|
||||
categories
|
||||
alarm)))))
|
||||
(when (and org-icalendar-include-sexps
|
||||
(condition-case nil (require 'icalendar) (error nil))
|
||||
(fboundp 'icalendar-export-region))
|
||||
|
|
Loading…
Reference in New Issue