]> code.delx.au - gnu-emacs/blob - man/org.texi
Structure editing): DOcument new fucntionality of
[gnu-emacs] / man / org.texi
1 \input texinfo
2 @c %**start of header
3 @c @setfilename org
4 @setfilename ../info/org
5 @settitle Org Mode Manual
6
7 @set VERSION 3.23
8 @set DATE December 2005
9
10 @dircategory Emacs
11 @direntry
12 * Org Mode: (org). Outline-based notes management and organizer
13 @end direntry
14
15 @c Version and Contact Info
16 @set MAINTAINERSITE @uref{http://www.astro.uva.nl/~dominik/Tools/org/,maintainers webpage}
17 @set MAINTAINER Carsten Dominik
18 @set MAINTAINEREMAIL @email{dominik@@science.uva.nl}
19 @set MAINTAINERCONTACT @uref{mailto:dominik@@science.uva.nl,contact the maintainer}
20 @c %**end of header
21 @finalout
22
23 @c Macro definitions
24
25 @c Subheadings inside a table. Need a difference between info and the rest.
26 @macro tsubheading{text}
27 @ifinfo
28 @subsubheading \text\
29 @end ifinfo
30 @ifnotinfo
31 @item @b{\text\}
32 @end ifnotinfo
33 @end macro
34
35 @copying
36 This manual is for Org-mode (version @value{VERSION}).
37
38 Copyright @copyright{} 2004, 2005 Free Software Foundation
39
40 @quotation
41 Permission is granted to copy, distribute and/or modify this document
42 under the terms of the GNU Free Documentation License, Version 1.1 or
43 any later version published by the Free Software Foundation; with no
44 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
45 and with the Back-Cover Texts as in (a) below. A copy of the
46 license is included in the section entitled ``GNU Free Documentation
47 License.''
48
49 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
50 this GNU Manual, like GNU software. Copies published by the Free
51 Software Foundation raise funds for GNU development.''
52 @end quotation
53 @end copying
54
55 @titlepage
56 @title Org Mode Manual
57
58 @subtitle Release @value{VERSION}
59 @author by Carsten Dominik
60
61 @c The following two commands start the copyright page.
62 @page
63 @vskip 0pt plus 1filll
64 @insertcopying
65 @end titlepage
66
67 @c Output the table of contents at the beginning.
68 @contents
69
70 @ifnottex
71 @node Top, Introduction, (dir), (dir)
72 @top Org Mode Manual
73
74 @insertcopying
75 @end ifnottex
76
77 @menu
78 * Introduction:: Getting started
79 * Document Structure:: A tree works like your brain
80 * Tables:: Pure magic for quick formatting
81 * Hyperlinks:: Notes in context
82 * TODO items:: Every tree branch can be a TODO item
83 * Timestamps:: Assign date and time to items
84 * Timeline and Agenda:: Use time-stamped items to produce an agenda
85 * Exporting:: Sharing and publishing of notes
86 * Miscellaneous:: All the rest which did not fit elsewhere
87 * Index:: The fast road to specific information
88 * Key Index:: Key bindings and where they are described
89
90 @detailmenu
91 --- The Detailed Node Listing ---
92
93 Introduction
94
95 * Summary:: Brief summary of what Org-mode does
96 * Installation and Activation:: How to install Org-mode
97 * Feedback:: Bug reports, ideas, patches etc.
98
99 Document Structure
100
101 * Outlines:: Org-mode is based on outline-mode
102 * Headlines:: How to typeset org-tree headlines
103 * Visibility cycling:: Show and hide, much simplified
104 * Motion:: Jumping to other headlines
105 * Structure editing:: Changing sequence and level of headlines
106 * Archiving:: Move done task trees to a different place
107 * Sparse trees:: Matches embedded in context
108 * Plain Lists:: Editing hand-formatted lists
109
110 Tables
111
112 * Built-in table editor:: Simple tables
113 * Table calculations:: Compute a field from other fields
114 * orgtbl-mode:: The table editor as minor mode
115 * table.el:: Complex tables
116
117 Calculations in tables
118
119 * Formula syntax:: How to write a formula
120 * Column formulas:: Formulas valid for all fields in a column
121 * Advanced features:: Field names, parameters and automatic recalc
122 * Named-field formulas:: Formulas valid in single fields
123 * Editing/debugging formulas:: Changing a stored formula
124 * Appetizer:: Taste the power of calc
125
126 Hyperlinks
127
128 * Internal Links:: CamelCaseWords as internal links
129 * External Links:: URL-like links to the world
130 * Managing links:: Creating, inserting and following
131 * Search Options:: Linking to a specific location
132 * Remember:: Org-trees store quick notes
133
134 TODO items
135
136 * TODO basics:: Marking and displaying TODO entries
137 * TODO extensions:: Workflow and assignments
138 * Priorities:: Some things are more important than others
139
140 Extended use of TODO keywords
141
142 * Workflow states:: From TODO to DONE in steps
143 * TODO types:: I do this, Fred the rest
144 * Per file keywords:: Different files, different requirements
145
146 Timestamps
147
148 * Time stamps:: Assigning a time to a tree entry
149 * Creating timestamps:: Commands which insert timestamps
150
151 Timeline and Agenda
152
153 * Timeline:: Time-sorted view for single file
154 * Agenda:: Your weekly planner
155 * Agenda commands:: Remote editing of org trees
156 * Calendar/Diary integration:: Integrating Anniversaries and more
157
158 Calendar/Diary integration
159
160 * Diary to agenda:: Agenda incorporates the diary
161 * Agenda to diary:: Diary incorporates the agenda
162
163 Exporting
164
165 * ASCII export:: Export as a structured ASCII file
166 * HTML export:: Export as an HTML file
167 * iCalendar export:: Create calendar entries.
168
169 HTML export
170
171 * HTML formatting:: Interpretation of the buffer content
172 * Export options:: How to influence exports
173 * Comment lines:: Lines which will not be exported
174
175 Miscellaneous
176
177 * Completion:: M-TAB knows what you need
178 * Customization:: Adapting Org-mode to your taste
179 * FAQ:: Frequently asked questions
180 * Interaction:: Other Emacs packages
181 * TTY keys:: Using Org-mode on a tty
182 * Bugs:: Things which do not work perfectly
183 * Acknowledgments:: These people provided feedback and more
184
185 @end detailmenu
186 @end menu
187
188 @node Introduction, Document Structure, Top, Top
189 @chapter Introduction
190 @cindex introduction
191
192 @menu
193 * Summary:: Brief summary of what Org-mode does
194 * Installation and Activation:: How to install Org-mode
195 * Feedback:: Bug reports, ideas, patches etc.
196 @end menu
197
198 @node Summary, Installation and Activation, Introduction, Introduction
199 @section Summary
200 @cindex summary
201
202 Org-mode is a mode for keeping notes, maintaining ToDo lists, and doing
203 project planning with a fast and effective plain-text system.
204
205 Org-mode develops organizational tasks around NOTES files that contain
206 information about projects as plain text. Org-mode is implemented on
207 top of outline-mode, which makes it possible to keep the content of
208 large files well structured. Visibility cycling and structure editing
209 help to work with the tree. Tables are easily created with a built-in
210 table editor. Org-mode supports ToDo items, deadlines, time stamps,
211 and scheduling. It dynamically compiles entries into an agenda that
212 utilizes and smoothly integrates much of the Emacs calendar and diary.
213 Plain text URL-like links connect to websites, emails, Usenet
214 messages, BBDB entries, and any files related to the projects. For
215 printing and sharing of notes, an Org-mode file can be exported as a
216 structured ASCII file, as HTML, or (todo and agenda items only) as an
217 iCalendar file.
218
219 Org-mode keeps simple things simple. When first fired up, it should
220 feel like a simple but easy to use outliner. Complexity is not
221 imposed, but a large amount of functionality is available when you
222 need it. Org-mode can be used on different levels and in different
223 ways, for example
224
225 @example
226 @r{@bullet{} as an outline extension with visibility cycling and structure editing}
227 @r{@bullet{} as an ASCII system and table editor to take structured notes}
228 @r{@bullet{} as an ASCII table editor with spreadsheet-like capabilities}
229 @r{@bullet{} as a simple hypertext system, with HTML export}
230 @r{@bullet{} as a TODO list editor}
231 @r{@bullet{} as a full agenda and planner with deadlines and work scheduling}
232 @end example
233
234 The Org-mode table editor can be integrated into any major mode by
235 activating the minor Orgtbl-mode.
236
237 There is a website for Org-mode which provides links to the newest
238 version of Org-mode, as well as additional information, screen shots
239 and example files. This page is located at
240 @uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
241
242 @page
243
244 @node Installation and Activation, Feedback, Summary, Introduction
245 @section Installation and Activation
246 @cindex installation
247 @cindex autoload
248 @cindex global keybindings
249 @cindex keybindings, global
250
251 If Org-mode is part of the Emacs distribution or an XEmacs package,
252 you only need to copy the following lines to your @file{.emacs} file.
253 The last three lines define @emph{global} keys for the commands
254 @command{org-store-link}, @command{org-agenda}, and
255 @code{org-todo-list} - please choose suitable keys yourself.
256
257 @lisp
258 ;; The following lines are always needed. Choose your own keys.
259 (add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
260 (define-key global-map "\C-cl" 'org-store-link)
261 (define-key global-map "\C-ca" 'org-agenda)
262 (define-key global-map "\C-ct" 'org-todo-list)
263 @end lisp
264
265 If you have downloaded Org-mode from the Web, you must byte-compile
266 @file{org.el} and put it on your load path. In addition to the Emacs
267 Lisp lines above, you also need to add the following lines to
268 @file{.emacs}:
269
270 @lisp
271 ;; These lines only if org-mode is not part of the X/Emacs distribution.
272 (autoload 'org-mode "org" "Org mode" t)
273 (autoload 'org-diary "org" "Diary entries from Org mode")
274 (autoload 'org-agenda "org" "Multi-file agenda from Org mode" t)
275 (autoload 'org-todo-list "org" "Global TODO list from Org mode" t)
276 (autoload 'org-store-link "org" "Store a link to the current location" t)
277 (autoload 'orgtbl-mode "org" "Org tables as a minor mode" t)
278 (autoload 'turn-on-orgtbl "org" "Org tables as a minor mode")
279 @end lisp
280
281 @cindex org-mode, turning on
282 With this setup, all files with extension @samp{.org} will be put into
283 Org-mode. As an alternative, make the first line of a file look like
284 this:
285
286 @example
287 MY PROJECTS -*- mode: org; -*-
288 @end example
289
290 @noindent which will select Org-mode for this buffer no matter what
291 the file's name is. See also the variable
292 @code{org-insert-mode-line-in-empty-file'}.
293
294 @node Feedback, , Installation and Activation, Introduction
295 @section Feedback
296 @cindex feedback
297 @cindex bug reports
298 @cindex maintainer
299 @cindex author
300
301 If you find problems with Org-mode, or if you have questions, remarks,
302 or ideas about it, please contact the maintainer Carsten Dominik at
303 @value{MAINTAINEREMAIL}.
304
305 For bug reports, please provide as much information as possible,
306 including the version information of Emacs (@kbd{C-h v emacs-version
307 @key{RET}}) and Org-mode (@kbd{M-x org-version}), as well as the
308 Org-mode related setup in @file{.emacs}. If an error occurs, a
309 traceback can be very useful. Often a small example file helps, along
310 with clear information about:
311 @enumerate
312 @item What exactly did you do?
313 @item What did you expect to happen?
314 @item What happened instead?
315 @end enumerate
316 @noindent Thanks for helping to improve this mode.
317
318 @node Document Structure, Tables, Introduction, Top
319 @chapter Document Structure
320 @cindex document structure
321 @cindex structure of document
322
323 Org-mode is based on outline mode and provides flexible commands to
324 edit the structure of the document.
325
326 @menu
327 * Outlines:: Org-mode is based on outline-mode
328 * Headlines:: How to typeset org-tree headlines
329 * Visibility cycling:: Show and hide, much simplified
330 * Motion:: Jumping to other headlines
331 * Structure editing:: Changing sequence and level of headlines
332 * Archiving:: Move done task trees to a different place
333 * Sparse trees:: Matches embedded in context
334 * Plain Lists:: Editing hand-formatted lists
335 @end menu
336
337 @node Outlines, Headlines, Document Structure, Document Structure
338 @section Outlines
339 @cindex outlines
340 @cindex outline-mode
341
342 Org-mode is implemented on top of outline-mode. Outlines allow to
343 organize a document in a hierarchical structure, which (at least for
344 me) is the best representation of notes and thoughts. Overview over
345 this structure is achieved by folding (hiding) large parts of the
346 document to show only the general document structure and the parts
347 currently being worked on. Org-mode greatly simplifies the use of
348 outlines by compressing the entire show/hide functionality into a
349 single command @command{org-cycle}, which is bound to the @key{TAB}
350 key.
351
352 @node Headlines, Visibility cycling, Outlines, Document Structure
353 @section Headlines
354 @cindex headlines
355 @cindex outline tree
356
357 Headlines define the structure of an outline tree. The Headlines in
358 Org-mode start with one or more stars, on the left margin. For
359 example
360
361 @example
362 * Top level headline
363 ** Second level
364 *** 3rd level
365 some text
366 *** 3rd level
367 more text
368 * Another top level headline
369 @end example
370
371 @node Visibility cycling, Motion, Headlines, Document Structure
372 @section Visibility cycling
373 @cindex visibility cycling
374 @cindex trees, visibility
375
376 Outlines make it possible to hide parts of the text in the buffer.
377 Org-mode uses a single command bound to the @key{TAB} key to change
378 the visibility in the buffer.
379
380 @cindex subtree visibility states
381 @cindex folded, subtree visibility state
382 @cindex children, subtree visibility state
383 @cindex subtree, subtree visibility state
384 @table @kbd
385 @kindex @key{TAB}
386 @item @key{TAB}
387 Rotate current subtree between the states
388 @example
389 ,-> FOLDED -> CHILDREN -> SUBTREE --.
390 '-----------------------------------'
391 @end example
392 At the beginning of the buffer (or when called with @kbd{C-u}), this does
393 the same as the command @kbd{S-@key{TAB}} below.
394
395 @cindex global visibility states
396 @cindex overview, global visibility state
397 @cindex contents, global visibility state
398 @cindex show all, global visibility state
399 @kindex S-@key{TAB}
400 @item S-@key{TAB}
401 Rotate the entire buffer between the states
402 @example
403 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
404 '--------------------------------------'
405 @end example
406 Note that inside tables, @kbd{S-@key{TAB}} jumps to the previous field.
407
408 @cindex show all, command
409 @kindex C-c C-a
410 @item C-c C-a
411 Show all.
412 @end table
413
414 When Emacs first visits an Org-mode file, the global state is set to
415 OVERVIEW, i.e. only the top level headlines are visible. This can be
416 configured through the variable @code{org-startup-folded}, or on a
417 per-file basis by adding one of the following lines anywhere in the
418 buffer:
419
420 @example
421 #+STARTUP: fold
422 #+STARTUP: nofold
423 #+STARTUP: content
424 @end example
425
426 @node Motion, Structure editing, Visibility cycling, Document Structure
427 @section Motion
428 @cindex motion, between headlines
429 @cindex jumping, to headlines
430 The following commands jump to other headlines in the buffer.
431
432 @table @kbd
433 @kindex C-c C-n
434 @item C-c C-n
435 Next heading.
436 @kindex C-c C-p
437 @item C-c C-p
438 Previous heading.
439 @kindex C-c C-f
440 @item C-c C-f
441 Next heading same level.
442 @kindex C-c C-b
443 @item C-c C-b
444 Previous heading same level.
445 @kindex C-c C-u
446 @item C-c C-u
447 Backward to higher level heading.
448 @kindex C-c C-j
449 @item C-c C-j
450 Jump to a different place without changing the current outline
451 visibility. Shows the document structure in a temporary buffer, where
452 you can use visibility cycling (@key{TAB}) to find your destination.
453 After pressing @key{RET}, the cursor moves to the selected location in
454 the original buffer, and the headings hierarchy above it is made
455 visible.
456 @end table
457
458 @node Structure editing, Archiving, Motion, Document Structure
459 @section Structure editing
460 @cindex structure editing
461 @cindex headline, promotion and demotion
462 @cindex promotion, of subtrees
463 @cindex demotion, of subtrees
464 @cindex subtree, cut and paste
465 @cindex pasting, of subtrees
466 @cindex cutting, of subtrees
467 @cindex copying, of subtrees
468
469 @table @kbd
470 @kindex M-@key{RET}
471 @item M-@key{RET}
472 Insert new heading with same level as current. If the cursor is in a
473 plain list item, a new item is created. To force creation of a new
474 headline, use a prefix arg, or first press @key{RET} to get to the
475 beginning of the next line.
476 @kindex M-S-@key{RET}
477 @item M-S-@key{RET}
478 Insert new TODO entry with same level as current heading.
479 @kindex M-@key{left}
480 @item M-@key{left}
481 Promote current heading by one level
482 @kindex M-@key{right}
483 @item M-@key{right}
484 Demote current heading by one level
485 @kindex M-S-@key{left}
486 @item M-S-@key{left}
487 Promote the current subtree by one level
488 @kindex M-S-@key{right}
489 @item M-S-@key{right}
490 Demote the current subtree by one level
491 @kindex M-S-@key{up}
492 @item M-S-@key{up}
493 Move subtree up (swap with previous subtree of same
494 level)
495 @kindex M-S-@key{down}
496 @item M-S-@key{down}
497 Move subtree down (swap with next subtree of same level)
498 @kindex C-c C-x C-w
499 @item C-c C-x C-w
500 Kill subtree, i.e. remove it from buffer but save in kill ring.
501 @kindex C-c C-x M-w
502 @item C-c C-x M-w
503 Copy subtree to kill ring.
504 @kindex C-c C-x C-y
505 @item C-c C-x C-y
506 Yank subtree from kill ring. This does modify the level of the subtree to
507 make sure the tree fits in nicely at the yank position. The yank
508 level can also be specified with a prefix arg, or by yanking after a
509 headline marker like @samp{****}.
510 @end table
511
512 @cindex region, active
513 @cindex active region
514 @cindex transient-mark-mode
515 When there is an active region (transient-mark-mode), promotion and
516 demotion work on all headlines in the region. To select a region of
517 headlines, it is best to place both point and mark at the beginning of a
518 line, mark at the beginning of the first headline, and point at the line
519 just after the last headline to change. Note that when the cursor is
520 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
521 functionality.
522
523 @node Archiving, Sparse trees, Structure editing, Document Structure
524 @section Archiving
525 @cindex archiving
526
527 When a project represented by a (sub)tree is finished, you may want
528 to move the tree to an archive place, either in the same file under a
529 special top-level heading, or even to a different file.
530 @table @kbd
531 @kindex C-c $
532 @item @kbd{C-c $}
533 Archive the subtree starting at the cursor position to the location
534 given by @code{org-archive-location}.
535 @end table
536
537 @cindex archive locations
538 The default archive is a file in the same directory as the current
539 file, with the name derived by appending @file{_archive} to the
540 current file name. For information and examples on how to change
541 this, see the documentation string of the variable
542 @code{org-archive-location}. If you are also using the Org-mode
543 agenda, archiving to a different file is a good way to keep archived
544 trees from contributing agenda items.
545
546 @node Sparse trees, Plain Lists, Archiving, Document Structure
547 @section Sparse trees
548 @cindex sparse trees
549 @cindex trees, sparse
550 @cindex folding, sparse trees
551 @cindex occur, command
552
553 An important feature of Org-mode is the ability to construct
554 @emph{sparse trees} for selected information in an outline tree. A
555 sparse tree means that the entire document is folded as much as
556 possible, but the selected information is made visible along with the
557 headline structure above it@footnote{See also the variable
558 @code{org-show-following-heading}.}. Just try it out and you will see
559 immediately how it works.
560
561 Org-mode contains several commands creating such trees. The most
562 basic one is @command{org-occur}:
563
564 @table @kbd
565 @kindex C-c /
566 @item C-c /
567 Occur. Prompts for a regexp and shows a sparse tree with all matches.
568 If the match is in a headline, the headline is made visible. If the
569 match is in the body of an entry, headline and body are made visible.
570 In order to provide minimal context, also the full hierarchy of
571 headlines above the match is shown, as well as the headline following
572 the match. Each match is also highlighted, the highlights disappear
573 when the buffer is changed with an editing command.
574 @end table
575
576 Other commands are using this feature as well. For example @kbd{C-c
577 C-v} creates a sparse TODO tree (@pxref{TODO basics}).
578
579 @kindex C-c C-x v
580 @cindex printing sparse trees
581 @cindex visible text, printing
582 To print a sparse tree, you can use the Emacs command
583 @code{ps-print-buffer-with-faces} which does not print invisible parts
584 of the document @footnote{This does not work under XEmacs, because
585 XEmacs uses selective display for outlining, not text properties}.
586 Or you can use the command @kbd{C-c C-x v} to copy the visible part of
587 the document to another file (extension @file{.txt}) which then can be
588 printed in any desired way.
589
590 @node Plain Lists, , Sparse trees, Document Structure
591 @section Plain Lists
592 @cindex plain lists
593 @cindex lists, plain
594
595 Headlines define the structure of the Org-mode file, and also lists
596 (for example TODO items (@pxref{TODO items}) should be created using
597 headline levels. However, when taking notes, the plain text is
598 sometimes easier to read with hand-formatted lists. Org-mode supports
599 editing such lists, and the HTML exporter (@pxref{Exporting}) does
600 parse and format them.
601
602 Org-mode knows ordered and unordered lists. Unordered list items
603 start with @samp{-}, @samp{+}, or @samp{*}@footnote{When using
604 @samp{*} as a bullet, lines must be indented or they will be seen as
605 top-level headlines.} as bullets. Ordered list items start with
606 @samp{1.} or @samp{1)}. Items belonging to the same list must have
607 the same indentation on the first line. In particular, if an ordered
608 list reaches number @samp{10.}, also the 2--digit numbers must be
609 written left-aligned with the other numbers in the list. Indentation
610 also determines the end of a list item. It ends before the next line
611 that is indented like the bullet/number, or less. For example:
612
613 @example
614 ** Lord of the Rings
615 My favorite scenes are (in this order)
616 1. Eowyns fight with the witch king
617 + this was already my favorite scene in the book
618 + I really like Miranda Otto.
619 2. The attack of the Rohirrim
620 3. Peter Jackson being shot by Legolas
621 - on DVD only
622 He makes a really funny face when it happens.
623 @end example
624
625 Org-mode supports these lists by tuning filling and wrapping commands
626 to correctly deal with them. Futhermore, the following commands act
627 on items when the cursor is in the first line of an item (the line
628 with the bullet or number).
629
630 @table @kbd
631 @kindex @key{TAB}
632 @item @key{TAB}
633 Items can be folded just like headline levels if you set the variable
634 @code{org-cycle-include-plain-lists}. The level of an item is then
635 given by the indentation of the bullet/number. However, items are
636 always subortinate to real headlines, the hierarchies remain
637 completely separated.
638 @kindex M-@key{RET}
639 @item M-@key{RET}
640 Insert new item at current level. With prefix arg, for a new heading.
641 @kindex M-S-@key{up}
642 @kindex M-S-@key{down}
643 @item M-S-@key{up}
644 @itemx M-S-@key{down}
645 Move the item including subitems up/down (swap with previous/next item
646 of same intentation). If the list is ordered, renumbering is
647 automatic.
648 @kindex M-S-@key{left}
649 @kindex M-S-@key{right}
650 @item M-S-@key{left}
651 @itemx M-S-@key{right}
652 Decrease/increase the indentation of the item, including subitems.
653 Initially, the item tree is selected based on current indentation.
654 When these commands are executed several times in direct succession,
655 the initially selected region is used, even if the new indentation
656 would imply a different hierarchy. To use the new hierarchy, break
657 the command chain with a cursor motion or so.
658 @kindex C-c C-c
659 @item C-c C-c
660 Renumber the ordered list at the cursor.
661 @end table
662
663 @node Tables, Hyperlinks, Document Structure, Top
664 @chapter Tables
665 @cindex tables
666
667 Org-mode has a very fast and intuitive table editor built-in.
668 Spreadsheet-like calculations are supported in connection with the
669 Emacs @file{calc} package.
670
671 @menu
672 * Built-in table editor:: Simple tables
673 * Table calculations:: Compute a field from other fields
674 * orgtbl-mode:: The table editor as minor mode
675 * table.el:: Complex tables
676 @end menu
677
678 @node Built-in table editor, Table calculations, Tables, Tables
679 @section The built-in table editor
680 @cindex table editor, builtin
681
682 Org-mode makes it easy to format tables in plain ASCII. Any line with
683 @samp{|} as the first non-white character is considered part of a
684 table. @samp{|} is also the column separator. A table might look
685 like this:
686
687 @example
688 | Name | Phone | Age |
689 |-------+-------+-----|
690 | Peter | 1234 | 17 |
691 | Anna | 4321 | 25 |
692 @end example
693
694 A table is re-aligned automatically each time you press @key{TAB} or
695 @key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
696 the next field (@key{RET} to the next row) and creates new table rows
697 at the end of the table or before horizontal lines. The indentation
698 of the table is set by the first line. Any line starting with
699 @samp{|-} is considered as a horizontal separator line and will be
700 expanded on the next re-align to span the whole table width. So, to
701 create the above table, you would only type
702
703 @example
704 |Name|Phone|Age
705 |-
706 @end example
707 @noindent and then press @key{TAB} to align the table and start filling in
708 fields.
709
710 When typing text into a field, Org-mode treats @key{DEL},
711 @key{Backspace}, and all character keys in a special way, so that
712 inserting and deleting avoids shifting other fields. Also, when
713 typing @emph{immediately after the cursor was moved into a new field
714 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
715 field is automatically made blank. If this behavior is too
716 unpredictable for you, configure the variables
717 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
718
719 @table @kbd
720 @tsubheading{Creation and conversion}
721 @item M-x org-table-create
722 Creates an empty Org-mode table. However, it is much easier to just
723 start typing, like @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}
724
725 @kindex C-c C-c
726 @item C-c C-c
727 Convert region to table. Works when the cursor is not in an existing
728 table, and when there is a region defined. If every line contains at
729 least one TAB character, the function assumes that the material is tab
730 separated. If not, lines are split at whitespace into fields. You
731 can use a prefix argument to indicate how many consecutive spaces are
732 at least required to indicate a field separator (default: just one).
733
734 @tsubheading{Re-aligning and field motion}
735 @kindex C-c C-c
736 @item C-c C-c
737 Re-align the table without moving the cursor.
738
739 @kindex @key{TAB}
740 @item @key{TAB}
741 Re-align the table, move to the next field. Creates a new row if
742 necessary.
743
744 @kindex S-@key{TAB}
745 @item S-@key{TAB}
746 Re-align, move to previous field.
747
748 @kindex @key{RET}
749 @item @key{RET}
750 Re-align the table and move down to next row. Creates a new row if
751 necessary. At the beginning or end of a line, @key{RET} still does
752 NEWLINE, so it can be used to split a table.
753
754 @tsubheading{Column and row editing}
755 @kindex M-@key{left}
756 @kindex M-@key{right}
757 @item M-@key{left}
758 @itemx M-@key{right}
759 Move the current column left/right
760
761 @kindex M-S-@key{left}
762 @item M-S-@key{left}
763 Kill the current column.
764
765 @kindex M-S-@key{right}
766 @item M-S-@key{right}
767 Insert a new column to the left of the cursor position.
768
769 @kindex M-@key{up}
770 @kindex M-@key{down}
771 @item M-@key{up}
772 @itemx M-@key{down}
773 Move the current row up/down
774
775 @kindex M-S-@key{up}
776 @item M-S-@key{up}
777 Kill the current row or horizontal line.
778
779 @kindex M-S-@key{down}
780 @item M-S-@key{down}
781 Insert a new row above (with arg: below) the current row.
782
783 @kindex C-c -
784 @item C-c -
785 Insert a horizontal line below current row. With prefix arg, the line
786 is created above the current line.
787
788 @kindex C-c ^
789 @item C-c ^
790 Sort the table lines in the region. Point and mark must be in the first
791 and last line to be included, and must be in the column that should be
792 used for sorting. The command prompts for numerical versus
793 alphanumerical sorting.
794
795 @tsubheading{Regions}
796 @kindex C-c C-x M-w
797 @item C-c C-x M-w
798 Copy a rectangular region from a table to a special clipboard. Point
799 and mark determine edge fields of the rectangle. The process ignores
800 horizontal separator lines.
801 @kindex C-c C-x C-w
802 @item C-c C-x C-w
803 Copy a rectangular region from a table to a special clipboard, and
804 blank all fields in the rectangle. So this is the ``cut'' operation.
805 @kindex C-c C-x C-y
806 @item C-c C-x C-y
807 Paste a rectangular region into a table.
808 The upper right corner ends up in the current field. All involved fields
809 will be overwritten. If the rectangle does not fit into the present table,
810 the table is enlarged as needed. The process ignores horizontal separator
811 lines.
812 @kindex C-c C-q
813 @item C-c C-q
814 Wrap several fields in a column like a paragraph. If there is an active
815 region, and both point and mark are in the same column, the text in the
816 column is wrapped to minimum width for the given number of lines. A
817 prefix ARG may be used to change the number of desired lines. If there
818 is no region, the current field is split at the cursor position and the
819 text fragment to the right of the cursor is prepended to the field one
820 line down. If there is no region, but you specify a prefix ARG, the
821 current field gets blank, and the content is appended to the field
822 above.
823
824 @tsubheading{Calculations}
825 @cindex formula, in tables
826 @cindex calculations, in tables
827 @kindex C-c =
828 @item C-c =
829 Install a new formula for the current column and replace current field
830 with the result of the formula.
831
832 @kindex C-u C-c =
833 @item C-u C-c =
834 Install a new formula for the current field, which must be a named
835 field. Evaluate the formula and replace the field content with the
836 result.
837
838 @kindex C-c '
839 @item C-c '
840 Edit all formulas associated with the current table in a separate
841 buffer.
842
843 @kindex C-c *
844 @item C-c *
845 Recalculate the current row by applying the stored formulas from left
846 to right. When called with a @kbd{C-u} prefix, recalculate the
847 entire table, starting with the first non-header line (i.e. below the
848 first horizontal separator line). For details, see @ref{Table calculations}.
849
850 @kindex C-#
851 @item C-#
852 Rotate the calculation mark in first column through the states
853 @samp{}, @samp{#}, @samp{*}, @samp{!}, @samp{$}. For the meaning of
854 these marks see @ref{Advanced features}. When there is an active
855 region, change all marks in the region.
856
857 @kindex C-c ?
858 @item C-c ?
859 Which table column is the cursor in? Displays number >0 in echo
860 area.
861
862 @cindex region, active
863 @cindex active region
864 @cindex transient-mark-mode
865 @kindex C-c +
866 @item C-c +
867 Sum the numbers in the current column, or in the rectangle defined by
868 the active region. The result is shown in the echo area and can
869 be inserted with @kbd{C-y}.
870
871 @kindex S-@key{RET}
872 @item S-@key{RET}
873 When current field is empty, copy from first non-empty field above.
874 When not empty, copy current field down to next row and move cursor
875 along with it. Depending on the variable
876 @code{org-table-copy-increment}, integer field values will be
877 incremented during copy. This key is also used by CUA-mode
878 (@pxref{Interaction}).
879
880 @tsubheading{Miscellaneous}
881 @kindex C-c |
882 @item C-c |
883 Toggle the visibility of vertical lines in tables. The lines are
884 still there, only made invisible with a text property. Any @samp{|}
885 added by hand will become invisible on the next align.
886
887 @item M-x org-table-import
888 Import a file as a table. The table should be TAB- or whitespace
889 separated. Useful for example to import an Excel table or data from a
890 database, because these programs generally can write TAB-separated text
891 files. This command works by inserting the file into the buffer and
892 then converting the region to a table. Any prefix argument is passed on
893 to the converter, which uses it to determine the separator.
894
895 @item M-x org-table-export
896 Export the table as a TAB-separated file. Useful for data exchange with
897 for example Excel or database programs.
898
899 @end table
900
901 If you don't like the automatic table editor because it gets into your
902 way in lines which you would like to start with @samp{|}, you can turn
903 it off with
904 @lisp
905 (setq org-enable-table-editor nil)
906 @end lisp
907 @noindent The only table command which then still works is
908 @kbd{C-c C-c} to do a manual re-align.
909
910 @node Table calculations, orgtbl-mode, Built-in table editor, Tables
911 @section Calculations in tables
912 @cindex calculations, in tables
913
914 The table editor makes use of the Emacs @file{calc} package to
915 implement spreadsheet-like capabilities. Org-mode has two levels of
916 complexity for table calculations. On the basic level, tables do only
917 horizontal computations, so a field can be computed from other fields
918 @emph{in the same row}, and Org-mode assumes that there is only one
919 formula for each column. This is very efficient to work with and
920 enough for many tasks. On the complex level, columns and individual
921 fields can be named for easier referencing in formulas, individual
922 named fields can have their own formula associated with them, and
923 recalculation can be automated.
924
925 @menu
926 * Formula syntax:: How to write a formula
927 * Column formulas:: Formulas valid for all fields in a column
928 * Advanced features:: Field names, parameters and automatic recalc
929 * Named-field formulas:: Formulas valid in single fields
930 * Editing/debugging formulas:: Changing a stored formula
931 * Appetizer:: Taste the power of calc
932 @end menu
933
934 @node Formula syntax, Column formulas, Table calculations, Table calculations
935 @subsection Formula syntax
936
937 A formula can be any algebraic expression understood by the Emacs
938 @file{calc} package. Before evaluation by @code{calc-eval}
939 (@pxref{Calling Calc from Your Lisp Programs,calc-eval,Calling calc
940 from Your Lisp Programs,calc,GNU Emacs Calc Manual}), variable
941 substitution takes place:
942
943 @example
944 $ @r{refers to the current field}
945 $3 @r{refers to the field in column 3 of the current row}
946 $3..$7 @r{a vector of the fields in columns 3-7 of current row}
947 $P1..$P3 @r{vector of column range, using column names}
948 &2 @r{second data field above the current, in same column}
949 &5-2 @r{vector from fifth to second field above current}
950 &III-II @r{vector of fields between 2nd and 3rd hline above}
951 &III @r{vector of fields between third hline above and current field}
952 $name @r{a named field, parameter or constant}
953 @end example
954
955 The range vectors can be directly fed into the calc vector functions
956 like @samp{vmean} and @samp{vsum}.
957
958 @samp{$name} is interpreted as the name of a column, parameter or
959 constant. Constants are defined globally through the variable
960 @code{org-table-formula-constants}. If you have the
961 @file{constants.el} package, it will also be used to resolve
962 constants, including natural constants like @samp{$h} for Planck's
963 constant, units like @samp{$km} for kilometers. Column names and
964 parameters can be specified in special table lines. These are
965 described below, see @ref{Advanced features}.
966
967 A formula can contain an optional mode string after a semicolon. This
968 string consists of flags to influence calc's modes@footnote{By
969 default, Org-mode uses the standard calc modes (precision 12, angular
970 units degrees, fraction and symbolic modes off). However, the display
971 format has been changed to @code{(float 5)} to keep tables compact.
972 The default settings can be configured using the variable
973 @code{org-calc-default-modes}.} during execution, e.g. @samp{p20} to
974 switch the internal precision to 20 digits, @samp{n3}, @samp{s3},
975 @samp{e2} or @samp{f4} to switch to normal, scientific, engineering,
976 or fix display format, respectively, and @samp{D}, @samp{R}, @samp{F},
977 and @samp{S} to turn on degrees, radians, fraction and symbolic modes,
978 respectively. In addition, you may provide a @code{printf} format
979 specifier to reformat the final result. A few examples:
980 @example
981 $1+$2 @r{Sum of first and second field}
982 $1+$2;%.2f @r{Same, format result to two decimals}
983 exp($2)+exp($1) @r{Math functions can be used}
984 $;%.1f @r{Reformat current cell to 1 decimal}
985 ($3-32)*5/9 @r{Degrees F -> C conversion}
986 $c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
987 tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
988 sin($1);Dp3%.1e @r{Same, but use printf specifier for display}
989 vmean($2..$7) @r{Compute column range mean, using vector function}
990 vsum(&III) @r{Sum numbers from 3rd hline above to here}
991 taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
992 @end example
993
994 @node Column formulas, Advanced features, Formula syntax, Table calculations
995 @subsection Column formulas
996
997 To apply a formula to a field, type it directly into the field,
998 preceded by an equal sign, like @samp{=$1+$2}. When you press
999 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
1000 field, the formula will be stored as the formula for the current
1001 column, evaluated and the current field replaced with the result. If
1002 the field contains only @samp{=}, the previously stored formula for
1003 this column is used.
1004
1005 For each column, Org-mode will remember the most recently used
1006 formula. The information is stored in a special line starting with
1007 @samp{#+TBLFM} directly below the table. When adding/deleting/moving
1008 columns with the appropriate commands, the stored equations will be
1009 modified accordingly. When a column used in a calculation is removed,
1010 references to this column become invalid and will cause an error upon
1011 applying the equation.
1012
1013 Instead of typing an equation into the field, you may also use the
1014 command @kbd{C-c =}. It prompts for a formula (with default taken
1015 from the @samp{#+TBLFM:} line) and applies it to the current field. A
1016 numerical prefix (e.g. @kbd{C-5 C-c =}) will apply it to that many
1017 subsequent fields in the current column.
1018
1019 To recompute all the fields in a line, use the command @kbd{C-c *}.
1020 It re-applies all stored equations to the current row, from left to
1021 right. With a @kbd{C-u} prefix, this will be done to every line in
1022 the table, so use this command it you want to make sure the entire
1023 table is up-to-date. @kbd{C-u C-c C-c} is another way to update the
1024 entire table. Global updating does not touch the line(s) above the
1025 first horizontal separator line, assuming that this is the table
1026 header.
1027
1028 @node Advanced features, Named-field formulas, Column formulas, Table calculations
1029 @subsection Advanced features
1030
1031 If you want want the recalculation of fields to happen automatically,
1032 or if you want to be able to assign a formula to an individual field
1033 (instead of an entire column) you need to reserve the first column of
1034 the table for special marking characters. Here is an example of a
1035 table that collects exam results of students and makes use of these
1036 features:
1037 @example
1038 @group
1039 |---+---------+--------+--------+--------+-------+------|
1040 | | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
1041 |---+---------+--------+--------+--------+-------+------|
1042 | ! | | P1 | P2 | P3 | Tot | |
1043 | # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
1044 | ^ | | m1 | m2 | m3 | mt | |
1045 |---+---------+--------+--------+--------+-------+------|
1046 | # | Peter | 10 | 8 | 23 | 41 | 8.2 |
1047 | # | Sara | 6 | 14 | 19 | 39 | 7.8 |
1048 | # | Sam | 2 | 4 | 3 | 9 | 1.8 |
1049 |---+---------+--------+--------+--------+-------+------|
1050 | | Average | | | | 29.7 | |
1051 | ^ | | | | | at | |
1052 | $ | max=50 | | | | | |
1053 |---+---------+--------+--------+--------+-------+------|
1054 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(&II);%.1f
1055 @end group
1056 @end example
1057
1058 @noindent @b{Important}: Please note that for these special tables,
1059 recalculating the table with @kbd{C-u C-c *} does only affect rows
1060 which are marked @samp{#} or @samp{*}, and named fields. The column
1061 formulas are not applied in rows with empty first field.
1062
1063 The marking characters have the following meaning:
1064 @table @samp
1065 @item !
1066 The fields in this line define names for the columns, so that you may
1067 refer to a column as @samp{$Tot} instead of @samp{$6}.
1068 @item ^
1069 This row defines names for the fields @emph{above} the row. With such
1070 a definition, any formula in the table may use @samp{$m1} to refer to
1071 the value @samp{10}. Also, named fields can have their own formula
1072 associated with them.
1073 @item _
1074 Similar to @samp{^}, but defines names for the fields in the row
1075 @emph{below}.
1076 @item $
1077 Fields in this row can define @emph{parameters} for formulas. For
1078 example, if a field in a @samp{$} row contains @samp{max=50}, then
1079 formulas in this table can refer to the value 50 using @samp{$max}.
1080 Parameters work exactly like constants, only that they can be defined on
1081 a per-table basis. Changing a parameter and then recalculating the
1082 table can be useful.
1083 @item #
1084 Fields in this row are automatically recalculated when pressing
1085 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row. Also, this row
1086 is selected for a global recalculation with @kbd{C-u C-c *}. Unmarked
1087 lines will be left alone by this command.
1088 @item *
1089 Selects this line for global recalculation with @kbd{C-u C-c *}, but
1090 not for automatic recalculation. Use this when automatic
1091 recalculation slows down editing too much.
1092 @item
1093 Unmarked lines are exempted from recalculation with @kbd{C-u C-c *}.
1094 All lines that should be recalculated should be marked with @samp{#}
1095 or @samp{*}.
1096 @end table
1097
1098 @node Named-field formulas, Editing/debugging formulas, Advanced features, Table calculations
1099 @subsection Named-field formulas
1100
1101 A named field can have its own formula associated with it. In the
1102 example above, this is used for the @samp{at} field that contains
1103 the average result of the students. To enter a formula for a named
1104 field, just type it onto the buffer, preceded by @samp{:=}. Or use
1105 @kbd{C-u C-c =}. This equation will be stored below the table like
1106 @samp{$name=...}. Any recalculation in the table (even if only
1107 requested for the current line) will also update all named field
1108 formulas.
1109
1110 @node Editing/debugging formulas, Appetizer, Named-field formulas, Table calculations
1111 @subsection Editing and debugging formulas
1112
1113 To edit a column or field formula, you can use the commands @kbd{C-c
1114 =} and @kbd{C-u C-c =}, respectively. The currently active expression
1115 is then presented as default in the minibuffer, were it may be edited.
1116
1117 Note that making a table field blank does not remove the formula
1118 associated with the field - during the next recalculation the field
1119 will be filled again. To remove a formula from a field, you have to
1120 give an empty reply when prompted for the formula, or to edit the
1121 @samp{#+TBLFM} line.
1122
1123 @kindex C-c C-c
1124 You may edit the @samp{#+TBLFM} directly and re-apply
1125 the changed equations with @kbd{C-c C-c} in that line, or with the
1126 normal recalculation commands in the table.
1127
1128 @kindex C-c '
1129 @kindex C-c C-c
1130 @kindex C-c C-q
1131 @kindex C-c ?
1132 In particular for large tables with many formulas, it is convenient to
1133 use the command @kbd{C-c '} to edit the formulas of the current table
1134 in a separate buffer. That buffer will show the formulas one per
1135 line, and you are free to edit, add and remove formulas. Press
1136 @kbd{C-c ?} on a @samp{$...} expression to get information about its
1137 interpretation. Exiting the buffer with @kbd{C-c C-c} only stores the
1138 modified formulas below the table. Exiting with @kbd{C-u C-c C-c}
1139 also applies them to the entire table. @kbd{C-c C-q} exits without
1140 installing the changes.
1141
1142 When the evaluation of a formula leads to an error, the field content
1143 becomes the string @samp{#ERROR}. If you would like see what is going
1144 on during variable substitution and calculation in order to find a
1145 bug, turn on formula debugging in the menu and repeat the calculation
1146 by pressing, for example by pressing @kbd{C-c = @key{RET}} in a field.
1147 Detailed information will be displayed.
1148
1149 @node Appetizer, , Editing/debugging formulas, Table calculations
1150 @subsection Appetizer
1151
1152 Finally, just to wet your appetite on what can be done with the fantastic
1153 @file{calc} package, here is a table that computes the Taylor series
1154 for a couple of functions (homework: try that with Excel :-)
1155
1156 @example
1157 @group
1158 |---+-------------+---+-----+--------------------------------------|
1159 | | Func | n | x | Result |
1160 |---+-------------+---+-----+--------------------------------------|
1161 | # | exp(x) | 1 | x | 1 + x |
1162 | # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
1163 | # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
1164 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
1165 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
1166 | * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
1167 |---+-------------+---+-----+--------------------------------------|
1168 #+TBLFM: $5=taylor($2,$4,$3);n3
1169 @end group
1170 @end example
1171
1172 @node orgtbl-mode, table.el, Table calculations, Tables
1173 @section The Orgtbl minor mode
1174 @cindex orgtbl-mode
1175 @cindex minor mode for tables
1176
1177 If you like the intuitive way the Org-mode table editor works, you
1178 might want to use it also in other modes like text-mode or mail-mode.
1179 The minor mode Orgtbl-mode makes this possible. You can always toggle
1180 the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
1181 example in mail mode, use
1182 @lisp
1183 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
1184 @end lisp
1185
1186 @node table.el, , orgtbl-mode, Tables
1187 @section The @file{table.el} package
1188 @kindex C-c C-c
1189 @cindex table editor, @file{table.el}
1190 @cindex @file{table.el}
1191
1192 Complex ASCII tables with automatic line wrapping, column- and
1193 row-spanning, and alignment can be created using the Emacs table
1194 package by Takaaki Ota (@uref{http://sourceforge.net/projects/table}).
1195 When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org-mode
1196 will call @command{table-recognize-table} and move the cursor into the
1197 table. Inside a table, the keymap of Org-mode is inactive. In order
1198 to execute Org-mode-related commands, leave the table.
1199
1200 @table @kbd
1201 @kindex C-c C-c
1202 @item C-c C-c
1203 Recognize @file{table.el} table. Works when the cursor is in a
1204 table.el table.
1205
1206 @kindex C-c ~
1207 @item C-c ~
1208 Insert a table.el table. If there is already a table at point, this
1209 command converts it between the table.el format and the Org-mode
1210 format. See the documentation string of the command
1211 @code{org-convert-table} for the restrictions under which this is
1212 possible.
1213 @end table
1214
1215 @node Hyperlinks, TODO items, Tables, Top
1216 @chapter Hyperlinks
1217 @cindex hyperlinks
1218
1219 Just like HMTL, Org-mode provides links inside a file, and external
1220 links to other files, Usenet articles, emails and much more.
1221
1222 @menu
1223 * Internal Links:: CamelCaseWords as internal links
1224 * External Links:: URL-like links to the world
1225 * Managing links:: Creating, inserting and following
1226 * Search Options:: Linking to a specific location
1227 * Remember:: Org-trees store quick notes
1228 @end menu
1229
1230 @node Internal Links, External Links, Hyperlinks, Hyperlinks
1231 @section Internal Links
1232 @cindex internal links
1233 @cindex links, internal
1234 @cindex CamelCase links
1235
1236 Similar to Wiki implementations, Org-mode interprets words spelled in
1237 CamelCase (i.e. mixed case with at least one capital letter following
1238 on a small letter inside the word) as links. While in Wiki
1239 implementations these links usually point to another file, in Org-mode
1240 they point to a target in the current file. Targets are CamelCased
1241 words in double angular brackets, and may be located anywhere, also in
1242 a comment line. For example
1243 @example
1244 # <<MyTarget>>
1245 @end example
1246
1247 Each occurence of @samp{MyTarget} in the file is an active link that
1248 can be followed with @kbd{C-c C-o} or with a mouse click
1249 (@pxref{Managing links}). If no dedicated target exists, org-mode will
1250 search for the words in the link separated by white space, in the
1251 above example for @samp{my target}. If the link starts with a star
1252 like @samp{*MyTarget}, the search is restricted to headlines.
1253 Org-mode will first try an exact match of a full headline, but then
1254 move on to more and more lenient searches. The link @samp{*MyTargets}
1255 will find any of the following
1256 @example
1257 ** My targets
1258 ** TODO my targets are bright
1259 ** my 20 targets are
1260 @end example
1261 @cindex completion, of CamelCase links
1262 @cindex CamelCase links, completion of
1263 It is therefore often not even necessary to set a dedicated target.
1264 The link will automatically find a target. If you want to see what
1265 lines in the current buffer are matched by a given CamelCase link,
1266 open the link with @kbd{C-u C-c C-o}. Even if there are several
1267 matches, org-mode will usually find the right one since it tries
1268 targets and exact matches first. To insert links targeting a
1269 headline, in-buffer completion can be used. Just type a star followed
1270 by a few optional letters into the buffer and press @kbd{M-@key{TAB}}.
1271 CamelCased versions of all headlines in the current buffer will be
1272 offered as completions. @xref{Managing links}, for more commands
1273 creating links.
1274
1275 @node External Links, Managing links, Internal Links, Hyperlinks
1276 @section External Links
1277 @cindex links
1278 @cindex external links
1279 @cindex links, external
1280 @cindex GNUS links
1281 @cindex BBDB links
1282 @cindex URL links
1283 @cindex file links
1284 @cindex VM links
1285 @cindex RMAIL links
1286 @cindex WANDERLUST links
1287 @cindex USENET links
1288 @cindex SHELL links
1289
1290 Org-mode supports links to files, websites, Usenet and email messages;
1291 and BBDB database entries. Links are just plain-text URL-like
1292 locators, optionally enclosed by angular brackets. The following list
1293 shows examples for each link type.
1294
1295 @example
1296 <http://www.astro.uva.nl/~dominik> @r{on the web}
1297 <file:/home/dominik/images/jupiter.jpg> @r{file, absolute path}
1298 <file:papers/last.pdf> @r{file, relative path}
1299 <news:comp.emacs> @r{Usenet link}
1300 <mailto:adent@@galaxy.net> @r{Mail link}
1301 <vm:folder> @r{VM folder link}
1302 <vm:folder#id> @r{VM message link}
1303 <vm://myself@@some.where.org/folder#id> @r{VM on remote machine}
1304 <wl:folder> @r{WANDERLUST folder link}
1305 <wl:folder#id> @r{WANDERLUST message link}
1306 <rmail:folder> @r{RMAIL folder link}
1307 <rmail:folder#id> @r{RMAIL message link}
1308 <gnus:group> @r{GNUS group link}
1309 <gnus:group#id> @r{GNUS article link}
1310 <bbdb:Richard Stallman> @r{BBDB link}
1311 <shell:ls *.org>@footnote{Note that @samp{<} and @samp{>} cannot be part of a link, and therefore of a shell command. If you need redirection, use @@@{ and @@@} instead.} @r{A shell command}
1312 @end example
1313
1314 A link may contain space characters and is terminated by @samp{>} or by
1315 the end of a line. In tables, the end of a table field also terminates
1316 a link. Angle brackets around a link are not required, but are
1317 recommended to avoid problems with punctuation and other text following
1318 the link. See also the variable @code{org-allow-space-in-links}.
1319
1320
1321 @node Managing links, Search Options, External Links, Hyperlinks
1322 @section Managing links
1323
1324 Org-mode provides methods to create a link in the correct syntax, to
1325 insert it into an org-mode file, and to follow the link.
1326
1327 @table @kbd
1328 @kindex C-c l
1329 @cindex storing links
1330 @item C-c l
1331 Store a link to the current location. This is a @emph{global} command
1332 which can be used in any buffer to create a link. The link will be
1333 stored for later insertion into an Org-mode buffer (see below). For
1334 VM, RMAIL, WANDERLUST, GNUS and BBDB buffers, the link will point to
1335 the current article/entry. For W3 and W3M buffer, the link goes to
1336 the current URL. For Org-mode files, the current headline is
1337 targeted. For any other files, the link will point to the file, with
1338 a CamelCase (@pxref{Search Options}) search string pointing to the
1339 contents of the current line. If there is an active region, the
1340 selected words will form the basis of the search string. The key
1341 binding @kbd{C-c l} is only a suggestion - see @ref{Installation and
1342 Activation}.
1343
1344 @kindex C-c C-l
1345 @cindex completion, of links
1346 @cindex completion, of file names
1347 @item C-c C-l
1348 Insert a link. This prompts for a link to be inserted into the
1349 buffer. You can just type a link, using one of the link type prefixes
1350 mentioned in the examples above. Through completion, all links stored
1351 during the current session can be accessed. When called with prefix
1352 arg, you can use file name completion to enter a file link. The link
1353 will be formatted as given in the variable @code{org-link-format} and
1354 inserted into the buffer. Note that you don't have to use this
1355 command to insert a link. Links in Org-mode are plain text, and you
1356 can type or paste them straight into the buffer.
1357
1358 @cindex inserting links
1359 @kindex C-c C-o
1360 @item C-c C-o
1361 Open link at point. This will launch a web browser for URLs (using
1362 @command{browse-url-at-point}), run vm/gnus/bbdb for the corresponding
1363 links, execute the command in a shell link, visit text files with
1364 Emacs and select a suitable application for non-text files.
1365 Classification of files is based on file extension only. See option
1366 @code{org-file-apps}. If there is no link at point, the current
1367 subtree will be searched for one. If you want to override the default
1368 application and visit the file with Emacs, use a @kbd{C-u} prefix.
1369 If the cursor is on a time stamp, compiles the agenda for that date.
1370
1371 @strong{IMPORTANT}: Be careful not to use any dangerous commands in a
1372 shell link.
1373
1374 @kindex mouse-2
1375 @item mouse-2
1376 On links, @kbd{mouse-2} will open the link just like @kbd{C-c C-o} would.
1377
1378 @kindex mouse-3
1379 @item mouse-3
1380 Like @kbd{mouse-2}, but force file links to be opened with Emacs.
1381 @end table
1382
1383
1384 @node Search Options, Remember, Managing links, Hyperlinks
1385 @section Search options in file links
1386
1387 File links can contain additional information to make Emacs jump to a
1388 particular location in the file when following a link. This can be a
1389 line number or a search option after a double@footnote{For backward
1390 compatibility, line numbers can also follow a single colon.} colon.
1391 For example:
1392 @example
1393 <file:~/code/main.c::255>
1394 <file:~/xx.org::MyTarget>
1395 <file:~/xx.org::find me>
1396 <file:~/xx.org::/regexp/>
1397 @end example
1398 @noindent Here is what these options do.
1399
1400 @table @code
1401 @item 255
1402 Jump to line 255.
1403 @item MyGoal
1404 Search for a link target with name MyGoal, or do a text search for
1405 @samp{my target}, similar to the CamelCase search in internal links,
1406 see @ref{Internal Links}.
1407 @item find me
1408 Do a normal text search for the text @samp{find me}.
1409 @item /regexp/
1410 Do a regular expression search for @code{regexp}. This uses the Emacs
1411 command @code{occur} to list all matches in a separate window. If the
1412 target file is in Org-mode, @code{org-occur} is used to create a
1413 sparse tree with the matches.
1414 @c If the target file is a directory,
1415 @c @code{grep} will be used to search all files in the directory.
1416 @end table
1417
1418 To use the search options also for a search in the current file, a
1419 file link with an empty file name can be used. For example,
1420 @code{<file:::find me>} does a search for @samp{find me} in the
1421 current file.
1422
1423 @node Remember, , Search Options, Hyperlinks
1424 @section Remember
1425 @cindex @file{remember.el}
1426
1427 Another way to create org entries with links to other files is through
1428 the @emph{Remember} package by John Wiegley. @emph{Remember} lets you
1429 store quick notes with little interruption of your work flow. See
1430 @uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
1431 information. The notes produced by @emph{Remember} can be stored in
1432 different ways, and Org-mode files are a good target. Org-mode allows
1433 to file away notes either to a default file, or directly to the
1434 correct location in your Org-mode outline tree. The following
1435 customization@footnote{The two autoload forms are only necessary if
1436 @file{org.el} is not part of the Emacs distribution or an XEmacs
1437 package.} will tell @emph{Remember} to use org files as target, and to
1438 create annotations compatible with Org-mode links.
1439
1440 @example
1441 (autoload 'org-remember-annotation "org")
1442 (autoload 'org-remember-handler "org")
1443 (setq org-directory "~/path/to/my/orgfiles/")
1444 (setq org-default-notes-file "~/.notes")
1445 (setq remember-annotation-functions '(org-remember-annotation))
1446 (setq remember-handler-functions '(org-remember-handler))
1447 @end example
1448
1449 When you compose a note with remember, you have to press @kbd{C-c C-c}
1450 to exit remember-mode and to file away the note. The handler first
1451 prompts for a target file - if you press @key{RET}, the value of
1452 @code{org-default-notes-file} is used. Then the command offers the
1453 headings tree of the selected file. You can either immediately press
1454 @key{RET} to get the note appended to the file. Or you can use
1455 vertical cursor motion (@key{up} and @key{down}) and visibility
1456 cycling (@key{TAB}) to find a better place. Pressing @key{RET} or
1457 @key{left} or @key{right} leads to the following result.
1458
1459 @multitable @columnfractions 0.2 0.1 0.7
1460 @item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
1461 @item buffer-start @tab @key{RET} @tab as level 2 heading at end of file
1462 @item on headline @tab @key{RET} @tab as sublevel of the heading at cursor
1463 @item @tab @key{left} @tab as same level, before current heading
1464 @item @tab @key{right} @tab as same level, after current heading
1465 @item not on headline @tab @key{RET}
1466 @tab at cursor position, level taken from context.
1467 Or use prefix arg to specify level manually.
1468 @end multitable
1469
1470 So a fast way to store the note is to press @kbd{C-c C-c @key{RET}
1471 @key{RET}} to append it to the default file. Even shorter would be
1472 @kbd{C-u C-c C-c}, which does the same without even showing the tree.
1473 But with little extra effort, you can push it directly to the correct
1474 location.
1475
1476 Before inserting the text into a tree, the function ensures that the
1477 text has a headline, i.e. a first line that starts with a @samp{*}.
1478 If not, a headline is constructed from the current date and some
1479 additional data. If the variable @code{org-adapt-indentation} is
1480 non-nil, the entire text is also indented so that it starts in the
1481 same column as the headline (after the asterisks).
1482
1483 @node TODO items, Timestamps, Hyperlinks, Top
1484 @chapter TODO items
1485 @cindex TODO items
1486
1487 Org-mode does not maintain TODO lists as a separate document. TODO
1488 items are an integral part of the notes file, because TODO items
1489 usually come up while taking notes! With Org-mode, you simply mark
1490 any entry in a tree as being a TODO item. In this way, the
1491 information is not duplicated, and the entire context from which the
1492 item emerged is always present when you check.
1493
1494 Of course, this technique causes TODO items to be scattered throughout
1495 your file. Org-mode provides methods to give you an overview over all
1496 things you have to do.
1497
1498 @menu
1499 * TODO basics:: Marking and displaying TODO entries
1500 * TODO extensions:: Workflow and assignments
1501 * Priorities:: Some things are more important than others
1502 @end menu
1503
1504 @node TODO basics, TODO extensions, TODO items, TODO items
1505 @section Basic TODO functionality
1506
1507 Any headline can become a TODO item by starting it with the word TODO,
1508 for example
1509
1510 @example
1511 *** TODO Write letter to Sam Fortune
1512 @end example
1513
1514 @noindent
1515 The most important commands to work with TODO entries are:
1516
1517 @table @kbd
1518 @kindex C-c C-t
1519 @item C-c C-t
1520 Rotate the TODO state of the current item between
1521 @example
1522 ,-> (unmarked) -> TODO -> DONE --.
1523 '--------------------------------'
1524 @end example
1525 The same rotation can also be done ``remotely'' from the timeline and
1526 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
1527 @kindex C-c C-v
1528 @cindex sparse tree, for TODO
1529 @item C-c C-v
1530 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds
1531 the entire buffer, but shows all TODO items and the headings hierarchy
1532 above them. With prefix arg, show also the DONE entries. With
1533 numerical prefix N, show the tree for the Nth keyword in the variable
1534 @code{org-todo-keywords}.
1535 @kindex C-c t
1536 @item C-c t
1537 Show the global TODO list. This collects the TODO items from all
1538 agenda files (@pxref{Agenda}) into a single buffer. The buffer is in
1539 @code{agenda-mode}, so there are commands to examine and manipulate
1540 the TODO entries directly from that buffer (@pxref{Agenda commands}).
1541 A prefix argument can be used to collect only TODO entries of a
1542 particular type. With a C-u prefix you are prompted for a keyword.
1543 With a numeric prefix, the Nth keyword in @code{org-todo-keywords} is
1544 selected.
1545 @kindex r
1546 The @kbd{r} key in the agenda
1547 buffer regenerates it, and you can give a prefix argument to this
1548 command to change the selected TODO keyword, for example @kbd{3 r}.
1549 The key binding @kbd{C-c t} is only a suggestion - see
1550 @ref{Installation and Activation}.
1551 @kindex C-u C-c a
1552 @item C-u C-c a
1553 A @kbd{C-u} argument to the @code{org-agenda command} (@pxref{Agenda})
1554 includes all unfinished TODO items at the beginning of todays agenda.
1555 @end table
1556
1557 @node TODO extensions, Priorities, TODO basics, TODO items
1558 @section Extended use of TODO keywords
1559 @cindex extended TODO keywords
1560
1561 The default implementation of TODO entries is just two states: TODO
1562 and DONE. You can, however, use the TODO feature for more
1563 complicated things by configuring the variables
1564 @code{org-todo-keywords} and @code{org-todo-interpretation}. Using
1565 special setup, you can even use TODO keywords in different ways in
1566 different org files.
1567
1568 @menu
1569 * Workflow states:: From TODO to DONE in steps
1570 * TODO types:: I do this, Fred the rest
1571 * Per file keywords:: Different files, different requirements
1572 @end menu
1573
1574 @node Workflow states, TODO types, TODO extensions, TODO extensions
1575 @subsection TODO keywords as workflow states
1576 @cindex TODO workflow
1577 @cindex workflow states as TODO keywords
1578
1579 You can use TODO keywords to indicate different states in the process
1580 of working on an item, for example
1581
1582 @lisp
1583 (setq org-todo-keywords '("TODO" "FEEDBACK" "VERIFY" "DONE")
1584 org-todo-interpretation 'sequence)
1585 @end lisp
1586
1587 @cindex completion, of TODO keywords
1588 Changing these variables becomes only effective in a new Emacs session.
1589 With this setup, the command @kbd{C-c C-t} will cycle an entry from
1590 TODO to FEEDBACK, then to VERIFY, and finally to DONE. You may also
1591 use a prefix argument to quickly select a specific state. For example
1592 @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
1593 If you define many keywords, you can use in-buffer completion (see
1594 @ref{Completion}) to insert these words into the buffer.
1595
1596 @node TODO types, Per file keywords, Workflow states, TODO extensions
1597 @subsection TODO keywords as types
1598 @cindex TODO types
1599 @cindex names as TODO keywords
1600 @cindex types as TODO keywords
1601
1602 The second possibility is to use TODO keywords to indicate different
1603 types of action items. For example, you might want to indicate that
1604 items are for ``work'' or ``home''. If you are into David Allen's
1605 @emph{Getting Things DONE}, you might want to use todo types
1606 @samp{NEXTACTION}, @samp{WAITING}, @samp{MAYBE}. Or, when you work
1607 with several people on a single project, you might want to assign
1608 action items directly to persons, by using their names as TODO
1609 keywords. This would be set up like this:
1610
1611 @lisp
1612 (setq org-todo-keywords '("Fred" "Sara" "Lucy" "Mike" "DONE")
1613 org-todo-interpretation 'type)
1614 @end lisp
1615
1616 In this case, different keywords do not indicate a sequence, but
1617 rather different types. So it is normally not useful to change from
1618 one type to another. Therefore, in this case the behavior of the
1619 command @kbd{C-c C-t} is changed slightly@footnote{This is also true
1620 for the @kbd{t} command in the timeline and agenda buffers.}. When
1621 used several times in succession, it will still cycle through all
1622 names. But when you return to the item after some time and execute
1623 @kbd{C-c C-t} again, it will switch from each name directly to DONE.
1624 Use prefix arguments or completion to quickly select a specific name.
1625 You can also review the items of a specific TODO type in a sparse tree
1626 by using a numeric prefix to @kbd{C-c C-v}. For example, to see all
1627 things Lucy has to do, you would use @kbd{C-3 C-c C-v}. To collect
1628 collect Lucy's items from all agenda files into a single buffer, you
1629 would use the prefix arg as well when creating the global todo list:
1630 @kbd{C-3 C-c t}.
1631
1632 @node Per file keywords, , TODO types, TODO extensions
1633 @subsection Setting up TODO keywords for individual files
1634 @cindex keyword options
1635 @cindex per file keywords
1636
1637 It can be very useful to use different aspects of the TODO mechanism
1638 in different files, which is not possible with the global settings
1639 described above. For file-local settings, you need to add special
1640 lines to the file which set the keywords and interpretation for that
1641 file only. For example, to set one of the two examples discussed
1642 above, you need one of the following lines, starting in column zero
1643 anywhere in the file:
1644
1645 @example
1646 #+SEQ_TODO: TODO FEEDBACK VERIFY DONE
1647 #+TYP_TODO: Fred Sara Lucy Mike DONE
1648 @end example
1649
1650 @cindex Completion, of option keywords
1651 @kindex M-@key{TAB}
1652 @noindent To make sure you are using the correct keyword, type
1653 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
1654
1655 @cindex DONE, final TODO keyword
1656 Remember that the last keyword must always mean that the item is DONE
1657 (you may use a different word, though). Also note that in each file,
1658 only one of the two aspects of TODO keywords can be used. After
1659 changing one of these lines, use @kbd{C-c C-c} with the cursor still
1660 in the line to make the changes known to Org-mode@footnote{Org-mode
1661 parses these lines only when Org-mode is activated after visiting a
1662 file. @kbd{C-c C-c} with the cursor in a line starting with @samp{#+}
1663 is simply restarting Org-mode, making sure that these changes will be
1664 respected.}.
1665
1666 If you want to use very many keywords, for example when working with a
1667 large group of people, you may split the names over several lines:
1668
1669 @example
1670 #+TYP_TODO: Fred Sara Lucy Mike
1671 #+TYP_TODO: Luis George Jules Jessica
1672 #+TYP_TODO: Kim Arnold Peter
1673 #+TYP_TODO: DONE
1674 @end example
1675
1676 @node Priorities, , TODO extensions, TODO items
1677 @section Priorities
1678 @cindex priorities
1679
1680 If you use Org-mode extensively to organize your work, you may end up
1681 with a number of TODO entries so large that you'd like to prioritize
1682 them. This can be done by placing a @emph{priority cookie} into the
1683 headline, like this
1684
1685 @example
1686 *** TODO [#A] Write letter to Sam Fortune
1687 @end example
1688
1689 @noindent
1690 With its standard setup, Org-mode supports priorities @samp{A},
1691 @samp{B}, and @samp{C}. @samp{A} is the highest priority. An entry
1692 without a cookie is treated as priority @samp{B}. Priorities make a
1693 difference only in the agenda (@pxref{Agenda}).
1694
1695 @table @kbd
1696 @kindex @kbd{C-c ,}
1697 @item @kbd{C-c ,}
1698 Set the priority of the current item. The command prompts for a
1699 priority character @samp{A}, @samp{B} or @samp{C}. When you press
1700 @key{SPC} instead, the priority cookie is removed from the headline.
1701 The priorities can also be changed ``remotely'' from the timeline and
1702 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
1703
1704 @kindex S-@key{up}
1705 @kindex S-@key{down}
1706 @item S-@key{up}
1707 @itemx S-@key{down}
1708 Increase/decrease priority of current item. Note that these keys are
1709 also used to modify time stamps (@pxref{Creating timestamps}).
1710 Furthermore, these keys are also used by CUA-mode
1711 (@pxref{Interaction}).
1712 @end table
1713
1714 @node Timestamps, Timeline and Agenda, TODO items, Top
1715 @chapter Timestamps
1716
1717 Items can be labeled with timestamps to make them useful for project
1718 planning.
1719
1720 @menu
1721 * Time stamps:: Assigning a time to a tree entry
1722 * Creating timestamps:: Commands which insert timestamps
1723 @end menu
1724
1725
1726 @node Time stamps, Creating timestamps, Timestamps, Timestamps
1727 @section Time stamps, deadlines and scheduling
1728 @cindex time stamps
1729 @cindex deadlines
1730 @cindex scheduling
1731
1732 A time stamp is a specification of a date (possibly with time) in a
1733 special format, either @samp{<2003-09-16 Tue>} or @samp{<2003-09-16
1734 Tue 09:39>}. A time stamp can appear anywhere in the headline or body
1735 of an org-tree entry. Its presence allows to show entries on specific
1736 dates in the agenda (@pxref{Agenda}). We distinguish:
1737
1738 @table @var
1739 @cindex timestamp
1740 @item TIMESTAMP
1741 A simple time stamp just assigns a date/time to an item. In the
1742 timeline and agenda displays, the headline of the entry will be shown
1743 exactly on that date.
1744
1745 @item TIMERANGE
1746 @cindex timerange
1747 Two time stamps connected by @samp{--} denote a time range. The
1748 headline will be shown on the first and last day of the range, and on
1749 any dates that are displayed and fall in the range. Here is an
1750 example:
1751
1752 @example
1753 ** Meeting in Amsterdam
1754 <2004-08-23 Mon>--<2004-08-26 Thu>
1755 @end example
1756
1757 @item DEADLINE
1758 @cindex DEADLINE keyword
1759 If a time stamp is preceded by the word @samp{DEADLINE:}, the task
1760 (most likely a TODO item) is supposed to be finished on that date, and
1761 it will be listed then. In addition, the compilation for @emph{today}
1762 will carry a warning about the approaching or missed deadline,
1763 starting @code{org-deadline-warning-days} before the due date, and
1764 continuing until the entry is marked DONE. An example:
1765
1766 @example
1767 *** TODO write article about the Earth for the Guide
1768 The editor in charge is <bbdb:Ford Prefect>
1769 DEADLINE: <2004-02-29 Sun>
1770 @end example
1771
1772 @item SCHEDULED
1773 @cindex SCHEDULED keyword
1774 If a time stamp is preceded by the word @samp{SCHEDULED:}, it means
1775 you are planning to start working on that task on the given date. The
1776 headline will be listed under the given date. In addition, a reminder
1777 that the scheduled date has passed will be present in the compilation
1778 for @emph{today}, until the entry is marked DONE. I.e., the
1779 task will automatically be forwarded.
1780 @end table
1781
1782 @node Creating timestamps, , Time stamps, Timestamps
1783 @section Creating timestamps
1784 @cindex creating timestamps
1785
1786 For Org-mode to recognize time stamps, they need to be in the specific
1787 format. All commands listed below produce time stamps in the correct
1788 format.
1789
1790 @table @kbd
1791 @kindex C-c .
1792 @item C-c .
1793 Prompt for a date and insert a corresponding time stamp. When the
1794 cursor is at a previously used time stamp, it is updated to NOW. When
1795 this command is used twice in succession, a time range is inserted.
1796
1797 @kindex C-u C-c .
1798 @item C-u C-c .
1799 Like @kbd{C-c .}, but use the alternative format which contains date
1800 and time.
1801
1802 @kindex C-c !
1803 @item C-c !
1804 Like @kbd{C-c .}, but insert an inactive time stamp not triggering the
1805 agenda.
1806
1807 @kindex C-c <
1808 @item C-c <
1809 Insert a time stamp corresponding to the cursor date in the Calendar.
1810
1811 @kindex C-c >
1812 @item C-c >
1813 Access the Emacs calendar for the current date. If there is a
1814 timestamp in the current line, goto the corresponding date
1815 instead.
1816
1817 @kindex C-c C-o
1818 @item C-c C-o
1819 Access the agenda for the date given by the time stamp at point
1820 (@pxref{Agenda}).
1821
1822 @kindex C-c C-d
1823 @item C-c C-d
1824 Insert @samp{DEADLINE} keyword along with a stamp.
1825 @kindex C-c C-w
1826 @cindex sparse tree, for deadlines
1827 @item C-c C-w
1828 Create a sparse tree with all deadlines that are either past-due, or
1829 which will become due within @code{org-deadline-warning-days}.
1830 With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
1831 prefix, check that many days. For example, @kbd{C-1 C-c C-w} shows
1832 all deadlines due tomorrow.
1833
1834 @kindex C-c C-s
1835 @item C-c C-s
1836 Insert @samp{SCHEDULED} keyword along with a stamp.
1837
1838 @kindex S-@key{left}
1839 @kindex S-@key{right}
1840 @item S-@key{left}
1841 @itemx S-@key{right}
1842 Change date at cursor by one day. These key bindings conflict with
1843 CUA-mode (@pxref{Interaction}).
1844
1845 @kindex S-@key{up}
1846 @kindex S-@key{down}
1847 @item S-@key{up}
1848 @itemx S-@key{down}
1849 Change the item under the cursor in a timestamp. The cursor can be on
1850 a year, month, day, hour or minute. Note that if the cursor is not at
1851 a time stamp, these same keys modify the priority of an item.
1852 (@pxref{Priorities}). The key bindings also conflict with CUA-mode
1853 (@pxref{Interaction}).
1854
1855
1856 @kindex C-c C-y
1857 @cindex evaluate time range
1858 @item C-c C-y
1859 Evaluate a time range by computing the difference between start and
1860 end. With prefix arg, insert result after the time range (in a table:
1861 into the following column).
1862 @end table
1863
1864 @cindex date, reading in minibuffer
1865 @cindex time, reading in minibuffer
1866 @cindex calendar, for selecting date
1867 When Org-mode prompts for a date/time, the function reading your input
1868 will replace anything you choose not to specify with the current date
1869 and time. For details, see the documentation string of
1870 @command{org-read-date}. Also, a calender will pop up to allow
1871 selecting a date. The calendar can be fully controlled from the
1872 minibuffer, and a date can be selected with the following commands:
1873
1874 @table @kbd
1875 @kindex <
1876 @item <
1877 Scroll calendar backwards by one month.
1878 @kindex >
1879 @item >
1880 Scroll calendar forwards by one month.
1881 @kindex mouse-1
1882 @item mouse-1
1883 Select date by clicking on it.
1884 @kindex S-@key{right}
1885 @item S-@key{right}
1886 One day forward.
1887 @kindex S-@key{left}
1888 @item S-@key{left}
1889 One day back.
1890 @kindex S-@key{down}
1891 @item S-@key{down}
1892 One week forward.
1893 @kindex S-@key{up}
1894 @item S-@key{up}
1895 One week back.
1896 @kindex M-S-@key{right}
1897 @item M-S-@key{right}
1898 One month forward.
1899 @kindex M-S-@key{left}
1900 @item M-S-@key{left}
1901 One month back.
1902 @kindex @key{RET}
1903 @item @key{RET}
1904 Choose date in calendar (only if nothing typed into minibuffer).
1905 @end table
1906
1907 @node Timeline and Agenda, Exporting, Timestamps, Top
1908 @chapter Timeline and Agenda
1909 @cindex agenda
1910
1911 We have already described three commands to filter important
1912 information in an org file into a sparse tree (@pxref{Sparse trees}):
1913
1914 @cindex sparse trees
1915 @itemize @bullet
1916 @item
1917 The TODO tree, (@kbd{C-c C-v}), see @ref{TODO items}.
1918 @item
1919 The occur tree @kbd{C-c /}, see @ref{TODO items}.
1920 @item
1921 Checking upcoming deadlines with @kbd{C-c C-w}, see @ref{Creating
1922 timestamps}.
1923 @end itemize
1924 @noindent
1925
1926 Instead of using the sparse trees, Org-mode can also collect and
1927 time-sort the important items into a separate buffer, which we call
1928 the @emph{timeline} of the org file. It can also collect information
1929 from a @emph{list of files} and in this way provide an @emph{agenda}
1930 which covers all of your current projects, action items and
1931 appointments.
1932
1933 @menu
1934 * Timeline:: Time-sorted view for single file
1935 * Agenda:: Your weekly planner
1936 * Agenda commands:: Remote editing of org trees
1937 * Calendar/Diary integration:: Integrating Anniversaries and more
1938 @end menu
1939
1940 @node Timeline, Agenda, Timeline and Agenda, Timeline and Agenda
1941 @section Timeline for a single file
1942 @cindex single file summary
1943 @cindex agenda, for single file
1944 @cindex timeline, single file
1945 @cindex time-sorted view
1946
1947 The timeline shows all time-stamped items in a single Org-mode file,
1948 in @emph{time-sorted view}. The main purpose of this command is to
1949 give an overview over events in a project.
1950
1951 @table @kbd
1952 @kindex C-c C-r
1953 @item C-c C-r
1954 Show a time-sorted view of the org file, with all time-stamped items
1955 of today or later. When called with a @kbd{C-u} prefix, past dates
1956 will be included as well. When called with two @kbd{C-u C-u}
1957 prefixes, all unfinished TODO entries (scheduled or not) are also
1958 listed under the current date.
1959 @end table
1960 @noindent
1961
1962 The timeline is shown in a temporary buffer @file{*Org Agenda*}. The
1963 commands available in the Agenda buffer are listed in @ref{Agenda
1964 commands}.
1965
1966 @node Agenda, Agenda commands, Timeline, Timeline and Agenda
1967 @section Agenda
1968 @cindex agenda
1969
1970 An agenda can be compiled from one or more org files. The main
1971 purpose of this command is to act like a paper agenda, showing you all
1972 the tasks for the current day or week.
1973
1974 The Org-mode files to be processed in order to generate the agenda are
1975 listed in the variable @code{org-agenda-files}. You can customize
1976 this variable, but the easiest way to maintain it is through the
1977 following commands
1978
1979 @cindex files, adding to agenda list
1980 @table @kbd
1981 @kindex C-c [
1982 @item C-c [
1983 Add current file to the list of agenda files. The file is added to
1984 the front of the list. If it was already in the list, it is moved to
1985 the front. With prefix arg, file is added/moved to the end.
1986 @kindex C-c ]
1987 @item C-c ]
1988 Remove current file from the list of agenda files.
1989 @kindex C-,
1990 @item C-,
1991 Cycle through agenda file list.
1992 @end table
1993 @noindent
1994 The Org menu contains the list of all files and can be used to quickly
1995 visit any of them.
1996
1997 The global command @command{org-agenda} compiles the agenda from all
1998 listed files.
1999
2000 @table @kbd
2001 @cindex org-agenda, command
2002 @kindex C-c a
2003 @item C-c a
2004 Compile an agenda for the current week from a list of org files. The
2005 agenda shows the entries for each day. With a @kbd{C-u} prefix (or
2006 when the variable @code{org-agenda-include-all-todo} is @code{t}), all
2007 unfinished TODO items (also those without a date) are also listed at
2008 the beginning of the buffer, before the first date.@*
2009 The key binding @kbd{C-c a} is only a suggestion - see
2010 @ref{Installation and Activation}.
2011 @end table
2012
2013 The commands available in the Agenda buffer are listed in
2014 @ref{Agenda commands}.
2015
2016 @subsection Categories
2017
2018 @cindex category
2019 In the agenda buffer, each entry is preceded by a @emph{category},
2020 which is derived from the file name. The category can also be set
2021 with a special line anywhere in the buffer, looking like this:
2022 @example
2023 #+CATEGORY: Thesis
2024 @end example
2025 If there are several such lines in a file, each specifies the category
2026 for the text below it. The display in the agenda buffer looks best if
2027 the category is not longer than 10 characters.
2028
2029 @subsection Time-of-Day Specifications
2030
2031 Org-mode checks each agenda item for a time-of-day specification. The
2032 time can be part of the time stamp that triggered inclusion into the
2033 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
2034 ranges can be specified with two time stamps, like
2035 @c
2036 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
2037
2038 In the headline of the entry itself, a time(range) may also appear as
2039 plain text (like @samp{12:45} or a @samp{8:30-1pm}. If the agenda
2040 integrates the Emacs diary (@pxref{Calendar/Diary integration}), time
2041 specifications in diary entries are recognized as well.
2042
2043 For agenda display, Org-mode extracts the time and displays it in a
2044 standard 24 hour format as part of the prefix. The example times in
2045 the previous paragraphs would end up in the agenda like this:
2046
2047 @example
2048 8:30-13:00 Arthur Dent lies in front of the bulldozer
2049 12:45...... Ford Prefect arrives and takes Arthur to the pub
2050 19:00...... The Vogon reads his poem
2051 20:30-22:15 Marwin escorts the Hitchhikers to the bridge
2052 @end example
2053
2054 If the agenda is in single-day mode, or for the display of today, the
2055 timed entries are embedded in a time grid, like
2056
2057 @example
2058 8:00...... ------------------
2059 8:30-13:00 Arthur Dent lies in front of the bulldozer
2060 10:00...... ------------------
2061 12:00...... ------------------
2062 12:45...... Ford Prefect arrives and takes Arthur to the pub
2063 14:00...... ------------------
2064 16:00...... ------------------
2065 18:00...... ------------------
2066 19:00...... The Vogon reads his poem
2067 20:00...... ------------------
2068 20:30-22:15 Marwin escorts the Hitchhikers to the bridge
2069 @end example
2070
2071 The time grid can be turned on and off with the variable
2072 @code{org-agenda-use-time-grid}, and can be configured with
2073 @code{org-agenda-time-grid}.
2074
2075
2076 @subsection Sorting of agenda items
2077 @cindex sorting, of agenda items
2078 @cindex priorities, of agenda items
2079 The entries for each day are sorted. The default order is to first
2080 collect all items containing an explicit time-of-day specification.
2081 These entries will be shown at the beginning of the list, as a
2082 @emph{schedule} for the day. After that, items remain grouped in
2083 categories, in the sequence given by @code{org-agenda-files}. Within
2084 each category, items are sorted by priority (@pxref{Priorities}).
2085
2086 The priority is a numerical quantity composed of the base priority
2087 (2000 for priority @samp{A}, 1000 for @samp{B}, and 0 for @samp{C}),
2088 plus additional increments for overdue scheduled or deadline items.
2089
2090 Sorting can be customized using the variable
2091 @code{org-agenda-sorting-strategy}.
2092
2093 @node Agenda commands, Calendar/Diary integration, Agenda, Timeline and Agenda
2094 @section Commands in the agenda buffer
2095
2096 Entries in the agenda buffer are linked back to the org file or diary
2097 file where they originate. You are not allowed to edit the agenda
2098 buffer itself, but commands are provided to show and jump to the
2099 original entry location, and to edit the org-files ``remotely'' from
2100 the agenda buffer. In this way, all information is stored only once,
2101 and you don't risk that your agenda and note files diverge.
2102
2103 Some commands can be executed with mouse clicks on agenda lines. For
2104 the other commands, the cursor needs to be in the desired line. Most
2105 commands are available for both timelines and the agenda. The
2106 exceptions are marked.
2107
2108 @table @kbd
2109 @tsubheading{Motion}
2110 @kindex n
2111 @item n
2112 Next line (same as @key{up}).
2113 @kindex p
2114 @item p
2115 Previous line (same as @key{down}).
2116 @tsubheading{View/GoTo org file}
2117 @kindex mouse-3
2118 @kindex @key{SPC}
2119 @item mouse-3
2120 @itemx @key{SPC}
2121 Display the original location of the item in another window.
2122
2123 @kindex l
2124 @item l
2125 Display original location and recenter that window.
2126
2127 @kindex mouse-2
2128 @kindex @key{TAB}
2129 @item mouse-2
2130 @itemx @key{TAB}
2131 Go to the original location of the item in another window.
2132
2133 @kindex @key{RET}
2134 @itemx @key{RET}
2135 Go to the original location of the item and delete other windows.
2136
2137 @kindex f
2138 @item f
2139 Toggle follow mode. In follow mode, as you move the cursor through
2140 the agenda buffer, the other window always shows the corresponding
2141 location in the org file.
2142
2143 @tsubheading{Change display}
2144 @kindex o
2145 @item o
2146 Delete other windows.
2147
2148 @kindex w
2149 @item w
2150 Switch to weekly view (7 days displayed together)
2151
2152 @kindex d
2153 @item d
2154 Switch to daily view (just one day displayed)
2155
2156 @kindex D
2157 @item D
2158 Toggle the inclusion of diary entries. See @ref{Calendar/Diary integration}.
2159
2160 @kindex g
2161 @item g
2162 Toggle the time grid on and off. See also the variables
2163 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
2164
2165 @kindex r
2166 @item r
2167 Recreate the agenda buffer, for example to reflect the changes
2168 after modification of the time stamps of items with S-@key{left} and
2169 S-@key{right}. When the buffer is the global todo list, a prefix
2170 argument is interpreted to create a selective list for a specific TODO
2171 keyword.
2172
2173 @kindex @key{right}
2174 @item @key{right}
2175 Display the following @code{org-agenda-ndays} days. For example, if
2176 the display covers a week, switch to the following week. With prefix
2177 arg, go forward that many times @code{org-agenda-ndays} days. Not
2178 available in timelines.
2179
2180 @kindex @key{left}
2181 @item @key{left}
2182 Display the previous dates. Not available in timelines.
2183
2184 @kindex .
2185 @item .
2186 Goto today.
2187
2188 @tsubheading{Remote editing}
2189
2190 @item 0-9
2191 Digit argument.
2192
2193 @kindex t
2194 @item t
2195 Change the TODO state of the item, both in the agenda and in the
2196 original org file.
2197
2198 @kindex ,
2199 @item ,
2200 Set the priority for the current item. Org-mode prompts for the
2201 priority character. If you reply with @key{SPC}, the priority cookie
2202 is removed from the entry.
2203
2204 @kindex P
2205 @item p
2206 Display weighted priority of current item.
2207
2208 @kindex +
2209 @kindex S-@key{up}
2210 @item +
2211 @itemx S-@key{up}
2212 Increase the priority of the current item. The priority is changed in
2213 the original buffer, but the agenda is not resorted. Use the @kbd{r}
2214 key for this.
2215
2216 @kindex -
2217 @kindex S-@key{down}
2218 @item -
2219 @itemx S-@key{down}
2220 Decrease the priority of the current item.
2221
2222 @kindex S-@key{right}
2223 @item S-@key{right}
2224 Change the time stamp associated with the current line by one day into
2225 the future. With prefix argument, change it by that many days. For
2226 example, @kbd{3 6 5 S-@key{right}} will change it by a year. The
2227 stamp is changed in the original org file, but the change is not
2228 directly reflected in the agenda buffer. Use the
2229 @kbd{r} key to update the buffer.
2230
2231 @kindex S-@key{left}
2232 @item S-@key{left}
2233 Change the time stamp associated with the current line by one day
2234 into the past.
2235
2236 @kindex >
2237 @item >
2238 Change the time stamp associated with the current line to today.
2239 The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
2240 on my keyboard.
2241
2242 @cindex diary entries, creating from agenda
2243 @kindex i
2244 @item i
2245 Insert a new entry into the diary. Prompts for the type of entry
2246 (day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
2247 entry in the diary, just like @kbd{i d} etc. would do in the calendar.
2248 The date is taken from the cursor position.
2249
2250 @tsubheading{Calendar commands}
2251 @kindex c
2252 @item c
2253 Open the Emacs calendar and move to the date at the agenda cursor.
2254
2255 @item c
2256 When in the calendar, compute and show the Org-mode agenda for the
2257 date at the cursor.
2258
2259 @kindex M
2260 @item M
2261 Show the phases of the moon for three month around current date.
2262
2263 @kindex S
2264 @item S
2265 Show sunrise and sunset times. The geographical location must be set
2266 with calendar variables, see documentation of the Emacs calendar.
2267
2268 @kindex C
2269 @item C
2270 Convert the date at cursor into many other cultural and historic
2271 calendars.
2272
2273 @kindex H
2274 @item H
2275 Show holidays for three month around the cursor date.
2276
2277 @kindex C-c C-x C-c
2278 @item C-c C-x C-c
2279 Export a single iCalendar file containing entries from all agenda files.
2280 Not available in timelines.
2281
2282 @tsubheading{Quit and Exit}
2283 @kindex q
2284 @item q
2285 Quit Agenda, remove the agenda buffer.
2286
2287 @kindex x
2288 @cindex agenda files, removing buffers
2289 @item x
2290 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
2291 for the compilation of the agenda. Buffers created by the user to
2292 visit org files will not be removed.
2293
2294 @end table
2295
2296 @node Calendar/Diary integration, , Agenda commands, Timeline and Agenda
2297 @section Calendar/Diary integration
2298 @cindex calendar integration
2299 @cindex diary integration
2300
2301 Emacs contains the calendar and diary by Edward M. Reingold. The
2302 calendar displays a three-month calendar with holidays from different
2303 countries and cultures. The diary allows to keep track of
2304 anniversaries, lunar phases, sunrise/set, recurrent appointments
2305 (weekly, monthly) and more. In this way, it is quite complementary to
2306 Org-mode. It can be very useful to combine output from Org-mode with
2307 the diary.
2308
2309 The interaction between Org-mode and diary works both ways: You can
2310 list entries from the diary in the Org-mode agenda, from which many
2311 calendar and diary commands are directly accessible. Or you can
2312 display entries from the org agenda in the Emacs diary.
2313
2314 @menu
2315 * Diary to agenda:: Agenda incorporates the diary
2316 * Agenda to diary:: Diary incorporates the agenda
2317 @end menu
2318
2319 @node Diary to agenda, Agenda to diary, Calendar/Diary integration, Calendar/Diary integration
2320 @subsection Including the diary into the agenda
2321 @cindex diary to agenda
2322
2323 In order to include entries from the Emacs diary into Org-mode's
2324 agenda, you only need to customize the variable
2325
2326 @lisp
2327 (setq org-agenda-include-diary t)
2328 @end lisp
2329 @noindent
2330
2331 @noindent After that, everything will happen automatically. All diary
2332 entries including holidays, anniversaries etc will be included in the
2333 agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and
2334 @key{RET} can be used from the agenda buffer to jump to the diary
2335 file, in order to edit existing diary entries. The @kbd{i} command to
2336 insert new entries for the current date works in the agenda buffer, as
2337 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
2338 Sunrise/Sunset times, show lunar phases and to convert to other
2339 calendars, respectively. @kbd{c} can be used to switch back and forth
2340 between calendar and agenda.
2341
2342 @node Agenda to diary, , Diary to agenda, Calendar/Diary integration
2343 @subsection Including the agenda into the diary
2344
2345 If you prefer to use the Emacs diary as your main instrument and if
2346 you wish to include the Org-mode agenda into it, the following steps
2347 are necessary: Autoload the function @command{org-diary} as shown
2348 above under @ref{Installation and Activation}. You also need to use
2349 @emph{fancy diary display} by setting in @file{.emacs}:
2350
2351 @lisp
2352 (add-hook 'diary-display-hook 'fancy-diary-display)
2353 @end lisp
2354
2355 Then include the following line into your @file{~/diary} file, in
2356 order to get the entries from all files listed in the variable
2357 @code{org-agenda-files}:
2358
2359 @example
2360 &%%(org-diary)
2361 @end example
2362 @noindent
2363 You may also select specific files with
2364
2365 @example
2366 &%%(org-diary) ~/path/to/some/org-file.org
2367 &%%(org-diary) ~/path/to/another/org-file.org
2368 @end example
2369
2370 If you now launch the calendar and press @kbd{d} to display a diary,
2371 the headlines of entries containing a timestamp, date range, schedule,
2372 or deadline referring to the selected date will be listed. Just like
2373 in Org-mode's agenda view, the diary for @emph{today} contains
2374 additional entries for overdue deadlines and scheduled items. See
2375 also the documentation of the @command{org-diary} function.
2376
2377 @node Exporting, Miscellaneous, Timeline and Agenda, Top
2378 @chapter Exporting
2379 @cindex exporting
2380
2381 For printing and sharing of notes, Org-mode documents can be exported
2382 as ASCII or HTML files. To incorporate entries with associated times
2383 like deadlines or appointments into a desktop calendar program like
2384 iCal, Org-mode can also produce extracts in the iCalendar format.
2385
2386 @menu
2387 * ASCII export:: Export as a structured ASCII file
2388 * HTML export:: Export as an HTML file
2389 * iCalendar export:: Create calendar entries.
2390 @end menu
2391
2392 @node ASCII export, HTML export, Exporting, Exporting
2393 @section ASCII export
2394 @cindex ASCII export
2395
2396 @cindex region, active
2397 @cindex active region
2398 @cindex transient-mark-mode
2399 @table @kbd
2400 @kindex C-c C-x a
2401 @item C-c C-x a
2402 Export as ASCII file. If there is an active region, only the region
2403 will be exported. For an org file @file{myfile.org}, the ASCII file
2404 will be @file{myfile.txt}. The file will be overwritten without
2405 warning.
2406 @end table
2407
2408 @cindex headline levels, for exporting
2409 In the exported version, the first 3 outline levels will become
2410 headlines, defining a general document structure. Additional levels
2411 will be exported as itemize lists. If you want that transition to occur
2412 at a different level, specify it with a prefix argument. For example,
2413 @example
2414 @kbd{C-1 C-c C-x a org-export-as-ascii}
2415 @end example
2416 @noindent
2417 creates only top level headlines and does the rest as items. Lines
2418 starting with @samp{#} and subtrees starting with the word @samp{COMMENT}
2419 will not be exported.
2420
2421 @node HTML export, iCalendar export, ASCII export, Exporting
2422 @section HTML export
2423 @cindex HTML export
2424
2425 Org-mode contains an HTML exporter with extensive HTML formatting, in
2426 ways similar to John Grubers @emph{markdown} language, but with
2427 additional support for tables.
2428
2429 @cindex region, active
2430 @cindex active region
2431 @cindex transient-mark-mode
2432 @table @kbd
2433 @kindex C-c C-x h
2434 @item C-c C-x h
2435 Export as HTML file @file{myfile.html}.
2436 @kindex C-c C-x b
2437 @item C-c C-x b
2438 Export as HTML file and open it with a browser.
2439 @kindex C-c C-x t
2440 @item C-c C-x t
2441 Insert template with export options, see below.
2442 @kindex C-c :
2443 @item C-c :
2444 Toggle fixed-width for entry (QUOTE) or region, see below.
2445 @end table
2446
2447 @cindex headline levels, for exporting
2448 In the exported version, the first 3 outline levels will become
2449 headlines, defining a general document structure. Additional levels
2450 will be exported as itemize lists. If you want that transition to occur
2451 at a different level, specify it with a prefix argument. For example,
2452 @example
2453 @kbd{C-2 C-c C-x b}
2454 @end example
2455 @noindent
2456 creates two levels of headings and does the rest as items.
2457
2458 @menu
2459 * HTML formatting:: Interpretation of the buffer content
2460 * Export options:: How to influence exports
2461 * Comment lines:: Lines which will not be exported
2462 @end menu
2463
2464 @node HTML formatting, Export options, HTML export, HTML export
2465 @subsection HTML formatting
2466
2467 Not all text is transferred literally to the exported HTML file. The
2468 exporter implements the following interpretation:
2469
2470 @itemize @bullet
2471
2472 @cindex hand-formatted lists
2473 @cindex lists, hand-formatted
2474 @item
2475 Hand-formatted lists with @samp{-}, @samp{*} or @samp{+} as
2476 bullet, or with @samp{1.} or @samp{2)} as enumerator will be recognized and
2477 transformed into HTML lists. See @xref{Plain Lists}.
2478
2479 @cindex underlined text
2480 @cindex bold text
2481 @cindex italic text
2482 @item
2483 You can make words @b{*bold*}, @i{/italic/}, and _underlined_
2484
2485 @cindex @TeX{} interpretation
2486 @item
2487 Simple @TeX{}-like math constructs are interpreted:
2488
2489 @cindex completion, of @TeX{} symbols
2490 @itemize @minus
2491 @item
2492 @samp{10^22} and @samp{J_n} are super- and subscripts. You can quote
2493 @samp{^} and @samp{_} with a backslash: @samp{\_} and @samp{\^}
2494 @item
2495 @samp{\alpha} indicates a Greek letter, @samp{\to} an arrow. You can
2496 use completion for these macros, just type @samp{\} and maybe a few
2497 letters, and press @kbd{M-@key{TAB}} to see possible completions.
2498 @end itemize
2499
2500 @cindex tables, export to HTML
2501 @item
2502 Tables are transformed into HTML tables. Data fields before the first
2503 horizontal separator line will be formatted as table header fields.
2504
2505 @cindex fixed width
2506 @item
2507 If a headline starts with the word @samp{QUOTE}, the text below the
2508 headline will be typeset as fixed-width, to allow quoting of computer
2509 codes etc. Lines starting with @samp{:} are also typeset in
2510 fixed-width font.
2511
2512 @cindex HTML tags
2513 @item
2514 If you want to include HTML tags which should be interpreted as such,
2515 mark them with a @samp{@@} like in @samp{@@<b>bold text@@</b>}.
2516 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
2517 @samp{&gt;} in HTML export.
2518 @end itemize
2519
2520 If these conversions conflict with your habits of typing ASCII text,
2521 they can all be turned off with corresponding variables.
2522
2523 @node Export options, Comment lines, HTML formatting, HTML export
2524 @subsection Export options
2525 @cindex options, for export
2526
2527 @cindex completion, of option keywords
2528 The exporter recognizes special lines in the buffer which provide
2529 additional information. These lines may be put anywhere in the file.
2530 The whole set of lines can be inserted into the buffer with @kbd{C-c
2531 C-x t}. For individual lines, a good way to make sure the keyword is
2532 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
2533 (@pxref{Completion}).
2534
2535 @example
2536 #+TITLE: the title to be shown (default is the buffer name)
2537 #+AUTHOR: the author (default taken from @code{user-full-name})
2538 #+EMAIL: his/her email address (default from @code{user-mail-address})
2539 #+LANGUAGE: language for HTML, e.g. @samp{en} (@code{org-export-default-language})
2540 #+TEXT: Some descriptive text to be inserted at the beginning.
2541 #+TEXT: Several lines may be given.
2542 #+OPTIONS: H:2 num:t toc:t \n:nil @:t ::t |:t ^:t *:nil TeX:t
2543 @end example
2544 @noindent
2545 The OPTIONS line is a compact form to specify export settings. Here
2546 you can
2547 @cindex headline levels
2548 @cindex section-numbers
2549 @cindex table of contents
2550 @cindex linebreak preservation
2551 @cindex quoted html tags
2552 @cindex fixed-width sections
2553 @cindex tables
2554 @cindex @TeX{}-like syntax for sub- and superscripts
2555 @cindex emphasized text
2556 @cindex @TeX{} macros
2557 @example
2558 H: @r{set the number of headline levels for export}
2559 num: @r{turn on/off section-numbers}
2560 toc: @r{turn on/off table of contents}
2561 \n: @r{turn on/off linebreak-preservation}
2562 @@: @r{turn on/off quoted html tags}
2563 :: @r{turn on/off fixed-width sections}
2564 |: @r{turn on/off tables}
2565 ^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts.}
2566 *: @r{turn on/off emphasized text (bold, italic, underlined)}
2567 TeX: @r{turn on/off @TeX{} macros}
2568 @end example
2569
2570 You can also give style information for the exported file. The
2571 default specification can be configured through the option
2572 @code{org-export-html-style}. If you want to use a file-local style,
2573 you may use file variables, best wrapped into a COMMENT section at the
2574 end of the outline tree. For example:
2575
2576 @example
2577 * COMMENT HTML style specifications
2578
2579 # Local Variables:
2580 # org-export-html-style: " <style type=\"text/css\">
2581 p @{font-weight: normal; color: gray; @}
2582 h1 @{color: black; @}
2583 </style>"
2584 # End: ***
2585 @end example
2586
2587 Remember to execute @kbd{M-x normal-mode} after changing this to make
2588 the new style visible to Emacs.
2589
2590 @node Comment lines, , Export options, HTML export
2591 @subsection Comment lines
2592 @cindex comment lines
2593 @cindex exporting, not
2594
2595 Lines starting with @samp{#} in column zero are treated as comments
2596 and will never be exported. Also entire subtrees starting with the
2597 word @samp{COMMENT} will never be exported. Finally, any text before
2598 the first headline will not be exported either. This applies also for
2599 ASCII export.
2600
2601 @table @kbd
2602 @kindex C-c ;
2603 @item C-c ;
2604 Toggle the COMMENT keyword at the beginning of an entry.
2605 @end table
2606
2607 @node iCalendar export, , HTML export, Exporting
2608 @section iCalendar export
2609
2610 Some people like to use Org-mode for keeping track of projects, but
2611 still prefer a standard calendar application for anniversaries and
2612 appointments. In this case it can be useful to have deadlines and
2613 other time-stamped items in Org-mode files show up in the calendar
2614 application. Org-mode can export calendar information in the standard
2615 iCalendar format.
2616
2617 @table @kbd
2618 @kindex C-c C-x i
2619 @item C-c C-x i
2620 Create iCalendar entries for the current file and store them in the same
2621 directory, using a file extension @file{.ics}.
2622 @kindex C-c C-x C-i
2623 @item C-c C-x C-i
2624 Like @kbd{C-c C-x i}, but do this for all files in
2625 @code{org-agenda-files}. For each of these files, a separate iCalendar
2626 file will be written.
2627 @kindex C-c C-x c
2628 @item C-c C-x c
2629 Create a single large iCalendar file from all files in
2630 @code{org-agenda-files} and write it to the file given by
2631 @code{org-combined-agenda-icalendar-file}.
2632 @end table
2633
2634 How this calendar is best read and updated, depends on the application
2635 you are using. For example, when using iCal under Apple MacOS X, you
2636 could create a new calendar @samp{OrgMode} (the default name for the
2637 calendar created by @kbd{C-c C-x c}, see the variables
2638 @code{org-icalendar-combined-name} and
2639 @code{org-combined-agenda-icalendar-file}). Then set Org-mode to
2640 overwrite the corresponding file
2641 @file{~/Library/Calendars/OrgMode.ics}. You may even use AppleScript
2642 to make iCal re-read the calendar files each time a new version of
2643 @file{OrgMode.ics} is produced. Here is the setup needed for this:
2644
2645 @lisp
2646 (setq org-combined-agenda-icalendar-file
2647 "~/Library/Calendars/OrgMode.ics")
2648 (add-hook 'org-after-save-iCalendar-file-hook
2649 (lambda ()
2650 (shell-command
2651 "osascript -e 'tell application \"iCal\" to reload calendars'")))
2652 @end lisp
2653
2654 @node Miscellaneous, Index, Exporting, Top
2655 @chapter Miscellaneous
2656
2657 @menu
2658 * Completion:: M-TAB knows what you need
2659 * Customization:: Adapting Org-mode to your taste
2660 * FAQ:: Frequently asked questions
2661 * Interaction:: Other Emacs packages
2662 * TTY keys:: Using Org-mode on a tty
2663 * Bugs:: Things which do not work perfectly
2664 * Acknowledgments:: These people provided feedback and more
2665 @end menu
2666
2667 @node Completion, Customization, Miscellaneous, Miscellaneous
2668 @section Completion
2669 @cindex completion, of @TeX{} symbols
2670 @cindex completion, of TODO keywords
2671 @cindex completion, of dictionary words
2672 @cindex completion, of option keywords
2673 @cindex completion, of CamelCase links
2674
2675 Org-mode supports in-buffer completion. This type of completion does
2676 not make use of the minibuffer. You simply type a few letters into
2677 the buffer and use the key to complete text right there.
2678
2679 @table @kbd
2680 @kindex M-@key{TAB}
2681 @item M-@key{TAB}
2682 Complete word at point
2683 @itemize @bullet
2684 @item
2685 At the beginning of a headline, complete TODO keywords.
2686 @item
2687 After @samp{\}, complete @TeX{} symbols supported by the exporter.
2688 @item
2689 After @samp{*}, complete CamelCase versions of all headlines in the
2690 buffer.
2691 @item
2692 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
2693 @samp{OPTIONS} which set file-specific options for Org-mode. When the
2694 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
2695 will insert example settings for this keyword.
2696 @item
2697 Elsewhere, complete dictionary words using ispell.
2698 @end itemize
2699 @end table
2700
2701 @node Customization, FAQ, Completion, Miscellaneous
2702 @section Customization
2703 @cindex customization
2704 @cindex options, for customization
2705 @cindex variables, for customization
2706
2707 There is a large number of variables which can be used to customize
2708 Org-mode. For the sake of compactness of the manual, we are not
2709 describing the variables here. For an overview of customization
2710 variables, use @kbd{M-x org-customize}. Or select @code{Browse Org
2711 Group} from the @code{Org->Customization} menu.
2712
2713 @node FAQ, Interaction, Customization, Miscellaneous
2714 @section Frequently asked questions
2715
2716 @enumerate
2717 @item @b{Org-mode seems to be a useful default mode for the various
2718 @file{README} files I have scattered through my directories. How do I
2719 turn it on for all @file{README} files?}
2720 @example
2721 (add-to-list 'auto-mode-alist '("README$" . org-mode))
2722 @end example
2723
2724 @item @b{I would like to have two windows on the same Org-mode
2725 file, but with different outline visibility. Is that possible?}@*
2726 @cindex @code{make-indirect-buffer}
2727 @cindex indirect buffers
2728 In GNU Emacs, you may use @emph{indirect buffers} which do exactly
2729 this. See the documentation on the command
2730 @code{make-indirect-buffer}. In XEmacs, this is currently not
2731 possible because of the different outline implementation.
2732
2733 @item @b{Is there an easy way to insert links to web locations?}@*
2734 @cindex URL, paste into buffer
2735 Sure, just type or paste them into the buffer. A plain-text URL-like
2736 string is directly interpreted as a link.
2737
2738 @item @b{When I export my TODO list, every TODO item becomes a
2739 separate section. How do I enforce these items to be exported as an
2740 itemized list?}@*
2741 If you plan to use ASCII or HTML export, make sure things you want to
2742 be exported as item lists are level 4 at least, even if that does mean
2743 there is a level jump. For example
2744
2745 @example
2746 * Todays top priorities
2747 **** TODO write a letter to xyz
2748 **** TODO Finish the paper
2749 **** Pick up kids at the school
2750 @end example
2751
2752 Alternatively, if you need a specific value for the heading/item
2753 transition in a particular file, use the @samp{+OPTIONS} line to
2754 configure the @samp{H} switch.
2755
2756 @example
2757 +OPTIONS: H:2; ...
2758 @end example
2759
2760 @item @b{I would like to export only a subtree of my file to HTML. How?}@*
2761 @cindex exporting a subtree
2762 If you want to export a subtree, mark the subtree as region and then
2763 export. Marking can be done with @kbd{C-c @@ C-x C-x}, for example.
2764
2765 @item @b{Org-mode takes over the S-cursor keys. I also want to use
2766 CUA-mode, is there a way to fix this conflict?}@*
2767 Yes, see @ref{Interaction}
2768
2769 @item @b{Is there an easy way to insert an empty table template with a
2770 default number of rows and columns?}@*
2771 @cindex table, empty template
2772 To insert an empty table template, just type @samp{|-} and use
2773 @key{TAB}. The default size can be changed with the variable
2774 @code{org-table-default-size}. However, just starting to type the
2775 first line is usually much easier.
2776
2777 @item @b{One of my table columns has started to fill up with
2778 @samp{#ERROR}. What is going on?}@*
2779 Org-mode tried to compute the column from other fields using a
2780 formula stored in the @samp{#+TBLFMT:} line just below the table, and
2781 the evaluation of the formula fails. Fix the fields used in the
2782 formula, or fix the formula, or remove it!
2783
2784 @item @b{When I am in the last column of a table and just above a
2785 horizontal line in the table, pressing TAB creates a new table line
2786 @i{before} the horizontal line. How can I quickly move to the line
2787 @i{below} the horizontal line instead?}@*
2788 Press @key{down} (to get on the separator line) and then @key{TAB}.
2789 Or configure the variable @code{org-table-tab-jumps-over-hlines}.
2790
2791 @item @b{How can I change the indentation of an entire table without
2792 fixing every line by hand?}@*
2793 @cindex indentation, of tables
2794 The indentation of a table is set by the first line. So just fix the
2795 indentation of the first line and realign with @key{TAB}.
2796
2797 @end enumerate
2798
2799
2800 @node Interaction, TTY keys, FAQ, Miscellaneous
2801 @section Interaction with other packages
2802 @cindex packages, interaction with other
2803 Org-mode can cooperate with the following packages:
2804
2805 @table @asis
2806 @cindex @file{table.el}
2807 @item @file{table.el} by Takaaki Ota
2808 Org mode cooperates with table.el, see @ref{table.el}.
2809 @cindex @file{calc.el}
2810 @item @file{calc.el} by Dave Gillespie
2811 Org-mode uses the calc package for implementing spreadsheet
2812 functionality in its tables (@pxref{Table calculations}). Org-modes
2813 checks for the availability of calc by looking for the function
2814 @code{calc-eval} which should be autoloaded in your setup if calc has
2815 been installed properly. As of Emacs 22, calc is part of the Emacs
2816 distribution. Another possibility for interaction between the two
2817 packages is using calc for embedded calculations. @xref{Embedded Mode,
2818 , Embedded Mode, calc, GNU Emacs Calc Manual}.
2819 @cindex @file{constants.el}
2820 @item @file{constants.el} by Carsten Dominik
2821 In a table formula (@pxref{Table calculations}), it is possible to use
2822 names for natural constants or units. Instead of defining you own
2823 constants in the variable @code{org-table-formula-constants}, install
2824 the @file{constants} package which defines a large number of constants
2825 and units, and lets you use unit prefixes like @samp{M} for
2826 @samp{Mega} etc. You will need version 2.0 of this package, available
2827 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org-mode checks for
2828 the function @code{constants-get}, which has to be autoloaded in your
2829 setup. See the installation instructions in the file
2830 @file{constants.el}.
2831 @cindex @file{remember.el}
2832 @cindex @file{CUA.el}
2833 @item @file{CUA.el} by Kim. F. Storm
2834 Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys
2835 used by CUA-mode (as well as pc-select-mode and s-region-mode) to
2836 select and extend the region. If you want to use one of these
2837 packages along with Org-mode, configure the variable
2838 @code{org-CUA-compatible}. When set, Org-mode will move the following
2839 keybindings in org-mode files, and in the agenda buffer (but not
2840 during date selection).
2841 @example
2842 S-UP -> M-p S-DOWN -> M-n
2843 S-LEFT -> M-- S-RIGHT -> M-+
2844 S-RET -> C-S-RET
2845 @end example
2846 Yes, these are unfortunately more difficult to remember. If you want
2847 to have other replacement keys, look at the variable
2848 @code{org-disputed-keys}.
2849 @item @file{remember.el} by John Wiegley
2850 Org mode cooperates with remember, see @ref{Remember}.
2851 @cindex @file{planner.el}
2852 @item @file{planner.el} by John Wiegley
2853 Planner is another tool to plan work and keep track of tasks. Planner
2854 uses a multi-file approach with project pages and day pages. Is based
2855 on Emacs-Wiki. If Planner is your primary tool, it can be useful to
2856 display the agenda entries resulting from org files in day-pages of
2857 the planner. This can be done through the diary of the calendar:
2858 Integrate org files into the diary as described above, and then turn
2859 on the diary support of planner.
2860 @end table
2861
2862 @node TTY keys, Bugs, Interaction, Miscellaneous
2863 @section Using org-mode on a tty
2864
2865 Org-mode uses a number of keys that are not accessible on a tty. This
2866 applies to most special keys like cursor keys, @key{TAB} and
2867 @key{RET}, when these are combined with modifier keys like @key{Meta}
2868 and/or @key{Shift}. Org-mode uses these bindings because it needs to
2869 provide keys for a large number of commands, and because these keys
2870 appeared particularly easy to remember. In order to still be able to
2871 access the core functionality of Org-mode on a tty, alternative
2872 bindings are provided. Here is a complete list of these bindings,
2873 which are obviously more cumbersome to use. Note that sometimes a
2874 work-around can be better. For example changing a time stamp is
2875 really only fun with @kbd{S-@key{cursor}} keys. On a tty you would
2876 rather use @kbd{C-c .} to re-insert the timestamp.
2877
2878 @page
2879 @multitable @columnfractions 0.15 0.2 0.2
2880 @item @b{Default} @tab @b{Alternative 1} @tab @b{Alternative 2}
2881 @item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab
2882 @item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{@key{Esc} @key{left}}
2883 @item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab
2884 @item @kbd{M-@key{right}} @tab @kbd{C-c C-x r} @tab @kbd{@key{Esc} @key{right}}
2885 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab
2886 @item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{@key{Esc} @key{up}}
2887 @item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab
2888 @item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{@key{Esc} @key{down}}
2889 @item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab
2890 @item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab
2891 @item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{@key{Esc} @key{RET}}
2892 @item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab
2893 @item @kbd{S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab
2894 @item @kbd{S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab
2895 @item @kbd{S-@key{up}} @tab @kbd{C-c C-x @key{up}} @tab
2896 @item @kbd{S-@key{down}} @tab @kbd{C-c C-x @key{down}} @tab
2897 @end multitable
2898
2899 @node Bugs, Acknowledgments, TTY keys, Miscellaneous
2900 @section Bugs
2901 @cindex bugs
2902
2903 Here is a list of things which should work differently, but which I
2904 have found too hard to fix.
2905
2906 @itemize @bullet
2907 @c @item
2908 @c If you call @code{fill-paragraph} (bound to @kbd{M-q}) in a table, the
2909 @c filling is correctly disabled. However, if some text directly
2910 @c (without an empty line in between) precedes or follows a table, calling
2911 @c @code{fill-paragraph} in that text will also fill the table like
2912 @c normal text. Also, @code{fill-region} does bypass the
2913 @c @code{fill-paragraph} code and will fill tables like normal text.
2914 @item
2915 Text in an entry protected with the @samp{QUOTE} keyword should not
2916 autowrap.
2917 @item
2918 When the application called by @kbd{C-c C-o} to open a file link fails
2919 (for example because the application does not exits or refuses to open
2920 the file), it does so silently. No error message is displayed.
2921 @item
2922 The remote-editing commands in the agenda buffer cannot be undone with
2923 @code{undo} called from within the agenda buffer. But you can go to
2924 the corresponding buffer (using @key{TAB} or @key{RET} and execute
2925 @code{undo} there.
2926 @item
2927 Recalculating a table line applies the formulas from left to right.
2928 If a formula uses @emph{calculated} fields further down the row,
2929 multiple recalculation may be needed to get all fields consistent.
2930 @item
2931 Under XEmacs, if Org-mode entries are included into the diary, it is
2932 not possible to jump back from the diary to the org file. Apparently,
2933 the text properties are lost when the fancy-diary-display is used.
2934 However, from Org-mode's timeline and agenda buffers (created with
2935 @kbd{C-c C-r} and @kbd{C-c a}), things do work correctly.
2936 @item
2937 Linux should also have a default viewer application, using mailcap.
2938 Maybe we can use GNUS or VM mime code? Or dired's guessing commands?
2939 Any hints (or even patches) are appreciated.
2940 @item
2941 When you write @samp{x = a /b/ c}, b will be exported in italics.
2942 @item
2943 The exporters work well, but could be made more efficient.
2944 @end itemize
2945
2946 @page
2947
2948 @node Acknowledgments, , Bugs, Miscellaneous
2949 @section Acknowledgments
2950 @cindex acknowledgments
2951
2952 Org-mode was written by Carsten Dominik, who still maintains it at the
2953 Org-mode homepage @uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
2954 The following people have helped the development along with ideas,
2955 suggestions and patches.
2956
2957 @itemize @bullet
2958 @item
2959 Matthias Rempe (Oelde) provided ideas, a patch introducing Windows
2960 NT/2000 support, and quality control.
2961 @item
2962 Kevin Rogers contributed code to access VM files on remote hosts.
2963 @item
2964 Juergen Vollmer contributed code generating the table of contents
2965 in HTML output, and other export improvements.
2966 @item
2967 Christian Egli converted the documentation into TeXInfo format and
2968 patched basic CSS formatting support into the HTML exporter. He also
2969 inspired the agenda by showing me his plans for a multifile summary.
2970 @item
2971 Philip Rooke created the Org-mode reference card. He also helped with
2972 beta testing and contributed a number of very useful ideas.
2973 @item
2974 Christian Schlauer proposed angular brackets around links, among other
2975 things.
2976 @item
2977 David Wainberg suggested to implement an archiving mechanism and helped
2978 testing.
2979 @item
2980 Linking to VM/BBDB/GNUS was inspired by Tom Shannon's
2981 @file{organizer-mode.el}.
2982 @item
2983 Scheduling TODO items was inspired by John Wiegley's @file{planner.el}.
2984 @item
2985 Sacha Chua, the current maintainer of Planner, suggested to copy
2986 linking code from Planner (I took code for RMAIL and Wanderlust).
2987 @item
2988 Oliver Oppitz made useful suggestions.
2989 @item
2990 Carsten Wimmer suggested some changes and helped fix a bug in linking
2991 to GNUS.
2992 @item
2993 Pavel Chalmoviansky reported bugs and suggested improvements related
2994 to the agenda treatment of items with specified time.
2995 @item
2996 Stefan Monnier provided a patch with lots of little fixes to keep the
2997 Emacs-Lisp compiler happy.
2998 @item
2999 Kai Grossjohann pointed out that a number of key bindings in Org-mode
3000 conflict with other packages.
3001 @item
3002 Roland Winkler pointed out that additional keybindings are needed to
3003 use Org-mode on a tty.
3004 @item
3005 Tim O'Callaghan suggested in-file links, and search options for
3006 general file links.
3007 @c @item
3008 @c Nic Ferrier and Christian Egli implemented XML export.
3009 @end itemize
3010
3011 @node Index, Key Index, Miscellaneous, Top
3012 @chapter Index
3013
3014 @printindex cp
3015
3016 @node Key Index, , Index, Top
3017 @chapter Key Index
3018
3019 @printindex ky
3020
3021 @bye
3022
3023 @ignore
3024 arch-tag: 7893d1fe-cc57-4d13-b5e5-f494a1bcc7ac
3025 @end ignore