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