diff --git a/org b/org index 4a17dbc8d..d859852f0 100644 --- a/org +++ b/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-' 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-' 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) * <3>: Plain lists. (line 38) * : 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-: Built-in table editor. (line 82) * M- <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- <1>: Agenda commands. (line 126) * S- <2>: Creating timestamps. (line 55) * S-: Priorities. (line 25) -* S- <1>: Agenda commands. (line 138) +* S- <1>: Agenda commands. (line 144) * S-: Creating timestamps. (line 50) * S-: Built-in table editor. (line 170) -* S- <1>: Agenda commands. (line 130) +* S- <1>: Agenda commands. (line 136) * S-: Creating timestamps. (line 50) * S- <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 diff --git a/org.el b/org.el index eb1951651..19a2c475a 100644 --- a/org.el +++ b/org.el @@ -5,7 +5,7 @@ ;; Author: Carsten Dominik ;; 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 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 "") (concat "" desc ""))))) ((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 diff --git a/org.pdf b/org.pdf index 1f84eaaeb..74d9a75bb 100644 Binary files a/org.pdf and b/org.pdf differ diff --git a/org.texi b/org.texi index 2958bed61..a1094bc33 100644 --- a/org.texi +++ b/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 diff --git a/orgcard.pdf b/orgcard.pdf index 22963ddfc..94bc0ef1a 100644 Binary files a/orgcard.pdf and b/orgcard.pdf differ diff --git a/orgcard.tex b/orgcard.tex index 518412523..6c5b5ab11 100644 --- a/orgcard.tex +++ b/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}