;ELC ;;; Compiled ;;; in Emacs version 26.3 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\303\304\305\306\307\310\311\312&\210\313\314\315\316\317DD\320\311\304\321\322&\210\313\323\315\316\324DD\325\311\304\326\327\321\330& \210\313\331\315\316\332DD\333\311\304\321\334&\210\313\335\315\316\336DD\337\311\304\321\334&\210\313\340\315\316\341DD\342\311\304\321\343&\210\313\344\315\316\345DD\346\311\304\321\347&\210\313\350\315\316\351DD\352\311\304\321\353&\210\313\354\315\316\355DD\356\311\304\321\357&\210\313\360\315\316\361DD\362\311\304\321\363&\210\313\364\315\316\365DD\366\311\304\321\367&\210\313\370\315\316\371DD\372\311\304\321\373&\210\313\374\315\316\375DD\376\311\304\321\373&\210\313\377\315\316\201@DD\201A\311\304\321\201B&\210\313\201C\315\316\201DDD\201E\311\304\321\373&\210\313\201F\315\316\201GDD\201H\311\304\321\201I&\210\313\201J\315\316\201KDD\201L\311\304\326\327\321\201M& \207" [require cl-lib ox-ascii custom-declare-group org-export-icalendar nil "Options specific for iCalendar export back-end." :tag "Org Export iCalendar" :group org-export custom-declare-variable org-icalendar-combined-agenda-file funcall function #[0 "\300\207" [#1="~/org.ics"] 1 #1#] "The file name for the iCalendar file covering all agenda files.\nThis file is created with the command `\\[org-icalendar-combine-agenda-files]'.\nThe file name should be absolute. It will be overwritten without warning." :type file org-icalendar-alarm-time #[0 "\300\207" [0] 1] "Number of minutes for triggering an alarm for exported timed events.\n\nA zero value (the default) turns off the definition of an alarm trigger\nfor timed events. If non-zero, alarms are created.\n\n- a single alarm per entry is defined\n- The alarm will go off N minutes before the event\n- only a DISPLAY action is defined." :version "24.1" integer org-icalendar-combined-name #[0 "\300\207" [#2="OrgMode"] 1 #2#] "Calendar name for the combined iCalendar representing all agenda files." string org-icalendar-combined-description #[0 "\300\207" [#3=""] 1 #3#] "Calendar description for the combined iCalendar (all agenda files)." org-icalendar-exclude-tags #[0 "\300\207" [nil] 1] "Tags that exclude a tree from export.\nThis variable allows specifying different exclude tags from other\nback-ends. It can also be set with the ICALENDAR_EXCLUDE_TAGS\nkeyword." (repeat (string :tag "Tag")) org-icalendar-use-deadline #[0 "\300\207" [(event-if-not-todo todo-due)] 1] "Contexts where iCalendar export should use a deadline time stamp.\n\nThis is a list with possibly several symbols in it. Valid symbols are:\n\n`event-if-todo'\n\n Deadlines in TODO entries become calendar events.\n\n`event-if-todo-not-done'\n\n Deadlines in TODO entries with not-DONE state become events.\n\n`event-if-not-todo'\n\n Deadlines in non-TODO entries become calendar events.\n\n`todo-due'\n\n Use deadlines in TODO entries as due-dates." (set :greedy t (const :tag "DEADLINE in non-TODO entries become events" event-if-not-todo) (const :tag "DEADLINE in TODO entries become events" event-if-todo) (const :tag "DEADLINE in TODO entries with not-DONE state become events" event-if-todo-not-done) (const :tag "DEADLINE in TODO entries become due-dates" todo-due)) org-icalendar-use-scheduled #[0 "\300\207" [(todo-start)] 1] "Contexts where iCalendar export should use a scheduling time stamp.\n\nThis is a list with possibly several symbols in it. Valid symbols are:\n\n`event-if-todo'\n\n Scheduling time stamps in TODO entries become an event.\n\n`event-if-todo-not-done'\n\n Scheduling time stamps in TODO entries with not-DONE state\n become events.\n\n`event-if-not-todo'\n\n Scheduling time stamps in non-TODO entries become an event.\n\n`todo-start'\n\n Scheduling time stamps in TODO entries become start date. Some\n calendar applications show TODO entries only after that date." (set :greedy t (const :tag "SCHEDULED timestamps in non-TODO entries become events" event-if-not-todo) (const :tag "SCHEDULED timestamps in TODO entries become events" event-if-todo) (const :tag "SCHEDULED in TODO entries with not-DONE state become events" event-if-todo-not-done) (const :tag "SCHEDULED in TODO entries become start date" todo-start)) org-icalendar-categories #[0 "\300\207" [(local-tags category)] 1] "Items that should be entered into the \"categories\" field.\n\nThis is a list of symbols, the following are valid:\n`category' The Org mode category of the current file or tree\n`todo-state' The todo state, if any\n`local-tags' The tags, defined in the current line\n`all-tags' All tags, including inherited ones." (repeat (choice (const :tag "The file or tree category" category) (const :tag "The TODO state" todo-state) (const :tag "Tags defined in current line" local-tags) (const :tag "All tags, including inherited ones" all-tags))) org-icalendar-with-timestamps #[0 "\300\207" [active] 1] "Non-nil means make an event from plain time stamps.\n\nIt can be set to `active', `inactive', t or nil, in order to make\nan event from, respectively, only active timestamps, only\ninactive ones, all of them or none.\n\nThis variable has precedence over `org-export-with-timestamps'.\nIt can also be set with the #+OPTIONS line, e.g. \"<:t\"." (choice (const :tag "All timestamps" t) (const :tag "Only active timestamps" active) (const :tag "Only inactive timestamps" inactive) (const :tag "No timestamp" nil)) org-icalendar-include-todo #[0 "\300\207" [nil] 1] "Non-nil means create VTODO components from TODO items.\n\nValid values are:\nnil don't include any task.\nt include tasks that are not in DONE state.\n`unblocked' include all TODO items that are not blocked.\n`all' include both done and not done items." (choice (const :tag "None" nil) (const :tag "Unfinished" t) (const :tag "Unblocked" unblocked) (const :tag "All" all) (repeat :tag "Specific TODO keywords" (string :tag "Keyword"))) org-icalendar-include-bbdb-anniversaries #[0 "\300\207" [nil] 1] "Non-nil means a combined iCalendar file should include anniversaries.\nThe anniversaries are defined in the BBDB database." boolean org-icalendar-include-sexps #[0 "\300\207" [t] 1] "Non-nil means export to iCalendar files should also cover sexp entries.\nThese are entries like in the diary, but directly in an Org file." org-icalendar-include-body #[0 "\300\207" [t] 1] "Amount of text below headline to be included in iCalendar export.\nThis is a number of characters that should maximally be included.\nProperties, scheduling and clocking lines will always be removed.\nThe text will be inserted into the DESCRIPTION field." (choice (const :tag "Nothing" nil) (const :tag "Everything" t) (integer :tag "Max characters")) org-icalendar-store-UID #[0 "\300\207" [nil] 1] "Non-nil means store any created UIDs in properties.\n\nThe iCalendar standard requires that all entries have a unique identifier.\nOrg will create these identifiers as needed. When this variable is non-nil,\nthe created UIDs will be stored in the ID property of the entry. Then the\nnext time this entry is exported, it will be exported with the same UID,\nsuperseding the previous form of it. This is essential for\nsynchronization services.\n\nThis variable is not turned on by default because we want to avoid creating\na property drawer in every entry if people are only playing with this feature,\nor if they are only using it locally." org-icalendar-timezone #[0 "\300\301!\207" [getenv "TZ"] 2] "The time zone string for iCalendar export.\nWhen nil or the empty string, use output\nfrom (current-time-zone)." (choice (const :tag "Unspecified" nil) (string :tag "Time zone")) org-icalendar-date-time-format #[0 "\300\207" [#4=":%Y%m%dT%H%M%S"] 1 #4#] "Format-string for exporting icalendar DATE-TIME.\n\nSee `format-time-string' for a full documentation. The only\ndifference is that `org-icalendar-timezone' is used for %Z.\n\nInteresting value are:\n - \":%Y%m%dT%H%M%S\" for local time\n - \";TZID=%Z:%Y%m%dT%H%M%S\" for local time with explicit timezone\n - \":%Y%m%dT%H%M%SZ\" for time expressed in Universal Time" (choice (const :tag "Local time" ":%Y%m%dT%H%M%S") (const :tag "Explicit local time" ";TZID=%Z:%Y%m%dT%H%M%S") (const :tag "Universal time" ":%Y%m%dT%H%M%SZ") (string :tag "Explicit format"))] 10) #@203 Hook run after an iCalendar file has been saved. This hook is run with the name of the file as argument. A good way to use this is to tell a desktop calendar application to re-read the iCalendar file. (defvar org-icalendar-after-save-hook nil (#$ . 8696)) (org-export-define-derived-backend 'icalendar 'ascii :translate-alist '((clock . ignore) (footnote-definition . ignore) (footnote-reference . ignore) (headline . org-icalendar-entry) (inlinetask . ignore) (planning . ignore) (section . ignore) (inner-template lambda (c i) c) (template . org-icalendar-template)) :options-alist '((:exclude-tags "ICALENDAR_EXCLUDE_TAGS" nil org-icalendar-exclude-tags split) (:with-timestamps nil "<" org-icalendar-with-timestamps) (:icalendar-alarm-time nil nil org-icalendar-alarm-time) (:icalendar-categories nil nil org-icalendar-categories) (:icalendar-date-time-format nil nil org-icalendar-date-time-format) (:icalendar-include-bbdb-anniversaries nil nil org-icalendar-include-bbdb-anniversaries) (:icalendar-include-body nil nil org-icalendar-include-body) (:icalendar-include-sexps nil nil org-icalendar-include-sexps) (:icalendar-include-todo nil nil org-icalendar-include-todo) (:icalendar-store-UID nil nil org-icalendar-store-UID) (:icalendar-timezone nil nil org-icalendar-timezone) (:icalendar-use-deadline nil nil org-icalendar-use-deadline) (:icalendar-use-scheduled nil nil org-icalendar-use-scheduled)) :filters-alist '((:filter-headline . org-icalendar-clear-blank-lines)) :menu-entry '(99 "Export to iCalendar" ((102 "Current file" org-icalendar-export-to-ics) (97 "All agenda files" (lambda (a s v b) (org-icalendar-export-agenda-files a))) (99 "Combine all agenda files" (lambda (a s v b) (org-icalendar-combine-agenda-files a)))))) #@173 Set ID property on headlines missing it in FILE. When optional argument BELL is non-nil, inform the user with a message if the file was modified. (fn FILE &optional BELL) (defalias 'org-icalendar-create-uid #[513 "\300C\301\302\303\304\305\306!\307\"\310$\300\211\311$\210\205%\211\242\205%\312\313\"\210\314\315!\207" [nil org-map-entries make-byte-code 0 "\301 \302\211;\203\303\304#\266\202\202\305A@\"\266\202?\205(\306 \210\300\307\240\210\310y\207" vconcat vector [org-element-at-point :ID get-text-property 0 plist-get org-id-get-create t nil] 7 comment message "ID properties created in file \"%s\"" sit-for 2] 10 (#$ . 10449)]) #@458 Non-nil when HEADLINE is considered to be blocked. INFO is a plist used as a communication channel. A headline is blocked when either - it has children which are not all in a completed state; - it has a parent with the property :ORDERED:, and there are siblings prior to it with incomplete status; - its parent is blocked because it has siblings that should be done first or is a child of a blocked grandparent entry. (fn HEADLINE INFO) (defalias 'org-icalendar-blocked-headline-p #[514 "\300\211:\204 \301\262\202\211@9\203\211AA\262\302\303\304%\206\265\3052\265\306!\211\205\260\211@\307\211;\203?\310\311#\266\202\202G\312A@\"\266\202\204R\313\305\301\"\210\202\251\314\315\211;\203d\310\311#\266\202\202l\312A@\"\266\202!\203\246\316\"\211\262\203\242\317\211;\203\215\310\311#\266\202\202\225\312A@\"\266\202\320=\203q\313\305\321\"\210\202q\210\202\251\211\262A\266\202\202(\262\2620\207" [org-element-map nil headline #[257 "\300\211;\203\301\302#\266\202\202\303A@\"\266\202\304=\207" [:todo-type get-text-property 0 plist-get todo] 7 "\n\n(fn HL)"] first-match blockedp org-element-lineage :todo-keyword get-text-property 0 plist-get throw org-not-nil :ORDERED org-export-get-previous-element :todo-type todo t] 12 (#$ . 11110)]) #@66 Non-nil when `org-icalendar-date-time-format' requires UTC time. (defalias 'org-icalendar-use-UTC-date-time-p #[0 "\301\211GS\234\302\"\207" [org-icalendar-date-time-format char-equal 90] 3 (#$ . 12437)]) #@703 Convert TIMESTAMP to iCalendar format. TIMESTAMP is a timestamp object. KEYWORD is added in front of it, in order to make a complete line (e.g. "DTSTART"). When optional argument END is non-nil, use end of time range. Also increase the hour by two (if time string contains a time), or the day by one (if it does not contain a time) when no explicit ending time is specified. When optional argument TZ is non-nil, timezone data time will be added to the timestamp. It can be the string "UTC", to use UTC time, or a string in the IANA TZ database format (e.g. "Europe/London"). In either case, the value of `org-icalendar-date-time-format' will be ignored. (fn TIMESTAMP KEYWORD &optional END TZ) (defalias 'org-icalendar-convert-timestamp #[1026 "\303\211;\203\304\305#\266\202\202\306A@\"\266\202\307\211;\203*\304\305#\266\202\2022\306A@\"\266\202\310\211;\203D\304\305#\266\202\202L\306A@\"\266\202\311\211;\203^\304\305#\266\202\202f\306A@\"\266\202\312\211;\203x\304\305#\266\202\202\200\306A@\"\266\202\313 \211;\203\222\304\305#\266\202\202\232\306A@\"\266\202\314\n\211;\203\254\304\305#\266\202\202\264\306A@\"\266\202\315 \211;\203\306\304\305#\266\202\202\316\306A@\"\266\202\316\f\211;\203\340\304\305#\266\202\202\350\306A@\"\266\202\317 \211;\203\372\304\305#\266\202\202\306A@\"\266\202\n \257\n \257\232\204$\305\202< \204-\202<\203;\211\203;\\\202<\204D\305\202]\204N\202]\203V\203Z\202]\320\\\204g \202s\204qT\202s\203} \202\f\203\211\202\213\321\322\230\203\231\323\202\266\204\242\324\202\266;\203\260\325\326Q\202\266\327\330 \n\331$\332\305     &\322\230\204\333?\205\334\n\205\334\333 \205\334\331#P\207" [org-agenda-default-appointment-duration org-icalendar-timezone org-icalendar-date-time-format :year-start get-text-property 0 plist-get :year-end :month-start :month-end :day-start :day-end :hour-start :hour-end :minute-start :minute-end 2 format-time-string "UTC" ":%Y%m%dT%H%M%SZ" ";VALUE=DATE:%Y%m%d" ";TZID=" ":%Y%m%dT%H%M%S" replace-regexp-in-string "%Z" t encode-time org-icalendar-use-UTC-date-time-p] 31 (#$ . 12650)]) #@39 Return DTSTAMP property, as a string. (defalias 'org-icalendar-dtstamp #[0 "\300\301\302\303#\207" [format-time-string "DTSTAMP:%Y%m%dT%H%M%SZ" nil t] 4 (#$ . 14901)]) #@173 Return categories according to `org-icalendar-categories'. ENTRY is a headline or an inlinetask element. INFO is a plist used as a communication channel. (fn ENTRY INFO) (defalias 'org-icalendar-get-categories #[514 "\301\302\303\211\203~\211@\304\305\"\203\306\"B\262\202w\304\307\"\203L\310\211;\2037\311\312#\266\202\202?\313A@\"\266\202\211\203H\211B\262\210\202w\304\314\"\203b\315\316\"\237\"\262\202w\304\317\"\203w\315\316\303\320$\237\"\262A\266\202\202\237\262\262\321!\322!\266\202\323#\207" [org-icalendar-categories mapconcat identity nil eql category org-export-get-category todo-state :todo-keyword get-text-property 0 plist-get local-tags append org-export-get-tags all-tags t copy-sequence delete-dups ","] 13 (#$ . 15076)]) #@228 Transcode a diary sexp into iCalendar format. SEXP is the diary sexp being transcoded, as a string. UID is the unique identifier for the entry. SUMMARY defines a short summary or subject for the event. (fn SEXP UID SUMMARY) (defalias 'org-icalendar-transcode-diary-sexp #[771 "\300\301\302\303#\205E\304\305\306!r\211q\210\307\310\311\312\313!\314\"\315$\216\316\317\"\204(\202/\320\321O\322Q\323\310\320\324%\210\211\325\261\266\326p!*\262!\207" [require icalendar nil t org-element-normalize-string generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 string-match "\\`<%%" 1 -1 " " put-text-property uid "\n" org-diary-to-ical-string] 12 (#$ . 15878)]) #@49 Cleanup string S according to RFC 5545. (fn S) (defalias 'org-icalendar-cleanup-string #[257 "\211\205\300\301\302\300\303\304#\305\306%\207" [replace-regexp-in-string "[ ]*\n" "\\n" "[\\,;]" "\\\\\\&" nil t] 8 (#$ . 16626)]) #@46 Fold string S according to RFC 5545. (fn S) (defalias 'org-icalendar-fold-string #[257 "\300\301\302\303\304\"\305#!\207" [org-element-normalize-string mapconcat #[257 "\211G\211\300X\203\f\2027\301\300O\300\302\303\\\211\262W\203-\304OQ\262\211\262\202\304\302OQ\266\203\207" [75 0 nil 74 " \n "] 10 "\n\n(fn LINE)"] org-split-string "\n" " \n"] 7 (#$ . 16864)]) #@157 Remove blank lines in HEADLINE export. HEADLINE is a string representing a transcoded headline. BACK-END and INFO are ignored. (fn HEADLINE BACK-END INFO) (defalias 'org-icalendar-clear-blank-lines #[771 "\300\301\302#\207" [replace-regexp-in-string "^\\(?:[ ]*\n\\)+" ""] 7 (#$ . 17258)]) #@476 Transcode ENTRY element into iCalendar format. ENTRY is either a headline or an inlinetask. CONTENTS is ignored. INFO is a plist used as a communication channel. This function is called on every headline, the section below it (minus inlinetasks) being its contents. It tries to create VEVENT and VTODO components out of scheduled date, deadline date, plain timestamps, diary sexps. It also calls itself on every inlinetask within the section. (fn ENTRY CONTENTS INFO) (defalias 'org-icalendar-entry #[771 "\302\211;\203\303\304#\266\202\202\305A@\"\266\202?\205\337\211:\204.\211;\2056\306\262\2028\211@9\2056\211@\262\211\307=\203\\\310\311\211:\204L\311\262\202W\211@9\203W\211AA\262BB\202\261\211:\204h\311\262\202s\211@9\203s\211AA\262@\211\211:\204\205\211;\205\215\306\262\202\217\211@9\205\215\211@\262\312=\205\257\310\311\211:\204\242\311\262\202\255\211@9\203\255\211AA\262BB\262\313\211;\203\302\303\304#\266\202\202\312\305A@\"\266\202\314\211;\203\334\303\304#\266\202\202\344\305A@\"\266\202\206\351\315 \316\317\211;\203\374\303\304#\266\202\202\305A@\"\266\202\206%\320\321 \211;\203\303\304#\266\202\202\"\305A@\"\266\202\"!\316\322\323\n\324\325!#!\316\322\326 \324\327!#!\316\330 \211;\203M\303\304#\266\202\202U\305A@\"\266\202\206\254\320\n\"\331!\204h\311\202\252\332!\203\220\211\311\333\203y\334\202z\335\336\333\337\336##\266\202\211\304G^O\262\202\252\205\252\211\311\333\203\237\334\202\240\335\336\333\337\336##\266\202\262!\340 \n\"\322\341 \324\342!#\343 \211;\203\315\303\304#\266\202\202\325\305A@\"\266\202\305\f\344\"\205 \345=\203\361\346>\204\347>\202 \350=\203\376\347>\202\351>\205\352\353\fP\354\fP \n\n\n& \266\202\355\211;\2030\303\304#\266\202\2028\305A@\"\266\202\305 \356\"\205\n\345=\203T\346>\204g\347>\202d\n\350=\203a\347>\202d\351>\205\352\357 P\360 P\f   & \266\202\304C\361\362\363\321\211;\203\230\303\304#\266\202\202\240\305A@\"\266\202\211:\204\255\311\262\202\270\211@9\203\270\211AA\262B\364\365\366\367\370\371&\n\372\"\373\374%\311\375=\205\345\307&\336#\262\n\205I\305\376\"\377\201@\"\203\201A\202/\377\201B\"\203  \375=\205/\201C\"?\202/\201D\201E\"\205/ \345=\262\205I\201F   \n\n\n& \205\262\304C\361\362\363\321\211;\203d\303\304#\266\202\202l\305A@\"\266\202\211:\204y\311\262\202\204\211@9\203\204\211AA\262B\201G\365\366\201H\370\371\f#\201I\"\201J\201K%\311\375=\205\254\307&\336#\262\260\266\210\375=\205\333\361\362\363\307\365\366\201L\370\371 !\201M\"\201N\201O% $\336#Q\266\202\207" [org-icalendar-include-body org-icalendar-include-sexps :footnote-section-p get-text-property 0 plist-get plain-text inlinetask org-data nil section :todo-type :ID org-id-new org-icalendar-cleanup-string :SUMMARY org-export-data :title org-export-get-node-property :LOCATION org-property-inherit-p "LOCATION" :CLASS "CLASS" :DESCRIPTION org-string-nw-p wholenump replace-regexp-in-string "\\`\\([ ]*\n\\)+" "\\`[ \n ]+" "" "[ \n ]+\\'" org-icalendar-get-categories :TIMEZONE "TIMEZONE" :deadline :icalendar-use-deadline todo event-if-todo-not-done event-if-todo done event-if-not-todo org-icalendar--vevent "DL-" "DL: " :scheduled :icalendar-use-scheduled "SC-" "S: " mapconcat identity org-element-map timestamp make-byte-code 257 "\312\211;\203\313\314#\266\202\202\315A@\"\266\202\315\301\316\"\317\320\"\203*\321>\202?\317\322\"\2037\323>\202?\324\325\"\205?\326\262\262\205]\327\330\311\211\242T\240\302#\331\300\303\304\306\307\310\305& \262\207" vconcat vector [:type get-text-property 0 plist-get :with-timestamps eql active (active active-range) inactive (inactive inactive-range) memql (t) t format "TS%d-%s" org-icalendar--vevent] 12 "\n\n(fn TS)" headline :icalendar-include-todo eql all t unblocked org-icalendar-blocked-headline-p memql (t) org-icalendar--vtodo diary-sexp "\303\304\211;\203\305\306#\266\202\202\307A@\"\266\202\310\311\302\211\242T\240\300#\301#\207" [org-icalendar-transcode-diary-sexp :value get-text-property 0 plist-get format "DS%d-%s"] 8 "\n\n(fn SEXP)" "\301\302\300#\207" [org-icalendar-entry nil] 5 "\n\n(fn TASK)"] 36 (#$ . 17558)]) #@796 Create a VEVENT component. ENTRY is either a headline or an inlinetask element. TIMESTAMP is a timestamp object defining the date-time of the event. UID is the unique identifier for the event. SUMMARY defines a short summary or subject for the event. LOCATION defines the intended venue for the event. DESCRIPTION provides the complete description of the event. CATEGORIES defines the categories the event belongs to. TIMEZONE specifies a time zone for this event only. CLASS contains the visibility attribute. Three of them ("PUBLIC", "CONFIDENTIAL", and "PRIVATE") are predefined, others should be treated as "PRIVATE" if they are unknown to the iCalendar server. Return VEVENT component as a string. (fn ENTRY TIMESTAMP UID SUMMARY LOCATION DESCRIPTION CATEGORIES TIMEZONE CLASS) (defalias 'org-icalendar--vevent #[2313 "\300\301 \211;\203\302\303#\266\202\202\304A@\"\266\202\305=\203C\306\307\n\211;\2033\302\303#\266\202\202;\304A@\"\266\202  #\202\310\311 \312\313 \312\314\315\316\f$\312\314\317\320$\312\321\211;\203o\302\303#\266\202\202w\304A@\"\266\202\205\347\322\323\324\211;\203\216\302\303#\266\202\202\226\304A@\"\266\202\325\326\"\203\241\327\202\312\325\330\"\203\254\331\202\312\325\332\"\203\267\333\202\312\325\334\"\203\302\335\202\312\325\336\"\205\312\337\262\340\211;\203\336\302\303#\266\202\202\346\304A@\"\266\202#\341\312\342!\205\367\322\343\"\342!\205\322\344\"\342!\205\322\345\"\346\312\347#\350\260!\207" [org-icalendar-fold-string :type get-text-property 0 plist-get diary org-icalendar-transcode-diary-sexp :raw-value "BEGIN:VEVENT\n" org-icalendar-dtstamp "\n" "UID:" org-icalendar-convert-timestamp "DTSTART" nil "DTEND" t :repeater-type format "RRULE:FREQ=%s;INTERVAL=%d\n" :repeater-unit eql hour "HOURLY" day "DAILY" week "WEEKLY" month "MONTHLY" year "YEARLY" :repeater-value "SUMMARY:" org-string-nw-p "LOCATION:%s\n" "CLASS:%s\n" "DESCRIPTION:%s\n" "CATEGORIES:" org-icalendar--valarm "END:VEVENT"] 34 (#$ . 21961)]) #@509 Create a VTODO component. ENTRY is either a headline or an inlinetask element. UID is the unique identifier for the task. SUMMARY defines a short summary or subject for the task. LOCATION defines the intended venue for the task. DESCRIPTION provides the complete description of the task. CATEGORIES defines the categories the task belongs to. TIMEZONE specifies a time zone for this TODO only. Return VTODO component as a string. (fn ENTRY UID SUMMARY LOCATION DESCRIPTION CATEGORIES TIMEZONE CLASS) (defalias 'org-icalendar--vtodo #[2056 "\305>\203#\306\211;\203\307\310#\266\202\202 \311A@\"\266\202\206E\312 \313\314\315\316A@\317\3208\321\322 8\323\324 8\325\326 8\257\fD\262\327\330\331\n\332\333 \332\334\335\336 $\332\337 >\205\234\340\211;\203o\307\310#\266\202\202w\311A@\"\266\202\205\234\334\340\211;\203\215\307\310#\266\202\202\225\311A@\"\266\202\341\336$\332P\342\332\343!\205\254\344\345\"\343!\205\270\344\346\"\343!\205\304\344\347\"\350\332\351\344\352\353\211;\203\335\307\310#\266\202\202\345\311A@\"\266\202\206\351\n\354\355\356 Z! \fZ\245\357_Z!\262\"\344\360\361 \211;\203\307\310#\266\202\202\311A@\"\266\202\362=\203 \363\202!\364\"\365\260!\207" [org-icalendar-use-scheduled org-icalendar-use-deadline org-priority-default org-priority-lowest org-priority-highest todo-start :scheduled get-text-property 0 plist-get decode-time timestamp :type active :minute-start :hour-start 2 :day-start 3 :month-start 4 :year-start 5 org-icalendar-fold-string "BEGIN:VTODO\n" "UID:TODO-" "\n" org-icalendar-dtstamp org-icalendar-convert-timestamp "DTSTART" nil todo-due :deadline "DUE" "SUMMARY:" org-string-nw-p format "LOCATION:%s\n" "CLASS:%s\n" "DESCRIPTION:%s\n" "CATEGORIES:" "SEQUENCE:1\n" "PRIORITY:%d\n" :priority floor 9 float 8 "STATUS:%s\n" :todo-type todo "NEEDS-ACTION" "COMPLETED" "END:VTODO"] 38 (#$ . 24039)]) #@281 Create a VALARM component. ENTRY is the calendar entry triggering the alarm. TIMESTAMP is the start date-time of the entry. SUMMARY defines a short summary or subject for the task. Return VALARM component as a string, or nil if it isn't allowed. (fn ENTRY TIMESTAMP SUMMARY) (defalias 'org-icalendar--valarm #[771 "\301\211;\203\302\303#\266\202\202\304A@\"\266\202\211\203#\305!\202$\303\262\211\303V\2042\303V\205]\306\211;\203C\302\303#\266\202\202K\304A@\"\266\202\205]\307\310\303U\203[\202\\#\207" [org-icalendar-alarm-time :APPT_WARNTIME get-text-property 0 plist-get string-to-number :hour-start format "BEGIN:VALARM\nACTION:DISPLAY\nDESCRIPTION:%s\nTRIGGER:-P0DT0H%dM0S\nEND:VALARM\n"] 10 (#$ . 25981)]) #@175 Return complete document string after iCalendar conversion. CONTENTS is the transcoded contents string. INFO is a plist used as a communication channel. (fn CONTENTS INFO) (defalias 'org-icalendar-template #[514 "\301\302\303\"\204\304\305 !\202\306\307\302\303\"!!\302\310\"\204\"\311\202)\312\302\313\"\"\314!\2033\2027\315 A@\312\302\316\"\"%\207" [org-icalendar-timezone org-icalendar--vcalendar plist-get :input-file buffer-name buffer-base-buffer file-name-nondirectory file-name-sans-extension :with-author "" org-export-data :author org-string-nw-p current-time-zone :title] 10 (#$ . 26736)]) #@263 Create a VCALENDAR component. NAME, OWNER, TZ, DESCRIPTION and CONTENTS are all strings giving, respectively, the name of the calendar, its owner, the timezone used, a short description and the other components included. (fn NAME OWNER TZ DESCRIPTION CONTENTS) (defalias 'org-icalendar--vcalendar #[1285 "\300\301\302!\302!\302!\302!%\303Q\207" [format "BEGIN:VCALENDAR\nVERSION:2.0\nX-WR-CALNAME:%s\nPRODID:-//%s//Emacs with Org mode//EN\nX-WR-TIMEZONE:%s\nX-WR-CALDESC:%s\nCALSCALE:GREGORIAN\n" org-icalendar-cleanup-string "END:VCALENDAR\n"] 12 (#$ . 27367)]) #@744 Export current buffer to an iCalendar file. If narrowing is active in the current buffer, only export its narrowed part. If a region is active, export that region. A non-nil optional argument ASYNC means the process should happen asynchronously. The resulting file should be accessible through the `org-export-stack' interface. When optional argument SUBTREEP is non-nil, export the sub-tree at point, extracting information from the headline properties first. When optional argument VISIBLE-ONLY is non-nil, don't export contents of hidden elements. When optional argument BODY-ONLY is non-nil, only write code between "BEGIN:VCALENDAR" and "END:VCALENDAR". Return ICS file name. (fn &optional ASYNC SUBTREEP VISIBLE-ONLY BODY-ONLY) (defalias 'org-icalendar-export-to-ics #[1024 "\301\302 !\211\203\203\303\304\"\210\210\305\306\"\307\310\311\312&\207" [org-icalendar-store-UID buffer-file-name buffer-base-buffer org-icalendar-create-uid warn-user org-export-output-file-name ".ics" org-export-to-file icalendar (:ascii-charset utf-8 :ascii-links-to-notes nil) #[257 "\300\301\"\210\302\207" [run-hook-with-args org-icalendar-after-save-hook nil] 4 "\n\n(fn FILE)"]] 14 (#$ . 27947) nil]) #@147 Export all agenda files to iCalendar files. When optional argument ASYNC is non-nil, export happens in an external process. (fn &optional ASYNC) (defalias 'org-icalendar-export-agenda-files #[256 "\211\203\365\306\307\310\311!\"\312\313C\314\315\316\317\320\"\321\"\322$\216\203*\211\323 \240\210\324\325\"\210\326p!\327\330!\331\332\333!!\314\315\334\317\320!\335\"\336$\216r\211q\210\337\340\341\342\343\344\345\fD\346\347\350\351\352\353\354\355D\356BB\357BBEDD\257#c\210)r\211q\210\360\313\211\313\315%\210*\266\313\332\361!\362\363\364\330\365\n \"\366F\f\203\226\367\370\fE\202\231\370 D\370D#\"\371\372!\313#\210\373\374\375\376\351\377\201@\201A\201B\201C\201D\201B\351\201E\345\201FBBE\201GBB\201HBBB\201I\201J\201KDEEEEE\"\262)\266\202\266\203)\266\202\207\310\311!\201L!\210\201M\216\211\211\205+\211@\201N2#\201O!\210r\201P!q\210\201Q )0\210A\266\202\202\262)\207" [buffer-file-coding-system process-connection-type invocation-name invocation-directory org-export-async-init-file user-init-file cl-remove-if-not file-exists-p org-agenda-files t "Initializing asynchronous export process" nil make-byte-code 0 "\300\205\301\242\203\302\303\301\242\"\207\302\304!\207" vconcat vector [message #1="%s" nil] 3 current-message message #1# org-export--generate-copy-script make-temp-file "org-export-process" get-buffer-create generate-new-buffer-name " *temp file*" "\301\300!\205 \302\300!\207" [buffer-name kill-buffer] 2 format ";; -*- coding: %s; -*-\n%S" with-temp-buffer (when org-export-async-debug '(setq debug-on-error t)) (setq kill-emacs-hook nil org-babel-confirm-evaluate-answer-no t) (require 'ox) funcall (restore-buffer-modified-p nil) print progn let (output-files) dolist file quote (outputfiles) ((with-current-buffer (org-get-agenda-file-buffer file) (push (expand-file-name (org-icalendar-export-to-ics)) output-files))) write-region "*Org Export Process*" apply start-process append expand-file-name "--batch" "-Q" "-l" org-export-add-to-stack get-buffer #[257 "\211\211\205\211@\300\301\"\210A\266\202\202\207" [org-export-add-to-stack icalendar] 6 "\n\n(fn RESULTS)"] set-process-sentinel lambda (p status) ((proc-buffer (process-buffer p))) when (eq (process-status p) 'exit) unwind-protect if (zerop (process-exit-status p)) ((results (with-current-buffer proc-buffer (goto-char (point-max)) (backward-sexp) (read (current-buffer))))) (results) ((unless org-export-async-debug (and (get-buffer proc-buffer) (kill-buffer proc-buffer)))) ((org-export-add-to-stack proc-buffer nil p) (ding) (message "Process `%s' exited abnormally" p)) unless org-export-async-debug delete-file org-agenda-prepare-buffers #[0 "\301!\207" [org-agenda-new-buffers org-release-buffers] 2] nextfile org-check-agenda-file org-get-agenda-file-buffer org-icalendar-export-to-ics] 27 (#$ . 29172) nil]) #@327 Combine all agenda files into a single iCalendar file. A non-nil optional argument ASYNC means the process should happen asynchronously. The resulting file should be accessible through the `org-export-stack' interface. The file is stored under the name chosen in `org-icalendar-combined-agenda-file'. (fn &optional ASYNC) (defalias 'org-icalendar-combine-agenda-files #[256 "\211\203\343\306\307\310\311!\"\312\313C\314\315\316\317\320\"\321\"\322$\216\203*\211\323 \240\210\324\325\"\210\326p!\327\330!\331\332\333!!\314\315\334\317\320!\335\"\336$\216r\211q\210\337\340\341\342\343\344\345\fD\346\347\350\351\352\353DEDD\257#c\210)r\211q\210\354\313\211\313\315%\210*\266\313\332\355!\351\356\357\330\360\n \"\361F\f\203\216\362\363\fE\202\221\363 D\363D#\"\364\365!\313#\210\366\367\370\371\372\373\374\375\376\377\201@\376\372\201A\345\201BBBE\201CBB\201DBBB\201E\201F\201GDEEEEE\"\262)\266\202\266\203)\266\202\207\351\201H\310\311!\"\207" [buffer-file-coding-system process-connection-type invocation-name invocation-directory org-export-async-init-file user-init-file cl-remove-if-not file-exists-p org-agenda-files t "Initializing asynchronous export process" nil make-byte-code 0 "\300\205\301\242\203\302\303\301\242\"\207\302\304!\207" vconcat vector [message #1="%s" nil] 3 current-message message #1# org-export--generate-copy-script make-temp-file "org-export-process" get-buffer-create generate-new-buffer-name " *temp file*" "\301\300!\205 \302\300!\207" [buffer-name kill-buffer] 2 format ";; -*- coding: %s; -*-\n%S" with-temp-buffer (when org-export-async-debug '(setq debug-on-error t)) (setq kill-emacs-hook nil org-babel-confirm-evaluate-answer-no t) (require 'ox) funcall (restore-buffer-modified-p nil) print progn apply #'org-icalendar--combine-files quote write-region "*Org Export Process*" start-process append expand-file-name "--batch" "-Q" "-l" org-export-add-to-stack get-buffer #[257 "\301\302!\303\"\207" [org-icalendar-combined-agenda-file org-export-add-to-stack expand-file-name icalendar] 4 "\n\n(fn _)"] set-process-sentinel lambda (p status) let ((proc-buffer (process-buffer p))) when (eq (process-status p) 'exit) unwind-protect if (zerop (process-exit-status p)) ((results (with-current-buffer proc-buffer (goto-char (point-max)) (backward-sexp) (read (current-buffer))))) (results) ((unless org-export-async-debug (and (get-buffer proc-buffer) (kill-buffer proc-buffer)))) ((org-export-add-to-stack proc-buffer nil p) (ding) (message "Process `%s' exited abnormally" p)) unless org-export-async-debug delete-file org-icalendar--combine-files] 27 (#$ . 32061) nil]) #@135 Export current agenda view to an iCalendar FILE. This function assumes major mode for current buffer is `org-agenda-mode'. (fn FILE) (defalias 'org-icalendar-export-current-agenda #[257 "\306\307\310\311\312!!\313\216 \212e\306\314\315\"\211\262\203Q\316\315\"\211\203J\211\235\204J\211B\262r\317!q\210\212\214~\210\320!b\210\321\322`\212\323 \210`){!!\210+\210\306y\210\202\266*r q\210\324 +\325\326\327$\310\311\330!!\331\332\333\334\335!\336\"\337$\216r\211q\210\340\n \341\f!\206\202\342 A@ %c\210)r\211q\210\343\306\211\306\332%\210*\266\344\345\")\207" [org-export-use-babel standard-output org-icalendar-combined-name user-full-name org-icalendar-timezone org-icalendar-combined-description nil org-export-string-as get-buffer-create generate-new-buffer-name " *string-output*" #[0 "\301!\207" [standard-output kill-buffer] 2] next-single-property-change org-hd-marker get-text-property marker-buffer marker-position princ org-element-normalize-string outline-next-heading buffer-string icalendar t (:ascii-charset utf-8 :ascii-links-to-notes nil :icalendar-include-todo all) " *temp file*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 org-icalendar--vcalendar org-string-nw-p current-time-zone write-region run-hook-with-args org-icalendar-after-save-hook] 10 (#$ . 34728)]) #@132 Combine entries from multiple files into an iCalendar file. FILES is a list of files to build the calendar from. (fn &rest FILES) (defalias 'org-icalendar--combine-files #[128 "\306\307\216 \310\311\312!!\313\314\315\316\317!\320\"\321$\216r\211q\210\322\n \323\f!\206'\324 A@ \325\326 \327#\"\205T\330\331\306\332#\205T\310\311\333!!#\334\216##\335 \210)r#q\210\336 +P%c\210)r\211q\210\337\306\211\306\314%\210*\266\340\341 \"*\207" [org-agenda-new-buffers org-icalendar-combined-agenda-file org-icalendar-combined-name user-full-name org-icalendar-timezone org-icalendar-combined-description nil #[0 "\301!\207" [org-agenda-new-buffers org-release-buffers] 2] get-buffer-create generate-new-buffer-name " *temp file*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 org-icalendar--vcalendar org-string-nw-p current-time-zone mapconcat #[257 "\3012 \302!\210r\303!q\210\203\304\305\"\210\306\307\310\211\305\311%)0\207" [org-icalendar-store-UID nextfile org-check-agenda-file org-get-agenda-file-buffer org-icalendar-create-uid t org-export-as icalendar nil (:ascii-charset utf-8 :ascii-links-to-notes nil)] 7 "\n\n(fn FILE)"] "" require ol-bbdb t " *string-output*" #[0 "\301!\207" [standard-output kill-buffer] 2] org-bbdb-anniv-export-ical buffer-string write-region run-hook-with-args org-icalendar-after-save-hook org-icalendar-include-bbdb-anniversaries standard-output] 13 (#$ . 36091)]) (provide 'ox-icalendar)