changeset 81684:985d689b2181

*** empty log message ***
author Carsten Dominik <dominik@science.uva.nl>
date Mon, 02 Jul 2007 13:35:28 +0000
parents 2b0756851a4b
children ecb4a0ba32e7
files man/org.texi
diffstat 1 files changed, 388 insertions(+), 58 deletions(-) [+]
line wrap: on
line diff
--- a/man/org.texi	Mon Jul 02 13:35:09 2007 +0000
+++ b/man/org.texi	Mon Jul 02 13:35:28 2007 +0000
@@ -3,8 +3,8 @@
 @setfilename ../info/org
 @settitle Org Mode Manual
 
-@set VERSION 4.79
-@set DATE June 2007
+@set VERSION 5.01
+@set DATE July 2007
 
 @dircategory Emacs
 @direntry
@@ -81,6 +81,7 @@
 * Hyperlinks::                  Notes in context
 * TODO items::                  Every tree branch can be a TODO item
 * Tags::                        Tagging headlines and matching sets of tags
+* Properties::                  
 * Timestamps::                  Assign date and time to items
 * Agenda views::                Collecting information into views
 * Embedded LaTeX::              LaTeX fragments and formulas
@@ -112,6 +113,7 @@
 * Archiving::                   Move done task trees to a different place
 * Sparse trees::                Matches embedded in context
 * Plain lists::                 Additional structure within an entry
+* Drawers::                     
 
 Archiving
 
@@ -179,6 +181,19 @@
 * Setting tags::                How to assign tags to a headline
 * Tag searches::                Searching for combinations of tags
 
+Properties
+
+* Property syntax::             How properties are spelled out
+* Special properties::          Access to other Org-mode features
+* Property searches::           Matching property values
+* Column view::                 Tabular viewing and editing
+* Property API::                Properties for Lisp programmers
+
+Column View
+
+* Defining columns::            The COLUMNS format property
+* Using column view::           How to create and use column view
+
 Timestamps
 
 * Time stamps::                 Assigning a time to a tree entry
@@ -215,7 +230,7 @@
 
 * Weekly/Daily agenda::         The calendar page with current tasks
 * Global TODO list::            All unfinished action items
-* Matching headline tags::      Structured information with fine-tuned search
+* Matching tags and properties::  Structured information with fine-tuned search
 * Timeline::                    Time-sorted view for single file
 * Stuck projects::              Find projects you need to review
 
@@ -308,6 +323,7 @@
 * Tables in arbitrary syntax::  Orgtbl for LaTeX and other programs
 * Dynamic blocks::              Automatically filled blocks
 * Special agenda views::        Customized views
+* Using the property API::      Writing programs that use entry properties
 
 Tables in arbitrary syntax
 
@@ -333,7 +349,7 @@
 @section Summary
 @cindex summary
 
-Org-mode is a mode for keeping notes, maintaining ToDo lists, and doing
+Org-mode is a mode for keeping notes, maintaining TODO lists, and doing
 project planning with a fast and effective plain-text system.
 
 Org-mode develops organizational tasks around NOTES files that contain
@@ -341,7 +357,7 @@
 implemented on top of outline-mode, which makes it possible to keep the
 content of large files well structured.  Visibility cycling and
 structure editing help to work with the tree.  Tables are easily created
-with a built-in table editor.  Org-mode supports ToDo items, deadlines,
+with a built-in table editor.  Org-mode supports TODO items, deadlines,
 time stamps, and scheduling.  It dynamically compiles entries into an
 agenda that utilizes and smoothly integrates much of the Emacs calendar
 and diary.  Plain text URL-like links connect to websites, emails,
@@ -564,6 +580,7 @@
 * Archiving::                   Move done task trees to a different place
 * Sparse trees::                Matches embedded in context
 * Plain lists::                 Additional structure within an entry
+* Drawers::                     
 @end menu
 
 @node Outlines, Headlines, Document structure, Document structure
@@ -991,7 +1008,7 @@
 Or you can use the command @kbd{C-c C-e v} to export only the visible
 part of the document and print the resulting file.
 
-@node Plain lists,  , Sparse trees, Document structure
+@node Plain lists, Drawers, Sparse trees, Document structure
 @section Plain lists
 @cindex plain lists
 @cindex lists, plain
@@ -1017,9 +1034,9 @@
 in the list.  Indentation also determines the end of a list item.  It
 ends before the next line that is indented like the bullet/number, or
 less.  Empty lines are part of the previous item, so you can have
-several paragraphs in one item.  If you would like an emtpy line to
+several paragraphs in one item.  If you would like an empty line to
 terminate all currently open plain lists, configure the variable
-@code{org-empty-line-terminates-plain-lists}.  Here is an for example:
+@code{org-empty-line-terminates-plain-lists}.  Here is an example:
 
 @example
 @group
@@ -1097,8 +1114,37 @@
 state of the checkbox.  If not, make this command makes sure that all
 the items on this list level use the same bullet.  Furthermore, if this
 is an ordered list, make sure the numbering is ok.
+@kindex C-c -
+@item C-c -
+Cycle the entire list level through the different itemize/enumerate
+bullets (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}).
+With prefix arg, select the nth bullet from this list.
 @end table
 
+@node Drawers,  , Plain lists, Document structure
+@section Drawers
+@cindex drawers
+
+Sometimes you want to keep information associated with an entry, but you
+normally don't want to see it, except when explicitly asking for it.
+For this, Org-mode has @emph{drawers}.  Drawers need to be configured
+with the variable @code{org-drawers}, and look like this:
+
+@example
+** This is a headline
+   Still outside the drawer
+   :DRAWERNAME:
+      This is inside the drawer.
+   :END:
+   After the drawer.
+@end example
+
+Visibility cycling (@pxref{Visibility cycling}) on the headline will
+hide and show the entry, but keep the drawer collapsed to a single line.
+In order to look inside the drawer, you need to move the cursor to the
+drawer line and press @key{TAB} there.  Org-mode uses a drawer for
+storing properties (@pxref{Properties}).
+
 @node Tables, Hyperlinks, Document structure, Top
 @chapter Tables
 @cindex tables
@@ -1557,12 +1603,23 @@
 
 @samp{$name} is interpreted as the name of a column, parameter or
 constant.  Constants are defined globally through the variable
-@code{org-table-formula-constants}.  If you have the @file{constants.el}
-package, it will also be used to resolve constants, including natural
-constants like @samp{$h} for Planck's constant, and units like
-@samp{$km} for kilometers@footnote{@file{Constant.el} can supply the
-values of constants in two different unit systems, @code{SI} and
-@code{cgs}.  Which one is used depends on the value of the variable
+@code{org-table-formula-constants}, and locally (for the file) through a
+line like
+
+@example
+#+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
+@end example
+
+@noindent
+Also properties (@pxref{Properties}) can be used as constants in table
+formulas: For a property @samp{:XYZ:} use the name @samp{$PROP_XYZ}, and
+the property will be searched in the current outline entry and in the
+hierarchy above it.  If you have the @file{constants.el} package, it
+will also be used to resolve constants, including natural constants like
+@samp{$h} for Planck's constant, and units like @samp{$km} for
+kilometers@footnote{@file{Constant.el} can supply the values of
+constants in two different unit systems, @code{SI} and @code{cgs}.
+Which one is used depends on the value of the variable
 @code{constants-unit-system}.  You can use the @code{#+STARTUP} options
 @code{constSI} and @code{constcgs} to set this value for the current
 buffer.}.  Column names and parameters can be specified in special table
@@ -2511,6 +2568,8 @@
 %a          @r{annotation, normally the link created with @code{org-store-link}}
 %i          @r{initial content, the region when remember is called with C-u.}
             @r{The entire text will be indented like @code{%i} itself.}
+%^g         @r{prompt for tags, with completion on tags in target file.}
+%^G         @r{prompt for tags, with completion all tags in all agenda files.}
 %:keyword   @r{specific information for certain link types, see below}
 @end example
 
@@ -2663,6 +2722,9 @@
 @c @item @code{org-agenda-include-all-todo}
 @c If you would like to have all your TODO items listed as part of your
 @c agenda, customize the variable @code{org-agenda-include-all-todo}.
+@kindex S-M-@key{RET}
+@item S-M-@key{RET}
+Insert a new TODO entry below the current one.
 @end table
 
 @node TODO extensions, Priorities, TODO basics, TODO items
@@ -2968,7 +3030,7 @@
 @end table
 
 
-@node Tags, Timestamps, TODO items, Top
+@node Tags, Properties, TODO items, Top
 @chapter Tags
 @cindex tags
 @cindex headline tagging
@@ -3161,7 +3223,7 @@
 @kindex C-c a m
 @item C-c a m
 Create a global list of tag matches from all agenda files.
-@xref{Matching headline tags}.
+@xref{Matching tags and properties}.
 @kindex C-c a M
 @item C-c a M
 Create a global list of tag matches from all agenda files, but check
@@ -3224,7 +3286,215 @@
 search @samp{+LEVEL=3+BOSS/-DONE} lists all level three headlines that
 have the tag BOSS and are @emph{not} marked with the todo keyword DONE.
 
-@node Timestamps, Agenda views, Tags, Top
+@node Properties, Timestamps, Tags, Top
+@chapter Properties
+@cindex properties
+
+Properties are a set of key-value pairs associated with an entry.  There
+are two main applications for properties in Org-mode.  First, properties
+are like tags, but with a value.  For example, in a file where you
+document bugs and plan releases of a piece of software, instead of using
+tags like @code{:release_1:}, @code{:release_2:}, it can be more
+efficient to use a property @code{RELEASE} with a value @code{1.0} or
+@code{2.0}.  Second, you can use properties to implement (very basic)
+database capabilities in an Org-mode buffer, for example to create a
+list of Music CD's you own.
+
+@menu
+* Property syntax::             How properties are spelled out
+* Special properties::          Access to other Org-mode features
+* Property searches::           Matching property values
+* Column view::                 Tabular viewing and editing
+* Property API::                Properties for Lisp programmers
+@end menu
+
+@node Property syntax, Special properties, Properties, Properties
+@section Property Syntax
+
+Properties are key-value pairs.  They need to be inserted into a special
+drawer (@pxref{Drawers}) with the name @code{PROPERTIES}.  Each property
+is specified on a single line, with the key (surrounded by colons)
+first, and the value after it.  Here is an example:
+
+@example
+* CD collection
+** Classic
+*** Goldberg Variations
+    :PROPERTIES:
+    :Title:     Goldberg Variations
+    :Composer:  J.S. Bach
+    :Artist:    Glen Gould 
+    :END:
+@end example
+
+@noindent
+The following commands help to insert properties:
+
+@table @kbd
+@kindex M-@key{TAB}
+@item M-@key{TAB}
+After an initial colon in a line, complete property keys.  All keys used
+in the current file will be offered as possible completions.
+@end table
+
+
+
+@node Special properties, Property searches, Property syntax, Properties
+@section Special Properties
+
+Several properties are special, because they can be used to access other
+features of Org-mode like the TODO status:
+
+@example
+TODO         @r{The TODO keyword of the entry.}
+TAGS         @r{The tags defined directly in the headline.}
+ALLTAGS      @r{All tags, including inherited ones.}
+PRIORITY     @r{The priority of the entry, a string with a single letter.}
+DEADLINE     @r{The deadline time string, without the angular brackets.}
+SCHEDULED    @r{The scheduling time stamp, without the angular brackets.}
+@end example
+
+@node Property searches, Column view, Special properties, Properties
+@section Property searches
+
+To create sparse trees and special lists with selection based on
+properties, the same commands are used as for tag searches (@pxref{Tag
+searches}), and the same logic applies.  For example, a search string
+
+@example
++WORK-BOSS+PRIORITY="A"+coffee="unlimited"+with=@{Sarah\|Denny@}
+@end example
+
+@noindent
+finds entries tagged @samp{:WORK:} but not @samp{:BOSS:}, which
+also have a priority value @samp{A}, a @samp{:coffee:} property with the
+value @samp{unlimited}, and a @samp{:with:} property that is matched by
+the regular expression @samp{Sarah\|Denny}.
+
+@node Column view, Property API, Property searches, Properties
+@section Column View
+
+If different items in a document have similar properties, it can be nice
+to view and edit those properties in a table-like format, in
+@emph{column view}.  Org-mode implements columns by overlaying a tabular
+structure over the headline of an item.  So the column view does not use
+a special buffer, it happens in exactly the same buffer where the
+outline is, and only temporarily changes the look of this buffer - not
+the content.  This has the advantage that you can still change the
+visibility of the outline tree.  For example, you get a compact table by
+switching to CONTENTS view, but you can still open, read, and edit the
+entry below each headline.  Or, you can switch to column view after
+executing a sparse tree command and in this way get a table only for the
+selected items.  Column view also works in agenda buffers (@pxref{Agenda
+views}) where queries have collected selected items, possibly from a
+number of files.
+
+@menu
+* Defining columns::            The COLUMNS format property
+* Using column view::           How to create and use column view
+@end menu
+
+@node Defining columns, Using column view, Column view, Column view
+@subsection Defining Columns
+
+Setting up a column view first requires defining the columns.  A column
+definition is a property itself and looks like this:
+
+@example
+:COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
+@end example
+
+This definition means that column 1 should be the first 25 characters of
+the item itself, i.e. of the headline.  You probably always should start
+the column definition with the ITEM specifier - just select a useful
+width for it.  The other specifiers create columns for the local tags,
+for the priority and for the TODO state.  When no width is given after
+the @samp{%} character, the column will be exactly as wide as it need to
+be in order to fully display all values.
+
+If a @code{COLUMNS} property is present in an entry, it defines
+columns for the entry itself, and for the entire subtree below it.
+Since the column definition is part of the hierarchical structure of the
+document, you can define columns on level 1 that are general enough for
+all sublevels, and more specific columns further down, when you edit a deeper
+part of the tree.  Here is an example:
+
+@example
+* People
+  :PROPERTIES:
+  :COLUMNS: %25ITEM %Name
+  :END:
+** Family
+   :PROPERTIES:
+   :COLUMNS: %25ITEM %Name %3Age
+   :END:
+*** Sam
+    Info about Sam, including a property list with Name and Age.
+*** Sarah
+    Info about Sarah, including a property list with Name and Age.
+** Office
+   :PROPERTIES:
+   :COLUMNS: %25ITEM %Name %Function %Salary
+   :END:
+*** Boss
+    Info about the Boss, including a property list with Name,
+    Function and Salary (if only we knew....).
+@end example
+
+Now we have defined three different sets of columns.  If you switch to
+column view in the @emph{Family} section, you will get a different table
+than if you do it in the @emph{Office} section.  However, if you switch
+to column view with the cursor on the @emph{People} section, the table
+will cover all entries, but contain only the @emph{Name} column.
+
+If no COLUMNS property applies to a given location, Org-mode uses a
+default format specified in the variable
+@code{org-default-columns-format}.  This format in particular also
+applies when column view is invoked with the cursor before the first
+headline.  You can set the default format on a per-file basis with a
+line (don't forget to press @kbd{C-c C-c} to activate any changes to
+this line).
+
+@example
+#+COLUMNS: %25ITEM ....."
+@end example
+
+@node Using column view,  , Defining columns, Column view
+@subsection Using Column View
+
+@table @kbd
+@kindex C-c C-x C-c
+@item C-c C-x C-c
+Create the column view for the local environment.  This command searches
+the hierarchy, up from point, for a @code{COLUMNS} property that defines
+a format.  When one is found, the column view table is established for
+the entire subtree.
+@item @key{left} @key{right} @key{up} @key{down}
+Move through the column view from field to field.
+@kindex e
+@item e
+Edit the property at point.  For the special properties, this will
+invoke the same interface that you normally use to change that
+property.  For example, when editing a TAGS property, the tag completion
+or fast selection interface will pop up.
+@kindex v
+@item v
+View the full value of this property.  This is useful if the width of
+the column is smaller than that of the value.
+@kindex q
+@item q
+Exit column view.
+@end table
+
+@node Property API,  , Column view, Properties
+@section The Property API
+
+There is a full API for accessing and changing properties.  This API can
+be used by Emacs Lisp programs to work with properties and to implement
+features based on them.  For more information see @ref{Using the
+property API}.
+
+@node Timestamps, Agenda views, Properties, Top
 @chapter Timestamps
 @cindex time stamps
 @cindex date stamps
@@ -3885,7 +4155,7 @@
 Create a list of all TODO items (@pxref{Global TODO list}).
 @item m @r{/} M
 Create a list of headlines matching a TAGS expression (@pxref{Matching
-headline tags}).
+tags and properties}).
 @item L
 Create the timeline view for the current buffer (@pxref{Timeline}).
 @item # @r{/} !
@@ -3914,7 +4184,7 @@
 @menu
 * Weekly/Daily agenda::         The calendar page with current tasks
 * Global TODO list::            All unfinished action items
-* Matching headline tags::      Structured information with fine-tuned search
+* Matching tags and properties::  Structured information with fine-tuned search
 * Timeline::                    Time-sorted view for single file
 * Stuck projects::              Find projects you need to review
 @end menu
@@ -3988,11 +4258,11 @@
 #+CATEGORY: Holiday
 %%(org-calendar-holiday)   ; special function for holiday names
 #+CATEGORY: Ann
-%%(diary-anniversary 14  5 1956) Artur Dent %d is years old
+%%(diary-anniversary 14  5 1956) Arthur Dent is %d years old
 %%(diary-anniversary  2 10 1869) Mahatma Gandhi would be %d years old
 @end example
 
-@node Global TODO list, Matching headline tags, Weekly/Daily agenda, Built-in agenda views
+@node Global TODO list, Matching tags and properties, Weekly/Daily agenda, Built-in agenda views
 @subsection The global TODO list
 @cindex global TODO list
 @cindex TODO list, global
@@ -4046,9 +4316,10 @@
 @code{org-agenda-todo-list-sublevels} to get this behavior.
 @end itemize
 
-@node Matching headline tags, Timeline, Global TODO list, Built-in agenda views
-@subsection Matching headline tags
+@node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
+@subsection Matching Tags and Properties
 @cindex matching, of tags
+@cindex matching, of properties
 @cindex tags view
 
 If headlines in the agenda files are marked with @emph{tags}
@@ -4074,7 +4345,7 @@
 The commands available in the tags list are described in @ref{Agenda
 commands}.
 
-@node Timeline, Stuck projects, Matching headline tags, Built-in agenda views
+@node Timeline, Stuck projects, Matching tags and properties, Built-in agenda views
 @subsection Timeline for a single file
 @cindex timeline, single file
 @cindex time-sorted view
@@ -4328,13 +4599,12 @@
 @item o
 Delete other windows.
 @c
+@kindex d
 @kindex w
-@item w
-Switch to weekly view (7 days displayed together).
-@c
-@kindex d
-@item d
-Switch to daily view (just one day displayed).
+@kindex m
+@kindex y
+@item d w m y
+Switch to day/week/month/year view.
 @c
 @kindex D
 @item D
@@ -6033,6 +6303,7 @@
 @cindex completion, of dictionary words
 @cindex completion, of option keywords
 @cindex completion, of tags
+@cindex completion, of property keys
 @cindex completion, of link abbreviations
 @cindex @TeX{} symbol completion
 @cindex TODO keywords completion
@@ -6058,10 +6329,14 @@
 After @samp{*}, complete headlines in the current buffer so that they
 can be used in search links like @samp{[[*find this headline]]}.
 @item
-After @samp{:}, complete tags.  The list of tags is taken from the
-variable @code{org-tag-alist} (possibly set through the @samp{#+TAGS}
-in-buffer option, @pxref{Setting tags}), or it is created dynamically
-from all tags used in the current buffer.
+After @samp{:} in a headline, complete tags.  The list of tags is taken
+from the variable @code{org-tag-alist} (possibly set through the
+@samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
+dynamically from all tags used in the current buffer.
+@item
+After @samp{:} and not in a headline, complete property keys.  The list
+of keys is constructed dynamically from all keys used in the current
+buffer.
 @item
 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
 @item
@@ -6107,6 +6382,32 @@
 when the file is visited again in a new Emacs session.
 
 @table @kbd
+@item #+ARCHIVE: %s_done::
+This line sets the archive location for the agenda file.  It applies for
+all subsequent lines until the next @samp{#+CATEGORY} line, or the end
+of the file.  The first such line also applies to any entries before it.
+The corresponding variable is @code{org-archive-location}.
+@item #+CATEGORY:
+This line sets the category for the agenda file.  The category applies
+for all subsequent lines until the next @samp{#+CATEGORY} line, or the
+end of the file.  The first such line also applies to any entries before it.
+@item #+COLUMNS: %25ITEM .....
+Set the default format for columns view.  This format applies when
+columns view is invoked in location where no COLUMNS property applies.
+@item #+CONSTANTS: name1=value1 ...
+Set file-local values for constants to be used in table formulas.  This
+line set the local variable @code{org-table-formula-constants-local}.
+The global version of theis variable is
+@code{org-table-formula-constants}.
+corresponding 
+@item #+LINK:  linkword replace
+These lines (several are allowed) specify link abbreviations.
+@xref{Link abbreviations}.  The corresponding variable is
+@code{org-link-abbrev-alist}.
+@item #+PRIORITIES: highest lowest default
+This line sets the limits and the default for the priorities.  All three
+must be either letters A-Z or numbers 0-9.  The highest priority must
+have a lower ASCII number that the lowest priority.
 @item #+STARTUP:
 This line sets options to be used at startup of org-mode, when an
 Org-mode file is being visited.  The first set of options deals with the
@@ -6178,36 +6479,19 @@
 constcgs   @r{@file{constants.el} should use the c-g-s unit system}
 constSI    @r{@file{constants.el} should use the SI unit system}
 @end example
-@item #+SEQ_TODO:   #+TYP_TODO:
-These lines set the TODO keywords and their interpretation in the
-current file.  The corresponding variables are @code{org-todo-keywords}
-and @code{org-todo-interpretation}.
 @item #+TAGS:  TAG1(c1) TAG2(c2)
 These lines (several such lines are allowed) specify the legal tags in
 this file, and (potentially) the corresponding @emph{fast tag selection}
 keys.  The corresponding variable is @code{org-tag-alist}.
-@item #+LINK:  linkword replace
-These lines (several are allowed) specify link abbreviations.
-@xref{Link abbreviations}.  The corresponding variable is
-@code{org-link-abbrev-alist}.
-@item #+CATEGORY:
-This line sets the category for the agenda file.  The category applies
-for all subsequent lines until the next @samp{#+CATEGORY} line, or the
-end of the file.  The first such line also applies to any entries before it.
-@item #+ARCHIVE: %s_done::
-This line sets the archive location for the agenda file.  It applies for
-all subsequent lines until the next @samp{#+CATEGORY} line, or the end
-of the file.  The first such line also applies to any entries before it.
-The corresponding variable is @code{org-archive-location}.
-@item #+PRIORITIES: highest lowest default
-This line sets the limits and the default for the priorities.  All three
-must be either letters A-Z or numbers 0-9.  The highest priority must
-have a lower ASCII number that the lowest priority.
 @item #+TBLFM:
 This line contains the formulas for the table directly above the line.
 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS:
 These lines provide settings for exporting files.  For more details see
 @ref{Export options}.
+@item #+SEQ_TODO:   #+TYP_TODO:
+These lines set the TODO keywords and their interpretation in the
+current file.  The corresponding variables are @code{org-todo-keywords}
+and @code{org-todo-interpretation}.
 @end table
 
 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
@@ -6575,6 +6859,7 @@
 * Tables in arbitrary syntax::  Orgtbl for LaTeX and other programs
 * Dynamic blocks::              Automatically filled blocks
 * Special agenda views::        Customized views
+* Using the property API::      Writing programs that use entry properties
 @end menu
 
 @node Extensions, Tables in arbitrary syntax, Extensions and Hacking, Extensions and Hacking
@@ -6948,7 +7233,7 @@
 example @code{before-save-hook}.  @code{org-update-all-dblocks} is
 written in a way that is does nothing in buffers that are not in Org-mode.
 
-@node Special agenda views,  , Dynamic blocks, Extensions and Hacking
+@node Special agenda views, Using the property API, Dynamic blocks, Extensions and Hacking
 @section Special Agenda Views
 @cindex agenda views, user-defined
 
@@ -7001,6 +7286,44 @@
     (org-todo-list "PROJECT")))
 @end lisp
 
+@node Using the property API,  , Special agenda views, Extensions and Hacking
+@section Using the property API
+@cindex API, for properties
+
+Here is a description of the functions that can be used to work with
+properties.
+
+@defun org-entry-properties &optional pom which
+Get all properties of the entry at point-or-marker POM.
+This includes the TODO keyword, the tags, time strings for deadline,
+scheduled, and clocking, and any additional properties defined in the
+entry.  The return value is an alist, keys may occur multiple times
+if the property key was used several times.
+POM may also be nil, in which case the current entry is used.
+If WHICH is nil or `all', get all properties.  If WHICH is
+`special' or `standard', only get that subclass.
+@end defun
+@defun org-entry-get pom property &optional inherit
+Get value of PROPERTY for entry at point-or-marker POM.
+If INHERIT is non-nil and the entry does not have the property,
+then also check higher levels of the hierarchy.
+@end defun
+
+@defun org-entry-delete pom property
+Delete the property PROPERTY from entry at point-or-marker POM.
+@end defun
+
+@defun org-entry-put pom property value
+Set PROPERTY to VALUE for entry at point-or-marker POM.
+@end defun
+
+@defun org-buffer-property-keys &optional include-specials
+Get all property keys in the current buffer.
+@end defun
+
+@defun org-insert-property-drawer
+Insert a property drawer at point.
+@end defun
 
 @node History and Acknowledgments, Index, Extensions and Hacking, Top
 @appendix History and Acknowledgments
@@ -7025,7 +7348,7 @@
 plain text mode with innovative and intuitive editing features, and to
 incorporate project planning functionality directly into a notes file.
 
-Since the first release, hundreds of emails to me or on
+Since the first release, literally thousands of emails to me or on
 @code{emacs-orgmode@@gnu.org} have provided a constant stream of bug
 reports, feedback, new ideas, and sometimes patches and add-on code.
 Many thanks to everyone who has helped to improve this package.  I am
@@ -7037,6 +7360,8 @@
 @itemize @bullet
 
 @item
+@i{Russel Adams} came up with the idea for drawers.
+@item
 @i{Thomas Baumann} contributed the code for links to the MH-E email
 system.
 @item
@@ -7054,7 +7379,9 @@
 @item
 @i{Sacha Chua} suggested to copy some linking code from Planner.
 @item
-@i{Eddward DeVilla} proposed and tested checkbox statistics.
+@i{Eddward DeVilla} proposed and tested checkbox statistics.  He also
+came up with the idea of properties, and that there should be an API for
+them.
 @item
 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
 inspired some of the early development, including HTML export.  He also
@@ -7078,6 +7405,9 @@
 @item
 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
 @item
+@i{Scott Jaderholm} proposed footnotes, control over whitespace between
+folded entries, and column view for properties.
+@item
 @i{Shidai Liu} ("Leo") asked for embedded LaTeX and tested it.  He also
 provided frequent feedback and some patches.
 @item