Carsten Dominik %!s(int64=17) %!d(string=hai) anos
pai
achega
49c42c816a
Modificáronse 6 ficheiros con 749 adicións e 574 borrados
  1. 327 293
      org
  2. 254 151
      org.el
  3. BIN=BIN
      org.pdf
  4. 164 127
      org.texi
  5. BIN=BIN
      orgcard.pdf
  6. 4 3
      orgcard.tex

+ 327 - 293
org

@@ -5,7 +5,7 @@ START-INFO-DIR-ENTRY
 * Org Mode: (org).      Outline-based notes management and organizer
 END-INFO-DIR-ENTRY
 
-   This manual is for Org-mode (version 4.69).
+   This manual is for Org-mode (version 4.70).
 
    Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation
 
@@ -27,7 +27,7 @@ File: org,  Node: Top,  Next: Introduction,  Prev: (dir),  Up: (dir)
 Org Mode Manual
 ***************
 
-This manual is for Org-mode (version 4.69).
+This manual is for Org-mode (version 4.70).
 
    Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation
 
@@ -138,8 +138,8 @@ Extended use of TODO keywords
 
 * Workflow states::             From TODO to DONE in steps
 * TODO types::                  I do this, Fred the rest
-* Per file keywords::           Different files, different requirements
 * Multiple sets in one file::   Mixing it all, and still finding your way
+* Per file keywords::           Different files, different requirements
 
 Timestamps
 
@@ -570,9 +570,9 @@ the visibility in the buffer.
 
 `C-c C-x b'
      Show the current subtree in an indirect buffer(3).  With numerical
-     prefix ARG, go up to this level and then take that tree.  If ARG
-     is negative, go up that many levels.  With `C-u' prefix, do not
-     remove the previously used indirect buffer.
+     prefix ARG, go up to this level and then take that tree.  If ARG is
+     negative, go up that many levels.  With `C-u' prefix, do not remove
+     the previously used indirect buffer.
 
    When Emacs first visits an Org-mode file, the global state is set to
 OVERVIEW, i.e. only the top level headlines are visible.  This can be
@@ -590,7 +590,7 @@ basis by adding one of the following lines anywhere in the buffer:
    (2) see the option `org-cycle-global-at-bob'.
 
    (3) The indirect buffer (*note Indirect Buffers: (emacs)Indirect
-Buffers.) will contain the entire buffer, but will be narrowed to the
+Buffers.)  will contain the entire buffer, but will be narrowed to the
 current tree.  Editing the indirect buffer will also change the
 original buffer, but without affecting visibility in that buffer.
 
@@ -2307,9 +2307,12 @@ The most important commands to work with TODO entries are:
 `C-c C-v'
      View TODO items in a _sparse tree_ (*note Sparse trees::).  Folds
      the entire buffer, but shows all TODO items and the headings
-     hierarchy above them.  With prefix arg, show also the DONE
-     entries.  With numerical prefix N, show the tree for the Nth
-     keyword in the variable `org-todo-keywords'.  
+     hierarchy above them.  With prefix arg, search for a specific
+     TODO.  You will be prompted for the keyword, and you can also give
+     a list of keywords like `kwd1|kwd2|...'.  With numerical prefix N,
+     show the tree for the Nth keyword in the variable
+     `org-todo-keywords'.  With two prefix args, find all TODO and DONE
+     entries.  
 
 `C-c a t'
      Show the global TODO list.  This collects the TODO items from all
@@ -2326,10 +2329,9 @@ File: org,  Node: TODO extensions,  Next: Priorities,  Prev: TODO basics,  Up: T
 =================================
 
 The default implementation of TODO entries is just two states: TODO and
-DONE.  You can, however, use the TODO feature for more complicated
-things by configuring the variables `org-todo-keywords' and
-`org-todo-interpretation'.  Using special setup, you can even use TODO
-keywords in different ways in different org files.
+DONE.  You can use the TODO feature for more complicated things by
+configuring the variable `org-todo-keywords'.  With special setup, the
+TODO keyword system can work differently in different files.
 
    Note that tags are another way to classify headlines in general and
 TODO items in particular (*note Tags::).
@@ -2338,8 +2340,8 @@ TODO items in particular (*note Tags::).
 
 * Workflow states::             From TODO to DONE in steps
 * TODO types::                  I do this, Fred the rest
-* Per file keywords::           Different files, different requirements
 * Multiple sets in one file::   Mixing it all, and still finding your way
+* Per file keywords::           Different files, different requirements
 
 
 File: org,  Node: Workflow states,  Next: TODO types,  Prev: TODO extensions,  Up: TODO extensions
@@ -2347,46 +2349,52 @@ File: org,  Node: Workflow states,  Next: TODO types,  Prev: TODO extensions,  U
 5.2.1 TODO keywords as workflow states
 --------------------------------------
 
-You can use TODO keywords to indicate different states in the process
-of working on an item, for example:
+You can use TODO keywords to indicate different _sequential_ states in
+the process of working on an item, for example(1):
 
-     (setq org-todo-keywords '("TODO" "FEEDBACK" "VERIFY" "DONE")
-           org-todo-interpretation 'sequence)
+     (setq org-todo-keywords
+       '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
+
+   The vertical bar separates the TODO keywords (states that _need
+action_) from the DONE states (which need _no further action_.  If you
+don't provide the separator bar, the last state is used as the DONE
+state.  With this setup, the command `C-c C-t' will cycle an entry from
+TODO to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED.
+You may also use a prefix argument to quickly select a specific state.
+For example `C-3 C-c C-t' will change the state immediately to VERIFY.
+If you define many keywords, you can use in-buffer completion (see
+*Note Completion::) to insert these words into the buffer.  Changing a
+todo state can be logged with a timestamp, see *Note Tracking TODO
+state changes:: for more information.
+
+   ---------- Footnotes ----------
 
-   Changing these variables only becomes effective in a new Emacs
-session.  With this setup, the command `C-c C-t' will cycle an entry
-from TODO to FEEDBACK, then to VERIFY, and finally to DONE.  You may
-also use a prefix argument to quickly select a specific state.  For
-example `C-3 C-c C-t' will change the state immediately to VERIFY.  If
-you define many keywords, you can use in-buffer completion (see *Note
-Completion::) to insert these words into the buffer.  Changing a todo
-state can be logged with a timestamp, see *Note Tracking TODO state
-changes:: for more information.
+   (1) Changing this variable only becomes effective after restarting
+Org-mode in a buffer.
 
 
-File: org,  Node: TODO types,  Next: Per file keywords,  Prev: Workflow states,  Up: TODO extensions
+File: org,  Node: TODO types,  Next: Multiple sets in one file,  Prev: Workflow states,  Up: TODO extensions
 
 5.2.2 TODO keywords as types
 ----------------------------
 
 The second possibility is to use TODO keywords to indicate different
-types of action items.  For example, you might want to indicate that
-items are for "work" or "home".  If you are into David Allen's _Getting
-Things DONE_, you might want to use todo types `NEXTACTION', `WAITING',
-`MAYBE'.  Or, when you work with several people on a single project,
-you might want to assign action items directly to persons, by using
-their names as TODO keywords.  This would be set up like this:
+_types_ of action items.  For example, you might want to indicate that
+items are for "work" or "home".  Or, when you work with several people
+on a single project, you might want to assign action items directly to
+persons, by using their names as TODO keywords.  This would be set up
+like this:
 
-     (setq org-todo-keywords '("Fred" "Sara" "Lucy" "Mike" "DONE")
-           org-todo-interpretation 'type)
+     (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
 
    In this case, different keywords do not indicate a sequence, but
-rather different types.  So it is normally not useful to change from
-one type to another.  Therefore, in this case the behavior of the
-command `C-c C-t' is changed slightly(1).  When used several times in
-succession, it will still cycle through all names.  But when you return
+rather different types.  So the normal work flow would be to assign a
+task to a person, and later to mark it DONE.  Org-mode supports this
+style by adapting the workings of the command `C-c C-t'(1).  When used
+several times in succession, it will still cycle through all names, in
+order to first select the right type for a task.  But when you return
 to the item after some time and execute `C-c C-t' again, it will switch
-from each name directly to DONE.  Use prefix arguments or completion to
+from any name directly to DONE.  Use prefix arguments or completion to
 quickly select a specific name.  You can also review the items of a
 specific TODO type in a sparse tree by using a numeric prefix to `C-c
 C-v'.  For example, to see all things Lucy has to do, you would use
@@ -2400,26 +2408,70 @@ global todo list: `C-3 C-c t'.
 buffers.
 
 
-File: org,  Node: Per file keywords,  Next: Multiple sets in one file,  Prev: TODO types,  Up: TODO extensions
+File: org,  Node: Multiple sets in one file,  Next: Per file keywords,  Prev: TODO types,  Up: TODO extensions
+
+5.2.3 Multiple keyword sets in one file
+---------------------------------------
 
-5.2.3 Setting up TODO keywords for individual files
----------------------------------------------------
+Sometimes you may want to use different sets of TODO keywords in
+parallel.  For example, you may want to have the basic `TODO'/`DONE',
+but also a workflow for bug fixing, and a separate state indicating
+that an item has been canceled (so it is not DONE, but also does not
+require action).  Your setup would then look like this:
+
+     (setq org-todo-keywords
+           '((sequence "TODO" "|" "DONE")
+             (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
+             (sequence "|" "CANCELED")))
+
+   The keywords should all be different, this helps Org-mode to keep
+track of which subsequence should be used for a given entry.  In this
+setup, `C-c C-t' only operates within a subsequence, so it switches from
+`DONE' to (nothing) to `TODO', and from `FIXED' to (nothing) to
+`REPORT'.  Therefore you need a mechanism to initially select the
+correct sequence.  Besides the obvious ways like typing a keyword or
+using completion, you may also apply the following commands:
+
+`C-S-<right>'
+`C-S-<left>'
+     These keys jump from one TODO subset to the next.  In the above
+     example, `C-S-<right>' would jump from `TODO' or `DONE' to
+     `REPORT', and any of the words in the second row to `CANCELED'.  
+
+`S-<right>'
+`S-<left>'
+     `S-<<left>>' and `S-<<right>>' and walk through _all_ keywords
+     from all sets, so for example `S-<<right>>' would switch from
+     `DONE' to `REPORT' in the example above.
+
+
+File: org,  Node: Per file keywords,  Prev: Multiple sets in one file,  Up: TODO extensions
+
+5.2.4 Setting up keywords for individual files
+----------------------------------------------
 
 It can be very useful to use different aspects of the TODO mechanism in
-different files, which is not possible with the global settings
-described above.  For file-local settings, you need to add special
-lines to the file which set the keywords and interpretation for that
-file only.  For example, to set one of the two examples discussed
-above, you need one of the following lines, starting in column zero
-anywhere in the file:
+different files.  For file-local settings, you need to add special lines
+to the file which set the keywords and interpretation for that file
+only.  For example, to set one of the two examples discussed above, you
+need one of the following lines, starting in column zero anywhere in the
+file:
+
+     #+SEQ_TODO: TODO FEEDBACK VERIFY | DONE CANCELED
+   or
+     #+TYP_TODO: Fred Sara Lucy Mike | DONE
 
-     #+SEQ_TODO: TODO FEEDBACK VERIFY DONE
-     #+TYP_TODO: Fred Sara Lucy Mike DONE
+   A setup for using several sets in parallel would be:
+
+     #+SEQ_TODO: "TODO" "|" "DONE"
+     #+SEQ_TODO: "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED"
+     #+SEQ_TODO: "|" "CANCELED"
 
 To make sure you are using the correct keyword, type `#+' into the
 buffer and then use `M-<TAB>' completion.
 
-   Remember that the last keyword must always mean that the item is DONE
+   Remember that the keywords after the vertical bar (or the last
+keyword if no bar is there) must always mean that the item is DONE
 (although you may use a different word).  After changing one of these
 lines, use `C-c C-c' with the cursor still in the line to make the
 changes known to Org-mode(1).
@@ -2430,40 +2482,6 @@ changes known to Org-mode(1).
 after visiting a file.  `C-c C-c' with the cursor in a line starting
 with `#+' is simply restarting Org-mode for the current buffer.
 
-
-File: org,  Node: Multiple sets in one file,  Prev: Per file keywords,  Up: TODO extensions
-
-5.2.4 Multiple TODO keyword sets in one file
---------------------------------------------
-
-Sometimes you may want to use different sets of TODO keywords in the
-same file.  For example, you may want to have the basic `TODO'/`DONE',
-but also a workflow for bug fixing.  Your setup would then look like
-this:
-
-     #+SEQ_TODO: TODO DONE
-     #+SEQ_TODO: REPORT BUG KNOWNCAUSE RESOLVED
-
-   The keywords should all be different, this helps Org-mode to keep
-track of which subsequence should be used for a given entry.  In this
-setup, `C-c C-t' only operates within a subsequence, so it switches from
-`DONE' to (nothing) to `TODO', and from `RESOLVED' to (nothing) to
-`REPORT'.  Therefore you need a mechanism to initially select the
-correct sequence.  Besides the obvious ways like typing a keyword or
-using completion, you may also apply the following commands:
-
-`S-<right>'
-`S-<left>'
-     `S-<<left>>' and `S-<<right>>' and walk through all keywords from
-     all sets, so for example `S-<<right>>' would switch from `DONE' to
-     `REPORT' in the example above.  
-
-`C-S-<right>'
-`C-S-<left>'
-     These key jump from one TODO subset to the next.  So `C-S-<right>'
-     would jump from `TODO' to `REPORT' and from `KNOWNCAUSE' to `TODO'
-     in the above example.
-
 
 File: org,  Node: Priorities,  Next: Breaking down tasks,  Prev: TODO extensions,  Up: TODO items
 
@@ -3509,13 +3527,14 @@ collected into a single place.
 `C-c a T'
      Like the above, but allows selection of a specific TODO keyword.
      You can also do this by specifying a prefix argument to `C-c a t'.
-     With a `C-u' prefix you are prompted for a keyword.  With a
-     numeric prefix, the Nth keyword in `org-todo-keywords' is selected.  The
-     `r' key in the agenda buffer regenerates it, and you can give a
-     prefix argument to this command to change the selected TODO
-     keyword, for example `3 r'.  If you often need a search for a
-     specific keyword, define a custom command for it (*note Agenda
-     dispatcher::).
+     With a `C-u' prefix you are prompted for a keyword, and you may
+     also specify several keywords by separating them with `|' as
+     boolean OR operator.  With a numeric prefix, the Nth keyword in
+     `org-todo-keywords' is selected.  The `r' key in the agenda buffer
+     regenerates it, and you can give a prefix argument to this command
+     to change the selected TODO keyword, for example `3 r'.  If you
+     often need a search for a specific keyword, define a custom
+     command for it (*note Agenda dispatcher::).
      Matching specific TODO keywords can also be done as part of a tags
      search (*note Tag searches::).
 
@@ -4449,9 +4468,14 @@ File: org,  Node: Export commands,  Next: Quoting HTML tags,  Prev: HTML export,
 `C-c C-e b'
      Export as HTML file and open it with a browser.  
 
+`C-c C-e H'
+     Export to a temporary buffer, do not create a file.  
+
 `C-c C-e v h'
 
 `C-c C-e v b'
+
+`C-c C-e v H'
      Export only the visible part of the document.
 
    In the exported version, the first 3 outline levels will become
@@ -4648,22 +4672,23 @@ File: org,  Node: Initial text,  Next: Enhancing text,  Prev: Comment lines,  Up
 -------------------------------------
 
 Org-mode normally ignores any text before the first headline when
-exporting, because this region is often used for internal links to speed
-up navigation etc.  However, there are occasions when you might want to
-have some text before the first headline, like a small intorduction,
-special HTML code with a navigation bar, etc.  You can ask to have this
-part of the file exported as well by setting the variable
+exporting, leaving this region for internal links to speed up navigation
+etc.  However, in publishing-oriented files, you might want to have some
+text before the first headline, like a small introduction, special HTML
+code with a navigation bar, etc.  You can ask to have this part of the
+file exported as well by setting the variable
 `org-export-skip-text-before-1st-heading' to `nil'.  On a per-file
 basis, you can get the same effect with
 
      #+OPTIONS: skip:nil
 
    The text before the first headline will be fully processed (*note
-Enhancing text::).  If you need to include literal HTML, use the
-special constructs described in *Note Quoting HTML tags::.  The table of
-contents is normally inserted directly before the first headline of the
-file.  If you would like to get it to a different location, insert the
-string `[TABLE-OF-CONTENTS]' on a line by itself at the desired
+Enhancing text::), and the first non-comment line becomes the title of
+the exported document.  If you need to include literal HTML, use the
+special constructs described in *Note Quoting HTML tags::.  The table
+of contents is normally inserted directly before the first headline of
+the file.  If you would like to get it to a different location, insert
+the string `[TABLE-OF-CONTENTS]' on a line by itself at the desired
 location.
 
    Finally, if you want to use the space before the first headline for
@@ -4692,7 +4717,7 @@ formatted output.
      supports lists.  See *Note Plain lists::.
 
    * You can make words *bold*, /italic/, _underlined_, `=code=', and
-     `+strikethrough+'.
+     even `+strikethrough+'(1).
 
    * A line consisting of only dashes, and at least 5 of them, will be
      exported as a horizontal line (`<hr/>' in HTML).
@@ -4719,6 +4744,11 @@ they can all be turned off with corresponding variables.  See the
 customization group `org-export-general', and the following section
 which explains how to set export options with special lines in a buffer.
 
+   ---------- Footnotes ----------
+
+   (1) but remember that strikethrough is typographically evil and
+should never be used.
+
 
 File: org,  Node: Export options,  Prev: Enhancing text,  Up: Text interpretation
 
@@ -5414,14 +5444,14 @@ Default     Alternative 1  Alternative 2
 `S-<RET>'   `C-c C-x c'    
 `M-<RET>'   `C-c C-x m'    `<Esc> <RET>'
 `M-S-<RET>' `C-c C-x M'    
-`S-<left>'  `C-c C-x       
+`S-<left>'  `C-c <left>'   
+`S-<right>' `C-c <right>'  
+`S-<up>'    `C-c <up>'     
+`S-<down>'  `C-c <down>'   
+`C-S-<left>'`C-c C-x       
             <left>'        
-`S-<right>' `C-c C-x       
+`C-S-<right>'`C-c C-x       
             <right>'       
-`S-<up>'    `C-c C-x       
-            <up>'          
-`S-<down>'  `C-c C-x       
-            <down>'        
 
 
 File: org,  Node: Interaction,  Next: Bugs,  Prev: TTY keys,  Up: Miscellaneous
@@ -6208,12 +6238,12 @@ Index
 * completion, of links:                  Handling links.      (line  25)
 * completion, of option keywords <1>:    Completion.          (line   6)
 * completion, of option keywords <2>:    Export options.      (line   6)
-* completion, of option keywords:        Per file keywords.   (line  17)
+* completion, of option keywords:        Per file keywords.   (line  23)
 * completion, of tags <1>:               Completion.          (line   6)
 * completion, of tags:                   Setting tags.        (line  11)
 * completion, of TeX symbols:            Completion.          (line   6)
 * completion, of TODO keywords <1>:      Completion.          (line   6)
-* completion, of TODO keywords:          Workflow states.     (line  12)
+* completion, of TODO keywords:          Workflow states.     (line  15)
 * constants, in calculations:            References.          (line  82)
 * constants.el:                          Cooperation.         (line  14)
 * constcgs, STARTUP keyword:             In-buffer settings.  (line  52)
@@ -6251,7 +6281,7 @@ Index
 * dispatching agenda commands:           Agenda dispatcher.   (line   6)
 * display changing, in agenda:           Agenda commands.     (line  65)
 * document structure:                    Document structure.  (line   6)
-* DONE, final TODO keyword:              Per file keywords.   (line  20)
+* DONE, final TODO keyword:              Per file keywords.   (line  26)
 * dynamic blocks:                        Dynamic blocks.      (line   6)
 * editing tables:                        Tables.              (line   6)
 * editing, of table formulas:            Editing and debugging formulas.
@@ -6303,7 +6333,7 @@ Index
 * GNUS links:                            External links.      (line   6)
 * hand-formatted lists:                  Enhancing text.      (line  11)
 * headline levels:                       Export options.      (line  25)
-* headline levels, for exporting <1>:    Export commands.     (line  17)
+* headline levels, for exporting <1>:    Export commands.     (line  22)
 * headline levels, for exporting:        ASCII export.        (line  18)
 * headline navigation:                   Motion.              (line   6)
 * headline tagging:                      Tags.                (line   6)
@@ -6475,7 +6505,7 @@ Index
 * structure editing:                     Structure editing.   (line   6)
 * structure of document:                 Document structure.  (line   6)
 * sublevels, inclusion into tags match:  Tag inheritance.     (line   6)
-* sublevels, inclusion into todo list:   Global TODO list.    (line  33)
+* sublevels, inclusion into todo list:   Global TODO list.    (line  34)
 * subscript:                             Subscripts and Superscripts.
                                                               (line   6)
 * subtree cycling:                       Visibility cycling.  (line  10)
@@ -6667,7 +6697,7 @@ Key Index
 * C-c a m:                               Tag searches.        (line  12)
 * C-c a T:                               Global TODO list.    (line  14)
 * C-c a t <1>:                           Global TODO list.    (line   9)
-* C-c a t:                               TODO basics.         (line  33)
+* C-c a t:                               TODO basics.         (line  36)
 * C-c C-a:                               Visibility cycling.  (line  33)
 * C-c C-b:                               Motion.              (line  15)
 * C-c C-c <1>:                           Cooperation.         (line  37)
@@ -6688,6 +6718,7 @@ Key Index
 * C-c C-e a:                             ASCII export.        (line   9)
 * C-c C-e b:                             Export commands.     (line   7)
 * C-c C-e c:                             iCalendar export.    (line  21)
+* C-c C-e H:                             Export commands.     (line  10)
 * C-c C-e h:                             Export commands.     (line   6)
 * C-c C-e I:                             iCalendar export.    (line  16)
 * C-c C-e i:                             iCalendar export.    (line  14)
@@ -6695,8 +6726,9 @@ Key Index
 * C-c C-e v <1>:                         XOXO export.         (line  11)
 * C-c C-e v:                             Sparse trees.        (line  41)
 * C-c C-e v a:                           ASCII export.        (line  13)
-* C-c C-e v b:                           Export commands.     (line  10)
-* C-c C-e v h:                           Export commands.     (line  10)
+* C-c C-e v b:                           Export commands.     (line  13)
+* C-c C-e v H:                           Export commands.     (line  13)
+* C-c C-e v h:                           Export commands.     (line  13)
 * C-c C-e x:                             XOXO export.         (line  10)
 * C-c C-f:                               Motion.              (line  12)
 * C-c C-j:                               Motion.              (line  21)
@@ -6758,9 +6790,9 @@ Key Index
 * C-c ~:                                 Cooperation.         (line  48)
 * C-k:                                   Agenda commands.     (line 115)
 * C-S-<left>:                            Multiple sets in one file.
-                                                              (line  26)
+                                                              (line  25)
 * C-S-<right>:                           Multiple sets in one file.
-                                                              (line  26)
+                                                              (line  25)
 * C-TAB:                                 ARCHIVE tag.         (line  38)
 * C-u C-c *:                             Updating the table.  (line  16)
 * C-u C-c .:                             Creating timestamps. (line  14)
@@ -6802,7 +6834,7 @@ Key Index
 * M-<right>:                             Structure editing.   (line  24)
 * M-<TAB> <1>:                           Completion.          (line  10)
 * M-<TAB> <2>:                           Setting tags.        (line   6)
-* M-<TAB> <3>:                           Per file keywords.   (line  17)
+* M-<TAB> <3>:                           Per file keywords.   (line  23)
 * M-<TAB>:                               Editing and debugging formulas.
                                                               (line  64)
 * M-<up> <1>:                            Editing and debugging formulas.
@@ -6851,7 +6883,7 @@ Key Index
 * p:                                     Agenda commands.     (line  20)
 * q:                                     Agenda commands.     (line 227)
 * r <1>:                                 Agenda commands.     (line  80)
-* r:                                     Global TODO list.    (line  20)
+* r:                                     Global TODO list.    (line  22)
 * S:                                     Agenda commands.     (line 206)
 * s:                                     Agenda commands.     (line  87)
 * S-<down> <1>:                          Agenda commands.     (line 149)
@@ -6867,7 +6899,7 @@ Key Index
                                                               (line  42)
 * S-<left> <3>:                          Creating timestamps. (line  51)
 * S-<left> <4>:                          Multiple sets in one file.
-                                                              (line  22)
+                                                              (line  29)
 * S-<left> <5>:                          TODO basics.         (line  20)
 * S-<left>:                              Editing and debugging formulas.
                                                               (line  67)
@@ -6878,7 +6910,7 @@ Key Index
                                                               (line  39)
 * S-<right> <3>:                         Creating timestamps. (line  51)
 * S-<right> <4>:                         Multiple sets in one file.
-                                                              (line  22)
+                                                              (line  29)
 * S-<right> <5>:                         TODO basics.         (line  20)
 * S-<right>:                             Editing and debugging formulas.
                                                               (line  67)
@@ -6915,172 +6947,174 @@ Node: Visibility cycling21720
 Ref: Visibility cycling-Footnote-123934
 Ref: Visibility cycling-Footnote-223992
 Ref: Visibility cycling-Footnote-324042
-Node: Motion24311
-Node: Structure editing25095
-Node: Archiving27921
-Node: ARCHIVE tag28479
-Node: Moving subtrees30272
-Node: Sparse trees31583
-Ref: Sparse trees-Footnote-133715
-Ref: Sparse trees-Footnote-233897
-Node: Plain lists34012
-Ref: Plain lists-Footnote-137781
-Ref: Plain lists-Footnote-238139
-Node: Tables38323
-Node: Built-in table editor38837
-Node: Narrow columns45856
-Ref: Narrow columns-Footnote-147789
-Node: orgtbl-mode47835
-Node: The spreadsheet48639
-Node: References49726
-Ref: References-Footnote-153855
-Node: Formula syntax for Calc54144
-Node: Formula syntax for Lisp56610
-Node: Field formulas57879
-Node: Column formulas59187
-Node: Editing and debugging formulas60786
-Node: Updating the table64939
-Node: Advanced features65974
-Node: Hyperlinks70499
-Node: Link format71272
-Node: Internal links72565
-Ref: Internal links-Footnote-174490
-Node: Radio targets74622
-Node: External links75313
-Node: Handling links77717
-Ref: Handling links-Footnote-182827
-Ref: Handling links-Footnote-283064
-Node: Link abbreviations83138
-Node: Search options84817
-Ref: Search options-Footnote-186597
-Node: Custom searches86678
-Node: Remember87726
-Node: Setting up remember88713
-Node: Remember templates89295
-Ref: Remember templates-Footnote-192609
-Node: Storing notes92707
-Node: TODO items94515
-Node: TODO basics95498
-Node: TODO extensions97025
-Node: Workflow states97894
-Node: TODO types98879
-Ref: TODO types-Footnote-1100537
-Node: Per file keywords100619
-Ref: Per file keywords-Footnote-1101740
-Node: Multiple sets in one file101941
-Node: Priorities103299
-Node: Breaking down tasks104545
-Ref: Breaking down tasks-Footnote-1105065
-Node: Checkboxes105161
-Node: Timestamps107916
-Node: Time stamps108450
-Ref: Time stamps-Footnote-1111944
-Ref: Time stamps-Footnote-2112060
-Node: Creating timestamps112215
-Node: The date/time prompt114873
-Ref: The date/time prompt-Footnote-1116834
-Node: Custom time format116940
-Node: Repeating items118498
-Node: Progress logging120308
-Node: Closing items120954
-Ref: Closing items-Footnote-1121888
-Ref: Closing items-Footnote-2121957
-Node: Tracking TODO state changes122030
-Node: Clocking work time122886
-Ref: Clocking work time-Footnote-1126532
-Ref: Clocking work time-Footnote-2126610
-Node: Tags126736
-Node: Tag inheritance127498
-Node: Setting tags128435
-Ref: Setting tags-Footnote-1132958
-Ref: Setting tags-Footnote-2133070
-Node: Tag searches133153
-Node: Agenda views135864
-Node: Agenda files137809
-Ref: Agenda files-Footnote-1138775
-Ref: Agenda files-Footnote-2138924
-Node: Agenda dispatcher139117
-Node: Built-in agenda views140808
-Node: Weekly/Daily agenda141386
-Node: Global TODO list143515
-Node: Matching headline tags145688
-Node: Timeline146759
-Node: Stuck projects147425
-Node: Presentation and sorting149124
-Node: Categories149915
-Node: Time-of-day specifications150579
-Node: Sorting of agenda items152550
-Node: Agenda commands153832
-Node: Custom agenda views160561
-Node: Storing searches161236
-Node: Block agenda163148
-Node: Setting Options164378
-Node: Batch processing167090
-Node: Embedded LaTeX168220
-Ref: Embedded LaTeX-Footnote-1169312
-Node: Math symbols169502
-Node: Subscripts and Superscripts170267
-Node: LaTeX fragments171111
-Ref: LaTeX fragments-Footnote-1173219
-Node: Processing LaTeX fragments173481
-Node: CDLaTeX mode174427
-Ref: CDLaTeX mode-Footnote-1176911
-Node: Exporting177059
-Node: ASCII export178373
-Node: HTML export179663
-Node: Export commands180282
-Node: Quoting HTML tags181006
-Node: Links181636
-Node: Images182333
-Ref: Images-Footnote-1183204
-Node: CSS support183265
-Ref: CSS support-Footnote-1184584
-Node: XOXO export184697
-Node: iCalendar export185136
-Node: Text interpretation186355
-Node: Comment lines186897
-Node: Initial text187292
-Node: Enhancing text188900
-Node: Export options190718
-Node: Publishing192611
-Ref: Publishing-Footnote-1193407
-Node: Configuration193603
-Node: Project alist194321
-Node: Sources and destinations195387
-Node: Selecting files196117
-Node: Publishing action196865
-Node: Publishing options198098
-Node: Publishing links200250
-Node: Project page index201763
-Node: Sample configuration202541
-Node: Simple example203033
-Node: Complex example203706
-Node: Triggering publication205782
-Node: Miscellaneous206467
-Node: Completion207101
-Node: Customization208572
-Node: In-buffer settings209155
-Node: The very busy C-c C-c key213632
-Node: Clean view215276
-Node: TTY keys217853
-Node: Interaction219462
-Node: Cooperation219859
-Node: Conflicts222601
-Node: Bugs224193
-Node: Extensions and Hacking225689
-Node: Extensions226285
-Node: Tables in arbitrary syntax228232
-Node: Radio tables229309
-Node: A LaTeX example231812
-Ref: A LaTeX example-Footnote-1235458
-Ref: A LaTeX example-Footnote-2235606
-Node: Translator functions236041
-Ref: Translator functions-Footnote-1239150
-Node: Dynamic blocks239238
-Node: Special agenda views241210
-Ref: Special agenda views-Footnote-1243489
-Node: History and Acknowledgments243749
-Node: Index249609
-Node: Key Index280590
+Node: Motion24312
+Node: Structure editing25096
+Node: Archiving27922
+Node: ARCHIVE tag28480
+Node: Moving subtrees30273
+Node: Sparse trees31584
+Ref: Sparse trees-Footnote-133716
+Ref: Sparse trees-Footnote-233898
+Node: Plain lists34013
+Ref: Plain lists-Footnote-137782
+Ref: Plain lists-Footnote-238140
+Node: Tables38324
+Node: Built-in table editor38838
+Node: Narrow columns45857
+Ref: Narrow columns-Footnote-147790
+Node: orgtbl-mode47836
+Node: The spreadsheet48640
+Node: References49727
+Ref: References-Footnote-153856
+Node: Formula syntax for Calc54145
+Node: Formula syntax for Lisp56611
+Node: Field formulas57880
+Node: Column formulas59188
+Node: Editing and debugging formulas60787
+Node: Updating the table64940
+Node: Advanced features65975
+Node: Hyperlinks70500
+Node: Link format71273
+Node: Internal links72566
+Ref: Internal links-Footnote-174491
+Node: Radio targets74623
+Node: External links75314
+Node: Handling links77718
+Ref: Handling links-Footnote-182828
+Ref: Handling links-Footnote-283065
+Node: Link abbreviations83139
+Node: Search options84818
+Ref: Search options-Footnote-186598
+Node: Custom searches86679
+Node: Remember87727
+Node: Setting up remember88714
+Node: Remember templates89296
+Ref: Remember templates-Footnote-192610
+Node: Storing notes92708
+Node: TODO items94516
+Node: TODO basics95499
+Node: TODO extensions97198
+Node: Workflow states98017
+Ref: Workflow states-Footnote-199192
+Node: TODO types99285
+Ref: TODO types-Footnote-1100868
+Node: Multiple sets in one file100950
+Node: Per file keywords102561
+Ref: Per file keywords-Footnote-1103850
+Node: Priorities104051
+Node: Breaking down tasks105297
+Ref: Breaking down tasks-Footnote-1105817
+Node: Checkboxes105913
+Node: Timestamps108668
+Node: Time stamps109202
+Ref: Time stamps-Footnote-1112696
+Ref: Time stamps-Footnote-2112812
+Node: Creating timestamps112967
+Node: The date/time prompt115625
+Ref: The date/time prompt-Footnote-1117586
+Node: Custom time format117692
+Node: Repeating items119250
+Node: Progress logging121060
+Node: Closing items121706
+Ref: Closing items-Footnote-1122640
+Ref: Closing items-Footnote-2122709
+Node: Tracking TODO state changes122782
+Node: Clocking work time123638
+Ref: Clocking work time-Footnote-1127284
+Ref: Clocking work time-Footnote-2127362
+Node: Tags127488
+Node: Tag inheritance128250
+Node: Setting tags129187
+Ref: Setting tags-Footnote-1133710
+Ref: Setting tags-Footnote-2133822
+Node: Tag searches133905
+Node: Agenda views136616
+Node: Agenda files138561
+Ref: Agenda files-Footnote-1139527
+Ref: Agenda files-Footnote-2139676
+Node: Agenda dispatcher139869
+Node: Built-in agenda views141560
+Node: Weekly/Daily agenda142138
+Node: Global TODO list144267
+Node: Matching headline tags146539
+Node: Timeline147610
+Node: Stuck projects148276
+Node: Presentation and sorting149975
+Node: Categories150766
+Node: Time-of-day specifications151430
+Node: Sorting of agenda items153401
+Node: Agenda commands154683
+Node: Custom agenda views161412
+Node: Storing searches162087
+Node: Block agenda163999
+Node: Setting Options165229
+Node: Batch processing167941
+Node: Embedded LaTeX169071
+Ref: Embedded LaTeX-Footnote-1170163
+Node: Math symbols170353
+Node: Subscripts and Superscripts171118
+Node: LaTeX fragments171962
+Ref: LaTeX fragments-Footnote-1174070
+Node: Processing LaTeX fragments174332
+Node: CDLaTeX mode175278
+Ref: CDLaTeX mode-Footnote-1177762
+Node: Exporting177910
+Node: ASCII export179224
+Node: HTML export180514
+Node: Export commands181133
+Node: Quoting HTML tags181944
+Node: Links182574
+Node: Images183271
+Ref: Images-Footnote-1184142
+Node: CSS support184203
+Ref: CSS support-Footnote-1185522
+Node: XOXO export185635
+Node: iCalendar export186074
+Node: Text interpretation187293
+Node: Comment lines187835
+Node: Initial text188230
+Node: Enhancing text189904
+Ref: Enhancing text-Footnote-1191766
+Node: Export options191856
+Node: Publishing193749
+Ref: Publishing-Footnote-1194545
+Node: Configuration194741
+Node: Project alist195459
+Node: Sources and destinations196525
+Node: Selecting files197255
+Node: Publishing action198003
+Node: Publishing options199236
+Node: Publishing links201388
+Node: Project page index202901
+Node: Sample configuration203679
+Node: Simple example204171
+Node: Complex example204844
+Node: Triggering publication206920
+Node: Miscellaneous207605
+Node: Completion208239
+Node: Customization209710
+Node: In-buffer settings210293
+Node: The very busy C-c C-c key214770
+Node: Clean view216414
+Node: TTY keys218991
+Node: Interaction220601
+Node: Cooperation220998
+Node: Conflicts223740
+Node: Bugs225332
+Node: Extensions and Hacking226828
+Node: Extensions227424
+Node: Tables in arbitrary syntax229371
+Node: Radio tables230448
+Node: A LaTeX example232951
+Ref: A LaTeX example-Footnote-1236597
+Ref: A LaTeX example-Footnote-2236745
+Node: Translator functions237180
+Ref: Translator functions-Footnote-1240289
+Node: Dynamic blocks240377
+Node: Special agenda views242349
+Ref: Special agenda views-Footnote-1244628
+Node: History and Acknowledgments244888
+Node: Index250748
+Node: Key Index281729
 
 End Tag Table

+ 254 - 151
org.el

@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 4.69a
+;; Version: 4.70
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -83,7 +83,7 @@
 
 ;;; Version
 
-(defconst org-version "4.69a"
+(defconst org-version "4.70"
   "The version number of the file org.el.")
 (defun org-version ()
   (interactive)
@@ -1329,23 +1329,45 @@ When nil, new notes will be filed to the end of a file or entry."
   :tag "Org Progress"
   :group 'org-time)
 
-(defcustom org-todo-keywords '("TODO" "DONE")
-  "List of TODO entry keywords.
-\\<org-mode-map>By default, this is '(\"TODO\" \"DONE\").  The last entry in the list is
-considered to mean that the entry is \"done\".  All the other mean that
-action is required, and will make the entry show up in todo lists, diaries
-etc.
-The command \\[org-todo] cycles an entry through these states, and an
+(defcustom org-todo-keywords '((sequence "TODO" "DONE"))
+  "List of TODO entry keyword sequences and their interpretation.
+\\<org-mode-map>This is a list of sequences.
+
+Each sequence starts with a symbol, either `sequence' or `type',
+indicating if the keywords should be interpreted as a sequence of
+action steps, or as different types of TODO items.  The first
+keywords are states requiring action - these states will select a headline
+for inclusion into the global TODO list Org-mode produces.  If one of
+the \"keywords\" is the vertical bat \"|\" the remaining keywords
+signify that no further action is necessary.  If \"|\" is not found,
+the last keyword is treated as the only DONE state of the sequence.
+
+The command \\[org-todo] cycles an entry through these states, and one
 additional state where no keyword is present.  For details about this
-cycling, see also the variable `org-todo-interpretation'
-Changes become only effective after restarting Emacs.
+cycling, see the manual.
 
 TODO keywords and interpretation can also be set on a per-file basis with
-the special #+SEQ_TODO and #+TYP_TODO lines."
+the special #+SEQ_TODO and #+TYP_TODO lines.
+
+For backward compatibility, this variable may also be just a list
+of keywords - in this case the interptetation (sequence or type) will be
+taken from the (otherwise obsolete) variable `org-todo-interpretation'."
   :group 'org-todo
   :group 'org-keywords
-  :type '(repeat (string :tag "Keyword")))
-
+  :type '(choice
+	  (repeat :tag "Old syntax, just keywords"
+		  (string :tag "Keyword"))
+	  (repeat :tag "New syntax"
+		  (cons
+		   (choice
+		    :tag "Interpretation"
+		    (const :tag "Sequence (cycling hits every state)" sequence)
+		    (const :tag "Type     (cycling directly to DONE)" type))
+		   (repeat
+		    (string :tag "Keyword"))))))
+
+(defvar org-todo-keywords-1 nil)
+(make-variable-buffer-local 'org-todo-keywords-1)
 (defvar org-not-done-keywords nil)
 (make-variable-buffer-local 'org-not-done-keywords)
 (defvar org-done-keywords nil)
@@ -1359,17 +1381,10 @@ the special #+SEQ_TODO and #+TYP_TODO lines."
 
 (defcustom org-todo-interpretation 'sequence
   "Controls how TODO keywords are interpreted.
-This variable is only relevant if `org-todo-keywords' contains more than two
-states.  \\<org-mode-map>Possible values are `sequence' and `type'.
-
-When `sequence', \\[org-todo] will always switch to the next state in the
-`org-todo-keywords' list. When `type', \\[org-todo] only cycles from state
-to state when executed several times in direct succession.  Otherwise, it
-switches directly to DONE from any state.
-See the manual for more information.
-
-TODO keywords and interpretation can also be set on a per-file basis with
-the special #+SEQ_TODO and #+TYP_TODO lines."
+This variable is in principle obsolete and is only used for
+backward compatibility, if the interpretation of todo keywords is
+not given already in `org-todo-keywords'.  See that variable for
+more information."
   :group 'org-todo
   :group 'org-keywords
   :type '(choice (const sequence)
@@ -1694,7 +1709,7 @@ forth between agenda and calendar."
  :tag "Org Agenda Custom Commands"
  :group 'org-agenda)
 
-(defcustom org-agenda-custom-commands '(("w" todo "WAITING"))
+(defcustom org-agenda-custom-commands nil
   "Custom commands for the agenda.
 These commands will be offered on the splash screen displayed by the
 agenda dispatcher \\[org-agenda].  Each entry is a list like this:
@@ -2942,15 +2957,6 @@ color of the frame."
   "Face for deadlines and TODO keywords."
   :group 'org-faces)
 
-(defface org-headline-done ;; font-lock-string-face
-  (org-compatible-face
-   '((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
-     (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
-     (((class color) (min-colors 8)  (background light)) (:bold nil))))
-  "Face used to indicate that a headline is DONE.
-This face is only used if `org-fontify-done-headline' is set."
-  :group 'org-faces)
-
 (defface org-archived    ; similar to shadow
   (org-compatible-face
    '((((class color grayscale) (min-colors 88) (background light))
@@ -2999,7 +3005,17 @@ This face is only used if `org-fontify-done-headline' is set."
      (((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen" :bold t))
      (((class color) (min-colors 8)) (:foreground "green"))
      (t (:bold t))))
-  "Face used for DONE."
+  "Face used for todo keywords that indicate DONE items."
+  :group 'org-faces)
+
+(defface org-headline-done ;; font-lock-string-face
+  (org-compatible-face
+   '((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
+     (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
+     (((class color) (min-colors 8)  (background light)) (:bold nil))))
+  "Face used to indicate that a headline is DONE.
+This face is only used if `org-fontify-done-headline' is set.  If applies
+to the part of the headline after the DONE keyword."
   :group 'org-faces)
 
 (defface org-table ;; font-lock-function-name-face
@@ -3197,7 +3213,7 @@ means to push this value onto the list in the variable.")
   "Precompute regular expressions for current buffer."
   (when (org-mode-p)
     (org-set-local 'org-todo-kwd-alist nil)
-    (org-set-local 'org-todo-keywords nil)
+    (org-set-local 'org-todo-keywords-1 nil)
     (org-set-local 'org-done-keywords nil)
     (org-set-local 'org-todo-heads nil)
     (org-set-local 'org-todo-sets nil)
@@ -3205,7 +3221,7 @@ means to push this value onto the list in the variable.")
 	       '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO"
 		 "STARTUP" "ARCHIVE" "TAGS" "LINK")))
 	  (splitre "[ \t]+")
-	  kwds int key value cat arch tags links hw dw)
+	  kwds key value cat arch tags links hw dws tail sep kws1)
       (save-excursion
 	(save-restriction
 	  (widen)
@@ -3218,11 +3234,9 @@ means to push this value onto the list in the variable.")
 		  (setq value (replace-match "" t t value)))
 	      (setq cat (intern value)))
 	     ((equal key "SEQ_TODO")
-	      (push 'sequence int)
-	      (push (org-split-string value splitre) kwds))
+	      (push (cons 'sequence (org-split-string value splitre)) kwds))
 	     ((equal key "TYP_TODO")
-	      (push 'type int)
-	      (push (org-split-string value splitre) kwds))
+	      (push (cons 'type (org-split-string value splitre)) kwds))
 	     ((equal key "TAGS")
 	      (setq tags (append tags (org-split-string value splitre))))
 	     ((equal key "LINK")
@@ -3252,21 +3266,27 @@ means to push this value onto the list in the variable.")
       (and arch (org-set-local 'org-archive-location arch))
       (and links (setq org-link-abbrev-alist-local (nreverse links)))
       ;; Process the TODO keywords
-      (unless (and int kwds)
+      (unless kwds
 	;; Use the global values as if they had been given locally.
-	(setq kwds (list (default-value 'org-todo-keywords))
-	      int (list org-todo-interpretation)))
-      (setq int (nreverse int) kwds (nreverse kwds))
-      (let (i k)
-	(while (setq i (pop int))
-	  (setq k (pop kwds) hw (car k) dw (org-last k))
+	(setq kwds (default-value 'org-todo-keywords))
+	(if (stringp (car kwds))
+	    (setq kwds (list (cons org-todo-interpretation
+				   (default-value 'org-todo-keywords)))))
+	(setq kwds (reverse kwds)))
+      (setq kwds (nreverse kwds))
+      (let (inter kws)
+	(while (setq kws (pop kwds))
+	  (setq inter (pop kws) sep (member "|" kws)
+		kws1 (delete "|" (copy-sequence kws))
+		hw (car kws1)
+		dws (if sep (cdr sep) (last kws1))
+		tail (list inter hw (car dws) (org-last dws)))
 	  (add-to-list 'org-todo-heads hw 'append)
-	  (push k org-todo-sets)
-	  (push dw org-done-keywords)
-	  (mapc (lambda (x) (push (list x i hw dw) org-todo-kwd-alist)) k)
-	  (setq org-todo-keywords (append org-todo-keywords k)))
-	(setq org-done-keywords (nreverse org-done-keywords)
-	      org-todo-sets (nreverse org-todo-sets)
+	  (push kws1 org-todo-sets)
+	  (setq org-done-keywords (append org-done-keywords dws nil))
+	  (mapc (lambda (x) (push (cons x tail) org-todo-kwd-alist)) kws1)
+	  (setq org-todo-keywords-1 (append org-todo-keywords-1 kws1 nil)))
+	(setq org-todo-sets (nreverse org-todo-sets)
 	      org-todo-kwd-alist (nreverse org-todo-kwd-alist)))
       ;; Process the tags.
       (when tags
@@ -3288,13 +3308,13 @@ means to push this value onto the list in the variable.")
 
     ;; Compute the regular expressions and other local variables
     (if (not org-done-keywords)
-	(setq org-done-keywords (list (org-last org-todo-keywords))))
+	(setq org-done-keywords (list (org-last org-todo-keywords-1))))
     (setq org-ds-keyword-length (+ 2 (max (length org-deadline-string)
 					  (length org-scheduled-string)))
 	  org-not-done-keywords
-	  (org-delete-all org-done-keywords (copy-sequence org-todo-keywords))
+	  (org-delete-all org-done-keywords (copy-sequence org-todo-keywords-1))
 	  org-todo-regexp
-	  (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords
+	  (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords-1
 				      "\\|") "\\)\\>")
 	  org-not-done-regexp
 	  (concat "\\<\\("
@@ -3302,7 +3322,7 @@ means to push this value onto the list in the variable.")
 		  "\\)\\>")
 	  org-todo-line-regexp
 	  (concat "^\\(\\*+\\)[ \t]*\\(?:\\("
-		  (mapconcat 'regexp-quote org-todo-keywords "\\|")
+		  (mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
 		  "\\)\\>\\)? *\\(.*\\)")
 	  org-nl-done-regexp
 	  (concat "[\r\n]\\*+[ \t]+"
@@ -3310,7 +3330,7 @@ means to push this value onto the list in the variable.")
 		  "\\)" "\\>")
 	  org-todo-line-tags-regexp
 	  (concat "^\\(\\*+\\)[ \t]*\\(?:\\("
-		  (mapconcat 'regexp-quote org-todo-keywords "\\|")
+		  (mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
 		  "\\)\\>\\)? *\\(.*?\\([ \t]:[a-zA-Z0-9:_@]+:[ \t]*\\)?$\\)")
 	  org-looking-at-done-regexp 
 	  (concat "^" "\\(?:"
@@ -3550,6 +3570,7 @@ This variable is set by `org-before-change-function'.
 (defvar org-mode-hook nil)
 (defvar org-inhibit-startup nil)        ; Dynamically-scoped param.
 (defvar org-agenda-keep-modes nil)      ; Dynamically-scoped param.
+(defvar org-table-buffer-is-an nil)
 
 
 ;;;###autoload
@@ -4579,7 +4600,7 @@ state (TODO by default).  Also with prefix arg, force first state."
     (if (or arg
 	    (not (match-beginning 2))
 	    (member (match-string 2) org-done-keywords))
-	(insert (car org-todo-keywords) " ")
+	(insert (car org-todo-keywords-1) " ")
       (insert (match-string 2) " "))))
 
 ;;; Promotion and Demotion
@@ -5303,8 +5324,12 @@ When nil, empty lines are part of the preceeding item."
 If the cursor is not in an item, throw an error."
   (interactive)
   (let ((pos (point))
-	(limit (save-excursion (org-back-to-heading)
-			       (beginning-of-line 2) (point)))
+	(limit (save-excursion
+		 (condition-case nil
+		     (progn
+		       (org-back-to-heading)
+		       (beginning-of-line 2) (point))
+		   (error (point-min)))))
 	(ind-empty (if org-empty-line-terminates-plain-lists 0 10000))
 	ind ind1)
     (if (org-at-item-p)
@@ -5564,14 +5589,14 @@ When called with prefix argument FIND-DONE, find whole trees without any
 open TODO items and archive them (after getting confirmation from the user).
 If the cursor is not at a headline when this comand is called, try all level
 1 trees.  If the cursor is on a headline, only try the direct children of
-this heading. "
+this heading."
   (interactive "P")
   (if find-done
       (org-archive-all-done)
     ;; Save all relevant TODO keyword-relatex variables
 
     (let ((tr-org-todo-line-regexp org-todo-line-regexp) ; keep despite compiler
-	  (tr-org-todo-keywords org-todo-keywords)
+	  (tr-org-todo-keywords-1 org-todo-keywords-1)
 	  (tr-org-todo-kwd-alist org-todo-kwd-alist)
 	  (tr-org-done-keywords org-done-keywords)
 	  (tr-org-todo-regexp org-todo-regexp)
@@ -5612,7 +5637,8 @@ this heading. "
 	;; Enforce org-mode for the archive buffer
 	(if (not (org-mode-p))
 	    ;; Force the mode for future visits.
-	    (let ((org-insert-mode-line-in-empty-file t))
+	    (let ((org-insert-mode-line-in-empty-file t)
+		  (org-inhibit-startup t))
 	      (call-interactively 'org-mode)))
 	(when newfile-p
 	  (goto-char (point-max))
@@ -5620,7 +5646,7 @@ this heading. "
 			  (buffer-file-name this-buffer))))
 	;; Force the TODO keywords of the original buffer
 	(let ((org-todo-line-regexp tr-org-todo-line-regexp)
-	      (org-todo-keywords tr-org-todo-keywords)
+	      (org-todo-keywords-1 tr-org-todo-keywords-1)
 	      (org-todo-kwd-alist tr-org-todo-kwd-alist)
 	      (org-done-keywords tr-org-done-keywords)
 	      (org-todo-regexp tr-org-todo-regexp)
@@ -5652,10 +5678,10 @@ this heading. "
 	    (goto-char (point-max)) (insert "\n"))
 	  ;; Paste
 	  (org-paste-subtree (org-get-legal-level level 1))
-	  ;; Mark the entry as done, i.e. set to last work in org-todo-keywords
+	  ;; Mark the entry as done, i.e. set to last word in org-todo-keywords-1 FIXME: not right anymore!!!!!!!
 	  (if org-archive-mark-done
 	      (let (org-log-done)
-		(org-todo (length org-todo-keywords))))
+		(org-todo (length org-todo-keywords-1))))
 	  ;; Move cursor to right after the TODO keyword
 	  (when org-archive-stamp-time
 	    (beginning-of-line 1)
@@ -7118,8 +7144,8 @@ the table and kill the editing buffer."
 
 (defun org-trim (s)
   "Remove whitespace at beginning and end of string."
-  (if (string-match "^[ \t]+" s) (setq s (replace-match "" t t s)))
-  (if (string-match "[ \t]+$" s) (setq s (replace-match "" t t s)))
+  (if (string-match "^[ \t\n\r]+" s) (setq s (replace-match "" t t s)))
+  (if (string-match "[ \t\n\r]+$" s) (setq s (replace-match "" t t s)))
   s)
 
 (defun org-wrap (string &optional width lines)
@@ -8137,7 +8163,10 @@ Parameters get priority."
 	entry s type title)
     (switch-to-buffer-other-window "*Edit Formulas*")
     (erase-buffer)
-    (fundamental-mode)
+    ;; Keep global-font-lock-mode from turning on font-lock-mode
+    (let ((font-lock-global-modes '(not fundamental-mode)))
+      (fundamental-mode))
+    (org-set-local 'font-lock-global-modes (list 'not major-mode))
     (org-set-local 'org-pos pos)
     (org-set-local 'org-window-configuration wc)
     (use-local-map org-table-fedit-map)
@@ -8344,7 +8373,6 @@ a translation reference."
 	(goto-char pos)
 	(org-table-toggle-coordinate-overlays)))))
 
-(defvar org-table-buffer-is-an nil)
 (defun org-table-fedit-finish (&optional arg)
   "Parse the buffer for formula definitions and install them.
 With prefix ARG, apply the new formulas to the table."
@@ -11210,7 +11238,7 @@ At all other locations, this simply calls `ispell-complete-word'."
 		   ((string-match "\\`\\*+[ \t]*\\'"
 				  (buffer-substring (point-at-bol) beg))
 		    (setq type :todo)
-		    (mapcar 'list org-todo-keywords))
+		    (mapcar 'list org-todo-keywords-1))
 		   (searchhead
 		    (setq type :searchhead)
 		    (save-excursion
@@ -11310,29 +11338,31 @@ For calling through lisp, arg is also interpreted in the following way:
 	(looking-at " *"))
     (let* ((this (match-string 1))
 	   (head (org-get-todo-sequence-head this))
-	   (interpret (nth 1 (assoc head org-todo-kwd-alist)))
-	   (done-word (nth 3 (assoc head org-todo-kwd-alist)))
+	   (ass (assoc head org-todo-kwd-alist))
+	   (interpret (nth 1 ass))
+	   (done-word (nth 3 ass))
+	   (final-done-word (nth 4 ass))
 	   (last-state (or this ""))
 	   (completion-ignore-case t)
-	   (member (member this org-todo-keywords))
+	   (member (member this org-todo-keywords-1))
 	   (tail (cdr member))
 	   (state (cond
 		   ((equal arg '(4))
 		    ;; Read a state with completion
 		    (completing-read "State: " (mapcar (lambda(x) (list x))
-						       org-todo-keywords)
+						       org-todo-keywords-1)
 				     nil t))
 		   ((eq arg 'right)
 		    (if this
 			(if tail (car tail) nil)
-		      (car org-todo-keywords)))
+		      (car org-todo-keywords-1)))
 		   ((eq arg 'left)
-		    (if (equal member org-todo-keywords)
+		    (if (equal member org-todo-keywords-1)
 			nil
 		      (if this
-			  (nth (- (length org-todo-keywords) (length tail) 2)
-			       org-todo-keywords)
-			(org-last org-todo-keywords))))
+			  (nth (- (length org-todo-keywords-1) (length tail) 2)
+			       org-todo-keywords-1)
+			(org-last org-todo-keywords-1))))
 		   (arg
 		    ;; user or caller requests a specific state
 		    (cond
@@ -11346,11 +11376,11 @@ For calling through lisp, arg is also interpreted in the following way:
 		      (let ((org-todo-heads (reverse org-todo-heads)))
 			(or (car (cdr (member head org-todo-heads)))
 			    (car org-todo-heads))))
-		     ((car (member arg org-todo-keywords)))
+		     ((car (member arg org-todo-keywords-1)))
 		     ((nth (1- (prefix-numeric-value arg))
-			     org-todo-keywords))))
-		   ((null member) (or head (car org-todo-keywords)))
-		   ((member this org-done-keywords) nil) ;; -> make empty
+			     org-todo-keywords-1))))
+		   ((null member) (or head (car org-todo-keywords-1)))
+		   ((equal this final-done-word) nil) ;; -> make empty
 		   ((null tail) nil) ;; -> first entry
 		   ((eq interpret 'sequence)
 		    (car tail))
@@ -11369,7 +11399,7 @@ For calling through lisp, arg is also interpreted in the following way:
 		 (mapconcat 'identity (assoc state org-todo-sets) " ")))
       (setq org-last-todo-state-is-todo
 	    (not (member state org-done-keywords)))
-      (when org-log-done
+      (when (and org-log-done (not (memq arg '(nextset previousset))))
 	(setq dostates (and (eq interpret 'sequence)
 			    (listp org-log-done) (memq 'state org-log-done)))
 	(cond
@@ -11412,8 +11442,8 @@ right sequence."
 	    (setq p (next-single-property-change (point-at-bol) 'org-todo-head
 						 nil (point-at-eol)))
 	    (get-text-property p 'org-todo-head))))
-     ((not (member kwd org-todo-keywords))
-      (car org-todo-keywords))
+     ((not (member kwd org-todo-keywords-1))
+      (car org-todo-keywords-1))
      (t (nth 2 (assoc kwd org-todo-kwd-alist))))))
   
 (defun org-get-repeat ()
@@ -11475,15 +11505,20 @@ The tree will show the lines where the regexp matches, and all higher
 headlines above the match.
 With \\[universal-argument] prefix, also show the DONE entries.
 With a numeric prefix N, construct a sparse tree for the Nth element
-of `org-todo-keywords'."
+of `org-todo-keywords-1'."
   (interactive "P")
   (let ((case-fold-search nil)
 	(kwd-re
 	 (cond ((null arg) org-not-done-regexp)
-	       ((equal arg '(4)) org-todo-regexp)
-	       ((<= (prefix-numeric-value arg) (length org-todo-keywords))
+	       ((equal arg '(4))
+		(let ((kwd (completing-read "Keyword (or KWD1|KWD2|...): "
+					    (mapcar 'list org-todo-keywords-1))))
+		  (concat "\\("
+			  (mapconcat 'identity (org-split-string kwd "|") "\\|")
+			  "\\)\\>")))
+	       ((<= (prefix-numeric-value arg) (length org-todo-keywords-1))
 		(regexp-quote (nth (1- (prefix-numeric-value arg))
-				   org-todo-keywords)))
+				   org-todo-keywords-1)))
 	       (t (error "Invalid prefix argument: %s" arg)))))
     (message "%d TODO entries found"
 	     (org-occur (concat "^" outline-regexp " +" kwd-re )))))
@@ -11833,7 +11868,7 @@ inclusion.  When TODO-ONLY is non-nil, only lines with a TODO keyword
 are included in the output."
   (let* ((re (concat "[\n\r]" outline-regexp " *\\(\\<\\("
 		     (mapconcat 'regexp-quote
-				(nreverse (cdr (reverse org-todo-keywords)))
+				(nreverse (cdr (reverse org-todo-keywords-1)))
 				"\\|")
 		     "\\>\\)\\)? *\\(.*?\\)\\(:[A-Za-z_@0-9:]+:\\)?[ \t]*$"))
 	 (props (list 'face nil
@@ -13385,6 +13420,8 @@ The following commands are available:
   (setq org-agenda-undo-list nil
 	org-agenda-pending-undo-list nil)
   (setq major-mode 'org-agenda-mode)
+  ;; Keep global-font-lock-mode from turning on font-lock-mode
+  (org-set-local 'font-lock-global-modes (list 'not major-mode))
   (setq mode-name "Org-Agenda")
   (use-local-map org-agenda-mode-map)
   (easy-menu-add org-agenda-menu)
@@ -13429,6 +13466,8 @@ The following commands are available:
 (define-key org-agenda-mode-map "\C-c\C-o" 'org-agenda-open-link)
 (define-key org-agenda-mode-map " "        'org-agenda-show)
 (define-key org-agenda-mode-map "\C-c\C-t" 'org-agenda-todo)
+(define-key org-agenda-mode-map [(control shift right)] 'org-agenda-todo-nextset)
+(define-key org-agenda-mode-map [(control shift left)] 'org-agenda-todo-previousset)
 (define-key org-agenda-mode-map "\C-c\C-xb" 'org-agenda-tree-to-indirect-buffer)
 (define-key org-agenda-mode-map "b"        'org-agenda-tree-to-indirect-buffer)
 (define-key org-agenda-mode-map "o"        'delete-other-windows)
@@ -14161,9 +14200,13 @@ When a buffer is unmodified, it is just killed.  When modified, it is saved
   "Get the table of categories and positions in current buffer."
   (let (tbl)
     (save-excursion
-      (goto-char (point-min))
-      (while (re-search-forward "\\(^\\|\r\\)#\\+CATEGORY:[ \t]*\\(.*\\)" nil t)
-	(push (cons (point) (org-trim (match-string 2))) tbl)))
+      (save-restriction
+	(widen)
+	(goto-char (point-min))
+	(while (re-search-forward "^#\\+CATEGORY:[ \t]*\\(.*\\)"
+				  nil t)
+	  (push (cons (match-beginning 1)
+		      (org-trim (match-string 1))) tbl))))
     tbl))
 
 (defun org-get-category (&optional pos)
@@ -14458,28 +14501,29 @@ NDAYS defaults to `org-agenda-ndays'."
 The prefix arg can be used to select a specific TODO keyword and limit
 the list to these.  When using \\[universal-argument], you will be prompted
 for a keyword.  A numeric prefix directly selects the Nth keyword in
-`org-todo-keywords'."
+`org-todo-keywords-1'."
   (interactive "P")
   (require 'calendar)
   (org-compile-prefix-format 'todo)
   (org-set-sorting-strategy 'todo)
   (let* ((today (time-to-days (current-time)))
 	 (date (calendar-gregorian-from-absolute today))
-	 (kwds org-todo-keywords)
+	 (kwds org-todo-keywords-1)
 	 (completion-ignore-case t)
 	 (org-select-this-todo-keyword
 	  (if (stringp arg) arg
 	    (and arg (integerp arg) (> arg 0)
-                 (nth (1- arg) org-todo-keywords))))
+                 (nth (1- arg) org-todo-keywords-1))))
 	 rtn rtnall files file pos)
     (when (equal arg '(4))
       (setq org-select-this-todo-keyword
-	    (completing-read "Keyword: " (mapcar 'list org-todo-keywords)
-			     nil t)))
+	    (completing-read "Keyword (or KWD1|K2D2|...): "
+			     (mapcar 'list org-todo-keywords-1)
+			     nil nil)))
     (and (equal 0 arg) (setq org-select-this-todo-keyword nil))
     (org-prepare-agenda)
     (org-set-local 'org-last-arg arg)
-    (org-set-local 'org-todo-keywords kwds)
+    (org-set-local 'org-todo-keywords-1 kwds)
     (setq org-agenda-redo-command
 	  '(org-todo-list (or current-prefix-arg org-last-arg)))
     (setq files (org-agenda-files)
@@ -14505,7 +14549,7 @@ for a keyword.  A numeric prefix directly selects the Nth keyword in
 	 (let ((n 0))
 	   (mapconcat (lambda (x)
 			(format "(%d)%s" (setq n (1+ n)) x))
-		      org-todo-keywords " "))
+		      org-todo-keywords-1 " "))
 	 "\n"))
       (add-text-properties pos (1- (point)) (list 'face 'org-level-3)))
     (when rtnall
@@ -14883,7 +14927,8 @@ the documentation of `org-diary'."
 	 ;; FIXME: get rid of the \n at some point  but watch out
 	 (regexp (concat "[\n\r]\\*+ *\\("
 			 (if org-select-this-todo-keyword
-			     (concat "\\<\\(" org-select-this-todo-keyword
+			     (concat "\\<\\("
+				     (mapconcat 'identity (org-split-string org-select-this-todo-keyword "|") "\\|")
 				     "\\)\\>")
 			   org-not-done-regexp)
 			 "[^\n\r]*\\)"))
@@ -15926,6 +15971,16 @@ dedicated frame)."
   "Marker pointing to the headline that last changed its TODO state
 by a remote command from the agenda.")
 
+(defun org-agenda-todo-nextset ()
+  "Switch TODO entry to next sequence."
+  (interactive)
+  (org-agenda-todo 'nextset))
+
+(defun org-agenda-todo-previousset ()
+  "Switch TODO entry to previous sequence."
+  (interactive)
+  (org-agenda-todo 'previousset))
+
 (defun org-agenda-todo (&optional arg)
   "Cycle TODO state of line at point, also in Org-mode file.
 This changes the line at point, all other lines in the agenda referring to
@@ -16839,6 +16894,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
 
 \[a] export as ASCII
 \[h] export as HTML
+\[H] export as HTML to temporary buffer
 \[b] export as HTML and browse immediately
 \[x] export as XOXO
 
@@ -16856,6 +16912,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
 	   (?a . org-export-as-ascii)
 	   (?h . org-export-as-html)
 	   (?b . org-export-as-html-and-open)
+	   (?H . org-export-as-html-to-buffer)
 	   (?x . org-export-as-xoxo)
 	   (?i . org-export-icalendar-this-file)
 	   (?I . org-export-icalendar-all-agenda-files)
@@ -17187,11 +17244,16 @@ translations.  There is currently no way for users to extend this.")
 	 (re-quote (concat "^\\*+[ \t]+" org-quote-string "\\>"))
 	 (htmlp (plist-get parameters :for-html))
 	 (outline-regexp "\\*+")
-	 rtn)
+	 rtn p)
     (save-excursion
       (set-buffer (get-buffer-create " org-mode-tmp"))
       (erase-buffer)
       (insert string)
+      ;; Remove license-to-kill stuff
+      (while (setq p (text-property-any (point-min) (point-max)
+					:org-license-to-kill t))
+	(delete-region p (next-single-property-change p :org-license-to-kill)))
+
       (let ((org-inhibit-startup t)) (org-mode))
       (untabify (point-min) (point-max))
 
@@ -17318,6 +17380,18 @@ translations.  There is currently no way for users to extend this.")
     (kill-buffer " org-mode-tmp")
     rtn))
 
+(defun org-export-grab-title-from-buffer ()
+  "Get a title for the current document, from looking at the buffer."
+  (save-excursion
+    (goto-char (point-min))
+    (let ((end (save-excursion (outline-next-heading) (point))))
+      (when (re-search-forward "^[ \t]*[^# \t\r\n].*\n" end t)
+	;; Mark the line so that it will not be exported as normal text.
+	(add-text-properties (match-beginning 0) (match-end 0)
+			     (list :org-license-to-kill t))
+	;; Return the title string
+	(org-trim (match-string 0))))))
+
 (defun org-solidify-link-text (s &optional alist)
   "Take link text and make a safe target out of it."
   (save-match-data
@@ -17394,14 +17468,6 @@ underlined headlines.  The default is 3."
 	   (if (org-region-active-p) (region-beginning) (point-min))
 	   (if (org-region-active-p) (region-end) (point-max))))
 	 (custom-times org-display-custom-times)
-	 (lines (org-skip-comments
-		 (org-split-string
-		  (org-cleaned-string-for-export
-		   region
-		   :skip-before-1st-heading
-		   (plist-get opt-plist :skip-before-1st-heading)
-		   :add-text (plist-get opt-plist :text))
-		  "[\r\n]")))
 	 (org-ascii-current-indentation '(0 . 0))
 	 (level 0) line txt
 	 (umax nil)
@@ -17419,6 +17485,9 @@ underlined headlines.  The default is 3."
 	 (time  (format-time-string "%X" (org-current-time)))
 	 (author      (plist-get opt-plist :author))
 	 (title       (or (plist-get opt-plist :title)
+			  (and (not 
+				(plist-get opt-plist :skip-before-1st-heading))
+			       (org-export-grab-title-from-buffer))
 			  (file-name-sans-extension
 			   (file-name-nondirectory buffer-file-name))))
 	 (email       (plist-get opt-plist :email))
@@ -17427,7 +17496,17 @@ underlined headlines.  The default is 3."
 ;	 (quote-re    (concat "^\\(\\*+\\)\\([ \t]*" org-quote-string "\\>\\)"))
 	 (todo nil)
 	 (lang-words nil)
-	 thetoc first-heading-pos)
+	 (lines (org-skip-comments
+		 (org-split-string
+		  (org-cleaned-string-for-export
+		   region
+		   :skip-before-1st-heading
+		   (plist-get opt-plist :skip-before-1st-heading)
+		   :add-text (plist-get opt-plist :text))
+		  "[\r\n]")))
+	 thetoc have-headings first-heading-pos)
+
+    (remove-text-properties (point-min) (point-max) '(:org-license-to-kill t))
 
     (setq org-last-level 1)
     (org-init-section-numbers)
@@ -17473,6 +17552,7 @@ underlined headlines.  The default is 3."
 				       line)
 			 ;; This is a headline
 			 (progn
+			   (setq have-headings t)
 			   (setq level (- (match-end 1) (match-beginning 1))
 				 level (org-tr-level level)
 				 txt (match-string 3 line)
@@ -17507,7 +17587,7 @@ underlined headlines.  The default is 3."
 				 (setq org-last-level level))
 			     ))))
 		  lines)
-	  (setq thetoc (nreverse thetoc))))
+	  (setq thetoc (if have-headings (nreverse thetoc) nil))))
     
     (org-init-section-numbers)
     (while (setq line (pop lines))
@@ -17636,7 +17716,7 @@ continue to use it.  The prefix arg ARG is passed through to the exporting
 command."
   (interactive
    (list (progn
-	   (message "Export visible: [a]SCII  [h]tml  [b]rowse HTML  [x]OXO  [ ]keep buffer")
+	   (message "Export visible: [a]SCII  [h]tml  [b]rowse HTML [H]uffer with HTML  [x]OXO  [ ]keep buffer")
 	   (read-char-exclusive))
 	 current-prefix-arg))
   (if (not (member type '(?a ?\C-a ?b ?\C-b ?h ?x ?\ )))
@@ -17647,6 +17727,7 @@ command."
 				(?b . org-export-as-html-and-open)
 				(?\C-b . org-export-as-html-and-open)
 				(?h . org-export-as-html)
+				(?H . org-export-as-html-to-buffer)
 				(?x . org-export-as-xoxo)))))
 	 (keepp (equal type ?\ ))
 	 (file buffer-file-name)
@@ -17818,14 +17899,23 @@ emacs 	--batch
 	--visit=MyFile --funcall org-export-as-html-batch"
   (org-export-as-html org-export-headline-levels 'hidden))
 
-(defun org-export-as-html (arg &optional hidden ext-plist)
+(defun org-export-as-html-to-buffer (arg)
+  "Call `org-exort-as-html` with output to a temporary buffer.
+No file is created.  The prefix ARG is passed through to `org-export-as-html'."
+  (interactive "P")
+  (org-export-as-html arg nil nil t)
+  (switch-to-buffer-other-window "*Org HTML Export*"))
+
+(defun org-export-as-html (arg &optional hidden ext-plist temp-buffer-only)
   "Export the outline as a pretty HTML file.
-If there is an active region, export only the region.
-The prefix ARG specifies how many levels of the outline should become
-headlines.  The default is 3.  Lower levels will become bulleted lists.
-When HIDDEN is non-nil, don't display the HTML buffer.
+If there is an active region, export only the region.  The prefix
+ARG specifies how many levels of the outline should become
+headlines.  The default is 3.  Lower levels will become bulleted
+lists.  When HIDDEN is non-nil, don't display the HTML buffer.
 EXT-PLIST is a property list with external parameters overriding
-org-mode's default settings, but still inferior to file-local settings."
+org-mode's default settings, but still inferior to file-local
+settings.  Wehn TEMP-BUFFER-ONLY is non-nil, export to a buffer not
+associated with a file."
   (interactive "P")
   (message "Exporting...")
   (setq-default org-todo-line-regexp org-todo-line-regexp)
@@ -17838,7 +17928,7 @@ org-mode's default settings, but still inferior to file-local settings."
 
 	 (style (plist-get opt-plist :style))
 	 (link-validate (plist-get opt-plist :link-validation-function))
-	 valid thetoc first-heading-pos
+	 valid thetoc have-headings first-heading-pos
 	 (odd org-odd-levels-only)
 	 (region-p (org-region-active-p))
          (region
@@ -17849,19 +17939,6 @@ org-mode's default settings, but still inferior to file-local settings."
 	 ;; routines below.
 	 (org-current-export-dir (org-export-directory :html opt-plist))
 	 (org-current-export-file buffer-file-name)
-         (lines
-          (org-skip-comments (org-split-string
-			      (org-cleaned-string-for-export
-			       region 
-			       :emph-multiline t
-			       :for-html t
-			       :skip-before-1st-heading
-			       (plist-get opt-plist :skip-before-1st-heading)
-			       :add-text
-			       (plist-get opt-plist :text)
-			       :LaTeX-fragments
-			       (plist-get opt-plist :LaTeX-fragments))
-			      "[\r\n]")))
          (level 0) (line "") (origline "") txt todo
          (umax nil)
          (umax-toc nil)
@@ -17871,12 +17948,17 @@ org-mode's default settings, but still inferior to file-local settings."
 			    (file-name-nondirectory buffer-file-name))
 			   ".html"))
 	 (current-dir (file-name-directory buffer-file-name))
-         (buffer (find-file-noselect filename))
+	 (buffer (if temp-buffer-only
+		     (get-buffer-create "*Org HTML Export*")
+		   (find-file-noselect filename)))
          (org-levels-open (make-vector org-level-max nil))
 	 (date (format-time-string "%Y/%m/%d" (current-time)))
 	 (time  (format-time-string "%X" (org-current-time)))
          (author      (plist-get opt-plist :author))
 	 (title       (or (plist-get opt-plist :title)
+			  (and (not 
+				(plist-get opt-plist :skip-before-1st-heading))
+			       (org-export-grab-title-from-buffer))
 			  (file-name-sans-extension
 			   (file-name-nondirectory buffer-file-name))))
 	 (quote-re0   (concat "^[ \t]*" org-quote-string "\\>"))
@@ -17900,11 +17982,27 @@ org-mode's default settings, but still inferior to file-local settings."
 	 (charset (and coding-system
 		       (fboundp 'coding-system-get)
 		       (coding-system-get coding-system 'mime-charset)))
+         (lines
+          (org-skip-comments (org-split-string
+			      (org-cleaned-string-for-export
+			       region 
+			       :emph-multiline t
+			       :for-html t
+			       :skip-before-1st-heading
+			       (plist-get opt-plist :skip-before-1st-heading)
+			       :add-text
+			       (plist-get opt-plist :text)
+			       :LaTeX-fragments
+			       (plist-get opt-plist :LaTeX-fragments))
+			      "[\r\n]")))
 	 table-open type
 	 table-buffer table-orig-buffer
 	 ind start-is-num starter didclose
 	 rpl path desc descp desc1 desc2 link
 	 )
+
+    (remove-text-properties (point-min) (point-max) '(:org-license-to-kill t))
+
     (message "Exporting...")
 
     (setq org-last-level 1)
@@ -17955,8 +18053,8 @@ lang=\"%s\" xml:lang=\"%s\">
       (insert (or (plist-get opt-plist :preamble) ""))
 
       (when (plist-get opt-plist :auto-preamble)
-	(if title     (insert (format org-export-html-title-format
-				      (org-html-expand title)))))
+	(if title (insert (format org-export-html-title-format
+				  (org-html-expand title)))))
 
       (if org-export-with-toc
 	  (progn
@@ -17971,6 +18069,7 @@ lang=\"%s\" xml:lang=\"%s\">
 		       (if (string-match org-todo-line-regexp line)
 			   ;; This is a headline
 			   (progn
+			     (setq have-headings t)
 			     (setq level (- (match-end 1) (match-beginning 1))
 				   level (org-tr-level level)
 				   txt (save-match-data
@@ -18035,7 +18134,7 @@ lang=\"%s\" xml:lang=\"%s\">
 	    (while (> org-last-level 0)
 	      (setq org-last-level (1- org-last-level))
 	      (push "</li>\n</ul>\n" thetoc))
-	    (setq thetoc (nreverse thetoc))))
+	    (setq thetoc (if have-headings (nreverse thetoc) nil))))
       (setq head-count 0)
       (org-init-section-numbers)
 
@@ -18366,11 +18465,10 @@ lang=\"%s\" xml:lang=\"%s\">
       (goto-char (point-min))
       (while (re-search-forward "<li>[ \r\n\t]*</li>\n?" nil t)
 	(replace-match ""))
-      (save-buffer)
+      (or temp-buffer-only (save-buffer))
       (goto-char (point-min))
       (message "Exporting... done"))))
 
-
 (defun org-format-table-html (lines olines)
   "Find out which HTML converter to use and return the HTML code."
   (if (string-match "^[ \t]*|" (car lines))
@@ -19079,10 +19177,12 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
   (define-key org-mode-map "\C-c\C-xR"    'org-shiftmetaright)
   (define-key org-mode-map "\C-c\C-xU"    'org-shiftmetaup)
   (define-key org-mode-map "\C-c\C-xD"    'org-shiftmetadown)
-  (define-key org-mode-map [?\C-c ?\C-x (up)]    'org-shiftup)
-  (define-key org-mode-map [?\C-c ?\C-x (down)]  'org-shiftdown)
-  (define-key org-mode-map [?\C-c ?\C-x (left)]  'org-shiftleft)
-  (define-key org-mode-map [?\C-c ?\C-x (right)] 'org-shiftright))
+  (define-key org-mode-map [?\C-c (up)]    'org-shiftup)
+  (define-key org-mode-map [?\C-c (down)]  'org-shiftdown)
+  (define-key org-mode-map [?\C-c (left)]  'org-shiftleft)
+  (define-key org-mode-map [?\C-c (right)] 'org-shiftright)
+  (define-key org-mode-map [?\C-c ?\C-x (right)] 'org-shiftcontrolright)
+  (define-key org-mode-map [?\C-c ?\C-x (left)] 'org-shiftcontrolleft))
 
   ;; All the other keys
 
@@ -19694,7 +19794,9 @@ See the individual commands for more information."
      ("Select keyword"
       ["Next keyword" org-shiftright (org-on-heading-p)]
       ["Previous keyword" org-shiftleft (org-on-heading-p)]
-      ["Complete Keyword" org-complete (assq :todo-keyword (org-context))])
+      ["Complete Keyword" org-complete (assq :todo-keyword (org-context))]
+      ["Next keyword set" org-shiftcontrolright (and (> (length org-todo-sets) 1) (org-on-heading-p))]
+      ["Previous keyword set" org-shiftcontrolright (and (> (length org-todo-sets) 1) (org-on-heading-p))])
      ["Show TODO Tree" org-show-todo-tree t]
      ["Global TODO list" org-todo-list t]
      "--"
@@ -20194,6 +20296,9 @@ to a visible line beginning.  This makes the function of C-a more intuitive."
 
 (defalias 'org-back-to-heading 'outline-back-to-heading)
 (defalias 'org-on-heading-p 'outline-on-heading-p)
+(defalias 'org-at-heading-p 'outline-on-heading-p)
+(defun org-at-heading-or-item-p ()
+  (or (org-on-heading-p) (org-at-item-p)))
 
 (defun org-on-target-p ()
   (or (org-in-regexp org-radio-target-regexp)
@@ -20361,7 +20466,6 @@ Show the heading too, if it is currently invisible."
 
 ;;;; Experimental code
 
-
 ;;;; Finish up
 
 (provide 'org)
@@ -20370,4 +20474,3 @@ Show the heading too, if it is currently invisible."
 
 ;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
 ;;; org.el ends here
-

BIN=BIN
org.pdf


+ 164 - 127
org.texi

@@ -3,7 +3,7 @@
 @setfilename ../info/org
 @settitle Org Mode Manual
 
-@set VERSION 4.69
+@set VERSION 4.70
 @set DATE March 2007
 
 @dircategory Emacs
@@ -169,8 +169,8 @@ Extended use of TODO keywords
 
 * Workflow states::             From TODO to DONE in steps
 * TODO types::                  I do this, Fred the rest
-* Per file keywords::           Different files, different requirements
 * Multiple sets in one file::   Mixing it all, and still finding your way
+* Per file keywords::           Different files, different requirements
 
 Timestamps
 
@@ -663,13 +663,19 @@ level, all sibling headings.
 @kindex C-c C-x b
 @item C-c C-x b
 Show the current subtree in an indirect buffer@footnote{The indirect
-buffer (@pxref{Indirect Buffers,Indirect Buffers,Indirect
-Buffers,emacs,GNU Emacs Manual}) will contain the entire buffer, but
-will be narrowed to the current tree.  Editing the indirect buffer will
-also change the original buffer, but without affecting visibility in
-that buffer.}.  With numerical prefix ARG, go up to this level and then
-take that tree.  If ARG is negative, go up that many levels.  With
-@kbd{C-u} prefix, do not remove the previously used indirect buffer.
+buffer
+@ifinfo
+(@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
+@end ifinfo
+@ifnotinfo
+(see the Emacs manual for more information about indirect buffers)
+@end ifnotinfo
+will contain the entire buffer, but will be narrowed to the current
+tree.  Editing the indirect buffer will also change the original buffer,
+but without affecting visibility in that buffer.}.  With numerical
+prefix ARG, go up to this level and then take that tree.  If ARG is
+negative, go up that many levels.  With @kbd{C-u} prefix, do not remove
+the previously used indirect buffer.
 @end table
 
 When Emacs first visits an Org-mode file, the global state is set to
@@ -2564,9 +2570,11 @@ useful if more than two TODO states are possible (@pxref{TODO extensions}).
 @item C-c C-v
 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds
 the entire buffer, but shows all TODO items and the headings hierarchy
-above them.  With prefix arg, show also the DONE entries.  With
-numerical prefix N, show the tree for the Nth keyword in the variable
-@code{org-todo-keywords}.
+above them.  With prefix arg, search for a specific TODO.  You will be
+prompted for the keyword, and you can also give a list of keywords like
+@code{kwd1|kwd2|...}.  With numerical prefix N, show the tree for the
+Nth keyword in the variable @code{org-todo-keywords}.  With two prefix
+args, find all TODO and DONE entries.
 @kindex C-c a t
 @item C-c a t
 Show the global TODO list.  This collects the TODO items from all
@@ -2584,10 +2592,9 @@ the TODO entries directly from that buffer (@pxref{Agenda commands}).
 @cindex extended TODO keywords
 
 The default implementation of TODO entries is just two states: TODO and
-DONE.  You can, however, use the TODO feature for more complicated
-things by configuring the variables @code{org-todo-keywords} and
-@code{org-todo-interpretation}.  Using special setup, you can even use
-TODO keywords in different ways in different org files.
+DONE.  You can use the TODO feature for more complicated things by
+configuring the variable @code{org-todo-keywords}.  With special setup,
+the TODO keyword system can work differently in different files.
 
 Note that @i{tags} are another way to classify headlines in general and
 TODO items in particular (@pxref{Tags}).
@@ -2595,8 +2602,8 @@ TODO items in particular (@pxref{Tags}).
 @menu
 * Workflow states::             From TODO to DONE in steps
 * TODO types::                  I do this, Fred the rest
-* Per file keywords::           Different files, different requirements
 * Multiple sets in one file::   Mixing it all, and still finding your way
+* Per file keywords::           Different files, different requirements
 @end menu
 
 @node Workflow states, TODO types, TODO extensions, TODO extensions
@@ -2604,132 +2611,150 @@ TODO items in particular (@pxref{Tags}).
 @cindex TODO workflow
 @cindex workflow states as TODO keywords
 
-You can use TODO keywords to indicate different states in the process
-of working on an item, for example:
+You can use TODO keywords to indicate different @emph{sequential} states
+in the process of working on an item, for example@footnote{Changing
+this variable only becomes effective after restarting Org-mode in a
+buffer.}:
 
 @lisp
-(setq org-todo-keywords '("TODO" "FEEDBACK" "VERIFY" "DONE")
-      org-todo-interpretation 'sequence)
+(setq org-todo-keywords
+  '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
 @end lisp
 
+The vertical bar separates the TODO keywords (states that @emph{need
+action}) from the DONE states (which need @emph{no further action}.  If
+you don't provide the separator bar, the last state is used as the DONE
+state.
 @cindex completion, of TODO keywords
-Changing these variables only becomes effective in a new Emacs session.
-With this setup, the command @kbd{C-c C-t} will cycle an entry from
-TODO to FEEDBACK, then to VERIFY, and finally to DONE.  You may also
-use a prefix argument to quickly select a specific state.  For example
-@kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
+With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
+to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED.  You may
+also use a prefix argument to quickly select a specific state.  For
+example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
 If you define many keywords, you can use in-buffer completion (see
-@ref{Completion}) to insert these words into the buffer.  Changing a todo
-state can be logged with a timestamp, see @ref{Tracking TODO state
+@ref{Completion}) to insert these words into the buffer.  Changing a
+todo state can be logged with a timestamp, see @ref{Tracking TODO state
 changes} for more information.
 
-@node TODO types, Per file keywords, Workflow states, TODO extensions
+@node TODO types, Multiple sets in one file, Workflow states, TODO extensions
 @subsection TODO keywords as types
 @cindex TODO types
 @cindex names as TODO keywords
 @cindex types as TODO keywords
 
 The second possibility is to use TODO keywords to indicate different
-types of action items.  For example, you might want to indicate that
-items are for ``work'' or ``home''.  If you are into David Allen's
-@emph{Getting Things DONE}, you might want to use todo types
-@samp{NEXTACTION}, @samp{WAITING}, @samp{MAYBE}.  Or, when you work
-with several people on a single project, you might want to assign
-action items directly to persons, by using their names as TODO
-keywords.  This would be set up like this:
+@emph{types} of action items.  For example, you might want to indicate
+that items are for ``work'' or ``home''.  Or, when you work with several
+people on a single project, you might want to assign action items
+directly to persons, by using their names as TODO keywords.  This would
+be set up like this:
 
 @lisp
-(setq org-todo-keywords '("Fred" "Sara" "Lucy" "Mike" "DONE")
-      org-todo-interpretation 'type)
+(setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
 @end lisp
 
-In this case, different keywords do not indicate a sequence, but
-rather different types.  So it is normally not useful to change from
-one type to another.  Therefore, in this case the behavior of the
-command @kbd{C-c C-t} is changed slightly@footnote{This is also true
-for the @kbd{t} command in the timeline and agenda buffers.}.  When
-used several times in succession, it will still cycle through all
-names.  But when you return to the item after some time and execute
-@kbd{C-c C-t} again, it will switch from each name directly to DONE.
-Use prefix arguments or completion to quickly select a specific name.
-You can also review the items of a specific TODO type in a sparse tree
-by using a numeric prefix to @kbd{C-c C-v}.  For example, to see all
-things Lucy has to do, you would use @kbd{C-3 C-c C-v}.  To collect
-Lucy's items from all agenda files into a single buffer, you
-would use the prefix arg as well when creating the global todo list:
-@kbd{C-3 C-c t}.
-
-@node Per file keywords, Multiple sets in one file, TODO types, TODO extensions
-@subsection Setting up TODO keywords for individual files
-@cindex keyword options
-@cindex per file keywords
-
-It can be very useful to use different aspects of the TODO mechanism
-in different files, which is not possible with the global settings
-described above.  For file-local settings, you need to add special
-lines to the file which set the keywords and interpretation for that
-file only.  For example, to set one of the two examples discussed
-above, you need one of the following lines, starting in column zero
-anywhere in the file:
-
-@example
-#+SEQ_TODO: TODO FEEDBACK VERIFY DONE
-#+TYP_TODO: Fred Sara Lucy Mike DONE
-@end example
-
-@cindex completion, of option keywords
-@kindex M-@key{TAB}
-@noindent To make sure you are using the correct keyword, type
-@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
-
-@cindex DONE, final TODO keyword
-Remember that the last keyword must always mean that the item is DONE
-(although you may use a different word).  After changing one of these
-lines, use @kbd{C-c C-c} with the cursor still in the line to make the
-changes known to Org-mode@footnote{Org-mode parses these lines only when
-Org-mode is activated after visiting a file.  @kbd{C-c C-c} with the
-cursor in a line starting with @samp{#+} is simply restarting Org-mode
-for the current buffer.}.
-
-@node Multiple sets in one file,  , Per file keywords, TODO extensions
-@subsection Multiple TODO keyword sets in one file
+In this case, different keywords do not indicate a sequence, but rather
+different types.  So the normal work flow would be to assign a task to a
+person, and later to mark it DONE.  Org-mode supports this style by
+adapting the workings of the command @kbd{C-c C-t}@footnote{This is also
+true for the @kbd{t} command in the timeline and agenda buffers.}.  When
+used several times in succession, it will still cycle through all names,
+in order to first select the right type for a task.  But when you return
+to the item after some time and execute @kbd{C-c C-t} again, it will
+switch from any name directly to DONE.  Use prefix arguments or
+completion to quickly select a specific name.  You can also review the
+items of a specific TODO type in a sparse tree by using a numeric prefix
+to @kbd{C-c C-v}.  For example, to see all things Lucy has to do, you
+would use @kbd{C-3 C-c C-v}.  To collect Lucy's items from all agenda
+files into a single buffer, you would use the prefix arg as well when
+creating the global todo list: @kbd{C-3 C-c t}.
+
+@node Multiple sets in one file, Per file keywords, TODO types, TODO extensions
+@subsection Multiple keyword sets in one file
 @cindex todo keyword sets
 
-Sometimes you may want to use different sets of TODO keywords in the
-same file.  For example, you may want to have the basic
-@code{TODO}/@code{DONE}, but also a workflow for bug fixing.  Your setup
-would then look like this:
+Sometimes you may want to use different sets of TODO keywords in
+parallel.  For example, you may want to have the basic
+@code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
+separate state indicating that an item has been canceled (so it is not
+DONE, but also does not require action).  Your setup would then look
+like this:
 
-@example
-#+SEQ_TODO: TODO DONE
-#+SEQ_TODO: REPORT BUG KNOWNCAUSE RESOLVED
-@end example
+@lisp
+(setq org-todo-keywords
+      '((sequence "TODO" "|" "DONE")
+        (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
+        (sequence "|" "CANCELED")))
+@end lisp
 
 The keywords should all be different, this helps Org-mode to keep track
 of which subsequence should be used for a given entry.  In this setup,
 @kbd{C-c C-t} only operates within a subsequence, so it switches from
-@code{DONE} to (nothing) to @code{TODO}, and from @code{RESOLVED} to
+@code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
 (nothing) to @code{REPORT}.  Therefore you need a mechanism to initially
 select the correct sequence.  Besides the obvious ways like typing a
 keyword or using completion, you may also apply the following commands:
 
 @table @kbd
-@kindex S-@key{right}
-@kindex S-@key{left}
-@item S-@key{right}
-@itemx S-@key{left}
-@kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through all
-keywords from all sets, so for example @kbd{S-@key{<right>}} would
-switch from @code{DONE} to @code{REPORT} in the example above. 
 @kindex C-S-@key{right}
 @kindex C-S-@key{left}
 @item C-S-@key{right}
 @itemx C-S-@key{left}
-These key jump from one TODO subset to the next.  So
-@kbd{C-S-@key{right}} would jump from @code{TODO} to @code{REPORT} and
-from @code{KNOWNCAUSE} to @code{TODO} in the above example.
+These keys jump from one TODO subset to the next.  In the above example,
+@kbd{C-S-@key{right}} would jump from @code{TODO} or @code{DONE} to
+@code{REPORT}, and any of the words in the second row to @code{CANCELED}.
+@kindex S-@key{right}
+@kindex S-@key{left}
+@item S-@key{right}
+@itemx S-@key{left}
+@kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through
+@emph{all} keywords from all sets, so for example @kbd{S-@key{<right>}}
+would switch from @code{DONE} to @code{REPORT} in the example above.
 @end table
 
+@node Per file keywords,  , Multiple sets in one file, TODO extensions
+@subsection Setting up keywords for individual files
+@cindex keyword options
+@cindex per file keywords
+
+It can be very useful to use different aspects of the TODO mechanism in
+different files.  For file-local settings, you need to add special lines
+to the file which set the keywords and interpretation for that file
+only.  For example, to set one of the two examples discussed above, you
+need one of the following lines, starting in column zero anywhere in the
+file:
+
+@example
+#+SEQ_TODO: TODO FEEDBACK VERIFY | DONE CANCELED
+@end example
+or
+@example
+#+TYP_TODO: Fred Sara Lucy Mike | DONE
+@end example
+
+A setup for using several sets in parallel would be:
+
+@example
+#+SEQ_TODO: "TODO" "|" "DONE"
+#+SEQ_TODO: "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED"
+#+SEQ_TODO: "|" "CANCELED"
+@end example
+
+
+@cindex completion, of option keywords
+@kindex M-@key{TAB}
+@noindent To make sure you are using the correct keyword, type
+@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
+
+@cindex DONE, final TODO keyword
+Remember that the keywords after the vertical bar (or the last keyword
+if no bar is there) must always mean that the item is DONE (although you
+may use a different word).  After changing one of these lines, use
+@kbd{C-c C-c} with the cursor still in the line to make the changes
+known to Org-mode@footnote{Org-mode parses these lines only when
+Org-mode is activated after visiting a file.  @kbd{C-c C-c} with the
+cursor in a line starting with @samp{#+} is simply restarting Org-mode
+for the current buffer.}.
+
 @node Priorities, Breaking down tasks, TODO extensions, TODO items
 @section Priorities
 @cindex priorities
@@ -3847,10 +3872,12 @@ the TODO entries directly from that buffer (@pxref{Agenda commands}).
 @kindex C-c a T
 @item C-c a T
 @cindex TODO keyword matching
-Like the above, but allows selection of a specific TODO keyword.  You can
-also do this by specifying a prefix argument to @kbd{C-c a t}.  With a
-@kbd{C-u} prefix you are prompted for a keyword.  With a numeric
-prefix, the Nth keyword in @code{org-todo-keywords} is selected.
+Like the above, but allows selection of a specific TODO keyword.  You
+can also do this by specifying a prefix argument to @kbd{C-c a t}.  With
+a @kbd{C-u} prefix you are prompted for a keyword, and you may also
+specify several keywords by separating them with @samp{|} as boolean OR
+operator.  With a numeric prefix, the Nth keyword in
+@code{org-todo-keywords} is selected.
 @kindex r
 The @kbd{r} key in the agenda buffer regenerates it, and you can give
 a prefix argument to this command to change the selected TODO keyword,
@@ -4879,10 +4906,15 @@ Export as HTML file @file{myfile.html}.
 @kindex C-c C-e b
 @item C-c C-e b
 Export as HTML file and open it with a browser.
+@kindex C-c C-e H
+@item C-c C-e H
+Export to a temporary buffer, do not create a file.
 @kindex C-c C-e v h
 @kindex C-c C-e v b
+@kindex C-c C-e v H
 @item C-c C-e v h
 @item C-c C-e v b
+@item C-c C-e v H
 Export only the visible part of the document.
 @end table
 
@@ -5085,11 +5117,11 @@ Toggle the COMMENT keyword at the beginning of an entry.
 @subsection Text before the first headline
 
 Org-mode normally ignores any text before the first headline when
-exporting, because this region is often used for internal links to speed
-up navigation etc.  However, there are occasions when you might want to
-have some text before the first headline, like a small intorduction,
-special HTML code with a navigation bar, etc.  You can ask to have this
-part of the file exported as well by setting the variable
+exporting, leaving this region for internal links to speed up navigation
+etc.  However, in publishing-oriented files, you might want to have some
+text before the first headline, like a small introduction, special HTML
+code with a navigation bar, etc.  You can ask to have this part of the
+file exported as well by setting the variable
 @code{org-export-skip-text-before-1st-heading} to @code{nil}.  On a
 per-file basis, you can get the same effect with
 
@@ -5098,12 +5130,13 @@ per-file basis, you can get the same effect with
 @end example
 
 The text before the first headline will be fully processed
-(@pxref{Enhancing text}).  If you need to include literal HTML, use the
-special constructs described in @ref{Quoting HTML tags}.  The table of
-contents is normally inserted directly before the first headline of the
-file.  If you would like to get it to a different location, insert
-the string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
-location.
+(@pxref{Enhancing text}), and the first non-comment line becomes the
+title of the exported document.  If you need to include literal HTML,
+use the special constructs described in @ref{Quoting HTML tags}.  The
+table of contents is normally inserted directly before the first
+headline of the file.  If you would like to get it to a different
+location, insert the string @code{[TABLE-OF-CONTENTS]} on a line by
+itself at the desired location.
 
 Finally, if you want to use the space before the first headline for
 internal purposes, but @emph{still} want to place something before the
@@ -5142,7 +5175,9 @@ backend supports lists.  See @xref{Plain lists}.
 @cindex italic text
 @item
 You can make words @b{*bold*}, @i{/italic/}, _underlined_,
-@code{=code=}, and @samp{+strikethrough+}.
+@code{=code=}, and even @samp{+strikethrough+}@footnote{but remember
+that strikethrough is typographically evil and should @i{never} be
+used.}.
 
 @cindex horizontal rules, in exported files
 @item
@@ -5950,10 +5985,12 @@ rather use @kbd{C-c .}  to re-insert the timestamp.
 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab
 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{@key{Esc} @key{RET}}
 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab
-@item @kbd{S-@key{left}}    @tab @kbd{C-c C-x @key{left}}  @tab
-@item @kbd{S-@key{right}}   @tab @kbd{C-c C-x @key{right}} @tab
-@item @kbd{S-@key{up}}      @tab @kbd{C-c C-x @key{up}}    @tab
-@item @kbd{S-@key{down}}    @tab @kbd{C-c C-x @key{down}}  @tab
+@item @kbd{S-@key{left}}    @tab @kbd{C-c @key{left}}      @tab
+@item @kbd{S-@key{right}}   @tab @kbd{C-c @key{right}}     @tab
+@item @kbd{S-@key{up}}      @tab @kbd{C-c @key{up}}        @tab
+@item @kbd{S-@key{down}}    @tab @kbd{C-c @key{down}}      @tab
+@item @kbd{C-S-@key{left}}  @tab @kbd{C-c C-x @key{left}}  @tab
+@item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab
 @end multitable
 
 @node Interaction, Bugs, TTY keys, Miscellaneous

BIN=BIN
orgcard.pdf


+ 4 - 3
orgcard.tex

@@ -1,5 +1,5 @@
 % Reference Card for Org Mode
-\def\orgversionnumber{4.69}
+\def\orgversionnumber{4.70}
 \def\versionyear{2007}          % latest update
 \def\year{2007}                 % latest copyright year
 %
@@ -512,6 +512,8 @@ after  ``{\tt :}'', and dictionary words elsewhere.
 \section{TODO Items and Checkboxes}
 
 \key{rotate the state of the current item}{C-c C-t}
+\metax{select next/previous state}{S-LEFT/RIGHT}
+\metax{select next/previous set}{C-S-LEFT/RIGHT}
 \key{view TODO items in a sparse tree}{C-c C-v}
 \key{view 3rd TODO keyword's sparse tree}{C-3 C-c C-v}
 
@@ -558,8 +560,7 @@ after  ``{\tt :}'', and dictionary words elsewhere.
 %\key{... forward/backward one month}{M-S-LEFT/RIGT}
 \key{Toggle custom format display for dates/times}{C-c C-x C-t}
 
-
-\section{Clocking Time}
+{\bf Clocking time}
 
 \key{start clock on current item}{C-c C-x C-i}
 \key{stop clock on current item}{C-c C-x C-o}