Make LOCATION property inheritable for iCalendar export.

Harri Kiiskinen suggested that it might be useful to make the LOCATION
property an inherited property during iCalendar export.  In this way
you can have set the LOCATION for a whole set of items by setting it
only in the parent.

While this will slow down iCalendar export for large files, I think it
can be quite useful.  This patch does implement the basic code needed
for this functionality.  However, you still need to tell Org that
LOCATION should be inherited, by setting org-use-property-inheritance.
If you set it to t, beware that this may trigger a significant
slowdown when creating the match view in the agenda.  So it may be
better to set this variable to

(setq org-use-property-inheritance '("LOCATION"))

instead.
This commit is contained in:
Carsten Dominik 2008-12-03 08:28:26 +01:00
parent aa07f68c12
commit b266f5a90c
4 changed files with 19 additions and 5 deletions

View File

@ -110,6 +110,16 @@
| org-export-with-tags | :tags | tags: | | org-export-with-tags | :tags | tags: |
| org-export-with-priority | :priority | pri: | | org-export-with-priority | :priority | pri: |
*** LOCATION can be inherited for iCalendar export
The LOCATION property can now be inherited during iCalendar
export if you configure =org-use-property-inheritance= like
this:
#+begin_src emacs-lisp
(setq org-use-property-inheritance '("LOCATION"))
#+end_src
* Version 6.13 * Version 6.13
** Overview ** Overview

View File

@ -8017,9 +8017,11 @@ Create a single large iCalendar file from all files in
@code{org-combined-agenda-icalendar-file}. @code{org-combined-agenda-icalendar-file}.
@end table @end table
The export will honor SUMMARY, DESCRIPTION and LOCATION properties if The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
the selected entries have them. If not, the summary will be derived property can be inherited from higher in the hierarchy if you configure
from the headline, and the description from the body (limited to @code{org-use-property-inheritance} accordingly.} properties if the selected
entries have them. If not, the summary will be derived from the headline,
and the description from the body (limited to
@code{org-icalendar-include-body} characters). @code{org-icalendar-include-body} characters).
How this calendar is best read and updated, that depends on the application How this calendar is best read and updated, that depends on the application

View File

@ -3,6 +3,8 @@
* org-exp.el (org-export-with-priority): New variable. * org-exp.el (org-export-with-priority): New variable.
(org-export-add-options-to-plist): Use `org-export-plist-vars' (org-export-add-options-to-plist): Use `org-export-plist-vars'
instead of internal list of strings and properties. instead of internal list of strings and properties.
(org-print-icalendar-entries): Retrieve the location property with
inheritance.
2008-12-02 Carsten Dominik <carsten.dominik@gmail.com> 2008-12-02 Carsten Dominik <carsten.dominik@gmail.com>

View File

@ -4391,7 +4391,7 @@ When COMBINE is non nil, add the category to each line."
(and org-icalendar-include-body (org-get-entry))) (and org-icalendar-include-body (org-get-entry)))
t org-icalendar-include-body) t org-icalendar-include-body)
location (org-icalendar-cleanup-string location (org-icalendar-cleanup-string
(org-entry-get nil "LOCATION")) (org-entry-get nil "LOCATION" 'selective))
uid (if org-icalendar-store-UID uid (if org-icalendar-store-UID
(org-id-get-create) (org-id-get-create)
(or (org-id-get) (org-id-new))) (or (org-id-get) (org-id-new)))
@ -4513,7 +4513,7 @@ END:VEVENT\n"
(and org-icalendar-include-body (org-get-entry))) (and org-icalendar-include-body (org-get-entry)))
t org-icalendar-include-body) t org-icalendar-include-body)
location (org-icalendar-cleanup-string location (org-icalendar-cleanup-string
(org-entry-get nil "LOCATION")) (org-entry-get nil "LOCATION" 'selective))
due (and (member 'todo-due org-icalendar-use-deadline) due (and (member 'todo-due org-icalendar-use-deadline)
(org-entry-get nil "DEADLINE")) (org-entry-get nil "DEADLINE"))
start (and (member 'todo-start org-icalendar-use-scheduled) start (and (member 'todo-start org-icalendar-use-scheduled)