Browse Source

Release 4.70

Carsten Dominik 17 years ago
parent
commit
49c42c816a
6 changed files with 749 additions and 574 deletions
  1. 327 293
      org
  2. 254 151
      org.el
  3. BIN
      org.pdf
  4. 164 127
      org.texi
  5. 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
 * Org Mode: (org).      Outline-based notes management and organizer
 END-INFO-DIR-ENTRY
 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
    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
 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
    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
 * Workflow states::             From TODO to DONE in steps
 * TODO types::                  I do this, Fred the rest
 * 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
 * Multiple sets in one file::   Mixing it all, and still finding your way
+* Per file keywords::           Different files, different requirements
 
 
 Timestamps
 Timestamps
 
 
@@ -570,9 +570,9 @@ the visibility in the buffer.
 
 
 `C-c C-x b'
 `C-c C-x b'
      Show the current subtree in an indirect buffer(3).  With numerical
      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
    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
 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'.
    (2) see the option `org-cycle-global-at-bob'.
 
 
    (3) The indirect buffer (*note Indirect Buffers: (emacs)Indirect
    (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
 current tree.  Editing the indirect buffer will also change the
 original buffer, but without affecting visibility in that buffer.
 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'
 `C-c C-v'
      View TODO items in a _sparse tree_ (*note Sparse trees::).  Folds
      View TODO items in a _sparse tree_ (*note Sparse trees::).  Folds
      the entire buffer, but shows all TODO items and the headings
      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'
 `C-c a t'
      Show the global TODO list.  This collects the TODO items from all
      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
 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
    Note that tags are another way to classify headlines in general and
 TODO items in particular (*note Tags::).
 TODO items in particular (*note Tags::).
@@ -2338,8 +2340,8 @@ TODO items in particular (*note Tags::).
 
 
 * Workflow states::             From TODO to DONE in steps
 * Workflow states::             From TODO to DONE in steps
 * TODO types::                  I do this, Fred the rest
 * 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
 * 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
 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
 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
 5.2.2 TODO keywords as types
 ----------------------------
 ----------------------------
 
 
 The second possibility is to use TODO keywords to indicate different
 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
    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
 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
 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
 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
 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.
 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
 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
 To make sure you are using the correct keyword, type `#+' into the
 buffer and then use `M-<TAB>' completion.
 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
 (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
 lines, use `C-c C-c' with the cursor still in the line to make the
 changes known to Org-mode(1).
 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
 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.
 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
 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'
 `C-c a T'
      Like the above, but allows selection of a specific TODO keyword.
      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'.
      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
      Matching specific TODO keywords can also be done as part of a tags
      search (*note Tag searches::).
      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'
 `C-c C-e b'
      Export as HTML file and open it with a browser.  
      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 h'
 
 
 `C-c C-e v b'
 `C-c C-e v b'
+
+`C-c C-e v H'
      Export only the visible part of the document.
      Export only the visible part of the document.
 
 
    In the exported version, the first 3 outline levels will become
    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
 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
 `org-export-skip-text-before-1st-heading' to `nil'.  On a per-file
 basis, you can get the same effect with
 basis, you can get the same effect with
 
 
      #+OPTIONS: skip:nil
      #+OPTIONS: skip:nil
 
 
    The text before the first headline will be fully processed (*note
    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.
 location.
 
 
    Finally, if you want to use the space before the first headline for
    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::.
      supports lists.  See *Note Plain lists::.
 
 
    * You can make words *bold*, /italic/, _underlined_, `=code=', and
    * 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
    * A line consisting of only dashes, and at least 5 of them, will be
      exported as a horizontal line (`<hr/>' in HTML).
      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
 customization group `org-export-general', and the following section
 which explains how to set export options with special lines in a buffer.
 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
 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'    
 `S-<RET>'   `C-c C-x c'    
 `M-<RET>'   `C-c C-x m'    `<Esc> <RET>'
 `M-<RET>'   `C-c C-x m'    `<Esc> <RET>'
 `M-S-<RET>' `C-c C-x M'    
 `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>'        
             <left>'        
-`S-<right>' `C-c C-x       
+`C-S-<right>'`C-c C-x       
             <right>'       
             <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
 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 links:                  Handling links.      (line  25)
 * completion, of option keywords <1>:    Completion.          (line   6)
 * completion, of option keywords <1>:    Completion.          (line   6)
 * completion, of option keywords <2>:    Export options.      (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 <1>:               Completion.          (line   6)
 * completion, of tags:                   Setting tags.        (line  11)
 * completion, of tags:                   Setting tags.        (line  11)
 * completion, of TeX symbols:            Completion.          (line   6)
 * completion, of TeX symbols:            Completion.          (line   6)
 * completion, of TODO keywords <1>:      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, in calculations:            References.          (line  82)
 * constants.el:                          Cooperation.         (line  14)
 * constants.el:                          Cooperation.         (line  14)
 * constcgs, STARTUP keyword:             In-buffer settings.  (line  52)
 * constcgs, STARTUP keyword:             In-buffer settings.  (line  52)
@@ -6251,7 +6281,7 @@ Index
 * dispatching agenda commands:           Agenda dispatcher.   (line   6)
 * dispatching agenda commands:           Agenda dispatcher.   (line   6)
 * display changing, in agenda:           Agenda commands.     (line  65)
 * display changing, in agenda:           Agenda commands.     (line  65)
 * document structure:                    Document structure.  (line   6)
 * 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)
 * dynamic blocks:                        Dynamic blocks.      (line   6)
 * editing tables:                        Tables.              (line   6)
 * editing tables:                        Tables.              (line   6)
 * editing, of table formulas:            Editing and debugging formulas.
 * editing, of table formulas:            Editing and debugging formulas.
@@ -6303,7 +6333,7 @@ Index
 * GNUS links:                            External links.      (line   6)
 * GNUS links:                            External links.      (line   6)
 * hand-formatted lists:                  Enhancing text.      (line  11)
 * hand-formatted lists:                  Enhancing text.      (line  11)
 * headline levels:                       Export options.      (line  25)
 * 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 levels, for exporting:        ASCII export.        (line  18)
 * headline navigation:                   Motion.              (line   6)
 * headline navigation:                   Motion.              (line   6)
 * headline tagging:                      Tags.                (line   6)
 * headline tagging:                      Tags.                (line   6)
@@ -6475,7 +6505,7 @@ Index
 * structure editing:                     Structure editing.   (line   6)
 * structure editing:                     Structure editing.   (line   6)
 * structure of document:                 Document structure.  (line   6)
 * structure of document:                 Document structure.  (line   6)
 * sublevels, inclusion into tags match:  Tag inheritance.     (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.
 * subscript:                             Subscripts and Superscripts.
                                                               (line   6)
                                                               (line   6)
 * subtree cycling:                       Visibility cycling.  (line  10)
 * subtree cycling:                       Visibility cycling.  (line  10)
@@ -6667,7 +6697,7 @@ Key Index
 * C-c a m:                               Tag searches.        (line  12)
 * C-c a m:                               Tag searches.        (line  12)
 * C-c a T:                               Global TODO list.    (line  14)
 * C-c a T:                               Global TODO list.    (line  14)
 * C-c a t <1>:                           Global TODO list.    (line   9)
 * 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-a:                               Visibility cycling.  (line  33)
 * C-c C-b:                               Motion.              (line  15)
 * C-c C-b:                               Motion.              (line  15)
 * C-c C-c <1>:                           Cooperation.         (line  37)
 * 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 a:                             ASCII export.        (line   9)
 * C-c C-e b:                             Export commands.     (line   7)
 * C-c C-e b:                             Export commands.     (line   7)
 * C-c C-e c:                             iCalendar export.    (line  21)
 * 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 h:                             Export commands.     (line   6)
 * C-c C-e I:                             iCalendar export.    (line  16)
 * C-c C-e I:                             iCalendar export.    (line  16)
 * C-c C-e i:                             iCalendar export.    (line  14)
 * 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 <1>:                         XOXO export.         (line  11)
 * C-c C-e v:                             Sparse trees.        (line  41)
 * C-c C-e v:                             Sparse trees.        (line  41)
 * C-c C-e v a:                           ASCII export.        (line  13)
 * 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-e x:                             XOXO export.         (line  10)
 * C-c C-f:                               Motion.              (line  12)
 * C-c C-f:                               Motion.              (line  12)
 * C-c C-j:                               Motion.              (line  21)
 * C-c C-j:                               Motion.              (line  21)
@@ -6758,9 +6790,9 @@ Key Index
 * C-c ~:                                 Cooperation.         (line  48)
 * C-c ~:                                 Cooperation.         (line  48)
 * C-k:                                   Agenda commands.     (line 115)
 * C-k:                                   Agenda commands.     (line 115)
 * C-S-<left>:                            Multiple sets in one file.
 * C-S-<left>:                            Multiple sets in one file.
-                                                              (line  26)
+                                                              (line  25)
 * C-S-<right>:                           Multiple sets in one file.
 * C-S-<right>:                           Multiple sets in one file.
-                                                              (line  26)
+                                                              (line  25)
 * C-TAB:                                 ARCHIVE tag.         (line  38)
 * C-TAB:                                 ARCHIVE tag.         (line  38)
 * C-u C-c *:                             Updating the table.  (line  16)
 * C-u C-c *:                             Updating the table.  (line  16)
 * C-u C-c .:                             Creating timestamps. (line  14)
 * C-u C-c .:                             Creating timestamps. (line  14)
@@ -6802,7 +6834,7 @@ Key Index
 * M-<right>:                             Structure editing.   (line  24)
 * M-<right>:                             Structure editing.   (line  24)
 * M-<TAB> <1>:                           Completion.          (line  10)
 * M-<TAB> <1>:                           Completion.          (line  10)
 * M-<TAB> <2>:                           Setting tags.        (line   6)
 * 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.
 * M-<TAB>:                               Editing and debugging formulas.
                                                               (line  64)
                                                               (line  64)
 * M-<up> <1>:                            Editing and debugging formulas.
 * M-<up> <1>:                            Editing and debugging formulas.
@@ -6851,7 +6883,7 @@ Key Index
 * p:                                     Agenda commands.     (line  20)
 * p:                                     Agenda commands.     (line  20)
 * q:                                     Agenda commands.     (line 227)
 * q:                                     Agenda commands.     (line 227)
 * r <1>:                                 Agenda commands.     (line  80)
 * 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 206)
 * s:                                     Agenda commands.     (line  87)
 * s:                                     Agenda commands.     (line  87)
 * S-<down> <1>:                          Agenda commands.     (line 149)
 * S-<down> <1>:                          Agenda commands.     (line 149)
@@ -6867,7 +6899,7 @@ Key Index
                                                               (line  42)
                                                               (line  42)
 * S-<left> <3>:                          Creating timestamps. (line  51)
 * S-<left> <3>:                          Creating timestamps. (line  51)
 * S-<left> <4>:                          Multiple sets in one file.
 * S-<left> <4>:                          Multiple sets in one file.
-                                                              (line  22)
+                                                              (line  29)
 * S-<left> <5>:                          TODO basics.         (line  20)
 * S-<left> <5>:                          TODO basics.         (line  20)
 * S-<left>:                              Editing and debugging formulas.
 * S-<left>:                              Editing and debugging formulas.
                                                               (line  67)
                                                               (line  67)
@@ -6878,7 +6910,7 @@ Key Index
                                                               (line  39)
                                                               (line  39)
 * S-<right> <3>:                         Creating timestamps. (line  51)
 * S-<right> <3>:                         Creating timestamps. (line  51)
 * S-<right> <4>:                         Multiple sets in one file.
 * S-<right> <4>:                         Multiple sets in one file.
-                                                              (line  22)
+                                                              (line  29)
 * S-<right> <5>:                         TODO basics.         (line  20)
 * S-<right> <5>:                         TODO basics.         (line  20)
 * S-<right>:                             Editing and debugging formulas.
 * S-<right>:                             Editing and debugging formulas.
                                                               (line  67)
                                                               (line  67)
@@ -6915,172 +6947,174 @@ Node: Visibility cycling21720
 Ref: Visibility cycling-Footnote-123934
 Ref: Visibility cycling-Footnote-123934
 Ref: Visibility cycling-Footnote-223992
 Ref: Visibility cycling-Footnote-223992
 Ref: Visibility cycling-Footnote-324042
 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
 End Tag Table

+ 254 - 151
org.el

@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
 ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
 ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 4.69a
+;; Version: 4.70
 ;;
 ;;
 ;; This file is part of GNU Emacs.
 ;; This file is part of GNU Emacs.
 ;;
 ;;
@@ -83,7 +83,7 @@
 
 
 ;;; Version
 ;;; Version
 
 
-(defconst org-version "4.69a"
+(defconst org-version "4.70"
   "The version number of the file org.el.")
   "The version number of the file org.el.")
 (defun org-version ()
 (defun org-version ()
   (interactive)
   (interactive)
@@ -1329,23 +1329,45 @@ When nil, new notes will be filed to the end of a file or entry."
   :tag "Org Progress"
   :tag "Org Progress"
   :group 'org-time)
   :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
 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
 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-todo
   :group 'org-keywords
   :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)
 (defvar org-not-done-keywords nil)
 (make-variable-buffer-local 'org-not-done-keywords)
 (make-variable-buffer-local 'org-not-done-keywords)
 (defvar org-done-keywords nil)
 (defvar org-done-keywords nil)
@@ -1359,17 +1381,10 @@ the special #+SEQ_TODO and #+TYP_TODO lines."
 
 
 (defcustom org-todo-interpretation 'sequence
 (defcustom org-todo-interpretation 'sequence
   "Controls how TODO keywords are interpreted.
   "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-todo
   :group 'org-keywords
   :group 'org-keywords
   :type '(choice (const sequence)
   :type '(choice (const sequence)
@@ -1694,7 +1709,7 @@ forth between agenda and calendar."
  :tag "Org Agenda Custom Commands"
  :tag "Org Agenda Custom Commands"
  :group 'org-agenda)
  :group 'org-agenda)
 
 
-(defcustom org-agenda-custom-commands '(("w" todo "WAITING"))
+(defcustom org-agenda-custom-commands nil
   "Custom commands for the agenda.
   "Custom commands for the agenda.
 These commands will be offered on the splash screen displayed by the
 These commands will be offered on the splash screen displayed by the
 agenda dispatcher \\[org-agenda].  Each entry is a list like this:
 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."
   "Face for deadlines and TODO keywords."
   :group 'org-faces)
   :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
 (defface org-archived    ; similar to shadow
   (org-compatible-face
   (org-compatible-face
    '((((class color grayscale) (min-colors 88) (background light))
    '((((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 16) (background dark)) (:foreground "PaleGreen" :bold t))
      (((class color) (min-colors 8)) (:foreground "green"))
      (((class color) (min-colors 8)) (:foreground "green"))
      (t (:bold t))))
      (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)
   :group 'org-faces)
 
 
 (defface org-table ;; font-lock-function-name-face
 (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."
   "Precompute regular expressions for current buffer."
   (when (org-mode-p)
   (when (org-mode-p)
     (org-set-local 'org-todo-kwd-alist nil)
     (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-done-keywords nil)
     (org-set-local 'org-todo-heads nil)
     (org-set-local 'org-todo-heads nil)
     (org-set-local 'org-todo-sets 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"
 	       '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO"
 		 "STARTUP" "ARCHIVE" "TAGS" "LINK")))
 		 "STARTUP" "ARCHIVE" "TAGS" "LINK")))
 	  (splitre "[ \t]+")
 	  (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-excursion
 	(save-restriction
 	(save-restriction
 	  (widen)
 	  (widen)
@@ -3218,11 +3234,9 @@ means to push this value onto the list in the variable.")
 		  (setq value (replace-match "" t t value)))
 		  (setq value (replace-match "" t t value)))
 	      (setq cat (intern value)))
 	      (setq cat (intern value)))
 	     ((equal key "SEQ_TODO")
 	     ((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")
 	     ((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")
 	     ((equal key "TAGS")
 	      (setq tags (append tags (org-split-string value splitre))))
 	      (setq tags (append tags (org-split-string value splitre))))
 	     ((equal key "LINK")
 	     ((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 arch (org-set-local 'org-archive-location arch))
       (and links (setq org-link-abbrev-alist-local (nreverse links)))
       (and links (setq org-link-abbrev-alist-local (nreverse links)))
       ;; Process the TODO keywords
       ;; Process the TODO keywords
-      (unless (and int kwds)
+      (unless kwds
 	;; Use the global values as if they had been given locally.
 	;; 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)
 	  (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)))
 	      org-todo-kwd-alist (nreverse org-todo-kwd-alist)))
       ;; Process the tags.
       ;; Process the tags.
       (when 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
     ;; Compute the regular expressions and other local variables
     (if (not org-done-keywords)
     (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)
     (setq org-ds-keyword-length (+ 2 (max (length org-deadline-string)
 					  (length org-scheduled-string)))
 					  (length org-scheduled-string)))
 	  org-not-done-keywords
 	  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
 	  org-todo-regexp
-	  (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords
+	  (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords-1
 				      "\\|") "\\)\\>")
 				      "\\|") "\\)\\>")
 	  org-not-done-regexp
 	  org-not-done-regexp
 	  (concat "\\<\\("
 	  (concat "\\<\\("
@@ -3302,7 +3322,7 @@ means to push this value onto the list in the variable.")
 		  "\\)\\>")
 		  "\\)\\>")
 	  org-todo-line-regexp
 	  org-todo-line-regexp
 	  (concat "^\\(\\*+\\)[ \t]*\\(?:\\("
 	  (concat "^\\(\\*+\\)[ \t]*\\(?:\\("
-		  (mapconcat 'regexp-quote org-todo-keywords "\\|")
+		  (mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
 		  "\\)\\>\\)? *\\(.*\\)")
 		  "\\)\\>\\)? *\\(.*\\)")
 	  org-nl-done-regexp
 	  org-nl-done-regexp
 	  (concat "[\r\n]\\*+[ \t]+"
 	  (concat "[\r\n]\\*+[ \t]+"
@@ -3310,7 +3330,7 @@ means to push this value onto the list in the variable.")
 		  "\\)" "\\>")
 		  "\\)" "\\>")
 	  org-todo-line-tags-regexp
 	  org-todo-line-tags-regexp
 	  (concat "^\\(\\*+\\)[ \t]*\\(?:\\("
 	  (concat "^\\(\\*+\\)[ \t]*\\(?:\\("
-		  (mapconcat 'regexp-quote org-todo-keywords "\\|")
+		  (mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
 		  "\\)\\>\\)? *\\(.*?\\([ \t]:[a-zA-Z0-9:_@]+:[ \t]*\\)?$\\)")
 		  "\\)\\>\\)? *\\(.*?\\([ \t]:[a-zA-Z0-9:_@]+:[ \t]*\\)?$\\)")
 	  org-looking-at-done-regexp 
 	  org-looking-at-done-regexp 
 	  (concat "^" "\\(?:"
 	  (concat "^" "\\(?:"
@@ -3550,6 +3570,7 @@ This variable is set by `org-before-change-function'.
 (defvar org-mode-hook nil)
 (defvar org-mode-hook nil)
 (defvar org-inhibit-startup nil)        ; Dynamically-scoped param.
 (defvar org-inhibit-startup nil)        ; Dynamically-scoped param.
 (defvar org-agenda-keep-modes nil)      ; Dynamically-scoped param.
 (defvar org-agenda-keep-modes nil)      ; Dynamically-scoped param.
+(defvar org-table-buffer-is-an nil)
 
 
 
 
 ;;;###autoload
 ;;;###autoload
@@ -4579,7 +4600,7 @@ state (TODO by default).  Also with prefix arg, force first state."
     (if (or arg
     (if (or arg
 	    (not (match-beginning 2))
 	    (not (match-beginning 2))
 	    (member (match-string 2) org-done-keywords))
 	    (member (match-string 2) org-done-keywords))
-	(insert (car org-todo-keywords) " ")
+	(insert (car org-todo-keywords-1) " ")
       (insert (match-string 2) " "))))
       (insert (match-string 2) " "))))
 
 
 ;;; Promotion and Demotion
 ;;; 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."
 If the cursor is not in an item, throw an error."
   (interactive)
   (interactive)
   (let ((pos (point))
   (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-empty (if org-empty-line-terminates-plain-lists 0 10000))
 	ind ind1)
 	ind ind1)
     (if (org-at-item-p)
     (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).
 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
 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
 1 trees.  If the cursor is on a headline, only try the direct children of
-this heading. "
+this heading."
   (interactive "P")
   (interactive "P")
   (if find-done
   (if find-done
       (org-archive-all-done)
       (org-archive-all-done)
     ;; Save all relevant TODO keyword-relatex variables
     ;; Save all relevant TODO keyword-relatex variables
 
 
     (let ((tr-org-todo-line-regexp org-todo-line-regexp) ; keep despite compiler
     (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-todo-kwd-alist org-todo-kwd-alist)
 	  (tr-org-done-keywords org-done-keywords)
 	  (tr-org-done-keywords org-done-keywords)
 	  (tr-org-todo-regexp org-todo-regexp)
 	  (tr-org-todo-regexp org-todo-regexp)
@@ -5612,7 +5637,8 @@ this heading. "
 	;; Enforce org-mode for the archive buffer
 	;; Enforce org-mode for the archive buffer
 	(if (not (org-mode-p))
 	(if (not (org-mode-p))
 	    ;; Force the mode for future visits.
 	    ;; 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)))
 	      (call-interactively 'org-mode)))
 	(when newfile-p
 	(when newfile-p
 	  (goto-char (point-max))
 	  (goto-char (point-max))
@@ -5620,7 +5646,7 @@ this heading. "
 			  (buffer-file-name this-buffer))))
 			  (buffer-file-name this-buffer))))
 	;; Force the TODO keywords of the original buffer
 	;; Force the TODO keywords of the original buffer
 	(let ((org-todo-line-regexp tr-org-todo-line-regexp)
 	(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-todo-kwd-alist tr-org-todo-kwd-alist)
 	      (org-done-keywords tr-org-done-keywords)
 	      (org-done-keywords tr-org-done-keywords)
 	      (org-todo-regexp tr-org-todo-regexp)
 	      (org-todo-regexp tr-org-todo-regexp)
@@ -5652,10 +5678,10 @@ this heading. "
 	    (goto-char (point-max)) (insert "\n"))
 	    (goto-char (point-max)) (insert "\n"))
 	  ;; Paste
 	  ;; Paste
 	  (org-paste-subtree (org-get-legal-level level 1))
 	  (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
 	  (if org-archive-mark-done
 	      (let (org-log-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
 	  ;; Move cursor to right after the TODO keyword
 	  (when org-archive-stamp-time
 	  (when org-archive-stamp-time
 	    (beginning-of-line 1)
 	    (beginning-of-line 1)
@@ -7118,8 +7144,8 @@ the table and kill the editing buffer."
 
 
 (defun org-trim (s)
 (defun org-trim (s)
   "Remove whitespace at beginning and end of string."
   "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)
   s)
 
 
 (defun org-wrap (string &optional width lines)
 (defun org-wrap (string &optional width lines)
@@ -8137,7 +8163,10 @@ Parameters get priority."
 	entry s type title)
 	entry s type title)
     (switch-to-buffer-other-window "*Edit Formulas*")
     (switch-to-buffer-other-window "*Edit Formulas*")
     (erase-buffer)
     (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-pos pos)
     (org-set-local 'org-window-configuration wc)
     (org-set-local 'org-window-configuration wc)
     (use-local-map org-table-fedit-map)
     (use-local-map org-table-fedit-map)
@@ -8344,7 +8373,6 @@ a translation reference."
 	(goto-char pos)
 	(goto-char pos)
 	(org-table-toggle-coordinate-overlays)))))
 	(org-table-toggle-coordinate-overlays)))))
 
 
-(defvar org-table-buffer-is-an nil)
 (defun org-table-fedit-finish (&optional arg)
 (defun org-table-fedit-finish (&optional arg)
   "Parse the buffer for formula definitions and install them.
   "Parse the buffer for formula definitions and install them.
 With prefix ARG, apply the new formulas to the table."
 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]*\\'"
 		   ((string-match "\\`\\*+[ \t]*\\'"
 				  (buffer-substring (point-at-bol) beg))
 				  (buffer-substring (point-at-bol) beg))
 		    (setq type :todo)
 		    (setq type :todo)
-		    (mapcar 'list org-todo-keywords))
+		    (mapcar 'list org-todo-keywords-1))
 		   (searchhead
 		   (searchhead
 		    (setq type :searchhead)
 		    (setq type :searchhead)
 		    (save-excursion
 		    (save-excursion
@@ -11310,29 +11338,31 @@ For calling through lisp, arg is also interpreted in the following way:
 	(looking-at " *"))
 	(looking-at " *"))
     (let* ((this (match-string 1))
     (let* ((this (match-string 1))
 	   (head (org-get-todo-sequence-head this))
 	   (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 ""))
 	   (last-state (or this ""))
 	   (completion-ignore-case t)
 	   (completion-ignore-case t)
-	   (member (member this org-todo-keywords))
+	   (member (member this org-todo-keywords-1))
 	   (tail (cdr member))
 	   (tail (cdr member))
 	   (state (cond
 	   (state (cond
 		   ((equal arg '(4))
 		   ((equal arg '(4))
 		    ;; Read a state with completion
 		    ;; Read a state with completion
 		    (completing-read "State: " (mapcar (lambda(x) (list x))
 		    (completing-read "State: " (mapcar (lambda(x) (list x))
-						       org-todo-keywords)
+						       org-todo-keywords-1)
 				     nil t))
 				     nil t))
 		   ((eq arg 'right)
 		   ((eq arg 'right)
 		    (if this
 		    (if this
 			(if tail (car tail) nil)
 			(if tail (car tail) nil)
-		      (car org-todo-keywords)))
+		      (car org-todo-keywords-1)))
 		   ((eq arg 'left)
 		   ((eq arg 'left)
-		    (if (equal member org-todo-keywords)
+		    (if (equal member org-todo-keywords-1)
 			nil
 			nil
 		      (if this
 		      (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
 		   (arg
 		    ;; user or caller requests a specific state
 		    ;; user or caller requests a specific state
 		    (cond
 		    (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)))
 		      (let ((org-todo-heads (reverse org-todo-heads)))
 			(or (car (cdr (member head org-todo-heads)))
 			(or (car (cdr (member head org-todo-heads)))
 			    (car 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))
 		     ((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
 		   ((null tail) nil) ;; -> first entry
 		   ((eq interpret 'sequence)
 		   ((eq interpret 'sequence)
 		    (car tail))
 		    (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) " ")))
 		 (mapconcat 'identity (assoc state org-todo-sets) " ")))
       (setq org-last-todo-state-is-todo
       (setq org-last-todo-state-is-todo
 	    (not (member state org-done-keywords)))
 	    (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)
 	(setq dostates (and (eq interpret 'sequence)
 			    (listp org-log-done) (memq 'state org-log-done)))
 			    (listp org-log-done) (memq 'state org-log-done)))
 	(cond
 	(cond
@@ -11412,8 +11442,8 @@ right sequence."
 	    (setq p (next-single-property-change (point-at-bol) 'org-todo-head
 	    (setq p (next-single-property-change (point-at-bol) 'org-todo-head
 						 nil (point-at-eol)))
 						 nil (point-at-eol)))
 	    (get-text-property p 'org-todo-head))))
 	    (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))))))
      (t (nth 2 (assoc kwd org-todo-kwd-alist))))))
   
   
 (defun org-get-repeat ()
 (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.
 headlines above the match.
 With \\[universal-argument] prefix, also show the DONE entries.
 With \\[universal-argument] prefix, also show the DONE entries.
 With a numeric prefix N, construct a sparse tree for the Nth element
 With a numeric prefix N, construct a sparse tree for the Nth element
-of `org-todo-keywords'."
+of `org-todo-keywords-1'."
   (interactive "P")
   (interactive "P")
   (let ((case-fold-search nil)
   (let ((case-fold-search nil)
 	(kwd-re
 	(kwd-re
 	 (cond ((null arg) org-not-done-regexp)
 	 (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))
 		(regexp-quote (nth (1- (prefix-numeric-value arg))
-				   org-todo-keywords)))
+				   org-todo-keywords-1)))
 	       (t (error "Invalid prefix argument: %s" arg)))))
 	       (t (error "Invalid prefix argument: %s" arg)))))
     (message "%d TODO entries found"
     (message "%d TODO entries found"
 	     (org-occur (concat "^" outline-regexp " +" kwd-re )))))
 	     (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."
 are included in the output."
   (let* ((re (concat "[\n\r]" outline-regexp " *\\(\\<\\("
   (let* ((re (concat "[\n\r]" outline-regexp " *\\(\\<\\("
 		     (mapconcat 'regexp-quote
 		     (mapconcat 'regexp-quote
-				(nreverse (cdr (reverse org-todo-keywords)))
+				(nreverse (cdr (reverse org-todo-keywords-1)))
 				"\\|")
 				"\\|")
 		     "\\>\\)\\)? *\\(.*?\\)\\(:[A-Za-z_@0-9:]+:\\)?[ \t]*$"))
 		     "\\>\\)\\)? *\\(.*?\\)\\(:[A-Za-z_@0-9:]+:\\)?[ \t]*$"))
 	 (props (list 'face nil
 	 (props (list 'face nil
@@ -13385,6 +13420,8 @@ The following commands are available:
   (setq org-agenda-undo-list nil
   (setq org-agenda-undo-list nil
 	org-agenda-pending-undo-list nil)
 	org-agenda-pending-undo-list nil)
   (setq major-mode 'org-agenda-mode)
   (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")
   (setq mode-name "Org-Agenda")
   (use-local-map org-agenda-mode-map)
   (use-local-map org-agenda-mode-map)
   (easy-menu-add org-agenda-menu)
   (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 "\C-c\C-o" 'org-agenda-open-link)
 (define-key org-agenda-mode-map " "        'org-agenda-show)
 (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 "\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 "\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 "b"        'org-agenda-tree-to-indirect-buffer)
 (define-key org-agenda-mode-map "o"        'delete-other-windows)
 (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."
   "Get the table of categories and positions in current buffer."
   (let (tbl)
   (let (tbl)
     (save-excursion
     (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))
     tbl))
 
 
 (defun org-get-category (&optional pos)
 (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 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
 the list to these.  When using \\[universal-argument], you will be prompted
 for a keyword.  A numeric prefix directly selects the Nth keyword in
 for a keyword.  A numeric prefix directly selects the Nth keyword in
-`org-todo-keywords'."
+`org-todo-keywords-1'."
   (interactive "P")
   (interactive "P")
   (require 'calendar)
   (require 'calendar)
   (org-compile-prefix-format 'todo)
   (org-compile-prefix-format 'todo)
   (org-set-sorting-strategy 'todo)
   (org-set-sorting-strategy 'todo)
   (let* ((today (time-to-days (current-time)))
   (let* ((today (time-to-days (current-time)))
 	 (date (calendar-gregorian-from-absolute today))
 	 (date (calendar-gregorian-from-absolute today))
-	 (kwds org-todo-keywords)
+	 (kwds org-todo-keywords-1)
 	 (completion-ignore-case t)
 	 (completion-ignore-case t)
 	 (org-select-this-todo-keyword
 	 (org-select-this-todo-keyword
 	  (if (stringp arg) arg
 	  (if (stringp arg) arg
 	    (and arg (integerp arg) (> arg 0)
 	    (and arg (integerp arg) (> arg 0)
-                 (nth (1- arg) org-todo-keywords))))
+                 (nth (1- arg) org-todo-keywords-1))))
 	 rtn rtnall files file pos)
 	 rtn rtnall files file pos)
     (when (equal arg '(4))
     (when (equal arg '(4))
       (setq org-select-this-todo-keyword
       (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))
     (and (equal 0 arg) (setq org-select-this-todo-keyword nil))
     (org-prepare-agenda)
     (org-prepare-agenda)
     (org-set-local 'org-last-arg arg)
     (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
     (setq org-agenda-redo-command
 	  '(org-todo-list (or current-prefix-arg org-last-arg)))
 	  '(org-todo-list (or current-prefix-arg org-last-arg)))
     (setq files (org-agenda-files)
     (setq files (org-agenda-files)
@@ -14505,7 +14549,7 @@ for a keyword.  A numeric prefix directly selects the Nth keyword in
 	 (let ((n 0))
 	 (let ((n 0))
 	   (mapconcat (lambda (x)
 	   (mapconcat (lambda (x)
 			(format "(%d)%s" (setq n (1+ n)) x))
 			(format "(%d)%s" (setq n (1+ n)) x))
-		      org-todo-keywords " "))
+		      org-todo-keywords-1 " "))
 	 "\n"))
 	 "\n"))
       (add-text-properties pos (1- (point)) (list 'face 'org-level-3)))
       (add-text-properties pos (1- (point)) (list 'face 'org-level-3)))
     (when rtnall
     (when rtnall
@@ -14883,7 +14927,8 @@ the documentation of `org-diary'."
 	 ;; FIXME: get rid of the \n at some point  but watch out
 	 ;; FIXME: get rid of the \n at some point  but watch out
 	 (regexp (concat "[\n\r]\\*+ *\\("
 	 (regexp (concat "[\n\r]\\*+ *\\("
 			 (if org-select-this-todo-keyword
 			 (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)
 			   org-not-done-regexp)
 			 "[^\n\r]*\\)"))
 			 "[^\n\r]*\\)"))
@@ -15926,6 +15971,16 @@ dedicated frame)."
   "Marker pointing to the headline that last changed its TODO state
   "Marker pointing to the headline that last changed its TODO state
 by a remote command from the agenda.")
 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)
 (defun org-agenda-todo (&optional arg)
   "Cycle TODO state of line at point, also in Org-mode file.
   "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
 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
 \[a] export as ASCII
 \[h] export as HTML
 \[h] export as HTML
+\[H] export as HTML to temporary buffer
 \[b] export as HTML and browse immediately
 \[b] export as HTML and browse immediately
 \[x] export as XOXO
 \[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)
 	   (?a . org-export-as-ascii)
 	   (?h . org-export-as-html)
 	   (?h . org-export-as-html)
 	   (?b . org-export-as-html-and-open)
 	   (?b . org-export-as-html-and-open)
+	   (?H . org-export-as-html-to-buffer)
 	   (?x . org-export-as-xoxo)
 	   (?x . org-export-as-xoxo)
 	   (?i . org-export-icalendar-this-file)
 	   (?i . org-export-icalendar-this-file)
 	   (?I . org-export-icalendar-all-agenda-files)
 	   (?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 "\\>"))
 	 (re-quote (concat "^\\*+[ \t]+" org-quote-string "\\>"))
 	 (htmlp (plist-get parameters :for-html))
 	 (htmlp (plist-get parameters :for-html))
 	 (outline-regexp "\\*+")
 	 (outline-regexp "\\*+")
-	 rtn)
+	 rtn p)
     (save-excursion
     (save-excursion
       (set-buffer (get-buffer-create " org-mode-tmp"))
       (set-buffer (get-buffer-create " org-mode-tmp"))
       (erase-buffer)
       (erase-buffer)
       (insert string)
       (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))
       (let ((org-inhibit-startup t)) (org-mode))
       (untabify (point-min) (point-max))
       (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")
     (kill-buffer " org-mode-tmp")
     rtn))
     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)
 (defun org-solidify-link-text (s &optional alist)
   "Take link text and make a safe target out of it."
   "Take link text and make a safe target out of it."
   (save-match-data
   (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-beginning) (point-min))
 	   (if (org-region-active-p) (region-end) (point-max))))
 	   (if (org-region-active-p) (region-end) (point-max))))
 	 (custom-times org-display-custom-times)
 	 (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))
 	 (org-ascii-current-indentation '(0 . 0))
 	 (level 0) line txt
 	 (level 0) line txt
 	 (umax nil)
 	 (umax nil)
@@ -17419,6 +17485,9 @@ underlined headlines.  The default is 3."
 	 (time  (format-time-string "%X" (org-current-time)))
 	 (time  (format-time-string "%X" (org-current-time)))
 	 (author      (plist-get opt-plist :author))
 	 (author      (plist-get opt-plist :author))
 	 (title       (or (plist-get opt-plist :title)
 	 (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-sans-extension
 			   (file-name-nondirectory buffer-file-name))))
 			   (file-name-nondirectory buffer-file-name))))
 	 (email       (plist-get opt-plist :email))
 	 (email       (plist-get opt-plist :email))
@@ -17427,7 +17496,17 @@ underlined headlines.  The default is 3."
 ;	 (quote-re    (concat "^\\(\\*+\\)\\([ \t]*" org-quote-string "\\>\\)"))
 ;	 (quote-re    (concat "^\\(\\*+\\)\\([ \t]*" org-quote-string "\\>\\)"))
 	 (todo nil)
 	 (todo nil)
 	 (lang-words 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)
     (setq org-last-level 1)
     (org-init-section-numbers)
     (org-init-section-numbers)
@@ -17473,6 +17552,7 @@ underlined headlines.  The default is 3."
 				       line)
 				       line)
 			 ;; This is a headline
 			 ;; This is a headline
 			 (progn
 			 (progn
+			   (setq have-headings t)
 			   (setq level (- (match-end 1) (match-beginning 1))
 			   (setq level (- (match-end 1) (match-beginning 1))
 				 level (org-tr-level level)
 				 level (org-tr-level level)
 				 txt (match-string 3 line)
 				 txt (match-string 3 line)
@@ -17507,7 +17587,7 @@ underlined headlines.  The default is 3."
 				 (setq org-last-level level))
 				 (setq org-last-level level))
 			     ))))
 			     ))))
 		  lines)
 		  lines)
-	  (setq thetoc (nreverse thetoc))))
+	  (setq thetoc (if have-headings (nreverse thetoc) nil))))
     
     
     (org-init-section-numbers)
     (org-init-section-numbers)
     (while (setq line (pop lines))
     (while (setq line (pop lines))
@@ -17636,7 +17716,7 @@ continue to use it.  The prefix arg ARG is passed through to the exporting
 command."
 command."
   (interactive
   (interactive
    (list (progn
    (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))
 	   (read-char-exclusive))
 	 current-prefix-arg))
 	 current-prefix-arg))
   (if (not (member type '(?a ?\C-a ?b ?\C-b ?h ?x ?\ )))
   (if (not (member type '(?a ?\C-a ?b ?\C-b ?h ?x ?\ )))
@@ -17647,6 +17727,7 @@ command."
 				(?b . org-export-as-html-and-open)
 				(?b . org-export-as-html-and-open)
 				(?\C-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)
+				(?H . org-export-as-html-to-buffer)
 				(?x . org-export-as-xoxo)))))
 				(?x . org-export-as-xoxo)))))
 	 (keepp (equal type ?\ ))
 	 (keepp (equal type ?\ ))
 	 (file buffer-file-name)
 	 (file buffer-file-name)
@@ -17818,14 +17899,23 @@ emacs 	--batch
 	--visit=MyFile --funcall org-export-as-html-batch"
 	--visit=MyFile --funcall org-export-as-html-batch"
   (org-export-as-html org-export-headline-levels 'hidden))
   (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.
   "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
 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")
   (interactive "P")
   (message "Exporting...")
   (message "Exporting...")
   (setq-default org-todo-line-regexp org-todo-line-regexp)
   (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))
 	 (style (plist-get opt-plist :style))
 	 (link-validate (plist-get opt-plist :link-validation-function))
 	 (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)
 	 (odd org-odd-levels-only)
 	 (region-p (org-region-active-p))
 	 (region-p (org-region-active-p))
          (region
          (region
@@ -17849,19 +17939,6 @@ org-mode's default settings, but still inferior to file-local settings."
 	 ;; routines below.
 	 ;; routines below.
 	 (org-current-export-dir (org-export-directory :html opt-plist))
 	 (org-current-export-dir (org-export-directory :html opt-plist))
 	 (org-current-export-file buffer-file-name)
 	 (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
          (level 0) (line "") (origline "") txt todo
          (umax nil)
          (umax nil)
          (umax-toc 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))
 			    (file-name-nondirectory buffer-file-name))
 			   ".html"))
 			   ".html"))
 	 (current-dir (file-name-directory buffer-file-name))
 	 (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))
          (org-levels-open (make-vector org-level-max nil))
 	 (date (format-time-string "%Y/%m/%d" (current-time)))
 	 (date (format-time-string "%Y/%m/%d" (current-time)))
 	 (time  (format-time-string "%X" (org-current-time)))
 	 (time  (format-time-string "%X" (org-current-time)))
          (author      (plist-get opt-plist :author))
          (author      (plist-get opt-plist :author))
 	 (title       (or (plist-get opt-plist :title)
 	 (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-sans-extension
 			   (file-name-nondirectory buffer-file-name))))
 			   (file-name-nondirectory buffer-file-name))))
 	 (quote-re0   (concat "^[ \t]*" org-quote-string "\\>"))
 	 (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
 	 (charset (and coding-system
 		       (fboundp 'coding-system-get)
 		       (fboundp 'coding-system-get)
 		       (coding-system-get coding-system 'mime-charset)))
 		       (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-open type
 	 table-buffer table-orig-buffer
 	 table-buffer table-orig-buffer
 	 ind start-is-num starter didclose
 	 ind start-is-num starter didclose
 	 rpl path desc descp desc1 desc2 link
 	 rpl path desc descp desc1 desc2 link
 	 )
 	 )
+
+    (remove-text-properties (point-min) (point-max) '(:org-license-to-kill t))
+
     (message "Exporting...")
     (message "Exporting...")
 
 
     (setq org-last-level 1)
     (setq org-last-level 1)
@@ -17955,8 +18053,8 @@ lang=\"%s\" xml:lang=\"%s\">
       (insert (or (plist-get opt-plist :preamble) ""))
       (insert (or (plist-get opt-plist :preamble) ""))
 
 
       (when (plist-get opt-plist :auto-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
       (if org-export-with-toc
 	  (progn
 	  (progn
@@ -17971,6 +18069,7 @@ lang=\"%s\" xml:lang=\"%s\">
 		       (if (string-match org-todo-line-regexp line)
 		       (if (string-match org-todo-line-regexp line)
 			   ;; This is a headline
 			   ;; This is a headline
 			   (progn
 			   (progn
+			     (setq have-headings t)
 			     (setq level (- (match-end 1) (match-beginning 1))
 			     (setq level (- (match-end 1) (match-beginning 1))
 				   level (org-tr-level level)
 				   level (org-tr-level level)
 				   txt (save-match-data
 				   txt (save-match-data
@@ -18035,7 +18134,7 @@ lang=\"%s\" xml:lang=\"%s\">
 	    (while (> org-last-level 0)
 	    (while (> org-last-level 0)
 	      (setq org-last-level (1- org-last-level))
 	      (setq org-last-level (1- org-last-level))
 	      (push "</li>\n</ul>\n" thetoc))
 	      (push "</li>\n</ul>\n" thetoc))
-	    (setq thetoc (nreverse thetoc))))
+	    (setq thetoc (if have-headings (nreverse thetoc) nil))))
       (setq head-count 0)
       (setq head-count 0)
       (org-init-section-numbers)
       (org-init-section-numbers)
 
 
@@ -18366,11 +18465,10 @@ lang=\"%s\" xml:lang=\"%s\">
       (goto-char (point-min))
       (goto-char (point-min))
       (while (re-search-forward "<li>[ \r\n\t]*</li>\n?" nil t)
       (while (re-search-forward "<li>[ \r\n\t]*</li>\n?" nil t)
 	(replace-match ""))
 	(replace-match ""))
-      (save-buffer)
+      (or temp-buffer-only (save-buffer))
       (goto-char (point-min))
       (goto-char (point-min))
       (message "Exporting... done"))))
       (message "Exporting... done"))))
 
 
-
 (defun org-format-table-html (lines olines)
 (defun org-format-table-html (lines olines)
   "Find out which HTML converter to use and return the HTML code."
   "Find out which HTML converter to use and return the HTML code."
   (if (string-match "^[ \t]*|" (car lines))
   (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-xR"    'org-shiftmetaright)
   (define-key org-mode-map "\C-c\C-xU"    'org-shiftmetaup)
   (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-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
   ;; All the other keys
 
 
@@ -19694,7 +19794,9 @@ See the individual commands for more information."
      ("Select keyword"
      ("Select keyword"
       ["Next keyword" org-shiftright (org-on-heading-p)]
       ["Next keyword" org-shiftright (org-on-heading-p)]
       ["Previous keyword" org-shiftleft (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]
      ["Show TODO Tree" org-show-todo-tree t]
      ["Global TODO list" org-todo-list 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-back-to-heading 'outline-back-to-heading)
 (defalias 'org-on-heading-p 'outline-on-heading-p)
 (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 ()
 (defun org-on-target-p ()
   (or (org-in-regexp org-radio-target-regexp)
   (or (org-in-regexp org-radio-target-regexp)
@@ -20361,7 +20466,6 @@ Show the heading too, if it is currently invisible."
 
 
 ;;;; Experimental code
 ;;;; Experimental code
 
 
-
 ;;;; Finish up
 ;;;; Finish up
 
 
 (provide 'org)
 (provide 'org)
@@ -20370,4 +20474,3 @@ Show the heading too, if it is currently invisible."
 
 
 ;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
 ;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
 ;;; org.el ends here
 ;;; org.el ends here
-

BIN
org.pdf


+ 164 - 127
org.texi

@@ -3,7 +3,7 @@
 @setfilename ../info/org
 @setfilename ../info/org
 @settitle Org Mode Manual
 @settitle Org Mode Manual
 
 
-@set VERSION 4.69
+@set VERSION 4.70
 @set DATE March 2007
 @set DATE March 2007
 
 
 @dircategory Emacs
 @dircategory Emacs
@@ -169,8 +169,8 @@ Extended use of TODO keywords
 
 
 * Workflow states::             From TODO to DONE in steps
 * Workflow states::             From TODO to DONE in steps
 * TODO types::                  I do this, Fred the rest
 * 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
 * Multiple sets in one file::   Mixing it all, and still finding your way
+* Per file keywords::           Different files, different requirements
 
 
 Timestamps
 Timestamps
 
 
@@ -663,13 +663,19 @@ level, all sibling headings.
 @kindex C-c C-x b
 @kindex C-c C-x b
 @item C-c C-x b
 @item C-c C-x b
 Show the current subtree in an indirect buffer@footnote{The indirect
 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
 @end table
 
 
 When Emacs first visits an Org-mode file, the global state is set to
 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
 @item C-c C-v
 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds
 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds
 the entire buffer, but shows all TODO items and the headings hierarchy
 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
 @kindex C-c a t
 @item C-c a t
 @item C-c a t
 Show the global TODO list.  This collects the TODO items from all
 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
 @cindex extended TODO keywords
 
 
 The default implementation of TODO entries is just two states: TODO and
 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
 Note that @i{tags} are another way to classify headlines in general and
 TODO items in particular (@pxref{Tags}).
 TODO items in particular (@pxref{Tags}).
@@ -2595,8 +2602,8 @@ TODO items in particular (@pxref{Tags}).
 @menu
 @menu
 * Workflow states::             From TODO to DONE in steps
 * Workflow states::             From TODO to DONE in steps
 * TODO types::                  I do this, Fred the rest
 * 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
 * Multiple sets in one file::   Mixing it all, and still finding your way
+* Per file keywords::           Different files, different requirements
 @end menu
 @end menu
 
 
 @node Workflow states, TODO types, TODO extensions, TODO extensions
 @node Workflow states, TODO types, TODO extensions, TODO extensions
@@ -2604,132 +2611,150 @@ TODO items in particular (@pxref{Tags}).
 @cindex TODO workflow
 @cindex TODO workflow
 @cindex workflow states as TODO keywords
 @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
 @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
 @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
 @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
 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.
 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
 @subsection TODO keywords as types
 @cindex TODO types
 @cindex TODO types
 @cindex names as TODO keywords
 @cindex names as TODO keywords
 @cindex types as TODO keywords
 @cindex types as TODO keywords
 
 
 The second possibility is to use TODO keywords to indicate different
 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
 @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
 @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
 @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
 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,
 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
 @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
 (nothing) to @code{REPORT}.  Therefore you need a mechanism to initially
 select the correct sequence.  Besides the obvious ways like typing a
 select the correct sequence.  Besides the obvious ways like typing a
 keyword or using completion, you may also apply the following commands:
 keyword or using completion, you may also apply the following commands:
 
 
 @table @kbd
 @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{right}
 @kindex C-S-@key{left}
 @kindex C-S-@key{left}
 @item C-S-@key{right}
 @item C-S-@key{right}
 @itemx C-S-@key{left}
 @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
 @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
 @node Priorities, Breaking down tasks, TODO extensions, TODO items
 @section Priorities
 @section Priorities
 @cindex priorities
 @cindex priorities
@@ -3847,10 +3872,12 @@ the TODO entries directly from that buffer (@pxref{Agenda commands}).
 @kindex C-c a T
 @kindex C-c a T
 @item C-c a T
 @item C-c a T
 @cindex TODO keyword matching
 @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
 @kindex r
 The @kbd{r} key in the agenda buffer regenerates it, and you can give
 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,
 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
 @kindex C-c C-e b
 @item C-c C-e b
 @item C-c C-e b
 Export as HTML file and open it with a browser.
 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 h
 @kindex C-c C-e v b
 @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 h
 @item C-c C-e v b
 @item C-c C-e v b
+@item C-c C-e v H
 Export only the visible part of the document.
 Export only the visible part of the document.
 @end table
 @end table
 
 
@@ -5085,11 +5117,11 @@ Toggle the COMMENT keyword at the beginning of an entry.
 @subsection Text before the first headline
 @subsection Text before the first headline
 
 
 Org-mode normally ignores any text before the first headline when
 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
 @code{org-export-skip-text-before-1st-heading} to @code{nil}.  On a
 per-file basis, you can get the same effect with
 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
 @end example
 
 
 The text before the first headline will be fully processed
 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
 Finally, if you want to use the space before the first headline for
 internal purposes, but @emph{still} want to place something before the
 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
 @cindex italic text
 @item
 @item
 You can make words @b{*bold*}, @i{/italic/}, _underlined_,
 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
 @cindex horizontal rules, in exported files
 @item
 @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{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-@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{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
 @end multitable
 
 
 @node Interaction, Bugs, TTY keys, Miscellaneous
 @node Interaction, Bugs, TTY keys, Miscellaneous

BIN
orgcard.pdf


+ 4 - 3
orgcard.tex

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