Browse Source

Release 4.27

Carsten Dominik 17 years ago
parent
commit
5f473f46df
6 changed files with 656 additions and 318 deletions
  1. 163 128
      org
  2. 444 173
      org.el
  3. BIN
      org.pdf
  4. 48 16
      org.texi
  5. BIN
      orgcard.pdf
  6. 1 1
      orgcard.tex

+ 163 - 128
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.26).
+   This manual is for Org-mode (version 4.27).
 
 
    Copyright (C) 2004, 2005, 2006 Free Software Foundation
    Copyright (C) 2004, 2005, 2006 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.26).
+This manual is for Org-mode (version 4.27).
 
 
    Copyright (C) 2004, 2005, 2006 Free Software Foundation
    Copyright (C) 2004, 2005, 2006 Free Software Foundation
 
 
@@ -66,7 +66,7 @@ Introduction
 * Installation and activation::  How to install Org-mode
 * Installation and activation::  How to install Org-mode
 * Feedback::                    Bug reports, ideas, patches etc.
 * Feedback::                    Bug reports, ideas, patches etc.
 
 
-Document structure
+Document Structure
 
 
 * Outlines::                    Org-mode is based on outline-mode
 * Outlines::                    Org-mode is based on outline-mode
 * Headlines::                   How to typeset org-tree headlines
 * Headlines::                   How to typeset org-tree headlines
@@ -100,7 +100,8 @@ Hyperlinks
 * Internal links::              Links to other places in the current file
 * Internal links::              Links to other places in the current file
 * External links::              URL-like links to the world
 * External links::              URL-like links to the world
 * Handling links::              Creating, inserting and following
 * Handling links::              Creating, inserting and following
-* Search Options::              Linking to a specific location
+* Search options::              Linking to a specific location
+* Custom searches::             When the default search is not enough
 * Remember::                    Org-trees store quick notes
 * Remember::                    Org-trees store quick notes
 
 
 Internal links
 Internal links
@@ -132,7 +133,7 @@ Tags
 * Setting tags::                How to assign tags to a headline
 * Setting tags::                How to assign tags to a headline
 * Tag searches::                Searching for combinations of tags
 * Tag searches::                Searching for combinations of tags
 
 
-Agenda views
+Agenda Views
 
 
 * Agenda files::                Files being searched for agenda information
 * Agenda files::                Files being searched for agenda information
 * Agenda dispatcher::           Keyboard access to agenda views
 * Agenda dispatcher::           Keyboard access to agenda views
@@ -1230,7 +1231,8 @@ links to other files, Usenet articles, emails and much more.
 * Internal links::              Links to other places in the current file
 * Internal links::              Links to other places in the current file
 * External links::              URL-like links to the world
 * External links::              URL-like links to the world
 * Handling links::              Creating, inserting and following
 * Handling links::              Creating, inserting and following
-* Search Options::              Linking to a specific location
+* Search options::              Linking to a specific location
+* Custom searches::             When the default search is not enough
 * Remember::                    Org-trees store quick notes
 * Remember::                    Org-trees store quick notes
 
 
 
 
@@ -1377,7 +1379,7 @@ them as links.  If spaces must be part of the link (for example in
 link, enclose them in angular brackets.
 link, enclose them in angular brackets.
 
 
 
 
-File: org,  Node: Handling links,  Next: Search Options,  Prev: External links,  Up: Hyperlinks
+File: org,  Node: Handling links,  Next: Search options,  Prev: External links,  Up: Hyperlinks
 
 
 4.4 Handling links
 4.4 Handling links
 ==================
 ==================
@@ -1395,10 +1397,14 @@ insert it into an org-mode file, and to follow the link.
      the link will indicate to the current article/entry.  For W3 and
      the link will indicate to the current article/entry.  For W3 and
      W3M buffers, the link goes to the current URL.  For any other
      W3M buffers, the link goes to the current URL.  For any other
      files, the link will point to the file, with a search string
      files, the link will point to the file, with a search string
-     (*note Search Options::) pointing to the contents of the current
+     (*note Search options::) pointing to the contents of the current
      line.  If there is an active region, the selected words will form
      line.  If there is an active region, the selected words will form
-     the basis of the search string.  The key binding `C-c l' is only a
-     suggestion - see *Note Installation and activation::.
+     the basis of the search string.  If the automatically created link
+     is not working correctly or accurately enough, you can write
+     custom functions to select the search string and to do the search
+     for particular file types - see *Note Custom searches::.  The key
+     binding `C-c l' is only a suggestion - see *Note Installation and
+     activation::.
 
 
 `C-c C-l'
 `C-c C-l'
      Insert a link.  This prompts for a link to be inserted into the
      Insert a link.  This prompts for a link to be inserted into the
@@ -1460,22 +1466,27 @@ insert it into an org-mode file, and to follow the link.
      previously recorded positions.
      previously recorded positions.
 
 
 
 
-File: org,  Node: Search Options,  Next: Remember,  Prev: Handling links,  Up: Hyperlinks
+File: org,  Node: Search options,  Next: Custom searches,  Prev: Handling links,  Up: Hyperlinks
 
 
 4.5 Search options in file links
 4.5 Search options in file links
 ================================
 ================================
 
 
 File links can contain additional information to make Emacs jump to a
 File links can contain additional information to make Emacs jump to a
 particular location in the file when following a link.  This can be a
 particular location in the file when following a link.  This can be a
-line number or a search option after a double(1) colon.  For example:
+line number or a search option after a double(1) colon. For example,
+when the command `C-c l' creates a link (*note Handling links::) to a
+file, it encodes the words in the current line as a search string that
+can be used to find this line back later when following the link with
+`C-c C-o'.
+
+   Here is the syntax of the different ways to attach a search to a file
+link, together with an explanation:
 
 
      [[file:~/code/main.c::255]]
      [[file:~/code/main.c::255]]
      [[file:~/xx.org::My Target]]
      [[file:~/xx.org::My Target]]
      [[file:~/xx.org::*My Target]]
      [[file:~/xx.org::*My Target]]
      [[file:~/xx.org::/regexp/]]
      [[file:~/xx.org::/regexp/]]
 
 
-Here is what these options do.
-
 `255'
 `255'
      Jump to line 255.
      Jump to line 255.
 
 
@@ -1505,9 +1516,31 @@ search for `find me' in the current file, just like `[[find me]]' would.
 single colon.
 single colon.
 
 
 
 
-File: org,  Node: Remember,  Prev: Search Options,  Up: Hyperlinks
+File: org,  Node: Custom searches,  Next: Remember,  Prev: Search options,  Up: Hyperlinks
+
+4.6 Custom Searches
+===================
+
+The default mechanism for creating search strings and for doing the
+actual search related to a file link may not work correctly in all
+cases.  For example, BibTeX database files have many entries like
+`year="1993"' which would not result in good search strings, because
+the only unique identification for a BibTeX entry is the citation key.
+
+   If you come across such a problem, you can write custom functions to
+set the right search string for a particular file type, and to do the
+search for the string in the file.  Using `add-hook', these functions
+need to be added to the hook variables
+`org-create-file-search-functions' and
+`org-execute-file-search-functions'.  See the docstring for these
+variables for more information.  Org-mode actually uses this mechanism
+for BibTeX database files, and you can use the corresponding code as an
+implementation example.  Search for `BibTeX links' in the source file.
+
+
+File: org,  Node: Remember,  Prev: Custom searches,  Up: Hyperlinks
 
 
-4.6 Remember
+4.7 Remember
 ============
 ============
 
 
 Another way to create org entries with links to other files is through
 Another way to create org entries with links to other files is through
@@ -3578,8 +3611,8 @@ File: org,  Node: Index,  Next: Key Index,  Prev: Miscellaneous,  Up: Top
 * completion, of CamelCase links <1>:    Completion.          (line   6)
 * completion, of CamelCase links <1>:    Completion.          (line   6)
 * completion, of CamelCase links:        CamelCase links.     (line   6)
 * completion, of CamelCase links:        CamelCase links.     (line   6)
 * completion, of dictionary words:       Completion.          (line   6)
 * completion, of dictionary words:       Completion.          (line   6)
-* completion, of file names:             Handling links.      (line  36)
-* completion, of links:                  Handling links.      (line  24)
+* completion, of file names:             Handling links.      (line  40)
+* completion, of links:                  Handling links.      (line  28)
 * completion, of option keywords <1>:    Completion.          (line   6)
 * completion, of option keywords <1>:    Completion.          (line   6)
 * completion, of option keywords:        Export options.      (line   6)
 * completion, of option keywords:        Export options.      (line   6)
 * Completion, of option keywords:        Per file keywords.   (line  17)
 * Completion, of option keywords:        Per file keywords.   (line  17)
@@ -3596,6 +3629,7 @@ File: org,  Node: Index,  Next: Key Index,  Prev: Miscellaneous,  Up: Top
 * creating timestamps:                   Creating timestamps. (line   6)
 * creating timestamps:                   Creating timestamps. (line   6)
 * CUA.el:                                Interaction.         (line  40)
 * CUA.el:                                Interaction.         (line  40)
 * custom agenda commands:                Agenda dispatcher.   (line   6)
 * custom agenda commands:                Agenda dispatcher.   (line   6)
+* custom search strings:                 Custom searches.     (line   6)
 * customization:                         Customization.       (line   6)
 * customization:                         Customization.       (line   6)
 * cutting, of subtrees:                  Structure editing.   (line   6)
 * cutting, of subtrees:                  Structure editing.   (line   6)
 * cycling, of TODO states:               TODO basics.         (line  13)
 * cycling, of TODO states:               TODO basics.         (line  13)
@@ -3627,15 +3661,15 @@ File: org,  Node: Index,  Next: Key Index,  Prev: Miscellaneous,  Up: Top
 * FAQ:                                   FAQ.                 (line   6)
 * FAQ:                                   FAQ.                 (line   6)
 * feedback:                              Feedback.            (line   6)
 * feedback:                              Feedback.            (line   6)
 * file links:                            External links.      (line   6)
 * file links:                            External links.      (line   6)
-* file links, searching:                 Search Options.      (line   6)
-* file name completion:                  Handling links.      (line  36)
+* file links, searching:                 Search options.      (line   6)
+* file name completion:                  Handling links.      (line  40)
 * files, adding to agenda list:          Agenda files.        (line  12)
 * files, adding to agenda list:          Agenda files.        (line  12)
 * filing subtrees:                       Archiving.           (line   6)
 * filing subtrees:                       Archiving.           (line   6)
 * fixed width:                           Enhancing text.      (line  30)
 * fixed width:                           Enhancing text.      (line  30)
 * fixed-width sections:                  Export options.      (line  25)
 * fixed-width sections:                  Export options.      (line  25)
 * folded, subtree visibility state:      Visibility cycling.  (line  10)
 * folded, subtree visibility state:      Visibility cycling.  (line  10)
 * folding, sparse trees:                 Sparse trees.        (line   6)
 * folding, sparse trees:                 Sparse trees.        (line   6)
-* following links:                       Handling links.      (line  51)
+* following links:                       Handling links.      (line  55)
 * format specifier:                      Formula syntax.      (line  34)
 * format specifier:                      Formula syntax.      (line  34)
 * format, of links:                      Link format.         (line   6)
 * format, of links:                      Link format.         (line   6)
 * formula editing:                       Editing/debugging formulas.
 * formula editing:                       Editing/debugging formulas.
@@ -3669,7 +3703,7 @@ File: org,  Node: Index,  Next: Key Index,  Prev: Miscellaneous,  Up: Top
 * indentation, of tables:                FAQ.                 (line 113)
 * indentation, of tables:                FAQ.                 (line 113)
 * indirect buffers:                      FAQ.                 (line  65)
 * indirect buffers:                      FAQ.                 (line  65)
 * inheritance, of tags:                  Tag inheritance.     (line   6)
 * inheritance, of tags:                  Tag inheritance.     (line   6)
-* inserting links:                       Handling links.      (line  24)
+* inserting links:                       Handling links.      (line  28)
 * installation:                          Installation and activation.
 * installation:                          Installation and activation.
                                                               (line   6)
                                                               (line   6)
 * internal links:                        Internal links.      (line   6)
 * internal links:                        Internal links.      (line   6)
@@ -3681,18 +3715,18 @@ File: org,  Node: Index,  Next: Key Index,  Prev: Miscellaneous,  Up: Top
 * keymapp nil error:                     FAQ.                 (line   6)
 * keymapp nil error:                     FAQ.                 (line   6)
 * keyword options:                       Per file keywords.   (line   6)
 * keyword options:                       Per file keywords.   (line   6)
 * linebreak preservation:                Export options.      (line  25)
 * linebreak preservation:                Export options.      (line  25)
-* link completion:                       Handling links.      (line  24)
+* link completion:                       Handling links.      (line  28)
 * link format:                           Link format.         (line   6)
 * link format:                           Link format.         (line   6)
 * links, external:                       External links.      (line   6)
 * links, external:                       External links.      (line   6)
 * links, internal:                       Internal links.      (line   6)
 * links, internal:                       Internal links.      (line   6)
-* links, returning to:                   Handling links.      (line  77)
+* links, returning to:                   Handling links.      (line  81)
 * lists, hand-formatted:                 Enhancing text.      (line  11)
 * lists, hand-formatted:                 Enhancing text.      (line  11)
 * lists, ordered:                        Plain lists.         (line   6)
 * lists, ordered:                        Plain lists.         (line   6)
 * lists, plain:                          Plain lists.         (line   6)
 * lists, plain:                          Plain lists.         (line   6)
 * logging, of progress:                  Progress logging.    (line   6)
 * logging, of progress:                  Progress logging.    (line   6)
 * maintainer:                            Feedback.            (line   6)
 * maintainer:                            Feedback.            (line   6)
 * make-indirect-buffer:                  FAQ.                 (line  65)
 * make-indirect-buffer:                  FAQ.                 (line  65)
-* mark ring:                             Handling links.      (line  73)
+* mark ring:                             Handling links.      (line  77)
 * marking characters, tables:            Advanced features.   (line  34)
 * marking characters, tables:            Advanced features.   (line  34)
 * matching, of tags:                     Matching headline tags.
 * matching, of tags:                     Matching headline tags.
                                                               (line   6)
                                                               (line   6)
@@ -3745,7 +3779,7 @@ File: org,  Node: Index,  Next: Key Index,  Prev: Miscellaneous,  Up: Top
 * RMAIL links:                           External links.      (line   6)
 * RMAIL links:                           External links.      (line   6)
 * SCHEDULED keyword:                     Time stamps.         (line  30)
 * SCHEDULED keyword:                     Time stamps.         (line  30)
 * scheduling:                            Time stamps.         (line   6)
 * scheduling:                            Time stamps.         (line   6)
-* search option in file links:           Search Options.      (line   6)
+* search option in file links:           Search options.      (line   6)
 * section-numbers:                       Export options.      (line  25)
 * section-numbers:                       Export options.      (line  25)
 * setting tags:                          Setting tags.        (line   6)
 * setting tags:                          Setting tags.        (line   6)
 * SHELL links:                           External links.      (line   6)
 * SHELL links:                           External links.      (line   6)
@@ -3861,8 +3895,8 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
 * C-,:                                   Agenda files.        (line  18)
 * C-,:                                   Agenda files.        (line  18)
 * C-c !:                                 Creating timestamps. (line  21)
 * C-c !:                                 Creating timestamps. (line  21)
 * C-c $:                                 Archiving.           (line   9)
 * C-c $:                                 Archiving.           (line   9)
-* C-c %:                                 Handling links.      (line  73)
-* C-c &:                                 Handling links.      (line  77)
+* C-c %:                                 Handling links.      (line  77)
+* C-c &:                                 Handling links.      (line  81)
 * C-c ' <1>:                             Editing/debugging formulas.
 * C-c ' <1>:                             Editing/debugging formulas.
                                                               (line  20)
                                                               (line  20)
 * C-c ':                                 Built-in table editor.
 * C-c ':                                 Built-in table editor.
@@ -3920,10 +3954,10 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
 * C-c C-d:                               Creating timestamps. (line  37)
 * C-c C-d:                               Creating timestamps. (line  37)
 * 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)
-* C-c C-l:                               Handling links.      (line  24)
+* C-c C-l:                               Handling links.      (line  28)
 * C-c C-n:                               Motion.              (line   8)
 * C-c C-n:                               Motion.              (line   8)
 * C-c C-o <1>:                           Creating timestamps. (line  33)
 * C-c C-o <1>:                           Creating timestamps. (line  33)
-* C-c C-o:                               Handling links.      (line  51)
+* C-c C-o:                               Handling links.      (line  55)
 * C-c C-p:                               Motion.              (line   9)
 * C-c C-p:                               Motion.              (line   9)
 * C-c C-q <1>:                           Editing/debugging formulas.
 * C-c C-q <1>:                           Editing/debugging formulas.
                                                               (line  20)
                                                               (line  20)
@@ -3963,7 +3997,7 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
 * C-u C-c .:                             Creating timestamps. (line  16)
 * C-u C-c .:                             Creating timestamps. (line  16)
 * C-u C-c =:                             Built-in table editor.
 * C-u C-c =:                             Built-in table editor.
                                                               (line 139)
                                                               (line 139)
-* C-u C-c C-l:                           Handling links.      (line  36)
+* C-u C-c C-l:                           Handling links.      (line  40)
 * D:                                     Agenda commands.     (line  66)
 * D:                                     Agenda commands.     (line  66)
 * d:                                     Agenda commands.     (line  63)
 * d:                                     Agenda commands.     (line  63)
 * f:                                     Agenda commands.     (line  44)
 * f:                                     Agenda commands.     (line  44)
@@ -4009,11 +4043,11 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
 * M-S-<up>:                              Structure editing.   (line  30)
 * M-S-<up>:                              Structure editing.   (line  30)
 * mouse-1 <1>:                           Agenda commands.     (line  35)
 * mouse-1 <1>:                           Agenda commands.     (line  35)
 * mouse-1 <2>:                           Creating timestamps. (line  79)
 * mouse-1 <2>:                           Creating timestamps. (line  79)
-* mouse-1:                               Handling links.      (line  65)
+* mouse-1:                               Handling links.      (line  69)
 * mouse-2 <1>:                           Agenda commands.     (line  35)
 * mouse-2 <1>:                           Agenda commands.     (line  35)
-* mouse-2:                               Handling links.      (line  65)
+* mouse-2:                               Handling links.      (line  69)
 * mouse-3 <1>:                           Agenda commands.     (line  28)
 * mouse-3 <1>:                           Agenda commands.     (line  28)
-* mouse-3:                               Handling links.      (line  70)
+* mouse-3:                               Handling links.      (line  74)
 * n:                                     Agenda commands.     (line  19)
 * n:                                     Agenda commands.     (line  19)
 * o:                                     Agenda commands.     (line  57)
 * o:                                     Agenda commands.     (line  57)
 * P:                                     Agenda commands.     (line 115)
 * P:                                     Agenda commands.     (line 115)
@@ -4046,99 +4080,100 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
 
 
 Tag Table:
 Tag Table:
 Node: Top959
 Node: Top959
-Node: Introduction7444
-Node: Summary7758
-Node: Installation and activation9866
-Node: Feedback11535
-Node: Document structure12321
-Node: Outlines13087
-Node: Headlines13747
-Node: Visibility cycling14370
-Node: Motion15566
-Node: Structure editing16350
-Node: Archiving18459
-Node: Sparse trees19319
-Ref: Sparse trees-Footnote-121348
-Ref: Sparse trees-Footnote-221440
-Node: Plain lists21555
-Ref: Plain lists-Footnote-124849
-Node: Tables25206
-Node: Built-in table editor25754
-Node: Narrow columns33367
-Ref: Narrow columns-Footnote-135306
-Node: Table calculations35352
-Node: Formula syntax36528
-Ref: Formula syntax-Footnote-139457
-Node: Column formulas39756
-Node: Advanced features41518
-Node: Named-field formulas44773
-Node: Editing/debugging formulas45413
-Node: Appetizer47171
-Node: orgtbl-mode48273
-Node: table.el48764
-Node: Hyperlinks49741
-Node: Link format50375
-Node: Internal links51672
-Node: Radio targets53622
-Node: CamelCase links54337
-Node: External links54835
-Node: Handling links56760
-Node: Search Options60853
-Ref: Search Options-Footnote-162323
-Node: Remember62404
-Ref: Remember-Footnote-166270
-Node: TODO items66394
-Node: TODO basics67317
-Node: Progress logging68658
-Node: TODO extensions69444
-Node: Workflow states70244
-Node: TODO types71112
-Ref: TODO types-Footnote-172770
-Node: Per file keywords72852
-Ref: Per file keywords-Footnote-174305
-Node: Priorities74533
-Node: Timestamps75742
-Node: Time stamps76063
-Node: Creating timestamps78491
-Node: Tags81620
-Node: Tag inheritance82355
-Node: Setting tags83292
-Node: Tag searches84254
-Node: Agenda views85463
-Node: Agenda files87002
-Ref: Agenda files-Footnote-187962
-Ref: Agenda files-Footnote-288111
-Node: Agenda dispatcher88303
-Node: Weekly/Daily agenda90433
-Node: Categories91568
-Node: Time-of-day specifications92216
-Node: Calendar/Diary integration94192
-Node: Sorting of agenda items95569
-Node: Global TODO list96401
-Node: Matching headline tags97816
-Node: Timeline98759
-Node: Agenda commands99632
-Node: Exporting104888
-Node: ASCII export106018
-Node: HTML export106840
-Node: XML export108588
-Node: iCalendar export108955
-Node: Text interpretation110777
-Node: Comment lines111254
-Node: Enhancing text111723
-Node: Export options113554
-Node: Miscellaneous115156
-Node: Completion115914
-Node: Customization116910
-Node: Summary of in-buffer settings117517
-Node: The very busy C-c C-c key120278
-Node: Clean view121683
-Node: TTY keys124260
-Node: FAQ125861
-Node: Interaction132763
-Node: Bugs135630
-Node: Acknowledgments137584
-Node: Index140679
-Node: Key Index161903
+Node: Introduction7514
+Node: Summary7828
+Node: Installation and activation9936
+Node: Feedback11605
+Node: Document structure12391
+Node: Outlines13157
+Node: Headlines13817
+Node: Visibility cycling14440
+Node: Motion15636
+Node: Structure editing16420
+Node: Archiving18529
+Node: Sparse trees19389
+Ref: Sparse trees-Footnote-121418
+Ref: Sparse trees-Footnote-221510
+Node: Plain lists21625
+Ref: Plain lists-Footnote-124919
+Node: Tables25276
+Node: Built-in table editor25824
+Node: Narrow columns33437
+Ref: Narrow columns-Footnote-135376
+Node: Table calculations35422
+Node: Formula syntax36598
+Ref: Formula syntax-Footnote-139527
+Node: Column formulas39826
+Node: Advanced features41588
+Node: Named-field formulas44843
+Node: Editing/debugging formulas45483
+Node: Appetizer47241
+Node: orgtbl-mode48343
+Node: table.el48834
+Node: Hyperlinks49811
+Node: Link format50515
+Node: Internal links51812
+Node: Radio targets53762
+Node: CamelCase links54477
+Node: External links54975
+Node: Handling links56900
+Node: Search options61232
+Ref: Search options-Footnote-163008
+Node: Custom searches63089
+Node: Remember64137
+Ref: Remember-Footnote-168004
+Node: TODO items68128
+Node: TODO basics69051
+Node: Progress logging70392
+Node: TODO extensions71178
+Node: Workflow states71978
+Node: TODO types72846
+Ref: TODO types-Footnote-174504
+Node: Per file keywords74586
+Ref: Per file keywords-Footnote-176039
+Node: Priorities76267
+Node: Timestamps77476
+Node: Time stamps77797
+Node: Creating timestamps80225
+Node: Tags83354
+Node: Tag inheritance84089
+Node: Setting tags85026
+Node: Tag searches85988
+Node: Agenda views87197
+Node: Agenda files88736
+Ref: Agenda files-Footnote-189696
+Ref: Agenda files-Footnote-289845
+Node: Agenda dispatcher90037
+Node: Weekly/Daily agenda92167
+Node: Categories93302
+Node: Time-of-day specifications93950
+Node: Calendar/Diary integration95926
+Node: Sorting of agenda items97303
+Node: Global TODO list98135
+Node: Matching headline tags99550
+Node: Timeline100493
+Node: Agenda commands101366
+Node: Exporting106622
+Node: ASCII export107752
+Node: HTML export108574
+Node: XML export110322
+Node: iCalendar export110689
+Node: Text interpretation112511
+Node: Comment lines112988
+Node: Enhancing text113457
+Node: Export options115288
+Node: Miscellaneous116890
+Node: Completion117648
+Node: Customization118644
+Node: Summary of in-buffer settings119251
+Node: The very busy C-c C-c key122012
+Node: Clean view123417
+Node: TTY keys125994
+Node: FAQ127595
+Node: Interaction134497
+Node: Bugs137364
+Node: Acknowledgments139318
+Node: Index142413
+Node: Key Index163710
 
 
 End Tag Table
 End Tag Table

+ 444 - 173
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.26
+;; Version: 4.27
 ;;
 ;;
 ;; This file is part of GNU Emacs.
 ;; This file is part of GNU Emacs.
 ;;
 ;;
@@ -81,6 +81,15 @@
 ;;
 ;;
 ;; Changes since version 4.10:
 ;; Changes since version 4.10:
 ;; ---------------------------
 ;; ---------------------------
+;; Version 4.27
+;;    - HTML exporter generalized to receive external options.
+;;      As part of the process, author, email and date have been moved to the
+;;      end of the HTML file.
+;;    - Support for customizable file search in file links.
+;;    - BibTeX database links as first application of the above.
+;;    - New option `org-agenda-todo-list-sublevels' to turn off listing TODO
+;;      entries that are sublevels of another TODO entry.
+;;
 ;; Version 4.26
 ;; Version 4.26
 ;;    - Bug fixes.
 ;;    - Bug fixes.
 ;;
 ;;
@@ -137,7 +146,7 @@
 
 
 ;;; Customization variables
 ;;; Customization variables
 
 
-(defvar org-version "4.26"
+(defvar org-version "4.27"
   "The version number of the file org.el.")
   "The version number of the file org.el.")
 (defun org-version ()
 (defun org-version ()
   (interactive)
   (interactive)
@@ -946,6 +955,7 @@ See `org-file-apps'.")
     ("ltx" . emacs)
     ("ltx" . emacs)
     ("org" . emacs)
     ("org" . emacs)
     ("el"  . emacs)
     ("el"  . emacs)
+    ("bib" . emacs)
     )
     )
   "External applications for opening `file:path' items in a document.
   "External applications for opening `file:path' items in a document.
 Org-mode uses system defaults for different file types, but
 Org-mode uses system defaults for different file types, but
@@ -1252,6 +1262,16 @@ match  What to search for:
 			(const :tag "Occur tree in current buffer" occur-tree))
 			(const :tag "Occur tree in current buffer" occur-tree))
 		(string :tag "Match"))))
 		(string :tag "Match"))))
 
 
+;; Fixme:  Need a way to toggle this variable, maybe a mode in the
+;; agenda buffer?
+(defcustom org-agenda-todo-list-sublevels t
+  "Non-nil means, check also the sublevels of a TODO entry for TODO entries.
+When nil, the sublevels of a TODO entry are not checked, resulting in
+potentially much shorter TODO lists."
+  :group 'org-agenda
+  :group 'org-todo
+  :type 'boolean)
+
 (defcustom org-agenda-include-all-todo t
 (defcustom org-agenda-include-all-todo t
   "Non-nil means, the agenda will always contain all TODO entries.
   "Non-nil means, the agenda will always contain all TODO entries.
 When nil, date-less entries will only be shown if `org-agenda' is called
 When nil, date-less entries will only be shown if `org-agenda' is called
@@ -1520,6 +1540,13 @@ When this is the symbol `prefix', only remove tags when
   :tag "Org Export General"
   :tag "Org Export General"
   :group 'org-export)
   :group 'org-export)
 
 
+(defcustom org-export-publishing-directory "."
+  "Path to the location where exported files should be located.
+This path may be relative to the directory where the Org-mode file lives.
+The default is to put them into the same directory as the Org-mode file."
+  :group 'org-export-general
+  :type 'directory)
+
 (defcustom org-export-language-setup
 (defcustom org-export-language-setup
   '(("en"  "Author"          "Date"  "Table of Contents")
   '(("en"  "Author"          "Date"  "Table of Contents")
     ("da"  "Ophavsmand"      "Dato"  "Indhold")
     ("da"  "Ophavsmand"      "Dato"  "Indhold")
@@ -2223,7 +2250,6 @@ This face is only used if `org-fontify-done-headline' is set."
 	      (setq int 'type
 	      (setq int 'type
 		    kwds (append kwds (org-split-string value splitre))))
 		    kwds (append kwds (org-split-string value splitre))))
 	     ((equal key "STARTUP")
 	     ((equal key "STARTUP")
-              (debug)
 	      (let ((opts (org-split-string value splitre))
 	      (let ((opts (org-split-string value splitre))
 		    (set '(("fold" org-startup-folded t)
 		    (set '(("fold" org-startup-folded t)
 			   ("overview" org-startup-folded t)
 			   ("overview" org-startup-folded t)
@@ -2299,14 +2325,9 @@ This face is only used if `org-fontify-done-headline' is set."
 (defvar mark-active) ; Emacs only, not available in XEmacs.
 (defvar mark-active) ; Emacs only, not available in XEmacs.
 (defvar timecnt) ; dynamically scoped parameter
 (defvar timecnt) ; dynamically scoped parameter
 (defvar levels-open) ; dynamically scoped parameter
 (defvar levels-open) ; dynamically scoped parameter
-(defvar title) ; dynamically scoped parameter
-(defvar author) ; dynamically scoped parameter
-(defvar email) ; dynamically scoped parameter
-(defvar text) ; dynamically scoped parameter
 (defvar entry) ; dynamically scoped parameter
 (defvar entry) ; dynamically scoped parameter
 (defvar date) ; dynamically scoped parameter
 (defvar date) ; dynamically scoped parameter
-(defvar language) ; dynamically scoped parameter
-(defvar options) ; dynamically scoped parameter
+(defvar description) ; dynamically scoped parameter
 (defvar ans1) ; dynamically scoped parameter
 (defvar ans1) ; dynamically scoped parameter
 (defvar ans2) ; dynamically scoped parameter
 (defvar ans2) ; dynamically scoped parameter
 (defvar starting-day) ; local variable
 (defvar starting-day) ; local variable
@@ -5996,7 +6017,9 @@ the documentation of `org-diary'."
 	'org-marker marker 'org-hd-marker marker
 	'org-marker marker 'org-hd-marker marker
 	'priority priority 'category category)
 	'priority priority 'category category)
       (push txt ee)
       (push txt ee)
-      (goto-char (match-end 1)))
+      (if org-agenda-todo-list-sublevels
+	  (goto-char (match-end 1))
+	(org-end-of-subtree 'invisible)))
     (nreverse ee)))
     (nreverse ee)))
 
 
 (defconst org-agenda-no-heading-message
 (defconst org-agenda-no-heading-message
@@ -7232,6 +7255,50 @@ With prefix ARG, realign all tags in headings in the current buffer."
 
 
 ;;; Link Stuff
 ;;; Link Stuff
 
 
+(defvar org-create-file-search-functions nil
+  "List of functions to construct the right search string for a file link.
+These functions are called in turn with point at the location to
+which the link should point.
+
+A function in the hook should first test if it would like to
+handle this file type, for example by checking the major-mode or
+the file extension.  If it decides not to handle this file, it
+should just return nil to give other functions a chance.  If it
+does handle the file, it must return the search string to be used
+when following the link.  The search string will be part of the
+file link, given after a double colon, and `org-open-at-point'
+will automatically search for it.  If special measures must be
+taken to make the search successful, another function should be
+added to the companion hook `org-execute-file-search-functions',
+which see.
+
+A function in this hook may also use `setq' to set the variable
+`description' to provide a suggestion for the descriptive text to
+be used for this link when it gets inserted into an Org-mode
+buffer with \\[org-insert-link].")
+
+(defvar org-execute-file-search-functions nil
+  "List of functions to execute a file search triggered by a link.
+
+Functions added to this hook must accept a single argument, the
+search string that was part of the file link, the part after the
+double colon.  The function must first check if it would like to
+handle this search, for example by checking the major-mode or the
+file extension.  If it decides not to handle this search, it
+should just return nil to give other functions a chance.  If it
+does handle the search, it must return a non-nil value to keep
+other functions from trying.
+
+Each function can access the current prefix argument through the
+variable `current-prefix-argument'.  Note that a single prefix is
+used to force opening a link in Emacs, so it may be good to only
+use a numeric or double prefix to guide the search function.
+
+In case this is needed, a function in this hook can also restore
+the window configuration before `org-open-at-point' was called using:
+
+    (set-window-configuration org-window-config-before-follow-link)")
+
 (defun org-find-file-at-mouse (ev)
 (defun org-find-file-at-mouse (ev)
   "Open file link or URL at mouse."
   "Open file link or URL at mouse."
   (interactive "e")
   (interactive "e")
@@ -7244,6 +7311,10 @@ With prefix ARG, realign all tags in headings in the current buffer."
   (mouse-set-point ev)
   (mouse-set-point ev)
   (org-open-at-point))
   (org-open-at-point))
 
 
+(defvar org-window-config-before-follow-link nil
+  "The window configuration before following a link.
+This is saved in case the need arises to restore it.")
+
 (defun org-open-at-point (&optional in-emacs)
 (defun org-open-at-point (&optional in-emacs)
   "Open link at or after point.
   "Open link at or after point.
 If there is no link at point, this function will search forward up to
 If there is no link at point, this function will search forward up to
@@ -7251,6 +7322,7 @@ the end of the current subtree.
 Normally, files will be opened by an appropriate application.  If the
 Normally, files will be opened by an appropriate application.  If the
 optional argument IN-EMACS is non-nil, Emacs will visit the file."
 optional argument IN-EMACS is non-nil, Emacs will visit the file."
   (interactive "P")
   (interactive "P")
+  (setq org-window-config-before-follow-link (current-window-configuration))
   (org-remove-occur-highlights nil nil t)
   (org-remove-occur-highlights nil nil t)
   (if (org-at-timestamp-p)
   (if (org-at-timestamp-p)
       (org-agenda-list nil (time-to-days (org-time-string-to-time
       (org-agenda-list nil (time-to-days (org-time-string-to-time
@@ -7335,6 +7407,7 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
 
 
        ((string= type "file")
        ((string= type "file")
 	(if (string-match "::?\\([0-9]+\\)\\'" path) ;; second : optional
 	(if (string-match "::?\\([0-9]+\\)\\'" path) ;; second : optional
+	    ;; FIXME: It is unsafe to allow a single colon.
 	    (setq line (string-to-number (match-string 1 path))
 	    (setq line (string-to-number (match-string 1 path))
 		  path (substring path 0 (match-beginning 0)))
 		  path (substring path 0 (match-beginning 0)))
 	  (if (string-match "::\\(.+\\)\\'" path)
 	  (if (string-match "::\\(.+\\)\\'" path)
@@ -7421,73 +7494,82 @@ in all files."
 	(pos (point))
 	(pos (point))
 	(pre "") (post "")
 	(pre "") (post "")
 	words re0 re1 re2 re3 re4 re5 re2a reall camel)
 	words re0 re1 re2 re3 re4 re5 re2a reall camel)
-    (cond ((save-excursion
-	     (goto-char (point-min))
-	     (and
-	      (re-search-forward
-	       (concat "<<" (regexp-quote s0) ">>") nil t)
-	      (setq pos (match-beginning 0))))
-	   ;; There is an exact target for this
-	   (goto-char pos))
-	  ((string-match "^/\\(.*\\)/$" s)
-	   ;; A regular expression
-	   (cond
-	    ((eq major-mode 'org-mode)
-	     (org-occur (match-string 1 s)))
-	    ;;((eq major-mode 'dired-mode)
-	    ;; (grep (concat "grep -n -e '" (match-string 1 s) "' *")))
-	    (t (org-do-occur (match-string 1 s)))))
-	  ((or (setq camel (string-match (concat "^" org-camel-regexp "$") s))
-	       t)
-	   ;; A camel or a normal search string
-	   (when (equal (string-to-char s) ?*)
-	     ;; Anchor on headlines, post may include tags.
-	     (setq pre "^\\*+[ \t]*\\(\\sw+\\)?[ \t]*"
-		   post "[ \t]*\\([ \t]+:[a-zA-Z_@0-9:+]:[ \t]*\\)?$"
-		   s (substring s 1)))
-	   (remove-text-properties
-	    0 (length s)
-	    '(face nil mouse-face nil keymap nil fontified nil) s)
-	   ;; Make a series of regular expressions to find a match
-	   (setq words
-		 (if camel
-		     (org-camel-to-words s)
-		   (org-split-string s "[ \n\r\t]+"))
-		 re0 (concat "<<" (regexp-quote s0) ">>")
-		 re2 (concat "\\<" (mapconcat 'downcase words "[ \t]+") "\\>")
-		 re2a (concat "\\<" (mapconcat 'downcase words "[ \t\r\n]+") "\\>")
-		 re4 (concat "\\<" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\>")
-		 re1 (concat pre re2 post)
-		 re3 (concat pre re4 post)
-		 re5 (concat pre ".*" re4)
-		 re2 (concat pre re2)
-		 re2a (concat pre re2a)
-		 re4 (concat pre re4)
-		 reall (concat "\\(" re0 "\\)\\|\\(" re1 "\\)\\|\\(" re2
-			       "\\)\\|\\(" re3 "\\)\\|\\(" re4 "\\)\\|\\("
-			       re5 "\\)"
-			       ))
-	   (cond
-	    ((eq type 'org-occur) (org-occur reall))
-	    ((eq type 'occur) (org-do-occur (downcase reall) 'cleanup))
-	    (t (goto-char (point-min))
-	       (if (or (org-search-not-link re0 nil t)
-		       (org-search-not-link re1 nil t)
-		       (org-search-not-link re2 nil t)
-		       (org-search-not-link re2a nil t)
-		       (org-search-not-link re3 nil t)
-		       (org-search-not-link re4 nil t)
-		       (org-search-not-link re5 nil t)
-		       )
-		   (goto-char (match-beginning 0))
-		 (goto-char pos)
-		 (error "No match")))))
-	  (t
-	   ;; Normal string-search
-	   (goto-char (point-min))
-	   (if (search-forward s nil t)
-	       (goto-char (match-beginning 0))
-	     (error "No match"))))
+    (cond
+     ;; First check if there are any special 
+     ((run-hook-with-args-until-success 'org-execute-file-search-functions s))
+
+     ;; Now try the builtin stuff
+     ((save-excursion
+	(goto-char (point-min))
+	(and
+	 (re-search-forward
+	  (concat "<<" (regexp-quote s0) ">>") nil t)
+	 (setq pos (match-beginning 0))))
+      ;; There is an exact target for this
+      (goto-char pos))
+     ((string-match "^/\\(.*\\)/$" s)
+      ;; A regular expression
+      (cond
+       ((eq major-mode 'org-mode)
+	(org-occur (match-string 1 s)))
+       ;;((eq major-mode 'dired-mode)
+       ;; (grep (concat "grep -n -e '" (match-string 1 s) "' *")))
+       (t (org-do-occur (match-string 1 s)))))
+     ((or (setq camel (string-match (concat "^" org-camel-regexp "$") s))
+	  t)
+      ;; A camel or a normal search string
+      (when (equal (string-to-char s) ?*)
+	;; Anchor on headlines, post may include tags.
+	(setq pre "^\\*+[ \t]*\\(?:\\sw+\\)?[ \t]*"
+	      post "[ \t]*\\(?:[ \t]+:[a-zA-Z_@0-9:+]:[ \t]*\\)?$"
+	      s (substring s 1)))
+      (remove-text-properties
+       0 (length s)
+       '(face nil mouse-face nil keymap nil fontified nil) s)
+      ;; Make a series of regular expressions to find a match
+      (setq words
+	    (if camel
+		(org-camel-to-words s)
+	      (org-split-string s "[ \n\r\t]+"))
+	    re0 (concat "\\(<<" (regexp-quote s0) ">>\\)")
+	    ;; FIXME: The word delimiters in the following are not quite correct.
+;	    re2 (concat "\\<" (mapconcat 'downcase words "[ \t]+") "\\>")
+;	    re2a (concat "\\<" (mapconcat 'downcase words "[ \t\r\n]+") "\\>")
+;	    re4 (concat "\\<" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\>")
+	    re2 (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t]+") "\\)[ \t\r\n]")
+	    re2a (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t\r\n]+") "\\)[ \t\r\n]")
+	    re4 (concat "[^a-zA-Z_\r\n]\\(" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\)[^a-zA-Z_\r\n]")
+	    re1 (concat pre re2 post)
+	    re3 (concat pre re4 post)
+	    re5 (concat pre ".*" re4)
+	    re2 (concat pre re2)
+	    re2a (concat pre re2a)
+	    re4 (concat pre re4)
+	    reall (concat "\\(" re0 "\\)\\|\\(" re1 "\\)\\|\\(" re2
+			  "\\)\\|\\(" re3 "\\)\\|\\(" re4 "\\)\\|\\("
+			  re5 "\\)"
+			  ))
+      (cond
+       ((eq type 'org-occur) (org-occur reall))
+       ((eq type 'occur) (org-do-occur (downcase reall) 'cleanup))
+       (t (goto-char (point-min))
+	  (if (or (org-search-not-link re0 nil t)
+		  (org-search-not-link re1 nil t)
+		  (org-search-not-link re2 nil t)
+		  (org-search-not-link re2a nil t)
+		  (org-search-not-link re3 nil t)
+		  (org-search-not-link re4 nil t)
+		  (org-search-not-link re5 nil t)
+		  )
+	      (goto-char (match-beginning 1))  ;; Fixme: does every re have group 1?
+	    (goto-char pos)
+	    (error "No match")))))
+     (t
+      ;; Normal string-search
+      (goto-char (point-min))
+      (if (search-forward s nil t)
+	  (goto-char (match-beginning 0))
+	(error "No match"))))
     (and (eq major-mode 'org-mode) (org-show-hierarchy-above))))
     (and (eq major-mode 'org-mode) (org-show-hierarchy-above))))
 
 
 (defun org-search-not-link (&rest args)
 (defun org-search-not-link (&rest args)
@@ -7790,6 +7872,61 @@ folders."
       (kill-this-buffer)
       (kill-this-buffer)
       (error "Message not found"))))
       (error "Message not found"))))
 
 
+;; BibTeX links
+
+;; Use the custom search meachnism to construct and use search strings for
+;; file links to BibTeX database entries.
+
+(defun org-create-file-search-in-bibtex ()
+  "Create the search string and description for a BibTeX database entry."
+  (when (eq major-mode 'bibtex-mode)
+    ;; yes, we want to construct this search string.
+    ;; Make a good description for this entry, using names, year and the title
+    ;; Put it into the `description' variable which is dynamically scoped.
+    (let ((bibtex-autokey-names 1)
+	  (bibtex-autokey-names-stretch 1)
+	  (bibtex-autokey-name-case-convert-function 'identity)
+	  (bibtex-autokey-name-separator " & ")
+	  (bibtex-autokey-additional-names " et al.")
+	  (bibtex-autokey-year-length 4)
+	  (bibtex-autokey-name-year-separator " ")
+	  (bibtex-autokey-titlewords 3)
+	  (bibtex-autokey-titleword-separator " ")
+	  (bibtex-autokey-titleword-case-convert-function 'identity)
+	  (bibtex-autokey-titleword-length 'infty)
+	  (bibtex-autokey-year-title-separator ": "))
+      (setq description (bibtex-generate-autokey)))
+    ;; Now parse the entry, get the key and return it.
+    (save-excursion
+      (bibtex-beginning-of-entry)
+      (cdr (assoc "=key=" (bibtex-parse-entry))))))
+
+(defun org-execute-file-search-in-bibtex (s)
+  "Find the link search string S as a key for a database entry."
+  (when (eq major-mode 'bibtex-mode)
+    ;; Yes, we want to do the search in this file.
+    ;; We construct a regexp that searches for "@entrytype{" followed by the key
+    (goto-char (point-min))
+    (and (re-search-forward (concat "@[a-zA-Z]+[ \t\n]*{[ \t\n]*"
+				    (regexp-quote s) "[ \t\n]*,") nil t)
+	 (goto-char (match-beginning 0)))
+    (if (and (match-beginning 0) (equal current-prefix-arg '(16)))
+	;; Use double prefix to indicate that any web link should be browsed
+	(let ((b (current-buffer)) (p (point)))
+	  ;; Restore the window configuration because we just use the web link
+	  (set-window-configuration org-window-config-before-follow-link)
+	  (save-excursion (set-buffer b) (goto-char p)
+	    (bibtex-url)))
+      (recenter 0)))  ; Move entry start to beginning of window
+  ;; return t to indicate that the search is done.
+  t)
+
+;; Finally add the functions to the right hooks.
+(add-hook 'org-create-file-search-functions 'org-create-file-search-in-bibtex)
+(add-hook 'org-execute-file-search-functions 'org-execute-file-search-in-bibtex)
+
+;; end of Bibtex link setup
+
 (defun org-upgrade-old-links (&optional query-description)
 (defun org-upgrade-old-links (&optional query-description)
   "Transfer old <...> style links to new [[...]] style links.
   "Transfer old <...> style links to new [[...]] style links.
 With arg query-description, ask at each match for a description text to use
 With arg query-description, ask at each match for a description text to use
@@ -7905,7 +8042,7 @@ For some link types, a prefix arg is interpreted:
 For links to usenet articles, arg negates `org-usenet-links-prefer-google'.
 For links to usenet articles, arg negates `org-usenet-links-prefer-google'.
 For file links, arg negates `org-context-in-file-links'."
 For file links, arg negates `org-context-in-file-links'."
   (interactive "P")
   (interactive "P")
-  (let (link cpltxt desc txt (pos (point)))
+  (let (link cpltxt desc description search txt (pos (point)))
     (cond
     (cond
 
 
      ((eq major-mode 'bbdb-mode)
      ((eq major-mode 'bbdb-mode)
@@ -8018,6 +8155,12 @@ For file links, arg negates `org-context-in-file-links'."
       (setq cpltxt w3m-current-url
       (setq cpltxt w3m-current-url
 	    link (org-make-link cpltxt)))
 	    link (org-make-link cpltxt)))
 
 
+     ((setq search (run-hook-with-args-until-success
+		    'org-create-file-search-functions))
+      (setq link (concat "file:" (abbreviate-file-name buffer-file-name)
+			 "::" search))
+      (setq cpltxt (or description link))) ;; FIXME: is this the best way?
+
      ((eq major-mode 'org-mode)
      ((eq major-mode 'org-mode)
       ;; Just link to current headline
       ;; Just link to current headline
       (setq cpltxt (concat "file:"
       (setq cpltxt (concat "file:"
@@ -10825,6 +10968,101 @@ overwritten, and the table is not marked as requiring realignment."
 
 
 (defconst org-level-max 20)
 (defconst org-level-max 20)
 
 
+(defvar org-export-html-preamble nil
+  "Preamble, to be inserted just after <body>.  Set by publishing functions.")
+(defvar org-export-html-postamble nil
+  "Preamble, to be inserted just before </body>.  Set by publishing functions.")
+(defvar org-export-html-auto-preamble t
+  "Should default preamble be inserted?  Set by publishing functions.")
+(defvar org-export-html-auto-postamble t
+  "Should default postamble be inserted?  Set by publishing functions.")
+
+(defconst org-export-plist-vars
+  '((:language             . org-export-default-language)
+    (:headline-levels      . org-export-headline-levels)
+    (:with-section-numbers . org-export-with-section-numbers)
+    (:table-of-contents    . org-export-with-toc)
+    (:emphasize            . org-export-with-emphasize)
+    (:sub-superscript      . org-export-with-sub-superscripts)
+    (:TeX-macros           . org-export-with-TeX-macros)
+    (:fixed-width          . org-export-with-fixed-width)
+    (:tables               . org-export-with-tables)
+    (:table-auto-headline  . org-export-highlight-first-table-line)
+    (:style                . org-export-html-style)
+    (:convert-org-links    . org-export-html-link-org-files-as-html)
+    (:inline-images        . org-export-html-inline-images)
+    (:expand-quoted-html   . org-export-html-expand)
+    (:timestamp            . org-export-html-with-timestamp)
+    (:publishing-directory . org-export-publishing-directory)
+    (:preamble             . org-export-html-preamble)
+    (:postamble            . org-export-html-postamble)
+    (:auto-preamble        . org-export-html-auto-preamble)
+    (:auto-postamble       . org-export-html-auto-postamble)
+    (:author               . user-full-name)
+    (:email                . user-mail-address)))
+
+(defun org-default-export-plist ()
+  "Return the property list with default settings for the export variables."
+  (let ((l org-export-plist-vars) rtn e)
+    (while (setq e (pop l))
+      (setq rtn (cons (car e) (cons (symbol-value (cdr e)) rtn))))
+    rtn))
+
+(defun org-infile-export-plist ()
+  "Return the property list with file-local settings for export."
+  (save-excursion
+    (goto-char 0)
+    (let ((re (org-make-options-regexp
+	       '("TITLE" "AUTHOR" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE")))
+	  (text nil)
+	  p key val text options)
+      (while (re-search-forward re nil t)
+	(setq key (org-match-string-no-properties 1)
+	      val (org-match-string-no-properties 2))
+	(cond 
+	 ((string-equal key "TITLE") (setq p (plist-put p :title val)))
+	 ((string-equal key "AUTHOR")(setq p (plist-put p :author val)))
+	 ((string-equal key "EMAIL") (setq p (plist-put p :email val)))
+	 ((string-equal key "LANGUAGE") (setq p (plist-put p :language val)))
+	 ((string-equal key "TEXT")
+	  (setq text (if text (concat text "\n" val) val)))
+	 ((string-equal key "OPTIONS") (setq options val))))
+      (setq p (plist-put p :text text))
+      (when options
+	(let ((op '(("H"     . :headline-levels)
+		    ("num"   . :section-numbers)
+		    ("toc"   . :table-of-contents)
+		    ("\\n"   . :preserve-breaks) 
+		    ("@"     . :expand-quoted-html)
+		    (":"     . :fixed-width)
+		    ("|"     . :tables)
+		    ("^"     . :sub-superscript)
+		    ("*"     . :emphasize)
+		    ("TeX"   . :TeX-macros)))
+	      o)
+	  (while (setq o (pop op))
+	    (if (string-match (concat (regexp-quote (car o)) 
+				      ":\\([^ \t\n\r;,.]*\\)")
+			      options)
+		(setq p (plist-put p (cdr o)
+				   (car (read-from-string
+					 (match-string 1 options)))))))))
+      p)))
+
+(defun org-combine-plists (&rest plists)
+  "Create a single property list from all plists in PLISTS.
+The process starts by copying the last list, and then setting properties
+from the other lists.  Settings in the first list are the most significant
+ones and overrule settings in the other lists."
+  (let ((rtn (copy-sequence (pop plists)))
+	p v ls)
+    (while plists
+      (setq ls (pop plists))
+      (while ls
+	(setq p (pop ls) v (pop ls))
+	(setq rtn (plist-put rtn p v))))
+    rtn))
+
 (defun org-export-find-first-heading-line (list)
 (defun org-export-find-first-heading-line (list)
   "Remove all lines from LIST which are before the first headline."
   "Remove all lines from LIST which are before the first headline."
   (let ((orig-list list)
   (let ((orig-list list)
@@ -11272,7 +11510,9 @@ The prefix ARG specifies how many levels of the outline should become
 underlined headlines.  The default is 3."
 underlined headlines.  The default is 3."
   (interactive "P")
   (interactive "P")
   (setq-default org-todo-line-regexp org-todo-line-regexp)
   (setq-default org-todo-line-regexp org-todo-line-regexp)
-  (let* ((region
+  (let* ((opt-plist (org-combine-plists (org-default-export-plist)
+					(org-infile-export-plist)))
+	 (region
 	  (buffer-substring
 	  (buffer-substring
 	   (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))))
@@ -11285,17 +11525,23 @@ underlined headlines.  The default is 3."
 	 (level 0) line txt
 	 (level 0) line txt
 	 (umax nil)
 	 (umax nil)
 	 (case-fold-search nil)
 	 (case-fold-search nil)
-	 (filename (concat (file-name-sans-extension buffer-file-name)
+         (filename (concat (file-name-as-directory
+			    (plist-get opt-plist :publishing-directory))
+			   (file-name-sans-extension 
+			    (file-name-nondirectory buffer-file-name))
 			   ".txt"))
 			   ".txt"))
 	 (buffer (find-file-noselect filename))
 	 (buffer (find-file-noselect filename))
 	 (levels-open (make-vector org-level-max nil))
 	 (levels-open (make-vector org-level-max nil))
+	 (odd org-odd-levels-only)
 	 (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      user-full-name)
-	 (title       (buffer-name))
+	 (author      (plist-get opt-plist :author))
+	 (title       (or (plist-get opt-plist :title)
+			  (file-name-sans-extension
+			   (file-name-nondirectory buffer-file-name))))
 	 (options     nil)
 	 (options     nil)
-	 (email       user-mail-address)
-	 (language    org-export-default-language)
+	 (email       (plist-get opt-plist :email))
+	 (language    (plist-get opt-plist :language))
 	 (text        nil)
 	 (text        nil)
 	 (todo nil)
 	 (todo nil)
 	 (lang-words nil))
 	 (lang-words nil))
@@ -11305,9 +11551,6 @@ underlined headlines.  The default is 3."
 
 
     (find-file-noselect filename)
     (find-file-noselect filename)
 
 
-    ;; Search for the export key lines
-    (org-parse-key-lines)
-
     (setq lang-words (or (assoc language org-export-language-setup)
     (setq lang-words (or (assoc language org-export-language-setup)
 			 (assoc "en" org-export-language-setup)))
 			 (assoc "en" org-export-language-setup)))
     (if org-export-ascii-show-new-buffer
     (if org-export-ascii-show-new-buffer
@@ -11315,7 +11558,13 @@ underlined headlines.  The default is 3."
       (set-buffer buffer))
       (set-buffer buffer))
     (erase-buffer)
     (erase-buffer)
     (fundamental-mode)
     (fundamental-mode)
-    (if options (org-parse-export-options options))
+    ;; create local variables for all options, to make sure all called
+    ;; functions get the correct information
+    (mapcar (lambda (x)
+	      (set (make-local-variable (cdr x)) 
+		   (plist-get opt-plist (car x))))
+	    org-export-plist-vars)
+    (set (make-local-variable 'org-odd-levels-only) odd)
     (setq umax (if arg (prefix-numeric-value arg)
     (setq umax (if arg (prefix-numeric-value arg)
 		 org-export-headline-levels))
 		 org-export-headline-levels))
 
 
@@ -11345,7 +11594,8 @@ underlined headlines.  The default is 3."
 				 level (org-tr-level level)
 				 level (org-tr-level level)
 				 txt (match-string 3 line)
 				 txt (match-string 3 line)
 				 todo
 				 todo
-				 (or (and (match-beginning 2)
+				 (or (and org-export-mark-todo-in-toc
+					  (match-beginning 2)
 					  (not (equal (match-string 2 line)
 					  (not (equal (match-string 2 line)
 						      org-done-string)))
 						      org-done-string)))
 					; TODO, not DONE
 					; TODO, not DONE
@@ -11444,7 +11694,12 @@ underlined headlines.  The default is 3."
 Also removes the first line of the buffer if it specifies a mode,
 Also removes the first line of the buffer if it specifies a mode,
 and all options lines."
 and all options lines."
   (interactive)
   (interactive)
-  (let* ((filename (concat (file-name-sans-extension buffer-file-name)
+  (let* ((opt-plist (org-combine-plists (org-default-export-plist)
+					(org-infile-export-plist)))
+	 (filename (concat (file-name-as-directory 
+			    (plist-get opt-plist :publishing-directory))
+			   (file-name-sans-extension 
+			    (file-name-nondirectory buffer-file-name))
 			   ".txt"))
 			   ".txt"))
 	 (buffer (find-file-noselect filename))
 	 (buffer (find-file-noselect filename))
 	 (ore (concat
 	 (ore (concat
@@ -11604,16 +11859,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)
+(defun org-export-as-html (arg &optional hidden ext-plist)
   "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.
 If there is an active region, export only the region.
 The prefix ARG specifies how many levels of the outline should become
 The prefix ARG specifies how many levels of the outline should become
-headlines.  The default is 3.  Lower levels will become bulleted lists."
+headlines.  The default is 3.  Lower levels will become bulleted lists.
+When HIDDEN is non-nil, don't display the HTML buffer.
+EXT-PLIST is a property list with external parameters overriding
+org-mode's default settings, but still inferior to file-local settings."
   (interactive "P")
   (interactive "P")
   (setq-default org-todo-line-regexp org-todo-line-regexp)
   (setq-default org-todo-line-regexp org-todo-line-regexp)
   (setq-default org-deadline-line-regexp org-deadline-line-regexp)
   (setq-default org-deadline-line-regexp org-deadline-line-regexp)
   (setq-default org-done-string org-done-string)
   (setq-default org-done-string org-done-string)
-  (let* ((style org-export-html-style)
+  (let* ((opt-plist (org-combine-plists (org-default-export-plist)
+					ext-plist
+					(org-infile-export-plist)))
+	 
+	 (style (plist-get opt-plist :style))
 	 (odd org-odd-levels-only)
 	 (odd org-odd-levels-only)
 	 (region-p (org-region-active-p))
 	 (region-p (org-region-active-p))
          (region
          (region
@@ -11627,15 +11889,19 @@ headlines.  The default is 3.  Lower levels will become bulleted lists."
          (lines (org-export-find-first-heading-line all_lines))
          (lines (org-export-find-first-heading-line all_lines))
          (level 0) (line "") (origline "") txt todo
          (level 0) (line "") (origline "") txt todo
          (umax nil)
          (umax nil)
-         (filename (concat (file-name-sans-extension buffer-file-name)
-                           ".html"))
+         (filename (concat (file-name-as-directory 
+			    (plist-get opt-plist :publishing-directory))
+			   (file-name-sans-extension 
+			    (file-name-nondirectory buffer-file-name))
+			   ".html"))
          (buffer (find-file-noselect filename))
          (buffer (find-file-noselect filename))
          (levels-open (make-vector org-level-max nil))
          (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      user-full-name)
-	 (title       (buffer-name))
-         (options     nil)
+         (author      (plist-get opt-plist :author))
+	 (title       (or (plist-get opt-plist :title)
+			  (file-name-sans-extension
+			   (file-name-nondirectory buffer-file-name))))
 	 (quote-re    (concat "^\\*+[ \t]*" org-quote-string "\\>"))
 	 (quote-re    (concat "^\\*+[ \t]*" org-quote-string "\\>"))
 	 (inquote     nil)
 	 (inquote     nil)
 	 (infixed     nil)
 	 (infixed     nil)
@@ -11643,10 +11909,10 @@ headlines.  The default is 3.  Lower levels will become bulleted lists."
 	 (local-list-num nil)
 	 (local-list-num nil)
 	 (local-list-indent nil)
 	 (local-list-indent nil)
 	 (llt org-plain-list-ordered-item-terminator)
 	 (llt org-plain-list-ordered-item-terminator)
-	 (email       user-mail-address)
-         (language    org-export-default-language)
-	 (text        nil)
-         (lang-words  nil)
+	 (email       (plist-get opt-plist :email))
+         (language    (plist-get opt-plist :language))
+	 (text        (plist-get opt-plist :text))
+	 (lang-words  nil)
 	 (target-alist nil) tg
 	 (target-alist nil) tg
 	 (head-count  0) cnt
 	 (head-count  0) cnt
 	 (start       0)
 	 (start       0)
@@ -11668,8 +11934,7 @@ headlines.  The default is 3.  Lower levels will become bulleted lists."
     (setq org-last-level 1)
     (setq org-last-level 1)
     (org-init-section-numbers)
     (org-init-section-numbers)
 
 
-    ;; Search for the export key lines
-    (org-parse-key-lines)
+    ;; Get the language-dependent settings
     (setq lang-words (or (assoc language org-export-language-setup)
     (setq lang-words (or (assoc language org-export-language-setup)
                          (assoc "en" org-export-language-setup)))
                          (assoc "en" org-export-language-setup)))
 
 
@@ -11681,7 +11946,12 @@ headlines.  The default is 3.  Lower levels will become bulleted lists."
     (fundamental-mode)
     (fundamental-mode)
     (let ((case-fold-search nil)
     (let ((case-fold-search nil)
 	  (org-odd-levels-only odd))
 	  (org-odd-levels-only odd))
-      (if options (org-parse-export-options options))
+      ;; create local variables for all options, to make sure all called
+      ;; functions get the correct information
+      (mapcar (lambda (x)
+		(set (make-local-variable (cdr x)) 
+		     (plist-get opt-plist (car x))))
+	      org-export-plist-vars)
       (setq umax (if arg (prefix-numeric-value arg)
       (setq umax (if arg (prefix-numeric-value arg)
                    org-export-headline-levels))
                    org-export-headline-levels))
 
 
@@ -11700,15 +11970,21 @@ headlines.  The default is 3.  Lower levels will become bulleted lists."
 "
 "
 	       language (org-html-expand title) (or charset "iso-8859-1")
 	       language (org-html-expand title) (or charset "iso-8859-1")
 	       date time author style))
 	       date time author style))
-      (if title     (insert (concat "<H1 class=\"title\">"
-				    (org-html-expand title) "</H1>\n")))
-      (if author    (insert (concat (nth 1 lang-words) ": " author "\n")))
-      (if email	  (insert (concat "<a href=\"mailto:" email "\">&lt;"
-                                  email "&gt;</a>\n")))
-      (if (or author email) (insert "<br>\n"))
-      (if (and date time) (insert (concat (nth 2 lang-words) ": "
-                                          date " " time "<br>\n")))
-      (if text      (insert (concat "<p>\n" (org-html-expand text))))
+
+      
+      (insert (or (plist-get opt-plist :preamble) ""))
+
+      (when (plist-get opt-plist :auto-preamble)
+	(if title     (insert (concat "<H1 class=\"title\">"
+				      (org-html-expand title) "</H1>\n")))
+;	(if author    (insert (concat (nth 1 lang-words) ": " author "\n")))
+;	(if email	  (insert (concat "<a href=\"mailto:" email "\">&lt;"
+;					  email "&gt;</a>\n")))
+;	(if (or author email) (insert "<br>\n"))
+;	(if (and date time) (insert (concat (nth 2 lang-words) ": "
+;					    date " " time "<br>\n")))
+	(if text      (insert (concat "<p>\n" (org-html-expand text)))))
+
       (if org-export-with-toc
       (if org-export-with-toc
 	  (progn
 	  (progn
 	    (insert (format "<H2>%s</H2>\n" (nth 3 lang-words)))
 	    (insert (format "<H2>%s</H2>\n" (nth 3 lang-words)))
@@ -11724,7 +12000,8 @@ headlines.  The default is 3.  Lower levels will become bulleted lists."
 					 (org-html-expand
 					 (org-html-expand
 					  (match-string 3 line)))
 					  (match-string 3 line)))
 				   todo
 				   todo
-				   (or (and (match-beginning 2)
+				   (or (and org-export-mark-todo-in-toc
+					    (match-beginning 2)
 					    (not (equal (match-string 2 line)
 					    (not (equal (match-string 2 line)
 							org-done-string)))
 							org-done-string)))
 					; TODO, not DONE
 					; TODO, not DONE
@@ -11875,7 +12152,11 @@ headlines.  The default is 3.  Lower levels will become bulleted lists."
 			     (not (string-match "^/.*/$" search)))
 			     (not (string-match "^/.*/$" search)))
 			(setq thefile (concat thefile "#" 
 			(setq thefile (concat thefile "#" 
 					      (org-solidify-link-text
 					      (org-solidify-link-text
-					       (org-link-unescape search)))))))
+					       (org-link-unescape search)))))
+		    (when (string-match "^file:" desc)
+		      (setq desc (replace-match "" t t desc))
+		      (if (string-match "\\.org$" desc)
+			  (setq desc (replace-match "" t t desc))))))
 		(setq rpl (if (and org-export-html-inline-images
 		(setq rpl (if (and org-export-html-inline-images
 				   file-is-image-p)
 				   file-is-image-p)
 			      (concat "<img src=\"" thefile "\"/>")
 			      (concat "<img src=\"" thefile "\"/>")
@@ -11982,8 +12263,30 @@ headlines.  The default is 3.  Lower levels will become bulleted lists."
 	    (if (string-match "^ [-+*]-\\|^[ \t]*$" line) (insert "<p>"))
 	    (if (string-match "^ [-+*]-\\|^[ \t]*$" line) (insert "<p>"))
 	    (insert line (if org-export-preserve-breaks "<br>\n" "\n"))))
 	    (insert line (if org-export-preserve-breaks "<br>\n" "\n"))))
 	  ))
 	  ))
+
+      ;; Properly close all local lists and other lists
+      (when in-local-list
+	;; Close any local lists before inserting a new header line
+	(while local-list-num
+	  (insert (if (car local-list-num) "</ol>\n" "</ul>"))
+	  (pop local-list-num))
+	(setq local-list-indent nil
+	      in-local-list nil))
+      (org-html-level-start 1 nil umax
+			    (and org-export-with-toc (<= level umax))
+			    head-count)
+
+      (when (plist-get opt-plist :auto-postamble)
+	(if author    (insert (concat (nth 1 lang-words) ": " author "\n")))
+	(if email	  (insert (concat "<a href=\"mailto:" email "\">&lt;"
+					  email "&gt;</a>\n")))
+	(if (or author email) (insert "<br>\n"))
+	(if (and date time) (insert (concat (nth 2 lang-words) ": "
+					    date " " time "<br>\n"))))
+      
       (if org-export-html-with-timestamp
       (if org-export-html-with-timestamp
 	  (insert org-export-html-html-helper-timestamp))
 	  (insert org-export-html-html-helper-timestamp))
+      (insert (or (plist-get opt-plist :postamble) ""))
       (insert "</body>\n</html>\n")
       (insert "</body>\n</html>\n")
       (normal-mode)
       (normal-mode)
       (save-buffer)
       (save-buffer)
@@ -12237,49 +12540,9 @@ stacked delimiters is N.  Escaping delimiters is not possible."
     (setq string (replace-match "\\1<u>\\3</u>\\4" t nil string)))
     (setq string (replace-match "\\1<u>\\3</u>\\4" t nil string)))
   string)
   string)
 
 
-(defun org-parse-key-lines ()
-  "Find the special key lines with the information for exporters."
-  (save-excursion
-    (goto-char 0)
-    (let ((re (org-make-options-regexp
-	       '("TITLE" "AUTHOR" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE")))
-	  key)
-      (while (re-search-forward re nil t)
-	(setq key (match-string 1))
-	(cond ((string-equal key "TITLE")
-	       (setq title (match-string 2)))
-	      ((string-equal key "AUTHOR")
-	       (setq author (match-string 2)))
-	      ((string-equal key "EMAIL")
-	       (setq email (match-string 2)))
-	      ((string-equal key "LANGUAGE")
-	       (setq language (match-string 2)))
-	      ((string-equal key "TEXT")
-	       (setq text (concat text "\n" (match-string 2))))
-	      ((string-equal key "OPTIONS")
-	       (setq options (match-string 2))))))))
-
-(defun org-parse-export-options (s)
-  "Parse the export options line."
-  (let ((op '(("H"     . org-export-headline-levels)
-	      ("num"   . org-export-with-section-numbers)
-	      ("toc"   . org-export-with-toc)
-	      ("\\n"   . org-export-preserve-breaks)
-	      ("@"     . org-export-html-expand)
-	      (":"     . org-export-with-fixed-width)
-	      ("|"     . org-export-with-tables)
-	      ("^"     . org-export-with-sub-superscripts)
-	      ("*"     . org-export-with-emphasize)
-	      ("TeX"   . org-export-with-TeX-macros)))
-	o)
-    (while (setq o (pop op))
-      (if (string-match (concat (regexp-quote (car o)) ":\\([^ \t\n\r;,.]*\\)")
-			s)
-	  (set (make-local-variable (cdr o))
-	       (car (read-from-string (match-string 1 s))))))))
-
 (defun org-html-level-start (level title umax with-toc head-count)
 (defun org-html-level-start (level title umax with-toc head-count)
-  "Insert a new level in HTML export."
+  "Insert a new level in HTML export.
+When TITLE is nil, just close all open levels."
   (let ((l (1+ (max level umax))))
   (let ((l (1+ (max level umax))))
     (while (<= l org-level-max)
     (while (<= l org-level-max)
       (if (aref levels-open (1- l))
       (if (aref levels-open (1- l))
@@ -12287,19 +12550,22 @@ stacked delimiters is N.  Escaping delimiters is not possible."
 	    (org-html-level-close l)
 	    (org-html-level-close l)
 	    (aset levels-open (1- l) nil)))
 	    (aset levels-open (1- l) nil)))
       (setq l (1+ l)))
       (setq l (1+ l)))
-    (if (> level umax)
-	(progn
-	  (if (aref levels-open (1- level))
-	      (insert "<li>" title "<p>\n")
-	    (aset levels-open (1- level) t)
-	    (insert "<ul><li>" title "<p>\n")))
-      (if org-export-with-section-numbers
-	  (setq title (concat (org-section-number level) " " title)))
-      (setq level (+ level 1))
-      (if with-toc
-	  (insert (format "\n<H%d><a name=\"sec-%d\">%s</a></H%d>\n"
-			  level head-count title level))
-	(insert (format "\n<H%d>%s</H%d>\n" level title level))))))
+    (when title
+      ;; If title is nil, this means this function is called to close
+      ;; all levels, so the rest is done only if title is given
+      (if (> level umax)
+	  (progn
+	    (if (aref levels-open (1- level))
+		(insert "<li>" title "<p>\n")
+	      (aset levels-open (1- level) t)
+	      (insert "<ul><li>" title "<p>\n")))
+	(if org-export-with-section-numbers
+	    (setq title (concat (org-section-number level) " " title)))
+	(setq level (+ level 1))
+	(if with-toc
+	    (insert (format "\n<H%d><a name=\"sec-%d\">%s</a></H%d>\n"
+			    level head-count title level))
+	  (insert (format "\n<H%d>%s</H%d>\n" level title level)))))))
 
 
 (defun org-html-level-close (&rest args)
 (defun org-html-level-close (&rest args)
   "Terminate one level in HTML export."
   "Terminate one level in HTML export."
@@ -12378,7 +12644,12 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
   ;; Output everything as XOXO
   ;; Output everything as XOXO
   (with-current-buffer (get-buffer buffer)
   (with-current-buffer (get-buffer buffer)
     (goto-char (point-min))  ;; CD:  beginning-of-buffer is not allowed.
     (goto-char (point-min))  ;; CD:  beginning-of-buffer is not allowed.
-    (let* ((filename (concat (file-name-sans-extension buffer-file-name)
+    (let* ((opt-plist (org-combine-plists (org-default-export-plist)
+					(org-infile-export-plist)))
+	   (filename (concat (file-name-as-directory 
+			      (plist-get opt-plist :publishing-directory))
+			     (file-name-sans-extension 
+			      (file-name-nondirectory buffer-file-name))
 			     ".xml"))
 			     ".xml"))
 	   (out (find-file-noselect filename))
 	   (out (find-file-noselect filename))
 	   (last-level 1)
 	   (last-level 1)
@@ -12437,7 +12708,7 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
 
 
       ;; Finish the buffer off and clean it up.
       ;; Finish the buffer off and clean it up.
       (switch-to-buffer-other-window out)
       (switch-to-buffer-other-window out)
-      (indent-region (point-min) (point-max))
+      (indent-region (point-min) (point-max) nil)
       (save-buffer)
       (save-buffer)
       (goto-char (point-min))
       (goto-char (point-min))
       )))
       )))

BIN
org.pdf


+ 48 - 16
org.texi

@@ -4,7 +4,7 @@
 @c @setfilename ../info/org
 @c @setfilename ../info/org
 @settitle Org Mode Manual
 @settitle Org Mode Manual
 
 
-@set VERSION 4.26
+@set VERSION 4.27
 @set DATE April 2006
 @set DATE April 2006
 
 
 @dircategory Emacs
 @dircategory Emacs
@@ -97,7 +97,7 @@ Introduction
 * Installation and activation::  How to install Org-mode
 * Installation and activation::  How to install Org-mode
 * Feedback::                    Bug reports, ideas, patches etc.
 * Feedback::                    Bug reports, ideas, patches etc.
 
 
-Document structure
+Document Structure
 
 
 * Outlines::                    Org-mode is based on outline-mode
 * Outlines::                    Org-mode is based on outline-mode
 * Headlines::                   How to typeset org-tree headlines
 * Headlines::                   How to typeset org-tree headlines
@@ -131,7 +131,8 @@ Hyperlinks
 * Internal links::              Links to other places in the current file
 * Internal links::              Links to other places in the current file
 * External links::              URL-like links to the world
 * External links::              URL-like links to the world
 * Handling links::              Creating, inserting and following
 * Handling links::              Creating, inserting and following
-* Search Options::              Linking to a specific location
+* Search options::              Linking to a specific location
+* Custom searches::             When the default search is not enough
 * Remember::                    Org-trees store quick notes
 * Remember::                    Org-trees store quick notes
 
 
 Internal links
 Internal links
@@ -163,7 +164,7 @@ Tags
 * Setting tags::                How to assign tags to a headline
 * Setting tags::                How to assign tags to a headline
 * Tag searches::                Searching for combinations of tags
 * Tag searches::                Searching for combinations of tags
 
 
-Agenda views
+Agenda Views
 
 
 * Agenda files::                Files being searched for agenda information
 * Agenda files::                Files being searched for agenda information
 * Agenda dispatcher::           Keyboard access to agenda views
 * Agenda dispatcher::           Keyboard access to agenda views
@@ -1377,7 +1378,8 @@ links to other files, Usenet articles, emails and much more.
 * Internal links::              Links to other places in the current file
 * Internal links::              Links to other places in the current file
 * External links::              URL-like links to the world
 * External links::              URL-like links to the world
 * Handling links::              Creating, inserting and following
 * Handling links::              Creating, inserting and following
-* Search Options::              Linking to a specific location
+* Search options::              Linking to a specific location
+* Custom searches::             When the default search is not enough
 * Remember::                    Org-trees store quick notes
 * Remember::                    Org-trees store quick notes
 @end menu
 @end menu
 
 
@@ -1543,7 +1545,7 @@ as links.  If spaces must be part of the link (for example in
 @samp{bbdb:Richard Stallman}) or to remove ambiguities about the end of
 @samp{bbdb:Richard Stallman}) or to remove ambiguities about the end of
 the link, enclose them in angular brackets.
 the link, enclose them in angular brackets.
 
 
-@node Handling links, Search Options, External links, Hyperlinks
+@node Handling links, Search options, External links, Hyperlinks
 @section Handling links
 @section Handling links
 
 
 Org-mode provides methods to create a link in the correct syntax, to
 Org-mode provides methods to create a link in the correct syntax, to
@@ -1561,11 +1563,14 @@ points to the target.  Otherwise it points to the current headline.  For
 VM, RMAIL, WANDERLUST, MH-E, GNUS and BBDB buffers, the link will
 VM, RMAIL, WANDERLUST, MH-E, GNUS and BBDB buffers, the link will
 indicate to the current article/entry.  For W3 and W3M buffers, the link
 indicate to the current article/entry.  For W3 and W3M buffers, the link
 goes to the current URL.  For any other files, the link will point to
 goes to the current URL.  For any other files, the link will point to
-the file, with a search string (@pxref{Search Options}) pointing to the
+the file, with a search string (@pxref{Search options}) pointing to the
 contents of the current line.  If there is an active region, the
 contents of the current line.  If there is an active region, the
-selected words will form the basis of the search string.  The key
-binding @kbd{C-c l} is only a suggestion - see @ref{Installation and
-activation}.
+selected words will form the basis of the search string.  If the
+automatically created link is not working correctly or accurately
+enough, you can write custom functions to select the search string and
+to do the search for particular file types - see @ref{Custom searches}.
+The key binding @kbd{C-c l} is only a suggestion - see @ref{Installation
+and activation}.
 
 
 @kindex C-c C-l
 @kindex C-c C-l
 @cindex link completion
 @cindex link completion
@@ -1643,7 +1648,7 @@ previously recorded positions.
 @end table
 @end table
 
 
 
 
-@node Search Options, Remember, Handling links, Hyperlinks
+@node Search options, Custom searches, Handling links, Hyperlinks
 @section Search options in file links
 @section Search options in file links
 @cindex search option in file links
 @cindex search option in file links
 @cindex file links, searching
 @cindex file links, searching
@@ -1651,8 +1656,14 @@ previously recorded positions.
 File links can contain additional information to make Emacs jump to a
 File links can contain additional information to make Emacs jump to a
 particular location in the file when following a link.  This can be a
 particular location in the file when following a link.  This can be a
 line number or a search option after a double@footnote{For backward
 line number or a search option after a double@footnote{For backward
-compatibility, line numbers can also follow a single colon.} colon.
-For example:
+compatibility, line numbers can also follow a single colon.} colon. For
+example, when the command @kbd{C-c l} creates a link (@pxref{Handling
+links}) to a file, it encodes the words in the current line as a search
+string that can be used to find this line back later when following the
+link with @kbd{C-c C-o}. 
+
+Here is the syntax of the different ways to attach a search to a file
+link, together with an explanation:
 
 
 @example
 @example
 [[file:~/code/main.c::255]]
 [[file:~/code/main.c::255]]
@@ -1661,8 +1672,6 @@ For example:
 [[file:~/xx.org::/regexp/]]
 [[file:~/xx.org::/regexp/]]
 @end example
 @end example
 
 
-@noindent Here is what these options do.
-
 @table @code
 @table @code
 @item 255
 @item 255
 Jump to line 255.
 Jump to line 255.
@@ -1688,7 +1697,30 @@ to search the current file.  For example, @code{<file:::find me>} does
 a search for @samp{find me} in the current file, just like
 a search for @samp{find me} in the current file, just like
 @samp{[[find me]]} would.
 @samp{[[find me]]} would.
 
 
-@node Remember,  , Search Options, Hyperlinks
+@node Custom searches, Remember, Search options, Hyperlinks
+@section Custom Searches
+@cindex custom search strings
+
+The default mechanism for creating search strings and for doing the
+actual search related to a file link may not work correctly in all
+cases.  For example, BibTeX database files have many entries like
+@samp{year="1993"} which would not result in good search strings,
+because the only unique identification for a BibTeX entry is the
+citation key.
+
+If you come across such a problem, you can write custom functions to set
+the right search string for a particular file type, and to do the search
+for the string in the file.  Using @code{add-hook}, these functions need
+to be added to the hook variables
+@code{org-create-file-search-functions} and
+@code{org-execute-file-search-functions}.  See the docstring for these
+variables for more information.  Org-mode actually uses this mechanism
+for Bib@TeX{} database files, and you can use the corresponding code as
+an implementation example.  Search for @samp{BibTeX links} in the source
+file.
+
+
+@node Remember,  , Custom searches, Hyperlinks
 @section Remember
 @section Remember
 @cindex @file{remember.el}
 @cindex @file{remember.el}
 
 

BIN
orgcard.pdf


+ 1 - 1
orgcard.tex

@@ -1,5 +1,5 @@
 % Reference Card for Org Mode
 % Reference Card for Org Mode
-\def\orgversionnumber{4.26}
+\def\orgversionnumber{4.27}
 \def\year{2006}
 \def\year{2006}
 %
 %
 %**start of header
 %**start of header