Release 4.61

This commit is contained in:
Carsten Dominik 2008-01-31 11:33:37 +01:00
parent 09ce054931
commit 38745a43c9
6 changed files with 652 additions and 416 deletions

463
org
View File

@ -5,7 +5,7 @@ START-INFO-DIR-ENTRY
* Org Mode: (org). outline-based notes management and organizer * Org Mode: (org). outline-based notes management and organizer
END-INFO-DIR-ENTRY END-INFO-DIR-ENTRY
This manual is for Org-mode (version 4.60). This manual is for Org-mode (version 4.61).
Copyright (C) 2004, 2005, 2006 Free Software Foundation Copyright (C) 2004, 2005, 2006 Free Software Foundation
@ -27,7 +27,7 @@ File: org, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
Org Mode Manual Org Mode Manual
*************** ***************
This manual is for Org-mode (version 4.60). This manual is for Org-mode (version 4.61).
Copyright (C) 2004, 2005, 2006 Free Software Foundation Copyright (C) 2004, 2005, 2006 Free Software Foundation
@ -140,6 +140,7 @@ Timestamps
* Time stamps:: Assigning a time to a tree entry * Time stamps:: Assigning a time to a tree entry
* Creating timestamps:: Commands which insert timestamps * Creating timestamps:: Commands which insert timestamps
* Custom time format:: If you cannot work with the ISO format * Custom time format:: If you cannot work with the ISO format
* Repeating items::
* Progress logging:: Documenting when what work was done. * Progress logging:: Documenting when what work was done.
Creating timestamps Creating timestamps
@ -748,11 +749,11 @@ Once an entire project is finished, you may want to move it to a
different location, either in the current file, or even in a different different location, either in the current file, or even in a different
file, the archive file. file, the archive file.
`C-c $' `C-c C-x C-s'
Archive the subtree starting at the cursor position to the location Archive the subtree starting at the cursor position to the location
given by `org-archive-location'. given by `org-archive-location'.
`C-u C-c $' `C-u C-c C-x C-s'
Check if any direct children of the current headline could be Check if any direct children of the current headline could be
moved to the archive. To do this, each subtree is checked for moved to the archive. To do this, each subtree is checked for
open TODO entries. If none are found, the command offers to move open TODO entries. If none are found, the command offers to move
@ -763,6 +764,13 @@ file, the archive file.
current file, with the name derived by appending `_archive' to the current file, with the name derived by appending `_archive' to the
current file name. For information and examples on how to change this, current file name. For information and examples on how to change this,
see the documentation string of the variable `org-archive-location'. see the documentation string of the variable `org-archive-location'.
There is also an in-buffer option for setting this variable, for example
#+ARCHIVE: %s_done::
You may have several such lines in the buffer, they will then be valid
for the entries following the line (the first will also apply to any
text before it).
 
File: org, Node: Sparse trees, Next: Plain lists, Prev: Archiving, Up: Document structure File: org, Node: Sparse trees, Next: Plain lists, Prev: Archiving, Up: Document structure
@ -1084,7 +1092,8 @@ Calculations
`C-c '' `C-c ''
Edit all formulas associated with the current table in a separate Edit all formulas associated with the current table in a separate
buffer. buffer. Use `C-u C-u C-c =' to edit the formula directly in the
current field, to allow checking complex references with `C-c ?'.
`C-c *' `C-c *'
Recalculate the current row by applying the stored formulas from Recalculate the current row by applying the stored formulas from
@ -1100,8 +1109,9 @@ Calculations
marks in the region. marks in the region.
`C-c ?' `C-c ?'
Which table column is the cursor in? Displays number >0 in echo Display line and column number of current field in echo area. If
area. the cursor is currently editing a formula, the field or range
referenced by the expression at point will be highlighted.
`C-c +' `C-c +'
Sum the numbers in the current column, or in the rectangle defined Sum the numbers in the current column, or in the rectangle defined
@ -2311,6 +2321,7 @@ planning.
* Time stamps:: Assigning a time to a tree entry * Time stamps:: Assigning a time to a tree entry
* Creating timestamps:: Commands which insert timestamps * Creating timestamps:: Commands which insert timestamps
* Custom time format:: If you cannot work with the ISO format * Custom time format:: If you cannot work with the ISO format
* Repeating items:: Deadlines that come back again and again
* Progress logging:: Documenting when what work was done. * Progress logging:: Documenting when what work was done.
 
@ -2540,7 +2551,7 @@ can control the calendar fully from the minibuffer:
`org-popup-calendar-for-date-prompt'. `org-popup-calendar-for-date-prompt'.
 
File: org, Node: Custom time format, Next: Progress logging, Prev: Creating timestamps, Up: Timestamps File: org, Node: Custom time format, Next: Repeating items, Prev: Creating timestamps, Up: Timestamps
6.3 Custom time format 6.3 Custom time format
====================== ======================
@ -2576,9 +2587,48 @@ consequences:
the custom format is shorter, things do work as expected. the custom format is shorter, things do work as expected.
 
File: org, Node: Progress logging, Prev: Custom time format, Up: Timestamps File: org, Node: Repeating items, Next: Progress logging, Prev: Custom time format, Up: Timestamps
6.4 Progress Logging 6.4 Repeating items
===================
Org-mode integrates with the Emacs calendar and diary to display cyclic
appointments, anniversaries and other special entries in the agenda
(*note Weekly/Daily agenda::). However, it can be useful to have
certain deadlines and scheduling items to auto-repeat. The advantage of
a deadline or scheduled item is that the they produce warnings ahead of
time and automatically forward themselves in the agenda until they are
done. The abstract difference is therefore between cyclic appointments
and cyclic action items. For appointments you should use the diary,
for actions you can uses an org-mode deadline or scheduling time stamp
together with a REPEAT cookie. For example:
* TODO Replace batteries in smoke detector REPEAT(+18m)
SCHEDULED: <2007-01-01 Mon>
* TODO Get dentist appointment REPEAT(+6m)
SCHEDULED: <2006-12-19 Tue>
* TODO Tax report to IRS REPEAT(+1y)
DEADLINE: <2007-04-01 Sun>
Each time you try to mark one of these entries DONE using `C-c C-t',
they will automatically switch back to the state TODO, and the
deadline/scheduling will be shifted accordingly. The time units
recognized by org-mode are year (y), month (m), week (w), and day (d).
Org-mode will also prompt you for a note and record the fact that you
have closed this item in a note under the headline.
One unusual property of these repeating items is that only one
instance of each exist at any given time. So if you look back or ahead
in the agenda, you will not find past and future instances, only the
current one will show up. Use a cyclic diary entry if you need all
past and future instances to be visible in the angenda.

File: org, Node: Progress logging, Prev: Repeating items, Up: Timestamps
6.5 Progress Logging
==================== ====================
Org-mode can automatically record a time stamp when you mark a TODO item Org-mode can automatically record a time stamp when you mark a TODO item
@ -2596,7 +2646,7 @@ on an aspect of a project.
 
File: org, Node: Closing items, Next: Tracking TODO state changes, Prev: Progress logging, Up: Progress logging File: org, Node: Closing items, Next: Tracking TODO state changes, Prev: Progress logging, Up: Progress logging
6.4.1 Closing items 6.5.1 Closing items
------------------- -------------------
If you want to keep track of _when_ a certain TODO item was finished, If you want to keep track of _when_ a certain TODO item was finished,
@ -2625,7 +2675,7 @@ the timestamp, use(2)
 
File: org, Node: Tracking TODO state changes, Next: Clocking work time, Prev: Closing items, Up: Progress logging File: org, Node: Tracking TODO state changes, Next: Clocking work time, Prev: Closing items, Up: Progress logging
6.4.2 Tracking TODO state changes 6.5.2 Tracking TODO state changes
--------------------------------- ---------------------------------
When TODO keywords are used as workflow states (*note Workflow When TODO keywords are used as workflow states (*note Workflow
@ -2647,7 +2697,7 @@ these into a separate file that starts with:
 
File: org, Node: Clocking work time, Prev: Tracking TODO state changes, Up: Progress logging File: org, Node: Clocking work time, Prev: Tracking TODO state changes, Up: Progress logging
6.4.3 Clocking work time 6.5.3 Clocking work time
------------------------ ------------------------
Org-mode allows you to clock the time you spent on specific tasks in a Org-mode allows you to clock the time you spent on specific tasks in a
@ -4866,7 +4916,15 @@ file is visited again in a new Emacs session.
`#+CATEGORY:' `#+CATEGORY:'
This line sets the category for the agenda file. The category This line sets the category for the agenda file. The category
applies for all subsequent lines until the next `#+CATEGORY' line, applies for all subsequent lines until the next `#+CATEGORY' line,
or the end of the file. or the end of the file. The first such line also applies to any
entries before it.
`#+ARCHIVE: %s_done::'
This line sets the archive location for the agenda file. It
applies for all subsequent lines until the next `#+CATEGORY' line,
or the end of the file. The first such line also applies to any
entries before it. The correspoinding variable is
`org-archive-location'.
`#+TBLFM:' `#+TBLFM:'
This line contains the formulas for the table directly above the This line contains the formulas for the table directly above the
@ -5219,10 +5277,14 @@ The following extensions for Org-mode have been written by other people:
A blogging plug-in for `org-publish.el'. A blogging plug-in for `org-publish.el'.
`http://dto.freeshell.org/notebook/OrgMode.html'. `http://dto.freeshell.org/notebook/OrgMode.html'.
`blorg.el' by Bastien Guerry `blorg.el' by Bastien Guerry
Publish Org-mode files as blogs. Publish Org-mode files as blogs.
`http://www.cognition.ens.fr/~guerry/blorg.html'. `http://www.cognition.ens.fr/~guerry/blorg.html'.
`org2rem.el' by Bastien Guerry
Translates Org-mode files into something readable by Remind.
`http://www.cognition.ens.fr/~guerry/u/org2rem.el'.
 
File: org, Node: Dynamic blocks, Next: Special agenda views, Prev: Extensions, Up: Extensions and Hacking File: org, Node: Dynamic blocks, Next: Special agenda views, Prev: Extensions, Up: Extensions and Hacking
@ -5349,7 +5411,7 @@ incorporate project planning functionality directly into a notes file.
Since the first release, hundreds of emails to me or on Since the first release, hundreds of emails to me or on
`emacs-orgmode@gnu.org' have provided a constant stream of bug reports, `emacs-orgmode@gnu.org' have provided a constant stream of bug reports,
feedback, new ideas, and sometimes even patches and add-on code. Many feedback, new ideas, and sometimes patches and add-on code. Many
thanks to everyone who has helped to improve this package. I am trying thanks to everyone who has helped to improve this package. I am trying
to keep here a list of the people who had significant influence in to keep here a list of the people who had significant influence in
shaping one or more aspects of Org-mode. The list may not be complete, shaping one or more aspects of Org-mode. The list may not be complete,
@ -5387,11 +5449,14 @@ if I have forgotten someone, please accept my apologies and let me know.
* Niels Giessen had the idea to automatically archive DONE trees. * Niels Giessen had the idea to automatically archive DONE trees.
* Bastien Guerry provided extensive feedback. * Bastien Guerry provided extensive feedback and some patches, and
translated David O'Toole's tutorial into French.
* Kai Grossjohann pointed out key-binding conflicts with other * Kai Grossjohann pointed out key-binding conflicts with other
packages. packages.
* Shidai Liu ("Leo") provided extensive feedback and some patches.
* Leon Liu asked for embedded LaTeX and tested it. * Leon Liu asked for embedded LaTeX and tested it.
* Stefan Monnier provided a patch to keep the Emacs-Lisp compiler * Stefan Monnier provided a patch to keep the Emacs-Lisp compiler
@ -5402,6 +5467,9 @@ if I have forgotten someone, please accept my apologies and let me know.
* Tim O'Callaghan suggested in-file links, search options for general * Tim O'Callaghan suggested in-file links, search options for general
file links, and TAGS. file links, and TAGS.
* Takeshi Okano translated the manual and David O'Toole's tutorial
into Japanese.
* Oliver Oppitz suggested multi-state TODO items. * Oliver Oppitz suggested multi-state TODO items.
* Scott Otterson sparked the introduction of descriptive text for * Scott Otterson sparked the introduction of descriptive text for
@ -5481,7 +5549,7 @@ Index
* active region <1>: Export commands. (line 6) * active region <1>: Export commands. (line 6)
* active region <2>: ASCII export. (line 9) * active region <2>: ASCII export. (line 9)
* active region <3>: Built-in table editor. * active region <3>: Built-in table editor.
(line 171) (line 173)
* active region: Structure editing. (line 64) * active region: Structure editing. (line 64)
* agenda: Weekly/Daily agenda. (line 6) * agenda: Weekly/Daily agenda. (line 6)
* agenda dispatcher: Agenda dispatcher. (line 6) * agenda dispatcher: Agenda dispatcher. (line 6)
@ -5570,6 +5638,7 @@ Index
(line 6) (line 6)
* DEADLINE keyword: Time stamps. (line 53) * DEADLINE keyword: Time stamps. (line 53)
* deadlines: Time stamps. (line 6) * deadlines: Time stamps. (line 6)
* Deadlines, repeating: Repeating items. (line 6)
* demotion, of subtrees: Structure editing. (line 6) * demotion, of subtrees: Structure editing. (line 6)
* diary entries, creating from agenda: Agenda commands. (line 198) * diary entries, creating from agenda: Agenda commands. (line 198)
* diary integration: Weekly/Daily agenda. (line 24) * diary integration: Weekly/Daily agenda. (line 24)
@ -5716,6 +5785,7 @@ Index
* org-mouse.el: Extensions. (line 17) * org-mouse.el: Extensions. (line 17)
* org-publish-project-alist: Project alist. (line 6) * org-publish-project-alist: Project alist. (line 6)
* org-publish.el: Extensions. (line 8) * org-publish.el: Extensions. (line 8)
* org2rem.el: Extensions. (line 37)
* orgtbl-mode: orgtbl-mode. (line 6) * orgtbl-mode: orgtbl-mode. (line 6)
* outline tree: Headlines. (line 6) * outline tree: Headlines. (line 6)
* outline-mode: Outlines. (line 6) * outline-mode: Outlines. (line 6)
@ -5744,7 +5814,7 @@ Index
* region, active <1>: Export commands. (line 6) * region, active <1>: Export commands. (line 6)
* region, active <2>: ASCII export. (line 9) * region, active <2>: ASCII export. (line 9)
* region, active <3>: Built-in table editor. * region, active <3>: Built-in table editor.
(line 171) (line 173)
* region, active: Structure editing. (line 64) * region, active: Structure editing. (line 64)
* regular expressions, with tags search: Tag searches. (line 63) * regular expressions, with tags search: Tag searches. (line 63)
* remember.el <1>: Cooperation. (line 33) * remember.el <1>: Cooperation. (line 33)
@ -5755,6 +5825,7 @@ Index
* RMAIL links: External links. (line 6) * RMAIL links: External links. (line 6)
* SCHEDULED keyword: Time stamps. (line 40) * SCHEDULED keyword: Time stamps. (line 40)
* scheduling: Time stamps. (line 6) * scheduling: Time stamps. (line 6)
* Scheduling, repeating: Repeating items. (line 6)
* search option in file links: Search options. (line 6) * search option in file links: Search options. (line 6)
* search strings, custom: Custom searches. (line 6) * search strings, custom: Custom searches. (line 6)
* searching for tags: Tag searches. (line 6) * searching for tags: Tag searches. (line 6)
@ -5834,6 +5905,7 @@ Index
* timestamp, inactive: Time stamps. (line 24) * timestamp, inactive: Time stamps. (line 24)
* timestamps, creating: Creating timestamps. (line 6) * timestamps, creating: Creating timestamps. (line 6)
* TODO items: TODO items. (line 6) * TODO items: TODO items. (line 6)
* TODO items, repeating: Repeating items. (line 6)
* TODO keyword matching: Global TODO list. (line 17) * TODO keyword matching: Global TODO list. (line 17)
* TODO keyword matching, with tags search: Tag searches. (line 40) * TODO keyword matching, with tags search: Tag searches. (line 40)
* TODO keywords completion: Completion. (line 6) * TODO keywords completion: Completion. (line 6)
@ -5843,7 +5915,7 @@ Index
* transient-mark-mode <1>: Export commands. (line 6) * transient-mark-mode <1>: Export commands. (line 6)
* transient-mark-mode <2>: ASCII export. (line 9) * transient-mark-mode <2>: ASCII export. (line 9)
* transient-mark-mode <3>: Built-in table editor. * transient-mark-mode <3>: Built-in table editor.
(line 171) (line 173)
* transient-mark-mode: Structure editing. (line 64) * transient-mark-mode: Structure editing. (line 64)
* trees, sparse: Sparse trees. (line 6) * trees, sparse: Sparse trees. (line 6)
* trees, visibility: Visibility cycling. (line 6) * trees, visibility: Visibility cycling. (line 6)
@ -5911,13 +5983,12 @@ Key Index
* C: Agenda commands. (line 213) * C: Agenda commands. (line 213)
* c: Agenda commands. (line 191) * c: Agenda commands. (line 191)
* C-#: Built-in table editor. * C-#: Built-in table editor.
(line 161) (line 162)
* C-,: Agenda files. (line 18) * C-,: Agenda files. (line 18)
* C-_: Agenda commands. (line 109) * C-_: Agenda commands. (line 109)
* C-a a L: Timeline. (line 10) * C-a a L: Timeline. (line 10)
* C-c !: Creating timestamps. (line 21) * C-c !: Creating timestamps. (line 21)
* C-c #: Checkboxes. (line 56) * C-c #: Checkboxes. (line 56)
* C-c $: Moving subtrees. (line 10)
* C-c %: Handling links. (line 81) * C-c %: Handling links. (line 81)
* C-c &: Handling links. (line 85) * C-c &: Handling links. (line 85)
* C-c ' <1>: Editing/debugging formulas. * C-c ' <1>: Editing/debugging formulas.
@ -5925,9 +5996,9 @@ Key Index
* C-c ': Built-in table editor. * C-c ': Built-in table editor.
(line 150) (line 150)
* C-c *: Built-in table editor. * C-c *: Built-in table editor.
(line 154) (line 155)
* C-c +: Built-in table editor. * C-c +: Built-in table editor.
(line 171) (line 173)
* C-c ,: Priorities. (line 18) * C-c ,: Priorities. (line 18)
* C-c -: Built-in table editor. * C-c -: Built-in table editor.
(line 92) (line 92)
@ -5937,14 +6008,14 @@ Key Index
* C-c ;: Comment lines. (line 11) * C-c ;: Comment lines. (line 11)
* C-c <: Creating timestamps. (line 25) * C-c <: Creating timestamps. (line 25)
* C-c <TAB>: Built-in table editor. * C-c <TAB>: Built-in table editor.
(line 193) (line 195)
* C-c =: Built-in table editor. * C-c =: Built-in table editor.
(line 141) (line 141)
* C-c >: Creating timestamps. (line 29) * C-c >: Creating timestamps. (line 29)
* C-c ? <1>: Editing/debugging formulas. * C-c ? <1>: Editing/debugging formulas.
(line 20) (line 20)
* C-c ?: Built-in table editor. * C-c ?: Built-in table editor.
(line 167) (line 168)
* C-c [: Agenda files. (line 12) * C-c [: Agenda files. (line 12)
* C-c \: Tag searches. (line 9) * C-c \: Tag searches. (line 9)
* C-c ]: Agenda files. (line 15) * C-c ]: Agenda files. (line 15)
@ -5952,7 +6023,7 @@ Key Index
(line 96) (line 96)
* C-c ^: Structure editing. (line 52) * C-c ^: Structure editing. (line 52)
* C-c `: Built-in table editor. * C-c `: Built-in table editor.
(line 187) (line 189)
* C-c a !: Stuck projects. (line 14) * C-c a !: Stuck projects. (line 14)
* C-c a #: Stuck projects. (line 13) * C-c a #: Stuck projects. (line 13)
* C-c a a: Weekly/Daily agenda. (line 9) * C-c a a: Weekly/Daily agenda. (line 9)
@ -6026,6 +6097,7 @@ Key Index
(line 9) (line 9)
* C-c C-x C-o: Clocking work time. (line 14) * C-c C-x C-o: Clocking work time. (line 14)
* C-c C-x C-r: Clocking work time. (line 43) * C-c C-x C-r: Clocking work time. (line 43)
* C-c C-x C-s: Moving subtrees. (line 10)
* C-c C-x C-t: Custom time format. (line 12) * C-c C-x C-t: Custom time format. (line 12)
* C-c C-x C-u: Dynamic blocks. (line 21) * C-c C-x C-u: Dynamic blocks. (line 21)
* C-c C-x C-w <1>: Built-in table editor. * C-c C-x C-w <1>: Built-in table editor.
@ -6047,12 +6119,12 @@ Key Index
* C-c ~: table.el. (line 18) * C-c ~: table.el. (line 18)
* C-k: Agenda commands. (line 117) * C-k: Agenda commands. (line 117)
* C-TAB: ARCHIVE tag. (line 38) * C-TAB: ARCHIVE tag. (line 38)
* C-u C-c $: Moving subtrees. (line 12)
* C-u C-c .: Creating timestamps. (line 16) * C-u C-c .: Creating timestamps. (line 16)
* C-u C-c =: Built-in table editor. * C-u C-c =: Built-in table editor.
(line 145) (line 145)
* C-u C-c C-l: Handling links. (line 43) * C-u C-c C-l: Handling links. (line 43)
* C-u C-c C-x C-a: ARCHIVE tag. (line 31) * C-u C-c C-x C-a: ARCHIVE tag. (line 31)
* C-u C-c C-x C-s: Moving subtrees. (line 12)
* C-u C-c C-x C-u <1>: Dynamic blocks. (line 22) * C-u C-c C-x C-u <1>: Dynamic blocks. (line 22)
* C-u C-c C-x C-u: Clocking work time. (line 70) * C-u C-c C-x C-u: Clocking work time. (line 70)
* D: Agenda commands. (line 74) * D: Agenda commands. (line 74)
@ -6133,7 +6205,7 @@ Key Index
* S-<left> <3>: Creating timestamps. (line 53) * S-<left> <3>: Creating timestamps. (line 53)
* S-<left>: TODO basics. (line 20) * S-<left>: TODO basics. (line 20)
* S-<RET>: Built-in table editor. * S-<RET>: Built-in table editor.
(line 176) (line 178)
* S-<right> <1>: Agenda commands. (line 161) * S-<right> <1>: Agenda commands. (line 161)
* S-<right> <2>: The date/time prompt. * S-<right> <2>: The date/time prompt.
(line 36) (line 36)
@ -6158,171 +6230,172 @@ Key Index
 
Tag Table: Tag Table:
Node: Top964 Node: Top964
Node: Introduction10833 Node: Introduction10853
Node: Summary11248 Node: Summary11268
Node: Installation14160 Node: Installation14180
Node: Activation15538 Node: Activation15558
Node: Feedback16787 Node: Feedback16807
Node: Document structure18863 Node: Document structure18883
Node: Outlines19637 Node: Outlines19657
Node: Headlines20297 Node: Headlines20317
Node: Visibility cycling20920 Node: Visibility cycling20940
Ref: Visibility cycling-Footnote-123011 Ref: Visibility cycling-Footnote-123031
Ref: Visibility cycling-Footnote-223069 Ref: Visibility cycling-Footnote-223089
Ref: Visibility cycling-Footnote-323119 Ref: Visibility cycling-Footnote-323139
Node: Motion23388 Node: Motion23408
Node: Structure editing24172 Node: Structure editing24192
Node: Archiving26998 Node: Archiving27018
Node: ARCHIVE tag27556 Node: ARCHIVE tag27576
Node: Moving subtrees29349 Node: Moving subtrees29369
Node: Sparse trees30390 Node: Sparse trees30680
Ref: Sparse trees-Footnote-132521 Ref: Sparse trees-Footnote-132811
Ref: Sparse trees-Footnote-232703 Ref: Sparse trees-Footnote-232993
Node: Plain lists32818 Node: Plain lists33108
Ref: Plain lists-Footnote-136343 Ref: Plain lists-Footnote-136633
Ref: Plain lists-Footnote-236700 Ref: Plain lists-Footnote-236990
Node: Tables36884 Node: Tables37174
Node: Built-in table editor37432 Node: Built-in table editor37722
Node: Narrow columns45460 Node: Narrow columns45999
Ref: Narrow columns-Footnote-147399 Ref: Narrow columns-Footnote-147938
Node: Table calculations47445 Node: Table calculations47984
Node: Formula syntax48765 Node: Formula syntax49304
Ref: Formula syntax-Footnote-151670 Ref: Formula syntax-Footnote-152209
Node: Lisp formulas51970 Node: Lisp formulas52509
Node: Column formulas52759 Node: Column formulas53298
Node: Advanced features54521 Node: Advanced features55060
Node: Named-field formulas57775 Node: Named-field formulas58314
Node: Editing/debugging formulas58415 Node: Editing/debugging formulas58954
Node: Appetizer60173 Node: Appetizer60712
Node: orgtbl-mode61276 Node: orgtbl-mode61815
Node: table.el61767 Node: table.el62306
Node: Hyperlinks62744 Node: Hyperlinks63283
Node: Link format63517 Node: Link format64056
Node: Internal links64810 Node: Internal links65349
Ref: Internal links-Footnote-166799 Ref: Internal links-Footnote-167338
Node: Radio targets66931 Node: Radio targets67470
Node: CamelCase links67646 Node: CamelCase links68185
Node: External links68240 Node: External links68779
Node: Handling links70644 Node: Handling links71183
Ref: Handling links-Footnote-175296 Ref: Handling links-Footnote-175835
Ref: Handling links-Footnote-275533 Ref: Handling links-Footnote-276072
Node: Link abbreviations75607 Node: Link abbreviations76146
Node: Search options77286 Node: Search options77825
Ref: Search options-Footnote-179066 Ref: Search options-Footnote-179605
Node: Custom searches79147 Node: Custom searches79686
Node: Remember80195 Node: Remember80734
Node: TODO items83889 Node: TODO items84428
Node: TODO basics84871 Node: TODO basics85410
Node: TODO extensions86398 Node: TODO extensions86937
Node: Workflow states87193 Node: Workflow states87732
Node: TODO types88178 Node: TODO types88717
Ref: TODO types-Footnote-189836 Ref: TODO types-Footnote-190375
Node: Per file keywords89918 Node: Per file keywords90457
Ref: Per file keywords-Footnote-191372 Ref: Per file keywords-Footnote-191911
Node: Priorities91573 Node: Priorities92112
Node: Breaking down tasks92817 Node: Breaking down tasks93356
Ref: Breaking down tasks-Footnote-193336 Ref: Breaking down tasks-Footnote-193875
Node: Checkboxes93432 Node: Checkboxes93971
Node: Timestamps96187 Node: Timestamps96726
Node: Time stamps96648 Node: Time stamps97260
Ref: Time stamps-Footnote-1100142 Ref: Time stamps-Footnote-1100754
Ref: Time stamps-Footnote-2100258 Ref: Time stamps-Footnote-2100870
Node: Creating timestamps100413 Node: Creating timestamps101025
Node: The date/time prompt103039 Node: The date/time prompt103651
Ref: The date/time prompt-Footnote-1104805 Ref: The date/time prompt-Footnote-1105417
Node: Custom time format104911 Node: Custom time format105523
Node: Progress logging106470 Node: Repeating items107081
Node: Closing items107119 Node: Progress logging108892
Ref: Closing items-Footnote-1108053 Node: Closing items109538
Ref: Closing items-Footnote-2108122 Ref: Closing items-Footnote-1110472
Node: Tracking TODO state changes108195 Ref: Closing items-Footnote-2110541
Node: Clocking work time109051 Node: Tracking TODO state changes110614
Ref: Clocking work time-Footnote-1112697 Node: Clocking work time111470
Ref: Clocking work time-Footnote-2112775 Ref: Clocking work time-Footnote-1115116
Node: Tags112901 Ref: Clocking work time-Footnote-2115194
Node: Tag inheritance113663 Node: Tags115320
Node: Setting tags114600 Node: Tag inheritance116082
Ref: Setting tags-Footnote-1118799 Node: Setting tags117019
Ref: Setting tags-Footnote-2118911 Ref: Setting tags-Footnote-1121218
Node: Tag searches118994 Ref: Setting tags-Footnote-2121330
Node: Agenda views121706 Node: Tag searches121413
Node: Agenda files123646 Node: Agenda views124125
Ref: Agenda files-Footnote-1124606 Node: Agenda files126065
Ref: Agenda files-Footnote-2124755 Ref: Agenda files-Footnote-1127025
Node: Agenda dispatcher124948 Ref: Agenda files-Footnote-2127174
Node: Built-in agenda views126639 Node: Agenda dispatcher127367
Node: Weekly/Daily agenda127217 Node: Built-in agenda views129058
Node: Global TODO list129346 Node: Weekly/Daily agenda129636
Node: Matching headline tags131519 Node: Global TODO list131765
Node: Timeline132590 Node: Matching headline tags133938
Node: Stuck projects133256 Node: Timeline135009
Node: Presentation and sorting134955 Node: Stuck projects135675
Node: Categories135746 Node: Presentation and sorting137374
Node: Time-of-day specifications136410 Node: Categories138165
Node: Sorting of agenda items138381 Node: Time-of-day specifications138829
Node: Agenda commands139663 Node: Sorting of agenda items140800
Node: Custom agenda views146316 Node: Agenda commands142082
Node: Storing searches146991 Node: Custom agenda views148735
Node: Block agenda148903 Node: Storing searches149410
Node: Setting Options150133 Node: Block agenda151322
Node: Batch processing152845 Node: Setting Options152552
Node: Embedded LaTeX153975 Node: Batch processing155264
Ref: Embedded LaTeX-Footnote-1155067 Node: Embedded LaTeX156394
Node: Math symbols155257 Ref: Embedded LaTeX-Footnote-1157486
Node: Subscripts and Superscripts156022 Node: Math symbols157676
Node: LaTeX fragments156866 Node: Subscripts and Superscripts158441
Ref: LaTeX fragments-Footnote-1158974 Node: LaTeX fragments159285
Node: Processing LaTeX fragments159236 Ref: LaTeX fragments-Footnote-1161393
Node: CDLaTeX mode160182 Node: Processing LaTeX fragments161655
Ref: CDLaTeX mode-Footnote-1162666 Node: CDLaTeX mode162601
Node: Exporting162814 Ref: CDLaTeX mode-Footnote-1165085
Node: ASCII export164128 Node: Exporting165233
Node: HTML export165418 Node: ASCII export166547
Node: Export commands166037 Node: HTML export167837
Node: Quoting HTML tags166761 Node: Export commands168456
Node: Links167104 Node: Quoting HTML tags169180
Node: Images167801 Node: Links169523
Ref: Images-Footnote-1168672 Node: Images170220
Node: CSS support168733 Ref: Images-Footnote-1171091
Ref: CSS support-Footnote-1170052 Node: CSS support171152
Node: XOXO export170165 Ref: CSS support-Footnote-1172471
Node: iCalendar export170604 Node: XOXO export172584
Node: Text interpretation172427 Node: iCalendar export173023
Node: Comment lines172906 Node: Text interpretation174846
Node: Enhancing text173377 Node: Comment lines175325
Node: Export options175069 Node: Enhancing text175796
Node: Publishing176736 Node: Export options177488
Ref: Publishing-Footnote-1177532 Node: Publishing179155
Node: Configuration177728 Ref: Publishing-Footnote-1179951
Node: Project alist178446 Node: Configuration180147
Node: Sources and destinations179512 Node: Project alist180865
Node: Selecting files180242 Node: Sources and destinations181931
Node: Publishing action180990 Node: Selecting files182661
Node: Publishing options182223 Node: Publishing action183409
Node: Publishing links184375 Node: Publishing options184642
Node: Project page index185888 Node: Publishing links186794
Node: Sample configuration186666 Node: Project page index188307
Node: Simple example187158 Node: Sample configuration189085
Node: Complex example187831 Node: Simple example189577
Node: Triggering publication189907 Node: Complex example190250
Node: Miscellaneous190592 Node: Triggering publication192326
Node: Completion191226 Node: Miscellaneous193011
Node: Customization192697 Node: Completion193645
Node: In-buffer settings193280 Node: Customization195116
Node: The very busy C-c C-c key197139 Node: In-buffer settings195699
Node: Clean view198783 Node: The very busy C-c C-c key199940
Node: TTY keys201360 Node: Clean view201584
Node: Interaction202969 Node: TTY keys204161
Node: Cooperation203366 Node: Interaction205770
Node: Conflicts205233 Node: Cooperation206167
Node: Bugs206825 Node: Conflicts208034
Node: Extensions and Hacking208219 Node: Bugs209626
Node: Extensions208723 Node: Extensions and Hacking211020
Node: Dynamic blocks210510 Node: Extensions211524
Node: Special agenda views212466 Node: Dynamic blocks213467
Ref: Special agenda views-Footnote-1214747 Node: Special agenda views215423
Node: History and Acknowledgments215007 Ref: Special agenda views-Footnote-1217704
Node: Index220134 Node: History and Acknowledgments217964
Node: Key Index248617 Node: Index223323
Node: Key Index252098
 
End Tag Table End Tag Table

456
org.el
View File

@ -1,11 +1,11 @@
;;;; org.el --- Outline-based notes management and organize ;;;; org.el --- Outline-based notes management and organize
;; Carstens outline-mode for keeping track of everything. ;; Carstens outline-mode for keeping track of everything.
;; Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. ;; Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
;; ;;
;; Author: Carsten Dominik <dominik at science dot uva dot nl> ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar, wp ;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
;; Version: 4.60 ;; Version: 4.61
;; ;;
;; This file is part of GNU Emacs. ;; This file is part of GNU Emacs.
;; ;;
@ -61,6 +61,17 @@
;; ;;
;; Recent changes ;; Recent changes
;; -------------- ;; --------------
;; Version 4.61
;; - Avoiding keybinding clashes with flyspell
;; - Archiving is now also on `C-C C-x C-s' (was just `C-c $')
;; - Cycling through agenda files is now also on "C-'" (was just "C-,")
;; - Colon is considered part of number, to align times in clock tables.
;; - Fixed bug for list of stuck projects.
;; - Fixed several bugs/problems concerning linking to gnus.
;; - Block agendas can contain the list of stuck projects.
;; - #+ARCHIVE may now appear several times in the buffer.
;; - More bug fixes.
;;
;; Version 4.60 ;; Version 4.60
;; - HTML export: inlining images, clickable images (manual 10.2.4). ;; - HTML export: inlining images, clickable images (manual 10.2.4).
;; - Incremental search now shows proper context when exiting. ;; - Incremental search now shows proper context when exiting.
@ -127,7 +138,7 @@
;;; Version ;;; Version
(defvar org-version "4.60" (defvar org-version "4.61"
"The version number of the file org.el.") "The version number of the file org.el.")
(defun org-version () (defun org-version ()
(interactive) (interactive)
@ -734,7 +745,7 @@ this variable requires a restart of Emacs to become effective."
:type 'string) :type 'string)
(defcustom org-table-number-regexp (defcustom org-table-number-regexp
"^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%]*\\|\\(0[xX]\\)[0-9a-fA-F]+\\)$" "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|\\(0[xX]\\)[0-9a-fA-F]+\\)$"
"Regular expression for recognizing numbers in table columns. "Regular expression for recognizing numbers in table columns.
If a table column contains mostly numbers, it will be aligned to the If a table column contains mostly numbers, it will be aligned to the
right. If not, it will be aligned to the left. right. If not, it will be aligned to the left.
@ -1677,6 +1688,7 @@ cmd An agenda command, similar to the above. However, tree commands
So valid commands for a set are: So valid commands for a set are:
(agenda) (agenda)
(alltodo) (alltodo)
(stuck)
(todo \"match\" options) (todo \"match\" options)
(tags \"match\" options ) (tags \"match\" options )
(tags-todo \"match\" options) (tags-todo \"match\" options)
@ -1707,6 +1719,7 @@ precedence over the general options."
(choice (choice
(const :tag "Agenda" (agenda)) (const :tag "Agenda" (agenda))
(const :tag "TODO list" (alltodo)) (const :tag "TODO list" (alltodo))
(const :tag "Stuck projects" (stuck))
(list :tag "Tags search" (list :tag "Tags search"
(const :format "" tags) (const :format "" tags)
(string :tag "Match") (string :tag "Match")
@ -3521,6 +3534,11 @@ The following commands are available:
;; Paragraphs and auto-filling ;; Paragraphs and auto-filling
(org-set-autofill-regexps) (org-set-autofill-regexps)
(org-update-radio-target-regexp) (org-update-radio-target-regexp)
;; Comment characters
(org-set-local 'comment-start "#")
(org-set-local 'comment-padding " ")
;; Make isearch reveal context ;; Make isearch reveal context
(if (or (featurep 'xemacs) (if (or (featurep 'xemacs)
(not (boundp 'outline-isearch-open-invisible-function))) (not (boundp 'outline-isearch-open-invisible-function)))
@ -4519,16 +4537,28 @@ in the region."
(org-demote))) (org-demote)))
(org-fix-position-after-promote)) (org-fix-position-after-promote))
;; FIXME: check and remove
;(defun org-fix-position-after-promote ()
; "Make sure that after pro/demotion cursor position is right."
; (if (and (or (eobp) (equal (char-after) ?\n))
; (save-excursion
; (skip-chars-backward "a-zA-Z0-9_@")
; (looking-at org-todo-regexp)))
; (insert " "))
; (and (equal (char-after) ?\ )
; (equal (char-before) ?*)
; (forward-char 1)))
(defun org-fix-position-after-promote () (defun org-fix-position-after-promote ()
"Make sure that after pro/demotion cursor position is right." "Make sure that after pro/demotion cursor position is right."
(if (and (or (eobp) (equal (char-after) ?\n)) (let ((pos (point)))
(save-excursion (when (save-excursion
(skip-chars-backward "a-zA-Z0-9_@") (beginning-of-line 1)
(looking-at org-todo-regexp))) (looking-at org-todo-line-regexp)
(insert " ")) (or (equal pos (match-end 1)) (equal pos (match-end 2))))
(and (equal (char-after) ?\ ) (cond ((eobp) (insert " "))
(equal (char-before) ?*) ((eolp) (insert " "))
(forward-char 1))) ((equal (char-after) ?\ ) (forward-char 1))))))
(defun org-get-legal-level (level &optional change) (defun org-get-legal-level (level &optional change)
"Rectify a level change under the influence of `org-odd-levels-only' "Rectify a level change under the influence of `org-odd-levels-only'
@ -5440,7 +5470,15 @@ this heading. "
(tr-org-todo-regexp org-todo-regexp) (tr-org-todo-regexp org-todo-regexp)
(tr-org-todo-line-regexp org-todo-line-regexp) (tr-org-todo-line-regexp org-todo-line-regexp)
(this-buffer (current-buffer)) (this-buffer (current-buffer))
(org-archive-location org-archive-location)
(re "^#\\+ARCHIVE:[ \t]+\\(\\S-.*\\S-\\)[ \t]*$")
file heading buffer level newfile-p) file heading buffer level newfile-p)
;; Try to find a local archive location
(save-excursion
(if (or (re-search-backward re nil t) (re-search-forward re nil t))
(setq org-archive-location (match-string 1))))
(if (string-match "\\(.*\\)::\\(.*\\)" org-archive-location) (if (string-match "\\(.*\\)::\\(.*\\)" org-archive-location)
(progn (progn
(setq file (format (match-string 1 org-archive-location) (setq file (format (match-string 1 org-archive-location)
@ -6239,6 +6277,13 @@ is always the old value."
val) val)
(forward-char 1) "")) (forward-char 1) ""))
(defun org-table-field-info ()
(interactive)
(let ((current (org-table-get-field))
(col (org-table-current-column))
(line (org-table-current-line)))
(message "Table data line %d, column %d" line col)))
(defun org-table-current-column () (defun org-table-current-column ()
"Find out which column we are in. "Find out which column we are in.
When called interactively, column is also displayed in echo area." When called interactively, column is also displayed in echo area."
@ -6252,6 +6297,20 @@ When called interactively, column is also displayed in echo area."
(if (interactive-p) (message "This is table column %d" cnt)) (if (interactive-p) (message "This is table column %d" cnt))
cnt))) cnt)))
(defun org-table-current-line ()
"Find out what table line we are in.
Only datalins count for this."
(interactive)
(if (interactive-p) (org-table-check-inside-data-field))
(save-excursion
(let ((cnt 0) (pos (point)))
(goto-char (org-table-begin))
(while (< (point) pos)
(if (looking-at org-table-dataline-regexp) (setq cnt (1+ cnt)))
(beginning-of-line 2))
(if (interactive-p) (message "This is table line %d" cnt))
cnt)))
(defun org-table-goto-column (n &optional on-delim force) (defun org-table-goto-column (n &optional on-delim force)
"Move the cursor to the Nth column in the current table line. "Move the cursor to the Nth column in the current table line.
With optional argument ON-DELIM, stop with point before the left delimiter With optional argument ON-DELIM, stop with point before the left delimiter
@ -7071,8 +7130,22 @@ the current column, to avoid unnecessary parsing."
(defvar org-table-named-field-locations nil (defvar org-table-named-field-locations nil
"Alist with locations of named fields.") "Alist with locations of named fields.")
(defun org-table-current-field-formula ()
"Return the formula active for the current field.
Assumes that specials are in place."
(let* ((name (car (rassoc (list (org-current-line)
(org-table-current-column))
org-table-named-field-locations)))
(scol (if name name
(int-to-string (org-table-current-column))))
(stored-list (org-table-get-stored-formulas))
(stored (cdr (assoc scol stored-list))))
(if stored (concat (if name ":=" "=") stored))))
(defun org-table-get-formula (&optional equation named) (defun org-table-get-formula (&optional equation named)
"Read a formula from the minibuffer, offer stored formula as default." "Read a formula from the minibuffer, offer stored formula as default.
When NAMED is non-nil, look for a named equation.
When JUST-RETURN is non-nil, return equation without prompting."
(let* ((name (car (rassoc (list (org-current-line) (let* ((name (car (rassoc (list (org-current-line)
(org-table-current-column)) (org-table-current-column))
org-table-named-field-locations))) org-table-named-field-locations)))
@ -7379,6 +7452,11 @@ formula, by storing it in a special line below the table. When called
with a `C-u' prefix, the current field must ba a named field, and the with a `C-u' prefix, the current field must ba a named field, and the
formula is installed as valid in only this specific field. formula is installed as valid in only this specific field.
When called with two `C-u' prefixes, insert the active equation
for the field back into the current field, so that it can be
edited there. This is useful in order to use \\[org-show-variable] to check
the referenced fields.
When called, the command first prompts for a formula, which is read in When called, the command first prompts for a formula, which is read in
the minibuffer. Previously entered formulas are available through the the minibuffer. Previously entered formulas are available through the
history list, and the last used formula is offered as a default. history list, and the last used formula is offered as a default.
@ -7400,110 +7478,116 @@ not overwrite the stored one."
(interactive "P") (interactive "P")
(org-table-check-inside-data-field) (org-table-check-inside-data-field)
(org-table-get-specials) (org-table-get-specials)
(let* (fields (if (equal arg '(16))
(ndown (if (integerp arg) arg 1)) (let ((eq (org-table-current-field-formula)))
(org-table-automatic-realign nil) (or eq (error "No equation active for current field"))
(case-fold-search nil) (org-table-get-field nil eq)
(down (> ndown 1)) (org-table-align)
(formula (if (and equation suppress-store) (setq org-table-may-need-update t))
equation (let* (fields
(org-table-get-formula equation (equal arg '(4))))) (ndown (if (integerp arg) arg 1))
(n0 (org-table-current-column)) (org-table-automatic-realign nil)
(modes (copy-sequence org-calc-default-modes)) (case-fold-search nil)
n form fmt x ev orig c lispp) (down (> ndown 1))
;; Parse the format string. Since we have a lot of modes, this is (formula (if (and equation suppress-store)
;; a lot of work. However, I think calc still uses most of the time. equation
(if (string-match ";" formula) (org-table-get-formula equation (equal arg '(4)))))
(let ((tmp (org-split-string formula ";"))) (n0 (org-table-current-column))
(setq formula (car tmp) (modes (copy-sequence org-calc-default-modes))
fmt (concat (cdr (assoc "%" org-table-local-parameters)) n form fmt x ev orig c lispp)
(nth 1 tmp))) ;; Parse the format string. Since we have a lot of modes, this is
(while (string-match "\\([pnfse]\\)\\(-?[0-9]+\\)" fmt) ;; a lot of work. However, I think calc still uses most of the time.
(setq c (string-to-char (match-string 1 fmt)) (if (string-match ";" formula)
n (string-to-number (match-string 2 fmt))) (let ((tmp (org-split-string formula ";")))
(if (= c ?p) (setq formula (car tmp)
(setq modes (org-set-calc-mode 'calc-internal-prec n)) fmt (concat (cdr (assoc "%" org-table-local-parameters))
(setq modes (org-set-calc-mode (nth 1 tmp)))
'calc-float-format (while (string-match "\\([pnfse]\\)\\(-?[0-9]+\\)" fmt)
(list (cdr (assoc c '((?n . float) (?f . fix) (setq c (string-to-char (match-string 1 fmt))
(?s . sci) (?e . eng)))) n (string-to-number (match-string 2 fmt)))
n)))) (if (= c ?p)
(setq fmt (replace-match "" t t fmt))) (setq modes (org-set-calc-mode 'calc-internal-prec n))
(while (string-match "[DRFS]" fmt) (setq modes (org-set-calc-mode
(setq modes (org-set-calc-mode (match-string 0 fmt))) 'calc-float-format
(setq fmt (replace-match "" t t fmt))) (list (cdr (assoc c '((?n . float) (?f . fix)
(unless (string-match "\\S-" fmt) (?s . sci) (?e . eng))))
(setq fmt nil)))) n))))
(if (and (not suppress-const) org-table-formula-use-constants) (setq fmt (replace-match "" t t fmt)))
(setq formula (org-table-formula-substitute-names formula))) (while (string-match "[DRFS]" fmt)
(setq orig (or (get-text-property 1 :orig-formula formula) "?")) (setq modes (org-set-calc-mode (match-string 0 fmt)))
(while (> ndown 0) (setq fmt (replace-match "" t t fmt)))
(setq fields (org-split-string (unless (string-match "\\S-" fmt)
(buffer-substring (setq fmt nil))))
(point-at-bol) (point-at-eol)) " *| *")) (if (and (not suppress-const) org-table-formula-use-constants)
(if org-table-formula-numbers-only (setq formula (org-table-formula-substitute-names formula)))
(setq fields (mapcar (setq orig (or (get-text-property 1 :orig-formula formula) "?"))
(lambda (x) (number-to-string (string-to-number x))) (while (> ndown 0)
fields))) (setq fields (org-split-string
(setq ndown (1- ndown)) (buffer-substring
(setq form (copy-sequence formula) (point-at-bol) (point-at-eol)) " *| *"))
lispp (equal (substring form 0 2) "'(")) (if org-table-formula-numbers-only
;; Insert the references to fields in same row (setq fields (mapcar
(while (string-match "\\$\\([0-9]+\\)?" form) (lambda (x) (number-to-string (string-to-number x)))
(setq n (if (match-beginning 1) fields)))
(string-to-number (match-string 1 form)) (setq ndown (1- ndown))
n0) (setq form (copy-sequence formula)
x (nth (1- n) fields)) lispp (and (> (length form) 2)(equal (substring form 0 2) "'(")))
(unless x (error "Invalid field specifier \"%s\"" ;; Insert the references to fields in same row
(match-string 0 form))) (while (string-match "\\$\\([0-9]+\\)?" form)
(if (equal x "") (setq x "0")) (setq n (if (match-beginning 1)
(setq form (replace-match (string-to-number (match-string 1 form))
(if lispp x (concat "(" x ")")) n0)
t t form))) x (nth (1- n) fields))
;; Insert ranges in current column (unless x (error "Invalid field specifier \"%s\""
(while (string-match "\\&[-I0-9]+" form) (match-string 0 form)))
(setq form (replace-match (if (equal x "") (setq x "0"))
(save-match-data (setq form (replace-match
(org-table-get-vertical-vector (match-string 0 form) (if lispp x (concat "(" x ")"))
nil n0)) t t form)))
t t form))) ;; Insert ranges in current column
(if lispp (while (string-match "\\&[-I0-9]+" form)
(setq ev (eval (eval (read form))) (setq form (replace-match
ev (if (numberp ev) (number-to-string ev) ev)) (save-match-data
(or (fboundp 'calc-eval) (org-table-get-vertical-vector (match-string 0 form)
(error "Calc does not seem to be installed, and is needed to evaluate the formula")) nil n0))
(setq ev (calc-eval (cons form modes) t t form)))
(if org-table-formula-numbers-only 'num)))) (if lispp
(setq ev (eval (eval (read form)))
ev (if (numberp ev) (number-to-string ev) ev))
(or (fboundp 'calc-eval)
(error "Calc does not seem to be installed, and is needed to evaluate the formula"))
(setq ev (calc-eval (cons form modes)
(if org-table-formula-numbers-only 'num))))
(when org-table-formula-debug (when org-table-formula-debug
(with-output-to-temp-buffer "*Help*" (with-output-to-temp-buffer "*Help*"
(princ (format "Substitution history of formula (princ (format "Substitution history of formula
Orig: %s Orig: %s
$xyz-> %s $xyz-> %s
$1-> %s\n" orig formula form)) $1-> %s\n" orig formula form))
(if (listp ev) (if (listp ev)
(princ (format " %s^\nError: %s" (princ (format " %s^\nError: %s"
(make-string (car ev) ?\-) (nth 1 ev))) (make-string (car ev) ?\-) (nth 1 ev)))
(princ (format "Result: %s\nFormat: %s\nFinal: %s" (princ (format "Result: %s\nFormat: %s\nFinal: %s"
ev (or fmt "NONE") ev (or fmt "NONE")
(if fmt (format fmt (string-to-number ev)) ev))))) (if fmt (format fmt (string-to-number ev)) ev)))))
(shrink-window-if-larger-than-buffer (get-buffer-window "*Help*")) (shrink-window-if-larger-than-buffer (get-buffer-window "*Help*"))
(unless (and (interactive-p) (not ndown)) (unless (and (interactive-p) (not ndown))
(unless (let (inhibit-redisplay) (unless (let (inhibit-redisplay)
(y-or-n-p "Debugging Formula. Continue to next? ")) (y-or-n-p "Debugging Formula. Continue to next? "))
(org-table-align) (org-table-align)
(error "Abort")) (error "Abort"))
(delete-window (get-buffer-window "*Help*")) (delete-window (get-buffer-window "*Help*"))
(message ""))) (message "")))
(if (listp ev) (setq fmt nil ev "#ERROR")) (if (listp ev) (setq fmt nil ev "#ERROR"))
(org-table-justify-field-maybe (org-table-justify-field-maybe
(if fmt (format fmt (string-to-number ev)) ev)) (if fmt (format fmt (string-to-number ev)) ev))
(if (and down (> ndown 0) (looking-at ".*\n[ \t]*|[^-]")) (if (and down (> ndown 0) (looking-at ".*\n[ \t]*|[^-]"))
(call-interactively 'org-return) (call-interactively 'org-return)
(setq ndown 0))) (setq ndown 0)))
(and down (org-table-maybe-recalculate-line)) (and down (org-table-maybe-recalculate-line))
(or suppress-align (and org-table-may-need-update (or suppress-align (and org-table-may-need-update
(org-table-align))))) (org-table-align))))))
(defun org-table-recalculate (&optional all noalign) (defun org-table-recalculate (&optional all noalign)
"Recalculate the current table line by applying all stored formulas. "Recalculate the current table line by applying all stored formulas.
@ -7627,8 +7711,7 @@ Parameters get priority."
(defun org-table-edit-formulas () (defun org-table-edit-formulas ()
"Edit the formulas of the current table in a separate buffer." "Edit the formulas of the current table in a separate buffer."
(interactive) (interactive)
(unless (org-at-table-p) (unless (org-at-table-p) (error "Not at a table"))
(error "Not at a table"))
(org-table-get-specials) (org-table-get-specials)
(let ((eql (org-table-get-stored-formulas)) (let ((eql (org-table-get-stored-formulas))
(pos (move-marker (make-marker) (point))) (pos (move-marker (make-marker) (point)))
@ -7658,6 +7741,7 @@ Parameters get priority."
(goto-char (point-min)) (goto-char (point-min))
(message "Edit formulas and finish with `C-c C-c'."))) (message "Edit formulas and finish with `C-c C-c'.")))
;; FIXME: make this work in fields, directly highlighting the referenced fields
(defun org-show-variable () (defun org-show-variable ()
"Show the location/value of the $ expression at point." "Show the location/value of the $ expression at point."
(interactive) (interactive)
@ -7896,7 +7980,7 @@ to execute outside of tables."
(list (org-key 'S-return) 'org-table-copy-down) (list (org-key 'S-return) 'org-table-copy-down)
'([(meta return)] org-table-wrap-region) '([(meta return)] org-table-wrap-region)
'("\C-c\C-q" org-table-wrap-region) '("\C-c\C-q" org-table-wrap-region)
'("\C-c?" org-table-current-column) '("\C-c?" org-table-field-info)
'("\C-c " org-table-blank-field) '("\C-c " org-table-blank-field)
'("\C-c+" org-table-sum) '("\C-c+" org-table-sum)
'("\C-c=" org-table-eval-formula) '("\C-c=" org-table-eval-formula)
@ -8157,6 +8241,7 @@ For file links, arg negates `org-context-in-file-links'."
((fboundp 'gnus-group-name) ((fboundp 'gnus-group-name)
(gnus-group-name)) (gnus-group-name))
(t "???")))) (t "???"))))
(unless group (error "Not on a group"))
(setq cpltxt (concat (setq cpltxt (concat
(if (org-xor arg org-usenet-links-prefer-google) (if (org-xor arg org-usenet-links-prefer-google)
"http://groups.google.com/groups?group=" "http://groups.google.com/groups?group="
@ -8165,11 +8250,9 @@ For file links, arg negates `org-context-in-file-links'."
link (org-make-link cpltxt)))) link (org-make-link cpltxt))))
((memq major-mode '(gnus-summary-mode gnus-article-mode)) ((memq major-mode '(gnus-summary-mode gnus-article-mode))
(require 'gnus-sum) ; FIXME: I don't think this is needed, actually
(and (eq major-mode 'gnus-article-mode) (gnus-article-show-summary)) (and (eq major-mode 'gnus-article-mode) (gnus-article-show-summary))
(gnus-summary-beginning-of-article) (let* ((group gnus-newsgroup-name)
(let* ((group (car gnus-article-current)) (article (gnus-summary-article-number))
(article (cdr gnus-article-current))
(header (gnus-summary-article-header article)) (header (gnus-summary-article-header article))
(author (mail-header-from header)) (author (mail-header-from header))
(message-id (mail-header-id header)) (message-id (mail-header-id header))
@ -9046,14 +9129,10 @@ onto the ring."
(require 'gnus) (require 'gnus)
(funcall (cdr (assq 'gnus org-link-frame-setup))) (funcall (cdr (assq 'gnus org-link-frame-setup)))
(if gnus-other-frame-object (select-frame gnus-other-frame-object)) (if gnus-other-frame-object (select-frame gnus-other-frame-object))
(if group (gnus-fetch-group group)) (cond ((and group article)
(if article (gnus-group-read-group t nil group (list (string-to-number article)))
(or (gnus-summary-goto-article article nil 'force) (gnus-summary-select-article))
(if (fboundp 'gnus-summary-insert-cached-articles) (group (gnus-group-jump-to-group group))))
(progn
(gnus-summary-insert-cached-articles)
(gnus-summary-goto-article article nil 'force))
(message "Message could not be found.")))))
(defun org-follow-vm-link (&optional folder article readonly) (defun org-follow-vm-link (&optional folder article readonly)
"Follow a VM link to FOLDER and ARTICLE." "Follow a VM link to FOLDER and ARTICLE."
@ -9902,7 +9981,7 @@ For calling through lisp, arg is also interpreted in the following way:
;; Fixup tag positioning ;; Fixup tag positioning
(and org-auto-align-tags (org-set-tags nil t)) (and org-auto-align-tags (org-set-tags nil t))
(run-hooks 'org-after-todo-state-change-hook) (run-hooks 'org-after-todo-state-change-hook)
;; (and (equal state org-done-string) (org-auto-repeat-maybe)) (and (equal state org-done-string) (org-auto-repeat-maybe))
)) ))
;; Fixup cursor location if close to the keyword ;; Fixup cursor location if close to the keyword
(if (and (outline-on-heading-p) (if (and (outline-on-heading-p)
@ -9914,7 +9993,6 @@ For calling through lisp, arg is also interpreted in the following way:
(goto-char (or (match-end 2) (match-end 1))) (goto-char (or (match-end 2) (match-end 1)))
(just-one-space)))) (just-one-space))))
(defun org-get-repeat () (defun org-get-repeat ()
"Return the REPEAT statement of this entry." "Return the REPEAT statement of this entry."
(save-match-data (save-match-data
@ -10011,9 +10089,7 @@ be removed."
((eq what 'closed) org-closed-string)) ((eq what 'closed) org-closed-string))
" ") " ")
(org-insert-time-stamp time nil (eq what 'closed)) (org-insert-time-stamp time nil (eq what 'closed))
(end-of-line 1) (end-of-line 1))
;;FIXME (and (eq what 'closed) (org-add-log-maybe 'done))
)
(goto-char (point-min)) (goto-char (point-min))
(widen) (widen)
(if (looking-at "[ \t]+\r?\n") (if (looking-at "[ \t]+\r?\n")
@ -10025,6 +10101,9 @@ be removed."
(defvar org-log-note-state nil) (defvar org-log-note-state nil)
(defvar org-log-note-window-configuration nil) (defvar org-log-note-window-configuration nil)
(defvar org-log-note-return-to (make-marker)) (defvar org-log-note-return-to (make-marker))
(defvar org-log-post-message nil
"Message to be displayed after a log note has been stored.
The auto-repeater uses this.")
(defun org-add-log-maybe (&optional purpose state findpos) (defun org-add-log-maybe (&optional purpose state findpos)
(save-excursion (save-excursion
@ -10051,7 +10130,7 @@ be removed."
(goto-char org-log-note-marker) (goto-char org-log-note-marker)
(switch-to-buffer-other-window "*Org Note*") (switch-to-buffer-other-window "*Org Note*")
(erase-buffer) (erase-buffer)
(org-mode) (let ((org-inhibit-startup t)) (org-mode))
(insert (format "# Insert note for %s, finish with C-c C-c.\n\n" (insert (format "# Insert note for %s, finish with C-c C-c.\n\n"
(cond (cond
((eq org-log-note-purpose 'clock-out) "stopped clock") ((eq org-log-note-purpose 'clock-out) "stopped clock")
@ -10089,6 +10168,7 @@ be removed."
(set-buffer (marker-buffer org-log-note-marker)) (set-buffer (marker-buffer org-log-note-marker))
(save-excursion (save-excursion
(goto-char org-log-note-marker) (goto-char org-log-note-marker)
(move-marker org-log-note-marker nil)
(end-of-line 1) (end-of-line 1)
(if (not (bolp)) (insert "\n")) (indent-relative nil) (if (not (bolp)) (insert "\n")) (indent-relative nil)
(setq ind (concat (buffer-substring (point-at-bol) (point)) " ")) (setq ind (concat (buffer-substring (point-at-bol) (point)) " "))
@ -10097,7 +10177,9 @@ be removed."
(insert "\n" ind (pop lines)))))) (insert "\n" ind (pop lines))))))
(set-window-configuration org-log-note-window-configuration) (set-window-configuration org-log-note-window-configuration)
(with-current-buffer (marker-buffer org-log-note-return-to) (with-current-buffer (marker-buffer org-log-note-return-to)
(goto-char org-log-note-return-to))) (goto-char org-log-note-return-to))
(move-marker org-log-note-return-to nil)
(and org-log-post-message (message org-log-post-message)))
(defvar org-occur-highlights nil) (defvar org-occur-highlights nil)
(make-variable-buffer-local 'org-occur-highlights) (make-variable-buffer-local 'org-occur-highlights)
@ -10303,7 +10385,6 @@ are included in the output."
(when (eq action 'sparse-tree) (org-overview)) (when (eq action 'sparse-tree) (org-overview))
(while (re-search-forward re nil t) (while (re-search-forward re nil t)
(catch :skip (catch :skip
(and (eq action 'agenda) (org-agenda-skip))
(setq todo (if (match-end 1) (match-string 2)) (setq todo (if (match-end 1) (match-string 2))
tags (if (match-end 4) (match-string 4))) tags (if (match-end 4) (match-string 4)))
(goto-char (setq lspos (1+ (match-beginning 0)))) (goto-char (setq lspos (1+ (match-beginning 0))))
@ -10329,6 +10410,7 @@ are included in the output."
(eval matcher) (eval matcher)
(or (not org-agenda-skip-archived-trees) (or (not org-agenda-skip-archived-trees)
(not (member org-archive-tag tags-list)))) (not (member org-archive-tag tags-list))))
(and (eq action 'agenda) (org-agenda-skip))
;; list this headline ;; list this headline
(if (eq action 'sparse-tree) (if (eq action 'sparse-tree)
(progn (progn
@ -12110,9 +12192,9 @@ L Timeline for current buffer # List stuck projects (!=configure)
'(face bold)) '(face bold))
(cond (cond
((stringp type) type) ((stringp type) type)
((eq type 'tags) "Tags query")
((eq type 'todo) "TODO keyword") ((eq type 'todo) "TODO keyword")
((eq type 'tags-tree) "Tags (TODO)") ((eq type 'tags) "Tags query")
((eq type 'tags-todo) "Tags (TODO)")
((eq type 'tags-tree) "Tags tree") ((eq type 'tags-tree) "Tags tree")
((eq type 'todo-tree) "TODO kwd tree") ((eq type 'todo-tree) "TODO kwd tree")
((eq type 'occur-tree) "Occur tree") ((eq type 'occur-tree) "Occur tree")
@ -12120,11 +12202,10 @@ L Timeline for current buffer # List stuck projects (!=configure)
(t "???")) (t "???"))
(if (stringp match) (if (stringp match)
(org-add-props match nil 'face 'org-warning) (org-add-props match nil 'face 'org-warning)
(format "set of %d commands" (+ -2 (length entry))))))) (format "set of %d commands" (length match))))))
(if restrict-ok (if restrict-ok
(insert "\n" (insert "\n"
(org-add-props "1 Restrict call to current buffer 0 Restrict call to region or subtree" nil 'face 'org-table))) (org-add-props "1 Restrict call to current buffer 0 Restrict call to region or subtree" nil 'face 'org-table)))
(goto-char (point-min)) (goto-char (point-min))
(if (fboundp 'fit-window-to-buffer) (fit-window-to-buffer)) (if (fboundp 'fit-window-to-buffer) (fit-window-to-buffer))
(message "Press key for agenda command%s" (message "Press key for agenda command%s"
@ -12217,6 +12298,8 @@ L Timeline for current buffer # List stuck projects (!=configure)
(call-interactively 'org-agenda-list)) (call-interactively 'org-agenda-list))
((eq type 'alltodo) ((eq type 'alltodo)
(call-interactively 'org-todo-list)) (call-interactively 'org-todo-list))
((eq type 'stuck)
(call-interactively 'org-agenda-list-stuck-projects))
((eq type 'tags) ((eq type 'tags)
(org-let2 gprops lprops (org-let2 gprops lprops
'(org-tags-view current-prefix-arg match))) '(org-tags-view current-prefix-arg match)))
@ -12490,7 +12573,9 @@ to all future agenda commands. Instead, bind it with `let' to scope
it dynamically into the agenda-constructing command.") it dynamically into the agenda-constructing command.")
(defun org-agenda-skip () (defun org-agenda-skip ()
"Throw to `:skip' in places that should be skipped." "Throw to `:skip' in places that should be skipped.
Also moves point to the end of the skipped region, so that search can
continue from there."
(let ((p (point-at-bol)) to) (let ((p (point-at-bol)) to)
(and org-agenda-skip-archived-trees (and org-agenda-skip-archived-trees
(get-text-property p :org-archived) (get-text-property p :org-archived)
@ -13035,8 +13120,11 @@ MATCH is being ignored."
(todo todo-re) (todo todo-re)
(tags tags-re) (tags tags-re)
(t (error "No information how to identify unstuck projects")))) (t (error "No information how to identify unstuck projects"))))
(org-tags-view nil matcher))) (org-tags-view nil matcher)
(with-current-buffer org-agenda-buffer-name
(setq org-agenda-redo-command
'(org-agenda-list-stuck-projects
(or current-prefix-arg org-last-arg))))))
;;; Diary integration ;;; Diary integration
@ -14072,6 +14160,13 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
"Detach overlay INDEX." "Detach overlay INDEX."
(funcall (if (featurep 'xemacs) 'detach-extent 'delete-overlay) org-hl)) (funcall (if (featurep 'xemacs) 'detach-extent 'delete-overlay) org-hl))
(defun org-highlight-until-next-command (beg end &optional buffer)
(org-highlight beg end buffer)
(add-hook 'pre-command-hook 'org-unhighlight-once))
(defun org-unhighlight-once ()
(remove-hook 'pre-command-hook 'org-unhighlight-once)
(org-unhighlight))
(defun org-agenda-follow-mode () (defun org-agenda-follow-mode ()
"Toggle follow mode in an agenda buffer." "Toggle follow mode in an agenda buffer."
@ -14462,19 +14557,21 @@ the tags of the current headline come last."
(interactive) (interactive)
(let (tags) (let (tags)
(save-excursion (save-excursion
(goto-char (or pos (point))) (save-restriction
(save-match-data (widen)
(org-back-to-heading t) (goto-char (or pos (point)))
(condition-case nil (save-match-data
(while t (org-back-to-heading t)
(if (looking-at "[^\r\n]+?:\\([a-zA-Z_@0-9:]+\\):[ \t]*\\([\n\r]\\|\\'\\)") (condition-case nil
(setq tags (append (org-split-string (while t
(org-match-string-no-properties 1) ":") (if (looking-at "[^\r\n]+?:\\([a-zA-Z_@0-9:]+\\):[ \t]*\\([\n\r]\\|\\'\\)")
tags))) (setq tags (append (org-split-string
(org-match-string-no-properties 1) ":")
tags)))
(or org-use-tag-inheritance (error "")) (or org-use-tag-inheritance (error ""))
(org-up-heading-all 1)) (org-up-heading-all 1))
(error nil)))) (error nil))))
tags)) tags)))
;; FIXME: should fix the tags property of the agenda line. ;; FIXME: should fix the tags property of the agenda line.
(defun org-agenda-set-tags () (defun org-agenda-set-tags ()
@ -15004,15 +15101,14 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
(opt org-format-latex-options) (opt org-format-latex-options)
(matchers (plist-get opt :matchers)) (matchers (plist-get opt :matchers))
(re-list org-latex-regexps) (re-list org-latex-regexps)
(cnt 0) txt link beg end re e oldfiles (cnt 0) txt link beg end re e checkdir
m n block linkfile movefile ov) m n block linkfile movefile ov)
;; Make sure the directory exists
(or (file-directory-p todir) (make-directory todir))
;; Check if there are old images files with this prefix, and remove them ;; Check if there are old images files with this prefix, and remove them
(setq oldfiles (directory-files (when (file-directory-p todir)
todir 'full (mapc 'delete-file
(concat (regexp-quote prefixnodir) "_[0-9]+\\.png$"))) (directory-files
(while oldfiles (delete-file (pop oldfiles))) todir 'full
(concat (regexp-quote prefixnodir) "_[0-9]+\\.png$"))))
;; Check the different regular expressions ;; Check the different regular expressions
(while (setq e (pop re-list)) (while (setq e (pop re-list))
(setq m (car e) re (nth 1 e) n (nth 2 e) (setq m (car e) re (nth 1 e) n (nth 2 e)
@ -15029,6 +15125,9 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
link (concat block "[[file:" linkfile "]]" block)) link (concat block "[[file:" linkfile "]]" block))
(if msg (message msg cnt)) (if msg (message msg cnt))
(goto-char beg) (goto-char beg)
(unless checkdir ; make sure the directory exists
(setq checkdir t)
(or (file-directory-p todir) (make-directory todir)))
(org-create-formula-image (org-create-formula-image
txt movefile opt) txt movefile opt)
(if overlays (if overlays
@ -17090,7 +17189,7 @@ file and store it under the name `org-combined-agenda-icalendar-file'."
(and (not started) (setq started t) (and (not started) (setq started t)
(org-start-icalendar-file org-icalendar-combined-name)) (org-start-icalendar-file org-icalendar-combined-name))
(org-start-icalendar-file category)) (org-start-icalendar-file category))
(org-print-icalendar-entries combine category) (org-print-icalendar-entries combine)
(when (or (and combine (not files)) (not combine)) (when (or (and combine (not files)) (not combine))
(org-finish-icalendar-file) (org-finish-icalendar-file)
(set-buffer ical-buffer) (set-buffer ical-buffer)
@ -17104,23 +17203,23 @@ The iCalendar buffer is still current when this hook is run.
A good way to use this is to tell a desktop calenndar application to re-read A good way to use this is to tell a desktop calenndar application to re-read
the iCalendar file.") the iCalendar file.")
(defun org-print-icalendar-entries (&optional combine)
;; FIXME: Strip down the links
(defun org-print-icalendar-entries (&optional combine category)
"Print iCalendar entries for the current Org-mode file to `standard-output'. "Print iCalendar entries for the current Org-mode file to `standard-output'.
When COMBINE is non nil, add the category to each line." When COMBINE is non nil, add the category to each line."
(let ((re2 (concat "--?-?\\(" org-ts-regexp "\\)")) (let ((re2 (concat "--?-?\\(" org-ts-regexp "\\)"))
(org-category-table (org-get-category-table))
(dts (org-ical-ts-to-string (dts (org-ical-ts-to-string
(format-time-string (cdr org-time-stamp-formats) (current-time)) (format-time-string (cdr org-time-stamp-formats) (current-time))
"DTSTART")) "DTSTART"))
hd ts ts2 state (inc t) pos scheduledp deadlinep tmp pri) hd ts ts2 state (inc t) pos scheduledp deadlinep tmp pri category)
(save-excursion (save-excursion
(goto-char (point-min)) (goto-char (point-min))
(while (re-search-forward org-ts-regexp nil t) (while (re-search-forward org-ts-regexp nil t)
(setq pos (match-beginning 0) (setq pos (match-beginning 0)
ts (match-string 0) ts (match-string 0)
inc t inc t
hd (org-get-heading)) hd (org-get-heading)
category (org-get-category))
(if (looking-at re2) (if (looking-at re2)
(progn (progn
(goto-char (match-end 0)) (goto-char (match-end 0))
@ -17312,6 +17411,7 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
(define-key org-mode-map [(tab)] 'org-cycle) (define-key org-mode-map [(tab)] 'org-cycle)
(define-key org-mode-map [(control tab)] 'org-force-cycle-archived) (define-key org-mode-map [(control tab)] 'org-force-cycle-archived)
(define-key org-mode-map [(meta tab)] 'org-complete) (define-key org-mode-map [(meta tab)] 'org-complete)
(define-key org-mode-map "\M-\t" 'org-complete)
(define-key org-mode-map "\M-\C-i" 'org-complete) (define-key org-mode-map "\M-\C-i" 'org-complete)
;; The following line is necessary under Suse GNU/Linux ;; The following line is necessary under Suse GNU/Linux
(unless (featurep 'xemacs) (unless (featurep 'xemacs)
@ -17370,8 +17470,9 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
(define-key org-mode-map "\C-c\C-a" 'show-all) ; in case allout messed up. (define-key org-mode-map "\C-c\C-a" 'show-all) ; in case allout messed up.
(define-key org-mode-map "\C-c\C-r" 'org-reveal) (define-key org-mode-map "\C-c\C-r" 'org-reveal)
(define-key org-mode-map "\C-xns" 'org-narrow-to-subtree) (define-key org-mode-map "\C-xns" 'org-narrow-to-subtree)
(define-key org-mode-map "\C-c$" 'org-archive-subtree) (define-key org-mode-map "\C-c\C-x\C-s" 'org-archive-subtree)
(define-key org-mode-map "\C-c\C-x\C-a" 'org-toggle-archive-tag) (define-key org-mode-map "\C-c\C-x\C-a" 'org-toggle-archive-tag)
(define-key org-mode-map "\C-c$" 'org-archive-subtree)
(define-key org-mode-map "\C-c\C-xb" 'org-tree-to-indirect-buffer) (define-key org-mode-map "\C-c\C-xb" 'org-tree-to-indirect-buffer)
(define-key org-mode-map "\C-c\C-j" 'org-goto) (define-key org-mode-map "\C-c\C-j" 'org-goto)
(define-key org-mode-map "\C-c\C-t" 'org-todo) (define-key org-mode-map "\C-c\C-t" 'org-todo)
@ -17396,6 +17497,7 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
(define-key org-mode-map "\C-c>" 'org-goto-calendar) (define-key org-mode-map "\C-c>" 'org-goto-calendar)
(define-key org-mode-map "\C-c<" 'org-date-from-calendar) (define-key org-mode-map "\C-c<" 'org-date-from-calendar)
(define-key org-mode-map [(control ?,)] 'org-cycle-agenda-files) (define-key org-mode-map [(control ?,)] 'org-cycle-agenda-files)
(define-key org-mode-map [(control ?\')] 'org-cycle-agenda-files)
(define-key org-mode-map "\C-c[" 'org-agenda-file-to-front) (define-key org-mode-map "\C-c[" 'org-agenda-file-to-front)
(define-key org-mode-map "\C-c]" 'org-remove-file) (define-key org-mode-map "\C-c]" 'org-remove-file)
(define-key org-mode-map "\C-c-" 'org-table-insert-hline) (define-key org-mode-map "\C-c-" 'org-table-insert-hline)
@ -17403,7 +17505,7 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
(define-key org-mode-map "\C-c\C-c" 'org-ctrl-c-ctrl-c) (define-key org-mode-map "\C-c\C-c" 'org-ctrl-c-ctrl-c)
(define-key org-mode-map "\C-c#" 'org-update-checkbox-count) (define-key org-mode-map "\C-c#" 'org-update-checkbox-count)
(define-key org-mode-map "\C-m" 'org-return) (define-key org-mode-map "\C-m" 'org-return)
(define-key org-mode-map "\C-c?" 'org-table-current-column) (define-key org-mode-map "\C-c?" 'org-table-field-info)
(define-key org-mode-map "\C-c " 'org-table-blank-field) (define-key org-mode-map "\C-c " 'org-table-blank-field)
(define-key org-mode-map "\C-c+" 'org-table-sum) (define-key org-mode-map "\C-c+" 'org-table-sum)
(define-key org-mode-map "\C-c=" 'org-table-eval-formula) (define-key org-mode-map "\C-c=" 'org-table-eval-formula)
@ -18519,6 +18621,14 @@ Show the heading too, if it is currently invisible."
;;;; Experimental code ;;;; Experimental code
(defcustom org-allow-auto-repeat t
"Non-nil means, find REPEAT cookies in entries and apply them.
A repeat cookie looks like REPEAT(+1m) and causes deadlines and schedules
to repeat themselves shifted by a certain amount of time, each time an
entry is marked DONE."
:group 'org???
:type 'boolean)
(defun org-auto-repeat-maybe () (defun org-auto-repeat-maybe ()
"Check if the current headline contains a REPEAT key. "Check if the current headline contains a REPEAT key.
If yes, set TODO state back to what it was and change any SCHEDULED If yes, set TODO state back to what it was and change any SCHEDULED
@ -18534,6 +18644,10 @@ This function should be run in the `org-after-todo-state-change-hook'."
(org-todo (if (eq 'org-todo-interpretation 'type) (org-todo (if (eq 'org-todo-interpretation 'type)
last-state last-state
(car org-todo-keywords))) (car org-todo-keywords)))
(unless (memq 'org-add-log-note (default-value 'post-command-hook))
;; Make sure a note is taken
(let ((org-log-done '(done)))
(org-add-log-maybe 'done org-done-string 'findpos)))
(org-back-to-heading t) (org-back-to-heading t)
(org-add-planning-info nil nil 'closed) (org-add-planning-info nil nil 'closed)
(setq re (concat "\\(" org-scheduled-time-regexp "\\)\\|\\(" (setq re (concat "\\(" org-scheduled-time-regexp "\\)\\|\\("
@ -18549,7 +18663,8 @@ This function should be run in the `org-after-todo-state-change-hook'."
(if (equal what "w") (setq n (* n 7) what "d")) (if (equal what "w") (setq n (* n 7) what "d"))
(org-timestamp-change n (cdr (assoc what whata)))) (org-timestamp-change n (cdr (assoc what whata))))
(setq msg (concat msg type org-last-changed-timestamp " "))) (setq msg (concat msg type org-last-changed-timestamp " ")))
(message msg) (sit-for 1)))) (setq org-log-post-message msg)
(message msg))))
;;;; Finish up ;;;; Finish up
@ -18559,3 +18674,4 @@ This function should be run in the `org-after-todo-state-change-hook'."
;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd ;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
;;; org.el ends here ;;; org.el ends here

BIN
org.pdf

Binary file not shown.

133
org.texi
View File

@ -3,8 +3,8 @@
@setfilename ../info/org @setfilename ../info/org
@settitle Org Mode Manual @settitle Org Mode Manual
@set VERSION 4.60 @set VERSION 4.61
@set DATE December 2006 @set DATE January 2007
@dircategory Emacs @dircategory Emacs
@direntry @direntry
@ -171,6 +171,7 @@ Timestamps
* Time stamps:: Assigning a time to a tree entry * Time stamps:: Assigning a time to a tree entry
* Creating timestamps:: Commands which insert timestamps * Creating timestamps:: Commands which insert timestamps
* Custom time format:: If you cannot work with the ISO format * Custom time format:: If you cannot work with the ISO format
* Repeating items::
* Progress logging:: Documenting when what work was done. * Progress logging:: Documenting when what work was done.
Creating timestamps Creating timestamps
@ -845,12 +846,12 @@ different location, either in the current file, or even in a different
file, the archive file. file, the archive file.
@table @kbd @table @kbd
@kindex C-c $ @kindex C-c C-x C-s
@item C-c $ @item C-c C-x C-s
Archive the subtree starting at the cursor position to the location Archive the subtree starting at the cursor position to the location
given by @code{org-archive-location}. given by @code{org-archive-location}.
@kindex C-u C-c $ @kindex C-u C-c C-x C-s
@item C-u C-c $ @item C-u C-c C-x C-s
Check if any direct children of the current headline could be moved to Check if any direct children of the current headline could be moved to
the archive. To do this, each subtree is checked for open TODO entries. the archive. To do this, each subtree is checked for open TODO entries.
If none are found, the command offers to move it to the archive If none are found, the command offers to move it to the archive
@ -863,7 +864,17 @@ The default archive location is a file in the same directory as the
current file, with the name derived by appending @file{_archive} to the current file, with the name derived by appending @file{_archive} to the
current file name. For information and examples on how to change this, current file name. For information and examples on how to change this,
see the documentation string of the variable see the documentation string of the variable
@code{org-archive-location}. @code{org-archive-location}. There is also an in-buffer option for
setting this variable, for example
@example
#+ARCHIVE: %s_done::
@end example
@noindent
You may have several such lines in the buffer, they will then be valid
for the entries following the line (the first will also apply to any
text before it).
@node Sparse trees, Plain lists, Archiving, Document structure @node Sparse trees, Plain lists, Archiving, Document structure
@section Sparse trees @section Sparse trees
@ -1214,7 +1225,8 @@ result.
@kindex C-c ' @kindex C-c '
@item C-c ' @item C-c '
Edit all formulas associated with the current table in a separate Edit all formulas associated with the current table in a separate
buffer. buffer. Use @kbd{C-u C-u C-c =} to edit the formula directly in the
current field, to allow checking complex references with @kbd{C-c ?}.
@kindex C-c * @kindex C-c *
@item C-c * @item C-c *
@ -1232,8 +1244,9 @@ region, change all marks in the region.
@kindex C-c ? @kindex C-c ?
@item C-c ? @item C-c ?
Which table column is the cursor in? Displays number >0 in echo Display line and column number of current field in echo area. If the
area. cursor is currently editing a formula, the field or range referenced by
the expression at point will be highlighted.
@cindex region, active @cindex region, active
@cindex active region @cindex active region
@ -2540,6 +2553,7 @@ planning.
* Time stamps:: Assigning a time to a tree entry * Time stamps:: Assigning a time to a tree entry
* Creating timestamps:: Commands which insert timestamps * Creating timestamps:: Commands which insert timestamps
* Custom time format:: If you cannot work with the ISO format * Custom time format:: If you cannot work with the ISO format
* Repeating items:: Deadlines that come back again and again
* Progress logging:: Documenting when what work was done. * Progress logging:: Documenting when what work was done.
@end menu @end menu
@ -2802,7 +2816,7 @@ One month back.
Choose date in calendar (only if nothing was typed into minibuffer). Choose date in calendar (only if nothing was typed into minibuffer).
@end table @end table
@node Custom time format, Progress logging, Creating timestamps, Timestamps @node Custom time format, Repeating items, Creating timestamps, Timestamps
@section Custom time format @section Custom time format
@cindex custom date/time format @cindex custom date/time format
@cindex time format, custom @cindex time format, custom
@ -2845,7 +2859,48 @@ using dates in tables, table alignment will be messed up. If the custom
format is shorter, things do work as expected. format is shorter, things do work as expected.
@end itemize @end itemize
@node Progress logging, , Custom time format, Timestamps @node Repeating items, Progress logging, Custom time format, Timestamps
@section Repeating items
@cindex TODO items, repeating
@cindex Deadlines, repeating
@cindex Scheduling, repeating
Org-mode integrates with the Emacs calendar and diary to display cyclic
appointments, anniversaries and other special entries in the agenda
(@pxref{Weekly/Daily agenda}). However, it can be useful to have
certain deadlines and scheduling items to auto-repeat. The advantage of
a deadline or scheduled item is that the they produce warnings ahead of
time and automatically forward themselves in the agenda until they are
done. The abstract difference is therefore between cyclic
@i{appointments} and cyclic @i{action items}. For appointments you
should use the diary, for actions you can uses an org-mode deadline or
scheduling time stamp together with a REPEAT cookie. For example:
@example
* TODO Replace batteries in smoke detector REPEAT(+18m)
SCHEDULED: <2007-01-01 Mon>
* TODO Get dentist appointment REPEAT(+6m)
SCHEDULED: <2006-12-19 Tue>
* TODO Tax report to IRS REPEAT(+1y)
DEADLINE: <2007-04-01 Sun>
@end example
Each time you try to mark one of these entries DONE using @kbd{C-c C-t},
they will automatically switch back to the state TODO, and the
deadline/scheduling will be shifted accordingly. The time units
recognized by org-mode are year (y), month (m), week (w), and day (d).
Org-mode will also prompt you for a note and record the fact that you
have closed this item in a note under the headline.
One unusual property of these repeating items is that only one instance
of each exist at any given time. So if you look back or ahead in the
agenda, you will not find past and future instances, only the current
one will show up. Use a cyclic diary entry if you need all past and
future instances to be visible in the angenda.
@node Progress logging, , Repeating items, Timestamps
@section Progress Logging @section Progress Logging
@cindex progress logging @cindex progress logging
@cindex logging, of progress @cindex logging, of progress
@ -3004,29 +3059,6 @@ The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
the agenda (@pxref{Weekly/Daily agenda}) to show which tasks have been the agenda (@pxref{Weekly/Daily agenda}) to show which tasks have been
worked on or closed during a day. worked on or closed during a day.
@c @node Self-repeating deadlines
@c @section Self-repeating deadlines
@c
@c Org-mode integrates with the Emacs calendar and diary to display cyclic
@c appointments and anniversaries in the agenda (@pxref{The weekly/daily
@c agenda}). However, it can be useful to have certain deadlines and
@c scheduling items to auto-repeat. The advantage of a deadline or
@c scheduled item is that the they produce warnings ahead of time and
@c automatically forward themselves in the agenda until they are done. The
@c abstract difference is therefore between cyclic @i{appointments} and
@c cyclic @i{action items}. For appointments you should use the diary, for
@c actions you can uses an org-mode deadline or scheduling time stamp
@c together with a REPEAT cookie. For example:
@c
@c @example
@c * TODO Income tax to IRS REPEAT(+1y)
@c DEADLINE: <2006-12-19 Tue>
@c @end example
@c
@c Each time you try to mark this entry DONE using @kbd{C-c C-t}, it will
@c automatically switch back to the state TODO, and the deadline will be
@c shifted by 1 year.
@node Tags, Agenda views, Timestamps, Top @node Tags, Agenda views, Timestamps, Top
@chapter Tags @chapter Tags
@cindex tags @cindex tags
@ -5352,7 +5384,12 @@ These lines (several are allowed) specify link abbreviations.
@item #+CATEGORY: @item #+CATEGORY:
This line sets the category for the agenda file. The category applies This line sets the category for the agenda file. The category applies
for all subsequent lines until the next @samp{#+CATEGORY} line, or the for all subsequent lines until the next @samp{#+CATEGORY} line, or the
end of the file. end of the file. The first such line also applies to any entries before it.
@item #+ARCHIVE: %s_done::
This line sets the archive location for the agenda file. It applies for
all subsequent lines until the next @samp{#+CATEGORY} line, or the end
of the file. The first such line also applies to any entries before it.
The correspoinding variable is @code{org-archive-location}.
@item #+TBLFM: @item #+TBLFM:
This line contains the formulas for the table directly above the line. This line contains the formulas for the table directly above the line.
@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS: @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS:
@ -5715,9 +5752,13 @@ caused by the preparations for the 22.1 release. In the mean time,
A blogging plug-in for @file{org-publish.el}.@* A blogging plug-in for @file{org-publish.el}.@*
@url{http://dto.freeshell.org/notebook/OrgMode.html}. @url{http://dto.freeshell.org/notebook/OrgMode.html}.
@cindex @file{blorg.el} @cindex @file{blorg.el}
@item @file{blorg.el} by Bastien Guerry @item @file{blorg.el} by Bastien Guerry
Publish Org-mode files as Publish Org-mode files as
blogs. @url{http://www.cognition.ens.fr/~guerry/blorg.html}. blogs. @url{http://www.cognition.ens.fr/~guerry/blorg.html}.
@cindex @file{org2rem.el}
@item @file{org2rem.el} by Bastien Guerry
Translates Org-mode files into something readable by
Remind. @url{http://www.cognition.ens.fr/~guerry/u/org2rem.el}.
@end table @end table
@node Dynamic blocks, Special agenda views, Extensions, Extensions and Hacking @node Dynamic blocks, Special agenda views, Extensions, Extensions and Hacking
@ -5853,11 +5894,11 @@ into a notes file.
Since the first release, hundreds of emails to me or on Since the first release, hundreds of emails to me or on
@code{emacs-orgmode@@gnu.org} have provided a constant stream of bug @code{emacs-orgmode@@gnu.org} have provided a constant stream of bug
reports, feedback, new ideas, and sometimes even patches and add-on reports, feedback, new ideas, and sometimes patches and add-on code.
code. Many thanks to everyone who has helped to improve this package. Many thanks to everyone who has helped to improve this package. I am
I am trying to keep here a list of the people who had significant trying to keep here a list of the people who had significant influence
influence in shaping one or more aspects of Org-mode. The list may not in shaping one or more aspects of Org-mode. The list may not be
be complete, if I have forgotten someone, please accept my apologies and complete, if I have forgotten someone, please accept my apologies and
let me know. let me know.
@itemize @bullet @itemize @bullet
@ -5894,10 +5935,13 @@ around a match in a hidden outline tree.
@item @item
@i{Niels Giessen} had the idea to automatically archive DONE trees. @i{Niels Giessen} had the idea to automatically archive DONE trees.
@item @item
@i{Bastien Guerry} provided extensive feedback. @i{Bastien Guerry} provided extensive feedback and some patches, and
translated David O'Toole's tutorial into French.
@item @item
@i{Kai Grossjohann} pointed out key-binding conflicts with other packages. @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
@item @item
@i{Shidai Liu} (``Leo'') provided extensive feedback and some patches.
@item
@i{Leon Liu} asked for embedded LaTeX and tested it. @i{Leon Liu} asked for embedded LaTeX and tested it.
@item @item
@i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
@ -5908,6 +5952,9 @@ happy.
@i{Tim O'Callaghan} suggested in-file links, search options for general @i{Tim O'Callaghan} suggested in-file links, search options for general
file links, and TAGS. file links, and TAGS.
@item @item
@i{Takeshi Okano} translated the manual and David O'Toole's tutorial
into Japanese.
@item
@i{Oliver Oppitz} suggested multi-state TODO items. @i{Oliver Oppitz} suggested multi-state TODO items.
@item @item
@i{Scott Otterson} sparked the introduction of descriptive text for @i{Scott Otterson} sparked the introduction of descriptive text for

Binary file not shown.

View File

@ -1,5 +1,5 @@
% Reference Card for Org Mode % Reference Card for Org Mode
\def\orgversionnumber{4.60} \def\orgversionnumber{4.61}
\def\year{2006} \def\year{2006}
% %
%**start of header %**start of header
@ -317,8 +317,8 @@ are preserved on all copies.
\key{toggle ARCHIVE tag}{C-c C-x C-a} \key{toggle ARCHIVE tag}{C-c C-x C-a}
\metax{mark fully done children}{C-u C-c C-x C-a} \metax{mark fully done children}{C-u C-c C-x C-a}
\key{force cycling of an ARCHIVEd tree}{C-TAB} \key{force cycling of an ARCHIVEd tree}{C-TAB}
\key{move subtree to archive file}{C-c \$} \key{move subtree to archive file}{C-c C-x C-s}
\key{move all fully done children}{C-u C-c \$} \key{move all fully done children}{C-u C-c C-x C-s}
To set archive location for current file, add a line like$^2$: To set archive location for current file, add a line like$^2$:
\vskip -1mm \vskip -1mm
\beginexample% \beginexample%
@ -391,7 +391,7 @@ Outside of tables, the same keys may have other functionality.
\key{rotate calculation mark through \# * ! \^ \_ \$}{C-\#} \key{rotate calculation mark through \# * ! \^ \_ \$}{C-\#}
\key{display column number cursor is in}{C-c ?} \key{show line, column, formula reference}{C-c ?}
\key{sum numbers in current column/rectangle}{C-c +} \key{sum numbers in current column/rectangle}{C-c +}
\key{copy down with increment}{S-RET$^3$} \key{copy down with increment}{S-RET$^3$}
@ -566,7 +566,7 @@ after ``{\tt :}'', and dictionary words elsewhere.
\key{add/move current file to front of agenda}{C-c [} \key{add/move current file to front of agenda}{C-c [}
\key{remove current file from your agenda}{C-c ]} \key{remove current file from your agenda}{C-c ]}
\key{cycle through agenda file list}{C-,} \key{cycle through agenda file list}{C-'}
\key{compile agenda for the current week}{C-c a a$^1$} \key{compile agenda for the current week}{C-c a a$^1$}
\key{compile global TODO list}{C-c a t$^1$} \key{compile global TODO list}{C-c a t$^1$}