Carsten Dominik 17 年 前
コミット
fcf5c84bc8
6 ファイル変更470 行追加277 行削除
  1. 192 139
      org
  2. 201 105
      org.el
  3. BIN
      org.pdf
  4. 75 29
      org.texi
  5. BIN
      orgcard.pdf
  6. 2 4
      orgcard.tex

+ 192 - 139
org

@@ -5,7 +5,7 @@ START-INFO-DIR-ENTRY
 * Org Mode: (org).	outline-based notes management and organizer
 END-INFO-DIR-ENTRY
 
-   This manual is for Org-mode (version 4.28).
+   This manual is for Org-mode (version 4.29).
 
    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
 ***************
 
-This manual is for Org-mode (version 4.28).
+This manual is for Org-mode (version 4.29).
 
    Copyright (C) 2004, 2005, 2006 Free Software Foundation
 
@@ -88,6 +88,7 @@ Tables
 Calculations in tables
 
 * Formula syntax::              How to write a formula
+* Lisp formulas::               An alternative way to write formulas
 * Column formulas::             Formulas valid for all fields in a column
 * Advanced features::           Field names, parameters and automatic recalc
 * Named-field formulas::        Formulas valid in single fields
@@ -540,9 +541,8 @@ C-v' creates a sparse TODO tree (*note TODO basics::).
 
    To print a sparse tree, you can use the Emacs command
 `ps-print-buffer-with-faces' which does not print invisible parts of
-the document (2).  Or you can use the command `C-c C-x v' to copy the
-visible part of the document to another file (extension `.txt') which
-can then be printed in any desired way.
+the document (2).  Or you can use the command `C-c C-x v' to export
+only the visible part of the document and print the resulting file.
 
    ---------- Footnotes ----------
 
@@ -916,7 +916,8 @@ File: org,  Node: Table calculations,  Next: orgtbl-mode,  Prev: Narrow columns,
 ==========================
 
 The table editor makes use of the Emacs `calc' package to implement
-spreadsheet-like capabilities.  Org-mode has two levels of complexity
+spreadsheet-like capabilities.  It can also evaluate Emacs Lisp forms to
+derive fields from other fields.  Org-mode has two levels of complexity
 for table calculations.  On the basic level, tables do only horizontal
 computations, so a field can be computed from other fields _in the same
 row_, and Org-mode assumes that there is only one formula for each
@@ -928,6 +929,7 @@ own formula associated with them, and recalculation can be automated.
 * Menu:
 
 * Formula syntax::              How to write a formula
+* Lisp formulas::               An alternative way to write formulas
 * Column formulas::             Formulas valid for all fields in a column
 * Advanced features::           Field names, parameters and automatic recalc
 * Named-field formulas::        Formulas valid in single fields
@@ -935,7 +937,7 @@ own formula associated with them, and recalculation can be automated.
 * Appetizer::                   Taste the power of calc
 
 
-File: org,  Node: Formula syntax,  Next: Column formulas,  Prev: Table calculations,  Up: Table calculations
+File: org,  Node: Formula syntax,  Next: Lisp formulas,  Prev: Table calculations,  Up: Table calculations
 
 3.3.1 Formula syntax
 --------------------
@@ -977,17 +979,17 @@ turn on degrees, radians, fraction and symbolic modes, respectively.
 In addition, you may provide a `printf' format specifier to reformat
 the final result.  A few examples:
 
-       $1+$2                Sum of first and second field
-       $1+$2;%.2f           Same, format result to two decimals
-       exp($2)+exp($1)      Math functions can be used
-       $;%.1f               Reformat current cell to 1 decimal
-       ($3-32)*5/9          Degrees F -> C conversion
-       $c/$1/$cm            Hz -> cm conversion, using `constants.el'
-       tan($1);Dp3s1        Compute in degrees, precision 3, display SCI 1
-       sin($1);Dp3%.1e      Same, but use printf specifier for display
-       vmean($2..$7)        Compute column range mean, using vector function
-       vsum(&III)           Sum numbers from 3rd hline above, up to here
-       taylor($3,x=7,2)     taylor series of $3, at x=7, second degree
+     $1+$2                Sum of first and second field
+     $1+$2;%.2f           Same, format result to two decimals
+     exp($2)+exp($1)      Math functions can be used
+     $;%.1f               Reformat current cell to 1 decimal
+     ($3-32)*5/9          Degrees F -> C conversion
+     $c/$1/$cm            Hz -> cm conversion, using `constants.el'
+     tan($1);Dp3s1        Compute in degrees, precision 3, display SCI 1
+     sin($1);Dp3%.1e      Same, but use printf specifier for display
+     vmean($2..$7)        Compute column range mean, using vector function
+     vsum(&III)           Sum numbers from 3rd hline above, up to here
+     taylor($3,x=7,2)     taylor series of $3, at x=7, second degree
 
    ---------- Footnotes ----------
 
@@ -998,9 +1000,27 @@ The default settings can be configured using the variable
 `org-calc-default-modes'.
 
 
-File: org,  Node: Column formulas,  Next: Advanced features,  Prev: Formula syntax,  Up: Table calculations
+File: org,  Node: Lisp formulas,  Next: Column formulas,  Prev: Formula syntax,  Up: Table calculations
 
-3.3.2 Column formulas
+3.3.2 Emacs Lisp forms as formulas
+----------------------------------
+
+It is also possible to write a formula in Emacs lisp, this can be useful
+for string manipulation and control structures.  If a formula starts
+with a single quote followed by an opening parenthesis, then it is
+evaluated as a lisp form.  The evaluation should return either a string
+or a number.  Just like with `calc' formulas, you can provide a format
+specifier after a semicolon.  A few examples:
+
+     swap the first two characters of the content of column 1
+     '(concat (substring "$1" 1 2) (substring "$1" 0 1) (substring "$1" 2))
+     Add columns 1 and 2, equivalent to the calc's `$1+$2'
+     '(+ $1 $2)
+
+
+File: org,  Node: Column formulas,  Next: Advanced features,  Prev: Lisp formulas,  Up: Table calculations
+
+3.3.3 Column formulas
 ---------------------
 
 To apply a formula to a field, type it directly into the field,
@@ -1035,7 +1055,7 @@ separator line, assuming that this is the table header.
 
 File: org,  Node: Advanced features,  Next: Named-field formulas,  Prev: Column formulas,  Up: Table calculations
 
-3.3.3 Advanced features
+3.3.4 Advanced features
 -----------------------
 
 If you want the recalculation of fields to happen automatically, or if
@@ -1108,7 +1128,7 @@ with empty first field.
 
 File: org,  Node: Named-field formulas,  Next: Editing/debugging formulas,  Prev: Advanced features,  Up: Table calculations
 
-3.3.4 Named-field formulas
+3.3.5 Named-field formulas
 --------------------------
 
 A named field can have its own formula associated with it.  In the
@@ -1122,7 +1142,7 @@ line) will also update all named field formulas.
 
 File: org,  Node: Editing/debugging formulas,  Next: Appetizer,  Prev: Named-field formulas,  Up: Table calculations
 
-3.3.5 Editing and debugging formulas
+3.3.6 Editing and debugging formulas
 ------------------------------------
 
 To edit a column or field formula, use the commands `C-c =' and `C-u
@@ -1158,7 +1178,7 @@ will be displayed.
 
 File: org,  Node: Appetizer,  Prev: Editing/debugging formulas,  Up: Table calculations
 
-3.3.6 Appetizer
+3.3.7 Appetizer
 ---------------
 
 Finally, just to wet your appetite on what can be done with the
@@ -2597,6 +2617,12 @@ Remote editing
 `S-<down>'
      Decrease the priority of the current item.
 
+`C-c C-s'
+     Schedule this item
+
+`C-c C-d'
+     Set a deadline for this item.
+
 `S-<right>'
      Change the time stamp associated with the current line by one day
      into the future.  With prefix argument, change it by that many
@@ -2702,7 +2728,10 @@ file.
      Export as ASCII file.  If there is an active region, only the
      region will be exported.  For an org file `myfile.org', the ASCII
      file will be `myfile.txt'.  The file will be overwritten without
-     warning.
+     warning.  
+
+`C-c C-x v a'
+     Export only the visible part of the document.
 
    In the exported version, the first 3 outline levels will become
 headlines, defining a general document structure.  Additional levels
@@ -2728,7 +2757,12 @@ support for tables.
      Export as HTML file `myfile.html'.  
 
 `C-c C-x b'
-     Export as HTML file and open it with a browser.
+     Export as HTML file and open it with a browser.  
+
+`C-c C-x v h'
+
+`C-c C-x v b'
+     Export only the visible part of the document.
 
    In the exported version, the first 3 outline levels will become
 headlines, defining a general document structure.  Additional levels
@@ -2775,7 +2809,10 @@ Currently, this exporter only handles the general outline structure and
 does not interpret any additional Org-mode features.
 
 `C-c C-x C-x'
-     Export as XML file `myfile.xml'.
+     Export as XML file `myfile.xml'.  
+
+`C-c C-x v x'
+     Export only the visible part of the document.
 
 
 File: org,  Node: iCalendar export,  Next: Text interpretation,  Prev: XML export,  Up: Exporting
@@ -3495,6 +3532,9 @@ Org-mode would not be what it is without your input.
    * Pavel Chalmoviansky influenced the agenda treatment of items with
      specified time.
 
+   * Gregory Chenov patched support for lisp forms into table
+     calculations and improved XEmacs compatibility.
+
    * Sacha Chua suggested to copy some linking code from Planner.
 
    * Kees Dullemond inspired the use of narrowed tabled columns.
@@ -3503,7 +3543,7 @@ Org-mode would not be what it is without your input.
      patched CSS formatting into the HTML exporter, and inspired the
      agenda.
 
-   * Nic Ferrier contributed mailcap and XML support.
+   * Nic Ferrier contributed mailcap and XOXO support.
 
    * Kai Grossjohann pointed out key-binding conflicts caused by
      Org-mode.
@@ -3521,6 +3561,8 @@ Org-mode would not be what it is without your input.
 
    * Pete Phillips helped the development of the TAGS feature.
 
+   * T.V. Raman reported bugs and suggested improvements.
+
    * Matthias Rempe (Oelde) provided ideas, Windows support, and quality
      control.
 
@@ -3538,6 +3580,9 @@ Org-mode would not be what it is without your input.
    * Linking to VM/BBDB/GNUS was inspired by Tom Shannon's
      `organizer-mode.el'.
 
+   * David O'Toole wrote `org-publish.el' and came up with lots is ideas
+     for small changes.
+
    * Ju"rgen Vollmer contributed code generating the table of contents
      in HTML output.
 
@@ -3581,7 +3626,7 @@ File: org,  Node: Index,  Next: Key Index,  Prev: Miscellaneous,  Up: Top
 * agenda:                                Weekly/Daily agenda. (line   6)
 * agenda commands, custom:               Agenda dispatcher.   (line   6)
 * agenda dispatcher:                     Agenda dispatcher.   (line   6)
-* agenda files, removing buffers:        Agenda commands.     (line 189)
+* agenda files, removing buffers:        Agenda commands.     (line 195)
 * agenda views:                          Agenda views.        (line   6)
 * agenda, for single file:               Timeline.            (line   6)
 * allout.el, conflict with:              FAQ.                 (line   6)
@@ -3646,7 +3691,7 @@ File: org,  Node: Index,  Next: Key Index,  Prev: Miscellaneous,  Up: Top
 * DEADLINE keyword:                      Time stamps.         (line  43)
 * deadlines:                             Time stamps.         (line   6)
 * demotion, of subtrees:                 Structure editing.   (line   6)
-* diary entries, creating from agenda:   Agenda commands.     (line 147)
+* diary entries, creating from agenda:   Agenda commands.     (line 153)
 * diary integration:                     Calendar/Diary integration.
                                                               (line   6)
 * dictionary word completion:            Completion.          (line   6)
@@ -3693,8 +3738,8 @@ File: org,  Node: Index,  Next: Key Index,  Prev: Miscellaneous,  Up: Top
 * GNUS links:                            External links.      (line   6)
 * hand-formatted lists:                  Enhancing text.      (line  11)
 * headline levels:                       Export options.      (line  25)
-* headline levels, for exporting <1>:    HTML export.         (line  16)
-* headline levels, for exporting:        ASCII export.        (line  15)
+* headline levels, for exporting <1>:    HTML export.         (line  21)
+* headline levels, for exporting:        ASCII export.        (line  18)
 * headline navigation:                   Motion.              (line   6)
 * headline tagging:                      Tags.                (line   6)
 * headline, promotion and demotion:      Structure editing.   (line   6)
@@ -3726,6 +3771,7 @@ File: org,  Node: Index,  Next: Key Index,  Prev: Miscellaneous,  Up: Top
 * links, external:                       External links.      (line   6)
 * links, internal:                       Internal links.      (line   6)
 * links, returning to:                   Handling links.      (line  81)
+* Lisp forms, as table fomulas:          Lisp formulas.       (line   6)
 * lists, hand-formatted:                 Enhancing text.      (line  11)
 * lists, ordered:                        Plain lists.         (line   6)
 * lists, plain:                          Plain lists.         (line   6)
@@ -3893,10 +3939,10 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
                                                               (line  57)
 * <TAB> <3>:                             Plain lists.         (line  38)
 * <TAB>:                                 Visibility cycling.  (line  10)
-* > <1>:                                 Agenda commands.     (line 142)
+* > <1>:                                 Agenda commands.     (line 148)
 * >:                                     Creating timestamps. (line  76)
-* C:                                     Agenda commands.     (line 172)
-* c:                                     Agenda commands.     (line 156)
+* C:                                     Agenda commands.     (line 178)
+* c:                                     Agenda commands.     (line 162)
 * C-#:                                   Built-in table editor.
                                                               (line 155)
 * C-,:                                   Agenda files.        (line  18)
@@ -3958,6 +4004,7 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
 * C-c C-c <5>:                           Built-in table editor.
                                                               (line  54)
 * C-c C-c:                               Plain lists.         (line  68)
+* C-c C-d <1>:                           Agenda commands.     (line 133)
 * C-c C-d:                               Creating timestamps. (line  37)
 * C-c C-f:                               Motion.              (line  12)
 * C-c C-j:                               Motion.              (line  21)
@@ -3971,6 +4018,7 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
 * C-c C-q:                               Built-in table editor.
                                                               (line 119)
 * C-c C-r:                               Timeline.            (line  13)
+* C-c C-s <1>:                           Agenda commands.     (line 130)
 * C-c C-s:                               Creating timestamps. (line  47)
 * C-c C-t:                               TODO basics.         (line  13)
 * C-c C-u:                               Motion.              (line  18)
@@ -3979,7 +4027,7 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
 * C-c C-x a:                             ASCII export.        (line   9)
 * C-c C-x b:                             HTML export.         (line  11)
 * C-c C-x c:                             iCalendar export.    (line  20)
-* C-c C-x C-c:                           Agenda commands.     (line 179)
+* C-c C-x C-c:                           Agenda commands.     (line 185)
 * C-c C-x C-i:                           iCalendar export.    (line  15)
 * C-c C-x C-k:                           Structure editing.   (line  36)
 * C-c C-x C-w <1>:                       Built-in table editor.
@@ -3995,7 +4043,11 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
                                                               (line 105)
 * C-c C-x M-w:                           Structure editing.   (line  40)
 * C-c C-x t:                             Export options.      (line  13)
+* C-c C-x v <1>:                         XML export.          (line  11)
 * C-c C-x v:                             Sparse trees.        (line  39)
+* C-c C-x v a:                           ASCII export.        (line  13)
+* C-c C-x v b:                           HTML export.         (line  14)
+* C-c C-x v h:                           HTML export.         (line  14)
 * C-c C-y:                               Creating timestamps. (line  63)
 * C-c l:                                 Handling links.      (line   9)
 * C-c |:                                 Built-in table editor.
@@ -4009,11 +4061,11 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
 * d:                                     Agenda commands.     (line  65)
 * f:                                     Agenda commands.     (line  44)
 * g:                                     Agenda commands.     (line  72)
-* H:                                     Agenda commands.     (line 176)
-* i:                                     Agenda commands.     (line 147)
+* H:                                     Agenda commands.     (line 182)
+* i:                                     Agenda commands.     (line 153)
 * l:                                     Agenda commands.     (line  51)
 * L:                                     Agenda commands.     (line  32)
-* M:                                     Agenda commands.     (line 163)
+* M:                                     Agenda commands.     (line 169)
 * M-<down>:                              Built-in table editor.
                                                               (line  82)
 * M-<left> <1>:                          Built-in table editor.
@@ -4059,18 +4111,18 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
 * o:                                     Agenda commands.     (line  59)
 * P:                                     Agenda commands.     (line 117)
 * p:                                     Agenda commands.     (line  20)
-* q:                                     Agenda commands.     (line 186)
+* q:                                     Agenda commands.     (line 192)
 * r <1>:                                 Agenda commands.     (line  76)
 * r:                                     Global TODO list.    (line  21)
-* S:                                     Agenda commands.     (line 167)
+* S:                                     Agenda commands.     (line 173)
 * S-<down> <1>:                          Agenda commands.     (line 126)
 * S-<down> <2>:                          Creating timestamps. (line  55)
 * S-<down>:                              Priorities.          (line  25)
-* S-<left> <1>:                          Agenda commands.     (line 138)
+* S-<left> <1>:                          Agenda commands.     (line 144)
 * S-<left>:                              Creating timestamps. (line  50)
 * S-<RET>:                               Built-in table editor.
                                                               (line 170)
-* S-<right> <1>:                         Agenda commands.     (line 130)
+* S-<right> <1>:                         Agenda commands.     (line 136)
 * S-<right>:                             Creating timestamps. (line  50)
 * S-<TAB> <1>:                           Built-in table editor.
                                                               (line  61)
@@ -4081,106 +4133,107 @@ File: org,  Node: Key Index,  Prev: Index,  Up: Top
 * T:                                     Agenda commands.     (line 104)
 * t:                                     Agenda commands.     (line 100)
 * w:                                     Agenda commands.     (line  62)
-* x:                                     Agenda commands.     (line 189)
+* x:                                     Agenda commands.     (line 195)
 
 
 
 Tag Table:
 Node: Top959
-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: Exporting106755
-Node: ASCII export107885
-Node: HTML export108707
-Node: XML export110455
-Node: iCalendar export110822
-Node: Text interpretation112644
-Node: Comment lines113121
-Node: Enhancing text113590
-Node: Export options115421
-Node: Miscellaneous117023
-Node: Completion117781
-Node: Customization118777
-Node: Summary of in-buffer settings119384
-Node: The very busy C-c C-c key122145
-Node: Clean view123550
-Node: TTY keys126127
-Node: FAQ127728
-Node: Interaction134630
-Node: Bugs137664
-Node: Acknowledgments139618
-Node: Index142713
-Node: Key Index164083
+Node: Introduction7583
+Node: Summary7897
+Node: Installation and activation10005
+Node: Feedback11674
+Node: Document structure12460
+Node: Outlines13226
+Node: Headlines13886
+Node: Visibility cycling14509
+Node: Motion15705
+Node: Structure editing16489
+Node: Archiving18598
+Node: Sparse trees19458
+Ref: Sparse trees-Footnote-121443
+Ref: Sparse trees-Footnote-221535
+Node: Plain lists21650
+Ref: Plain lists-Footnote-124944
+Node: Tables25301
+Node: Built-in table editor25849
+Node: Narrow columns33462
+Ref: Narrow columns-Footnote-135401
+Node: Table calculations35447
+Node: Formula syntax36767
+Ref: Formula syntax-Footnote-139672
+Node: Lisp formulas39971
+Node: Column formulas40762
+Node: Advanced features42523
+Node: Named-field formulas45778
+Node: Editing/debugging formulas46418
+Node: Appetizer48176
+Node: orgtbl-mode49278
+Node: table.el49769
+Node: Hyperlinks50746
+Node: Link format51450
+Node: Internal links52747
+Node: Radio targets54697
+Node: CamelCase links55412
+Node: External links55910
+Node: Handling links57835
+Node: Search options62167
+Ref: Search options-Footnote-163943
+Node: Custom searches64024
+Node: Remember65072
+Ref: Remember-Footnote-168939
+Node: TODO items69063
+Node: TODO basics69986
+Node: Progress logging71327
+Node: TODO extensions72113
+Node: Workflow states72913
+Node: TODO types73781
+Ref: TODO types-Footnote-175439
+Node: Per file keywords75521
+Ref: Per file keywords-Footnote-176974
+Node: Priorities77202
+Node: Timestamps78411
+Node: Time stamps78732
+Node: Creating timestamps81160
+Node: Tags84289
+Node: Tag inheritance85024
+Node: Setting tags85961
+Node: Tag searches86923
+Node: Agenda views88132
+Node: Agenda files89671
+Ref: Agenda files-Footnote-190631
+Ref: Agenda files-Footnote-290780
+Node: Agenda dispatcher90972
+Node: Weekly/Daily agenda93102
+Node: Categories94237
+Node: Time-of-day specifications94885
+Node: Calendar/Diary integration96861
+Node: Sorting of agenda items98238
+Node: Global TODO list99070
+Node: Matching headline tags100485
+Node: Timeline101428
+Node: Agenda commands102301
+Node: Exporting107771
+Node: ASCII export108901
+Node: HTML export109791
+Node: XML export111622
+Node: iCalendar export112057
+Node: Text interpretation113879
+Node: Comment lines114356
+Node: Enhancing text114825
+Node: Export options116656
+Node: Miscellaneous118258
+Node: Completion119016
+Node: Customization120012
+Node: Summary of in-buffer settings120619
+Node: The very busy C-c C-c key123380
+Node: Clean view124785
+Node: TTY keys127362
+Node: FAQ128963
+Node: Interaction135865
+Node: Bugs138899
+Node: Acknowledgments140853
+Node: Index144222
+Node: Key Index165665
 
 End Tag Table

+ 201 - 105
org.el

@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 4.28
+;; Version: 4.29
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -81,6 +81,17 @@
 ;;
 ;; Changes since version 4.10:
 ;; ---------------------------
+;; Version 4.29
+;;    - Inlining images in HTML export now depends on wheather the link
+;;      contains a description or not.
+;;    - TODO items can be scheduled from the global TODO list using C-c C-s.
+;;    - TODO items already scheduled can be made to disappear from the global
+;;      todo list, see `org-agenda-todo-ignore-scheduled'.
+;;    - In Tables, formulas may also be Lisp forms.
+;;    - Exporting the visible part of an outline with `C-c C-x v' works now
+;;      for all available exporters.
+;;    - Bug fixes, lots of them :-(
+;;
 ;; Version 4.28
 ;;    - Bug fixes.
 ;;
@@ -149,7 +160,7 @@
 
 ;;; Customization variables
 
-(defvar org-version "4.28"
+(defvar org-version "4.29"
   "The version number of the file org.el.")
 (defun org-version ()
   (interactive)
@@ -1282,6 +1293,14 @@ potentially much shorter TODO lists."
   :group 'org-todo
   :type 'boolean)
 
+(defcustom org-agenda-todo-ignore-scheduled nil
+  "Non-nil means, don't show scheduled entries in the global todo list.
+The idea behind this is that by scheduling it, you have already taken care
+of this item."
+  :group 'org-agenda
+  :group 'org-todo
+  :type 'boolean)
+
 (defcustom org-agenda-include-all-todo nil
   "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
@@ -1316,7 +1335,7 @@ Needs to be set before org.el is loaded."
   :group 'org-agenda-setup
   :type 'boolean)
 
-(defcustom org-agenda-start-with-follow-mode t
+(defcustom org-agenda-start-with-follow-mode nil
   "The initial value of follwo-mode in a newly created agenda window."
   :group 'org-agenda-setup
   :type 'boolean)
@@ -1848,13 +1867,16 @@ When nil, the links still point to the plain `.org' file."
   :group 'org-export-html
   :type 'boolean)
 
-(defcustom org-export-html-inline-images t
+(defcustom org-export-html-inline-images 'maybe
   "Non-nil means, inline images into exported HTML pages.
-The link will still be to the original location of the image file.
-So if you are moving the page, lets say to your public HTML site,
-you will have to move the image and maybe change the link."
+This is done using an <img> tag.  When nil, an anchor with href is used to
+link to the image.  If this option is `maybe', then images in links with
+an empty description will be inlined, while images with a description will
+be linked only."
   :group 'org-export-html
-  :type 'boolean)
+  :type '(choice (const :tag "Never" nil)
+		 (const :tag "Always" t)
+		 (const :tag "When there is no description" maybe)))
 
 (defcustom org-export-html-expand t
   "Non-nil means, for HTML export, treat @<...> as HTML tag.
@@ -2434,11 +2456,31 @@ can be exported as a structured ASCII or HTML file.
 The following commands are available:
 
 \\{org-mode-map}"
+
+  ;; Get rid of Outline menus, they are not needed
+  ;; Need to do this here because define-derived-mode sets up
+  ;; the keymap so late.
+  (if (featurep 'xemacs)
+      (if org-noutline-p
+	  (progn
+	    (easy-menu-remove outline-mode-menu-heading)
+	    (easy-menu-remove outline-mode-menu-show)
+	    (easy-menu-remove outline-mode-menu-hide))
+	(delete-menu-item '("Headings"))
+	(delete-menu-item '("Show"))
+	(delete-menu-item '("Hide"))
+	(set-menubar-dirty-flag))
+    (define-key org-mode-map [menu-bar headings] 'undefined)
+    (define-key org-mode-map [menu-bar hide] 'undefined)
+    (define-key org-mode-map [menu-bar show] 'undefined))
+
   (easy-menu-add org-org-menu)
   (easy-menu-add org-tbl-menu)
   (org-install-agenda-files-menu)
   (if org-descriptive-links (org-add-to-invisibility-spec '(org-link)))
   (org-add-to-invisibility-spec '(org-cwidth))
+  (when (featurep 'xemacs)
+    (set (make-local-variable 'line-move-ignore-invisible) t))
   (setq outline-regexp "\\*+")
   ;;(setq outline-regexp "\\(?:\\*+\\|[ \t]*\\(?:[-+*]\\|[0-9]+[.)]\\) \\)")
   (setq outline-level 'org-outline-level)
@@ -2467,19 +2509,6 @@ The following commands are available:
 	   (= (point-min) (point-max)))
       (insert "    -*- mode: org -*-\n\n"))
 
-  ;; Get rid of Outline menus, they are not needed
-  ;; Need to do this here because define-derived-mode sets up
-  ;; the keymap so late.
-  (if (featurep 'xemacs)
-      (progn
-	(delete-menu-item '("Headings"))
-	(delete-menu-item '("Show"))
-	(delete-menu-item '("Hide"))
-	(set-menubar-dirty-flag))
-    (define-key org-mode-map [menu-bar headings] 'undefined)
-    (define-key org-mode-map [menu-bar hide] 'undefined)
-    (define-key org-mode-map [menu-bar show] 'undefined))
-
   (unless org-inhibit-startup
     (if org-startup-align-all-tables
 	(org-table-map-tables 'org-table-align))
@@ -3175,8 +3204,14 @@ or nil."
 (defvar org-ignore-region nil
   "To temporarily disable the active region.")
 
+;; FIXME: Fix behavior if point is on the stars but not at bol.
 (defun org-insert-heading (&optional force-heading)
-  "Insert a new heading or item with same depth at point."
+  "Insert a new heading or item with same depth at point.
+If point is in a plain list and FORCE-HEADING is nil, create a new list item.
+If point is at the beginning of a headline, insert a sibling before the
+current headline.  If point is in the middle of a headline, split the headline
+at that position and make the rest of the headline part of the sibling below
+the current headline."
   (interactive "P")
   (if (= (buffer-size) 0)
       (insert "\n* ")
@@ -3186,15 +3221,18 @@ or nil."
 			 (org-back-to-heading)
 		       (error (outline-next-heading)))
 		     (prog1 (match-string 0)
-		       (funcall outline-level)))))
+		       (funcall outline-level))))
+	     pos)
 	(cond 
 	 ((and (org-on-heading-p) (bolp) 
 	       (save-excursion (backward-char 1) (not (org-invisible-p))))
 	  (open-line 1))
 	 ((bolp) nil)
 	 (t (newline)))
-	(insert head)
-	(just-one-space)
+	(insert head) (just-one-space)
+	(setq pos (point))
+	(end-of-line 1)
+	(unless (= (point) pos) (just-one-space) (backward-delete-char 1))
 	(run-hooks 'org-insert-heading-hook)))))
 
 (defun org-insert-item ()
@@ -3210,7 +3248,8 @@ Return t when things worked, nil when we are not in an item."
     (let* ((bul (match-string 0))
 	   (eow (save-excursion (beginning-of-line 1) (looking-at "[ \t]*")
 				(match-end 0)))
-	   (eowcol (save-excursion (goto-char eow) (current-column))))
+	   (eowcol (save-excursion (goto-char eow) (current-column)))
+	   pos)
       (cond
        ((and (org-at-item-p) (<= (point) eow))
 	;; before the bullet
@@ -3220,7 +3259,10 @@ Return t when things worked, nil when we are not in an item."
 	(beginning-of-line 1))
        (t (newline)))
       (insert bul)
-      (just-one-space))
+      (just-one-space)
+      (setq pos (point))
+      (end-of-line 1)
+      (unless (= (point) pos) (just-one-space) (backward-delete-char 1)))
     (org-maybe-renumber-ordered-list)
     t))
 
@@ -3232,7 +3274,9 @@ state (TODO by default).  Also with prefix arg, force first state."
   (org-insert-heading)
   (save-excursion
     (org-back-to-heading)
-    (outline-previous-heading)
+    (if org-noutline-p
+	(outline-previous-heading)
+      (outline-previous-visible-heading t))
     (looking-at org-todo-line-regexp))
   (if (or arg
 	  (not (match-beginning 2))
@@ -4059,9 +4103,9 @@ prefix arg, switch to that state."
 	    (not (equal state org-done-string)))
       (when org-log-done
 	(if (equal state org-done-string)
-	    (org-log-done)
+	    (org-add-planning-info 'closed (current-time) 'scheduled)
 	  (if (not this)
-	      (org-log-done t))))
+	      (org-add-planning-info nil nil 'closed))))
       ;; Fixup tag positioning
       (and org-auto-align-tags (org-set-tags nil t))
       (run-hooks 'org-after-todo-state-change-hook)))
@@ -4131,24 +4175,14 @@ of `org-todo-keywords'."
 A timestamp is also inserted - use \\[org-timestamp-up] and \\[org-timestamp-down]
 to modify it to the correct date."
   (interactive)
-  (insert
-   org-deadline-string " "
-   (format-time-string (car org-time-stamp-formats)
-		       (org-read-date nil 'to-time)))
-  (message "%s" (substitute-command-keys
-		 "Use \\[org-timestamp-up-day] and \\[org-timestamp-down-day] to change the date.")))
+  (org-add-planning-info 'deadline nil nil)) ;; FIXME: remove closed?
 
 (defun org-schedule ()
   "Insert the SCHEDULED: string to schedule a TODO item.
 A timestamp is also inserted - use \\[org-timestamp-up] and \\[org-timestamp-down]
 to modify it to the correct date."
   (interactive)
-  (insert
-   org-scheduled-string " "
-   (format-time-string (car org-time-stamp-formats)
-		       (org-read-date nil 'to-time)))
-  (message "%s" (substitute-command-keys
-		 "Use \\[org-timestamp-up-day] and \\[org-timestamp-down-day] to change the date.")))
+  (org-add-planning-info 'scheduled nil 'closed))
 
 (defun org-add-planning-info (what &optional time &rest remove)
   "Insert new timestamp with keyword in the line directly after the headline.
@@ -4158,8 +4192,7 @@ REMOVE indicates what kind of entries to remove.  An old WHAT entry will also
 be removed."
   (interactive)
   (save-excursion
-    (let (beg end col list elt)
-      (org-show-entry)   ; Avoid this.
+    (let (beg end col list elt (buffer-invisibility-spec nil) ts)
       (org-back-to-heading t)
       (setq beg (point))
       (looking-at (concat outline-regexp "\\( *\\)[^\r\n]*"))
@@ -4196,15 +4229,17 @@ be removed."
 	       ((eq what 'closed) org-closed-string))
 	 " ")
 	(insert
-	 (format-time-string 
-	  (if (eq what 'closed)
-	      (concat "[" (substring (cdr org-time-stamp-formats) 1 -1) "]")
-	    (car org-time-stamp-formats))
-	  (or time (org-read-date nil 'to-time)))))
+	 (setq ts
+	       (format-time-string 
+		(if (eq what 'closed)
+		    (concat "[" (substring (cdr org-time-stamp-formats) 1 -1) "]")
+		  (car org-time-stamp-formats))
+		(or time (org-read-date nil 'to-time))))))
       (goto-char (point-min))
       (widen)
       (if (looking-at "[ \t]+\r?\n")
-	  (replace-match "")))))
+	  (replace-match ""))
+      ts)))
 
 (defun org-occur (regexp &optional callback)
   "Make a compact tree which shows all matches of REGEXP.
@@ -4468,6 +4503,7 @@ used to insert the time stamp into the buffer to include the time."
 	     ct))
 	 (calendar-move-hook nil)
 	 (view-diary-entries-initially nil)
+	 (view-calendar-holidays-initially nil)
 	 (timestr (format-time-string
 		   (if with-time "%Y-%m-%d %H:%M" "%Y-%m-%d") default-time))
 	 (prompt (format "YYYY-MM-DD [%s]: " timestr))
@@ -4843,6 +4879,7 @@ A prefix ARG can be used to force the current date."
   (interactive "P")
   (let ((tsr org-ts-regexp) diff
 	(calendar-move-hook nil)
+	(view-calendar-holidays-initially nil)
 	(view-diary-entries-initially nil))
     (if (or (org-at-timestamp-p)
 	    (save-excursion
@@ -4932,6 +4969,8 @@ The following commands are available:
 (define-key org-agenda-mode-map [?\C-c ?\C-x (left)] 'org-agenda-date-earlier)
 
 (define-key org-agenda-mode-map ">" 'org-agenda-date-prompt)
+(define-key org-agenda-mode-map "\C-c\C-s" 'org-agenda-schedule)
+(define-key org-agenda-mode-map "\C-c\C-d" 'org-agenda-deadline)
 (let ((l '(1 2 3 4 5 6 7 8 9 0)))
   (while l (define-key org-agenda-mode-map
 	     (int-to-string (pop l)) 'digit-argument)))
@@ -4995,10 +5034,12 @@ The following commands are available:
     ("Tags"
      ["Show all Tags" org-agenda-show-tags t]
      ["Set Tags" org-agenda-set-tags t])
-    ("Reschedule"
+    ("Schedule"
+     ["Schedule" org-agenda-schedule t]
+     ["Set Deadline" org-agenda-deadline t]
+     "--"
      ["Reschedule +1 day" org-agenda-date-later (org-agenda-check-type nil 'agenda 'timeline)]
      ["Reschedule -1 day" org-agenda-date-earlier (org-agenda-check-type nil 'agenda 'timeline)]
-     "--"
      ["Reschedule to ..." org-agenda-date-prompt (org-agenda-check-type nil 'agenda 'timeline)])
     ("Priority"
      ["Set Priority" org-agenda-priority t]
@@ -6096,10 +6137,13 @@ the documentation of `org-diary'."
 				     "\\)\\>")
 			   org-not-done-regexp)
 			 "[^\n\r]*\\)"))
+	 (sched-re (concat ".*\n.*?" org-scheduled-time-regexp))
 	 marker priority category tags
 	 ee txt)
     (goto-char (point-min))
     (while (re-search-forward regexp nil t)
+      (when (not (and org-agenda-todo-ignore-scheduled
+		      (save-match-data (looking-at sched-re))))
       (goto-char (match-beginning 1))
       (setq marker (org-agenda-new-marker (1+ (match-beginning 0)))
 	    category (org-get-category)
@@ -6116,9 +6160,9 @@ the documentation of `org-diary'."
 	'org-marker marker 'org-hd-marker marker
 	'priority priority 'category category)
       (push txt ee)
-      (if org-agenda-todo-list-sublevels
+      (if org-agenda-todo-list-sublevels  ; FIXME???? Change needed?
 	  (goto-char (match-end 1))
-	(org-end-of-subtree 'invisible)))
+	(org-end-of-subtree 'invisible))))
     (nreverse ee)))
 
 (defconst org-agenda-no-heading-message
@@ -6929,6 +6973,38 @@ be used to request time specification in the time stamp."
       (org-time-stamp arg)
       (message "Time stamp changed to %s" org-last-changed-timestamp))))
 
+(defun org-agenda-schedule (arg)
+  "Schedule the item at point."
+  (interactive "P")
+  (org-agenda-check-type t 'agenda 'timeline 'todo 'tags)
+  (org-agenda-check-no-diary)
+  (let* ((marker (or (get-text-property (point) 'org-marker)
+		     (org-agenda-error)))
+	 (buffer (marker-buffer marker))
+	 (pos (marker-position marker))
+	 ts)
+    (with-current-buffer buffer
+      (widen)
+      (goto-char pos)
+      (setq ts (org-schedule))
+      (message "Item scheduled for %s" ts))))
+
+(defun org-agenda-deadline (arg)
+  "Schedule the item at point."
+  (interactive "P")
+  (org-agenda-check-type t 'agenda 'timeline 'todo 'tags)
+  (org-agenda-check-no-diary)
+  (let* ((marker (or (get-text-property (point) 'org-marker)
+		     (org-agenda-error)))
+	 (buffer (marker-buffer marker))
+	 (pos (marker-position marker))
+	 ts)
+    (with-current-buffer buffer
+      (widen)
+      (goto-char pos)
+      (setq ts (org-deadline))
+      (message "Deadline for this item set to %s" ts))))
+
 (defun org-get-heading ()
   "Return the heading of the current entry, without the stars."
   (save-excursion
@@ -7033,6 +7109,7 @@ argument, latitude and longitude will be prompted for."
 		  (error "Don't know which date to open in calendar")))
 	 (date (calendar-gregorian-from-absolute day))
 	 (calendar-move-hook nil)
+	 (view-calendar-holidays-initially nil)
 	 (view-diary-entries-initially nil))
     (calendar)
     (calendar-goto-date date)))
@@ -8572,6 +8649,7 @@ RET on headline   -> Store as sublevel entry to current headline
 This function should be placed into `remember-mode-hook' and in fact requires
 to be run from that hook to fucntion properly."
   (if org-remember-templates
+
       (let* ((entry (if (= (length org-remember-templates) 1)
 			(cdar org-remember-templates)
 		      (message "Select template: %s"
@@ -8579,8 +8657,8 @@ to be run from that hook to fucntion properly."
 				(lambda (x) (char-to-string (car x)))
 				org-remember-templates " "))
 		      (cdr (assoc (read-char-exclusive) org-remember-templates))))
-	     (tpl (if (consp (cdr entry)) (cadr entry) (cdr entry)))
-	     (file (if (consp (cdr entry)) (nth 2 entry)))
+	     (tpl (car entry))
+	     (file (if (consp (cdr entry)) (nth 1 entry)))
 	     (v-t (format-time-string (car org-time-stamp-formats) (org-current-time)))
 	     (v-T (format-time-string (cdr org-time-stamp-formats) (org-current-time)))
 	     (v-u (concat "[" (substring v-t 1 -1) "]"))
@@ -10464,7 +10542,7 @@ not overwrite the stored one."
 		    (org-table-get-formula equation (equal arg '(4)))))
 	 (n0 (org-table-current-column))
 	 (modes (copy-sequence org-calc-default-modes))
-	 n form fmt x ev orig c)
+	 n form fmt x ev orig c lispp)
     ;; Parse the format string.  Since we have a lot of modes, this is
     ;; a lot of work.  However, I think calc still uses most of the time.
     (if (string-match ";" formula)
@@ -10499,7 +10577,8 @@ not overwrite the stored one."
 			(lambda (x) (number-to-string (string-to-number x)))
 			fields)))
       (setq ndown (1- ndown))
-      (setq form (copy-sequence formula))
+      (setq form (copy-sequence formula)
+	    lispp (equal (substring form 0 2) "'("))
       ;; Insert the references to fields in same row
       (while (string-match "\\$\\([0-9]+\\)?" form)
 	(setq n (if (match-beginning 1)
@@ -10509,7 +10588,9 @@ not overwrite the stored one."
 	(unless x (error "Invalid field specifier \"%s\""
 			 (match-string 0 form)))
 	(if (equal x "") (setq x "0"))
-	(setq form (replace-match (concat "(" x ")") t t form)))
+	(setq form (replace-match
+		    (if lispp x (concat "(" x ")"))
+		    t t form)))
       ;; Insert ranges in current column
       (while (string-match "\\&[-I0-9]+" form)
 	(setq form (replace-match
@@ -10517,8 +10598,14 @@ not overwrite the stored one."
 		       (org-table-get-vertical-vector (match-string 0 form)
 						      nil n0))
 		     t t form)))
-      (setq ev (calc-eval (cons form modes)
-			  (if org-table-formula-numbers-only 'num)))
+;;      (setq ev (calc-eval (cons form modes)
+;; FIXME  (if org-table-formula-numbers-only 'num)))
+
+      (if lispp
+	  (setq ev (eval (eval (read form)))
+		ev (if (numberp ev) (number-to-string ev) ev))
+	(setq ev (calc-eval (cons form modes)
+			    (if org-table-formula-numbers-only 'num))))
 
       (when org-table-formula-debug
 	(with-output-to-temp-buffer "*Help*"
@@ -11795,43 +11882,44 @@ underlined headlines.  The default is 3."
 	  (setq title (concat (org-section-number level) " " title)))
       (insert title "\n" (make-string (string-width title) char) "\n"))))
 
-(defun org-export-copy-visible ()
-  "Copy the visible part of the buffer to another buffer, for printing.
-Also removes the first line of the buffer if it specifies a mode,
-and all options lines."
-  (interactive)
-  (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"))
-	 (buffer (find-file-noselect filename))
-	 (ore (concat
-	       (org-make-options-regexp
-		'("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO"
-		  "STARTUP" "ARCHIVE"
-		  "TITLE" "AUTHOR" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE"))
-	       (if org-noutline-p "\\(\n\\|$\\)" "")))
+(defun org-export-visible (type arg)
+  "Create a copy of the visible part of the current buffer, and export it.
+The copy is created in a temporary buffer and removed after use.
+TYPE is the final key (as a string) of the `C-c C-x' key sequence that will
+run the export command - in interactive use, the command prompts for this
+key.  As a special case, if the you type SPC at the prompt, the temporary
+org-mode file will not be removed but presented to you so that you can
+continue to use it.  The prefix arg ARG is passed through to the exporting
+command."
+  (interactive 
+   (list (progn
+	   (message "Export visible: [a]SCII  [h]tml  [b]rowse HTML  [x]OXO  [ ]keep buffer")
+	   (char-to-string (read-char-exclusive)))
+	 current-prefix-arg))
+  (if (not (member type '("a" "\C-a" "b" "\C-b" "h" "x" " ")))
+      (error "Invalid export key"))
+  (let* ((binding (key-binding (concat "\C-c\C-x" type)))
+	 (keepp (equal type " "))
+	 (file buffer-file-name)
+	 (buffer (get-buffer-create "*Org Export Visible*"))
 	 s e)
-    (with-current-buffer buffer
-      (erase-buffer)
-      (text-mode))
+    (with-current-buffer buffer (erase-buffer))
     (save-excursion
       (setq s (goto-char (point-min)))
       (while (not (= (point) (point-max)))
 	(goto-char (org-find-invisible))
 	(append-to-buffer buffer s (point))
-	(setq s (goto-char (org-find-visible)))))
-    (switch-to-buffer-other-window buffer)
-    (newline)
-    (goto-char (point-min))
-    (if (looking-at ".*-\\*- mode:.*\n")
-	(replace-match ""))
-    (while (re-search-forward ore nil t)
-      (replace-match ""))
-    (goto-char (point-min))))
+	(setq s (goto-char (org-find-visible))))
+      (set-buffer buffer)
+      (let ((buffer-file-name file)
+	    (org-inhibit-startup t))
+	(org-mode)
+	(show-all)
+	(unless keepp (funcall binding arg))))
+    (if (not keepp)
+	(kill-buffer buffer)
+      (switch-to-buffer-other-window buffer)
+      (goto-char (point-min)))))
 
 (defun org-find-visible ()
   (if (featurep 'noutline)
@@ -12034,7 +12122,7 @@ org-mode's default settings, but still inferior to file-local settings."
 	 table-open type
 	 table-buffer table-orig-buffer
 	 ind start-is-num starter
-	 rpl path desc desc1 desc2 link
+	 rpl path desc descp desc1 desc2 link
 	 )
     (message "Exporting...")
 
@@ -12225,7 +12313,9 @@ org-mode's default settings, but still inferior to file-local settings."
 	    (setq path (match-string 3 line))
 	    (setq desc1 (if (match-end 5) (match-string 5 line))
 		  desc2 (if (match-end 2) (concat type ":" path) path)
+		  descp (and desc1 (not (equal desc1 desc2)))
 		  desc (or desc1 desc2))
+	    ;; FIXME: do we need to unescape here somewhere?
 	    (cond
 	     ((equal type "internal")
 	      (setq rpl
@@ -12266,8 +12356,10 @@ org-mode's default settings, but still inferior to file-local settings."
 		      (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
-				   file-is-image-p)
+		(setq rpl (if (and file-is-image-p
+				   (or (eq t org-export-html-inline-images)
+				       (and org-export-html-inline-images
+					    (not descp))))
 			      (concat "<img src=\"" thefile "\"/>")
 			    (concat "<a href=\"" thefile "\">" desc "</a>")))))
 	     ((member type '("bbdb" "vm" "wl" "mhe" "rmail" "gnus" "shell"))
@@ -12741,9 +12833,9 @@ file, but with extension `.ics'."
   (interactive)
   (org-export-icalendar nil buffer-file-name))
 
-(defun org-export-as-xml ()
+(defun org-export-as-xml (arg)
   "Export current buffer as XOXO XML buffer."
-  (interactive)
+  (interactive "P")
   (cond ((eq org-export-xml-type 'xoxo)
 	 (org-export-as-xoxo (current-buffer)))))
 
@@ -13093,8 +13185,8 @@ a time), or the day by one (if it does not contain a time)."
 (define-key org-mode-map "\C-c\C-q"       'org-table-wrap-region)
 (define-key org-mode-map "\C-c\C-xa"      'org-export-as-ascii)
 (define-key org-mode-map "\C-c\C-x\C-a"   'org-export-as-ascii)
-(define-key org-mode-map "\C-c\C-xv"      'org-export-copy-visible)
-(define-key org-mode-map "\C-c\C-x\C-v"   'org-export-copy-visible)
+(define-key org-mode-map "\C-c\C-xv"      'org-export-visible)
+(define-key org-mode-map "\C-c\C-x\C-v"   'org-export-visible)
 ;; OPML support is only an option for the future
 ;(define-key org-mode-map "\C-c\C-xo"      'org-export-as-opml)
 ;(define-key org-mode-map "\C-c\C-x\C-o"   'org-export-as-opml)
@@ -13115,6 +13207,9 @@ a time), or the day by one (if it does not contain a time)."
 (define-key org-mode-map "\C-c\C-x\M-w"   'org-copy-special)
 (define-key org-mode-map "\C-c\C-x\C-y"   'org-paste-special)
 
+(when (featurep 'xemacs) 
+  (define-key org-mode-map 'button3   'popup-mode-menu))
+
 (defsubst org-table-p () (org-at-table-p))
 
 (defun org-self-insert-command (N)
@@ -13613,7 +13708,7 @@ See the individual commands for more information."
     "--"
     ("Export"
      ["ASCII" org-export-as-ascii t]
-     ["Extract Visible Text" org-export-copy-visible t]
+     ["Export visible part..." org-export-visible t]
      ["HTML"  org-export-as-html t]
      ["HTML and Open" org-export-as-html-and-open t]
      ["XML (XOXO)" org-export-as-xml t]
@@ -13843,7 +13938,7 @@ that can be added."
 ;; The following functions capture almost the entire compatibility code
 ;; between the different versions of outline-mode.  The only other
 ;; places where this is important are the font-lock-keywords, and in
-;; `org-export-copy-visible'.  Search for `org-noutline-p' to find them.
+;; `org-export-visible'.  Search for `org-noutline-p' to find them.
 
 ;; C-a should go to the beginning of a *visible* line, also in the
 ;; new outline.el.  I guess this should be patched into Emacs?
@@ -13895,15 +13990,15 @@ to a visible line beginning.  This makes the function of C-a more intuitive."
 Only visible heading lines are considered, unless INVISIBLE-OK is non-nil."
   (if org-noutline-p
       (outline-back-to-heading invisible-ok)
-    (if (and (memq (char-before) '(?\n ?\r))
+    (if (and (or (bobp) (memq (char-before) '(?\n ?\r)))
              (looking-at outline-regexp))
 	t
       (if (re-search-backward (concat (if invisible-ok "\\([\r\n]\\|^\\)" "^")
 				      outline-regexp)
 			      nil t)
 	  (if invisible-ok
-	      (progn (goto-char (match-end 1))
-		     (looking-at outline-regexp)))
+	      (progn (goto-char (or (match-end 1) (match-beginning 0)))
+                     (looking-at outline-regexp)))
 	(error "Before first heading")))))
 
 (defun org-on-heading-p (&optional invisible-ok)
@@ -14022,7 +14117,7 @@ Show the heading too, if it is currently invisible."
   (save-excursion
     (org-back-to-heading t)
     (outline-flag-region
-     (1- (point))
+     (max 1 (1- (point)))
      (save-excursion
        (re-search-forward (concat "[\r\n]\\(" outline-regexp "\\)") nil 'move)
        (or (match-beginning 1) (point-max)))
@@ -14061,6 +14156,7 @@ Show the heading too, if it is currently invisible."
 
 (run-hooks 'org-load-hook)
 
+
 ;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
 ;;; org.el ends here
 

BIN
org.pdf


+ 75 - 29
org.texi

@@ -4,8 +4,8 @@
 @c @setfilename ../info/org
 @settitle Org Mode Manual
 
-@set VERSION 4.28
-@set DATE April 2006
+@set VERSION 4.29
+@set DATE May 2006
 
 @dircategory Emacs
 @direntry
@@ -119,6 +119,7 @@ Tables
 Calculations in tables
 
 * Formula syntax::              How to write a formula
+* Lisp formulas::               An alternative way to write formulas
 * Column formulas::             Formulas valid for all fields in a column
 * Advanced features::           Field names, parameters and automatic recalc
 * Named-field formulas::        Formulas valid in single fields
@@ -644,9 +645,8 @@ To print a sparse tree, you can use the Emacs command
 @code{ps-print-buffer-with-faces} which does not print invisible parts
 of the document @footnote{This does not work under XEmacs, because
 XEmacs uses selective display for outlining, not text properties.}.
-Or you can use the command @kbd{C-c C-x v} to copy the visible part of
-the document to another file (extension @file{.txt}) which can then be
-printed in any desired way.
+Or you can use the command @kbd{C-c C-x v} to export only the visible
+part of the document and print the resulting file.
 
 
 @node Plain lists,  , Sparse trees, Document structure
@@ -1044,19 +1044,20 @@ on a per-file basis with:
 @cindex spreadsheet capabilities
 @cindex @file{calc} package
 
-The table editor makes use of the Emacs @file{calc} package to
-implement spreadsheet-like capabilities.  Org-mode has two levels of
-complexity for table calculations.  On the basic level, tables do only
-horizontal computations, so a field can be computed from other fields
-@emph{in the same row}, and Org-mode assumes that there is only one
-formula for each column.  This is very efficient to work with and
-enough for many tasks.  On the complex level, columns and individual
-fields can be named for easier referencing in formulas, individual
-named fields can have their own formula associated with them, and
-recalculation can be automated.
+The table editor makes use of the Emacs @file{calc} package to implement
+spreadsheet-like capabilities.  It can also evaluate Emacs Lisp forms to
+derive fields from other fields.  Org-mode has two levels of complexity
+for table calculations.  On the basic level, tables do only horizontal
+computations, so a field can be computed from other fields @emph{in the
+same row}, and Org-mode assumes that there is only one formula for each
+column.  This is very efficient to work with and enough for many tasks.
+On the complex level, columns and individual fields can be named for
+easier referencing in formulas, individual named fields can have their
+own formula associated with them, and recalculation can be automated.
 
 @menu
 * Formula syntax::              How to write a formula
+* Lisp formulas::               An alternative way to write formulas
 * Column formulas::             Formulas valid for all fields in a column
 * Advanced features::           Field names, parameters and automatic recalc
 * Named-field formulas::        Formulas valid in single fields
@@ -1064,7 +1065,7 @@ recalculation can be automated.
 * Appetizer::                   Taste the power of calc
 @end menu
 
-@node Formula syntax, Column formulas, Table calculations, Table calculations
+@node Formula syntax, Lisp formulas, Table calculations, Table calculations
 @subsection Formula syntax
 @cindex formula syntax
 @cindex syntax, of formulas
@@ -1121,20 +1122,38 @@ respectively.  In addition, you may provide a @code{printf} format
 specifier to reformat the final result.  A few examples:
 
 @example
-  $1+$2                @r{Sum of first and second field}
-  $1+$2;%.2f           @r{Same, format result to two decimals}
-  exp($2)+exp($1)      @r{Math functions can be used}
-  $;%.1f               @r{Reformat current cell to 1 decimal}
-  ($3-32)*5/9          @r{Degrees F -> C conversion}
-  $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
-  tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
-  sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
-  vmean($2..$7)        @r{Compute column range mean, using vector function}
-  vsum(&III)           @r{Sum numbers from 3rd hline above, up to here}
-  taylor($3,x=7,2)     @r{taylor series of $3, at x=7, second degree}
+$1+$2                @r{Sum of first and second field}
+$1+$2;%.2f           @r{Same, format result to two decimals}
+exp($2)+exp($1)      @r{Math functions can be used}
+$;%.1f               @r{Reformat current cell to 1 decimal}
+($3-32)*5/9          @r{Degrees F -> C conversion}
+$c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
+tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
+sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
+vmean($2..$7)        @r{Compute column range mean, using vector function}
+vsum(&III)           @r{Sum numbers from 3rd hline above, up to here}
+taylor($3,x=7,2)     @r{taylor series of $3, at x=7, second degree}
 @end example
 
-@node Column formulas, Advanced features, Formula syntax, Table calculations
+@node Lisp formulas, Column formulas, Formula syntax, Table calculations
+@subsection Emacs Lisp forms as formulas
+@cindex Lisp forms, as table fomulas
+
+It is also possible to write a formula in Emacs lisp, this can be useful
+for string manipulation and control structures.  If a formula starts
+with a single quote followed by an opening parenthesis, then it is
+evaluated as a lisp form.  The evaluation should return either a string
+or a number.  Just like with @file{calc} formulas, you can provide a
+format specifier after a semicolon.  A few examples:
+
+@example
+@r{swap the first two characters of the content of column 1}
+'(concat (substring "$1" 1 2) (substring "$1" 0 1) (substring "$1" 2))
+@r{Add columns 1 and 2, equivalent to the calc's @code{$1+$2}}
+'(+ $1 $2)
+@end example
+
+@node Column formulas, Advanced features, Lisp formulas, Table calculations
 @subsection Column formulas
 @cindex column formula
 @cindex formula, for table column
@@ -2878,6 +2897,14 @@ key for this.
 @itemx S-@key{down}
 Decrease the priority of the current item.
 
+@kindex C-c C-s
+@item C-c C-s
+Schedule this item
+
+@kindex C-c C-d
+@item C-c C-d
+Set a deadline for this item.
+
 @kindex S-@key{right}
 @item S-@key{right}
 Change the time stamp associated with the current line by one day into
@@ -2993,6 +3020,9 @@ Export as ASCII file.  If there is an active region, only the region
 will be exported.  For an org file @file{myfile.org}, the ASCII file
 will be @file{myfile.txt}.  The file will be overwritten without
 warning.
+@kindex C-c C-x v a
+@item C-c C-x v a
+Export only the visible part of the document.
 @end table
 
 @cindex headline levels, for exporting
@@ -3026,6 +3056,11 @@ Export as HTML file @file{myfile.html}.
 @kindex C-c C-x b
 @item C-c C-x b
 Export as HTML file and open it with a browser.
+@kindex C-c C-x v h
+@kindex C-c C-x v b
+@item C-c C-x v h
+@item C-c C-x v b
+Export only the visible part of the document.
 @end table
 
 @cindex headline levels, for exporting
@@ -3083,6 +3118,9 @@ does not interpret any additional Org-mode features.
 @kindex C-c C-x C-x
 @item C-c C-x C-x
 Export as XML file @file{myfile.xml}.
+@kindex C-c C-x v
+@item C-c C-x v x
+Export only the visible part of the document.
 @end table
 
 @node iCalendar export, Text interpretation, XML export, Exporting
@@ -3919,6 +3957,9 @@ Remember.
 Pavel Chalmoviansky influenced the agenda treatment of items with
 specified time.
 @item
+Gregory Chenov patched support for lisp forms into table calculations
+and improved XEmacs compatibility.
+@item
 Sacha Chua suggested to copy some linking code from Planner.
 @item
 Kees Dullemond inspired the use of narrowed tabled columns.
@@ -3926,7 +3967,7 @@ Kees Dullemond inspired the use of narrowed tabled columns.
 Christian Egli converted the documentation into TeXInfo format, patched
 CSS formatting into the HTML exporter, and inspired the agenda.
 @item
-Nic Ferrier contributed mailcap and XML support.
+Nic Ferrier contributed mailcap and XOXO support.
 @item
 Kai Grossjohann pointed out key-binding conflicts caused by Org-mode.
 @item
@@ -3942,6 +3983,8 @@ among other things.
 @item
 Pete Phillips helped the development of the TAGS feature.
 @item
+T.V. Raman reported bugs and suggested improvements.
+@item
 Matthias Rempe (Oelde) provided ideas, Windows support, and quality
 control.
 @item
@@ -3958,6 +4001,9 @@ things.
 Linking to VM/BBDB/GNUS was inspired by Tom Shannon's
 @file{organizer-mode.el}.
 @item
+David O'Toole wrote @file{org-publish.el} and came up with lots is ideas
+for small changes.
+@item
 J@"urgen Vollmer contributed code generating the table of contents
 in HTML output.
 @item

BIN
orgcard.pdf


+ 2 - 4
orgcard.tex

@@ -1,5 +1,5 @@
 % Reference Card for Org Mode
-\def\orgversionnumber{4.28}
+\def\orgversionnumber{4.29}
 \def\year{2006}
 %
 %**start of header
@@ -562,11 +562,9 @@ To set categories, add lines like$^3$:
 \key{set tags for current headline}{:}
 \key{set priority of current item}{p}
 \key{raise/lower priority of current item}{S-UP/DOWN$^4$}
-%\key{lower priority of current item}{S-DOWN$^4$}
 \key{display weighted priority of current item}{P}
+\key{schedule/set deadline for this item}{C-c C-s/d}
 \key{change timestamp to one day earlier/later}{S-LEFT/RIGHT$^4$}
-%\key{change timestamp to one day earlier}{S-LEFT$^4$}
-%\key{change timestamp to one day later}{S-RIGHT$^4$}
 \key{change timestamp to today}{>}
 \key{insert new entry into diary}{i}