Release 4.22
[org-mode.git] / org.texi
blob58126f150f4ef946a45b9f1cf986641bd7d51abb
1 \input texinfo
2 @c %**start of header
3 @setfilename org
4 @c @setfilename ../info/org
5 @settitle Org Mode Manual
7 @set VERSION 4.22
8 @set DATE April 2006
10 @dircategory Emacs
11 @direntry
12 * Org Mode: (org).      outline-based notes management and organizer
13 @end direntry
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
23 @c Macro definitions
25 @c Subheadings inside a table.
26 @macro tsubheading{text}
27 @ifinfo
28 @subsubheading \text\
29 @end ifinfo
30 @ifnotinfo
31 @item @b{\text\}
32 @end ifnotinfo
33 @end macro
35 @copying
36 This manual is for Org-mode (version @value{VERSION}).
38 Copyright @copyright{} 2004, 2005, 2006 Free Software Foundation
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.''
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
55 @titlepage
56 @title Org Mode Manual
58 @subtitle Release @value{VERSION}
59 @author by Carsten Dominik
61 @c The following two commands start the copyright page.
62 @page
63 @vskip 0pt plus 1filll
64 @insertcopying
65 @end titlepage
67 @c Output the table of contents at the beginning.
68 @contents
70 @ifnottex
71 @node Top, Introduction, (dir), (dir)
72 @top Org Mode Manual
74 @insertcopying
75 @end ifnottex
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 * Tags::                        Tagging headlines and matching sets of tags
85 * Agenda Views::                Collecting information into views
86 * Exporting::                   Sharing and publishing of notes
87 * Miscellaneous::               All the rest which did not fit elsewhere
88 * Index::                       The fast road to specific information
89 * Key Index::                   Key bindings and where they are described
91 @detailmenu
92  --- The Detailed Node Listing ---
94 Introduction
96 * Summary::                     Brief summary of what Org-mode does
97 * Installation and activation::  How to install Org-mode
98 * Feedback::                    Bug reports, ideas, patches etc.
100 Document Structure
102 * Outlines::                    Org-mode is based on outline-mode
103 * Headlines::                   How to typeset org-tree headlines
104 * Visibility cycling::          Show and hide, much simplified
105 * Motion::                      Jumping to other headlines
106 * Structure editing::           Changing sequence and level of headlines
107 * Archiving::                   Move done task trees to a different place
108 * Sparse trees::                Matches embedded in context
109 * Plain Lists::                 Editing hand-formatted lists
111 Tables
113 * Built-in table editor::       Simple tables
114 * Narrow columns::              Stop wasting space in tables   
115 * Table calculations::          Compute a field from other fields
116 * orgtbl-mode::                 The table editor as minor mode
117 * table.el::                    Complex tables
119 Calculations in tables
121 * Formula syntax::              How to write a formula
122 * Column formulas::             Formulas valid for all fields in a column
123 * Advanced features::           Field names, parameters and automatic recalc
124 * Named-field formulas::        Formulas valid in single fields
125 * Editing/debugging formulas::  Changing a stored formula
126 * Appetizer::                   Taste the power of calc
128 Hyperlinks
130 * Link format::                 How links in Org-mode are formatted
131 * Internal links::              Links to other places in the current file
132 * External links::              URL-like links to the world
133 * Managing links::              Creating, inserting and following
134 * Search Options::              Linking to a specific location
135 * Remember::                    Org-trees store quick notes
137 Internal links
139 * Radio targets::               Make targets trigger links in plain text.
140 * CamelCase links::             Activating CamelCase words as links
142 TODO items
144 * TODO basics::                 Marking and displaying TODO entries
145 * Progress logging::            Document your productivity
146 * TODO extensions::             Workflow and assignments
147 * Priorities::                  Some things are more important than others
149 Extended use of TODO keywords
151 * Workflow states::             From TODO to DONE in steps
152 * TODO types::                  I do this, Fred the rest
153 * Per file keywords::           Different files, different requirements
155 Timestamps
157 * Time stamps::                 Assigning a time to a tree entry
158 * Creating timestamps::         Commands which insert timestamps
160 Tags
162 * Tag inheritance::             Tags use the tree structure of the outline
163 * Setting tags::                How to assign tags to a headline
164 * Tag searches::                Searching for combinations of tags
166 Agenda Views
168 * Agenda files::                Files being searched for agenda information
169 * Agenda dispatcher::           Keyboard access to agenda views
170 * Weekly/Daily Agenda::         The calendar page with current tasks
171 * Global TODO list::            All unfinished action items
172 * Matching headline tags::      Structured information with fine-tuned search
173 * Timeline::                    Time-sorted view for single file
174 * Agenda commands::             Remote editing of org trees
176 The weekly/daily agenda
178 * Categories::                  Not all tasks are equal
179 * Time-of-day specifications::  How the agenda knows the time
180 * Calendar/Diary integration::  Integrating Anniversaries and more
181 * Sorting of agenda items::     The order of things
183 Exporting
185 * ASCII export::                Export as a structured ASCII file
186 * HTML export::                 Export as an HTML file
187 * iCalendar export::            Create calendar entries.
189 HTML export
191 * HTML formatting::             Interpretation of the buffer content
192 * Export options::              How to influence exports
193 * Comment lines::               Lines which will not be exported
195 Miscellaneous
197 * Completion::                  M-TAB knows what you need
198 * Customization::               Adapting Org-mode to your taste
199 * Updating settings::           How to tell Org-mode that settings have changed
200 * Clean view::                  Getting rid of leading stars in the outline
201 * TTY keys::                    Using Org-mode on a tty
202 * FAQ::                         Frequently asked questions
203 * Interaction::                 Other Emacs packages
204 * Bugs::                        Things which do not work perfectly
205 * Acknowledgments::             These people provided feedback and more
207 @end detailmenu
208 @end menu
210 @node Introduction, Document Structure, Top, Top
211 @chapter Introduction
212 @cindex introduction
214 @menu
215 * Summary::                     Brief summary of what Org-mode does
216 * Installation and activation::  How to install Org-mode
217 * Feedback::                    Bug reports, ideas, patches etc.
218 @end menu
220 @node Summary, Installation and activation, Introduction, Introduction
221 @section Summary
222 @cindex summary
224 Org-mode is a mode for keeping notes, maintaining ToDo lists, and doing
225 project planning with a fast and effective plain-text system.
227 Org-mode develops organizational tasks around NOTES files that contain
228 information about projects as plain text.  Org-mode is implemented on
229 top of outline-mode, which makes it possible to keep the content of
230 large files well structured.  Visibility cycling and structure editing
231 help to work with the tree.  Tables are easily created with a built-in
232 table editor.  Org-mode supports ToDo items, deadlines, time stamps,
233 and scheduling.  It dynamically compiles entries into an agenda that
234 utilizes and smoothly integrates much of the Emacs calendar and diary.
235 Plain text URL-like links connect to websites, emails, Usenet
236 messages, BBDB entries, and any files related to the projects.  For
237 printing and sharing of notes, an Org-mode file can be exported as a
238 structured ASCII file, as HTML, or (todo and agenda items only) as an
239 iCalendar file.
241 Org-mode keeps simple things simple.  When first fired up, it should
242 feel like a simple but easy to use outliner.  Complexity is not
243 imposed, but a large amount of functionality is available when you
244 need it.  Org-mode can be used on different levels and in different
245 ways, for example:
247 @example
248 @r{@bullet{} as an outline extension with visibility cycling and structure editing}
249 @r{@bullet{} as an ASCII system and table editor for taking structured notes}
250 @r{@bullet{} as an ASCII table editor with spreadsheet-like capabilities}
251 @r{@bullet{} as a simple hypertext system, with HTML export}
252 @r{@bullet{} as a TODO list editor}
253 @r{@bullet{} as a full agenda and planner with deadlines and work scheduling}
254 @end example
256 The Org-mode table editor can be integrated into any major mode by
257 activating the minor Orgtbl-mode.
259 There is a website for Org-mode which provides links to the newest
260 version of Org-mode, as well as additional information, screen shots
261 and example files.  This page is located at
262 @uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
264 @page
266 @node Installation and activation, Feedback, Summary, Introduction
267 @section Installation and Activation
268 @cindex installation
269 @cindex autoload
270 @cindex global keybindings
271 @cindex keybindings, global
273 If Org-mode is part of the Emacs distribution or an XEmacs package,
274 you only need to copy the following lines to your @file{.emacs} file.
275 The last two lines define @emph{global} keys for the commands
276 @command{org-store-link} and @command{org-agenda} - please
277 choose suitable keys yourself.
279 @lisp
280 ;; The following lines are always needed.  Choose your own keys.
281 (add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
282 (define-key global-map "\C-cl" 'org-store-link)
283 (define-key global-map "\C-ca" 'org-agenda)
284 @end lisp
286 If you have downloaded Org-mode from the Web, you must byte-compile
287 @file{org.el} and put it on your load path.  In addition to the Emacs
288 Lisp lines above, you also need to add the following lines to
289 @file{.emacs}:
291 @lisp
292 ;; These lines only if org-mode is not part of the X/Emacs distribution.
293 (autoload 'org-mode "org" "Org mode" t)
294 (autoload 'org-diary "org" "Diary entries from Org mode")
295 (autoload 'org-agenda "org" "Multi-file agenda from Org mode" t)
296 (autoload 'org-store-link "org" "Store a link to the current location" t)
297 (autoload 'orgtbl-mode "org" "Org tables as a minor mode" t)
298 (autoload 'turn-on-orgtbl "org" "Org tables as a minor mode")
299 @end lisp
301 @cindex org-mode, turning on
302 With this setup, all files with extension @samp{.org} will be put into
303 Org-mode.  As an alternative, make the first line of a file look like
304 this:
306 @example
307 MY PROJECTS    -*- mode: org; -*-
308 @end example
310 @noindent which will select Org-mode for this buffer no matter what
311 the file's name is.  See also the variable
312 @code{org-insert-mode-line-in-empty-file}.
314 @node Feedback,  , Installation and activation, Introduction
315 @section Feedback
316 @cindex feedback
317 @cindex bug reports
318 @cindex maintainer
319 @cindex author
321 If you find problems with Org-mode, or if you have questions, remarks,
322 or ideas about it, please contact the maintainer Carsten Dominik at
323 @value{MAINTAINEREMAIL}.
325 For bug reports, please provide as much information as possible,
326 including the version information of Emacs (@kbd{C-h v emacs-version
327 @key{RET}}) and Org-mode (@kbd{C-h v org-version @key{RET}}), as well as
328 the Org-mode related setup in @file{.emacs}.  If an error occurs, a
329 traceback can be very useful.  Often a small example file helps, along
330 with clear information about:
332 @enumerate
333 @item What exactly did you do?
334 @item What did you expect to happen?
335 @item What happened instead?
336 @end enumerate
337 @noindent Thank you for helping to improve this mode.
339 @node Document Structure, Tables, Introduction, Top
340 @chapter Document Structure
341 @cindex document structure
342 @cindex structure of document
344 Org-mode is based on outline mode and provides flexible commands to
345 edit the structure of the document.
347 @menu
348 * Outlines::                    Org-mode is based on outline-mode
349 * Headlines::                   How to typeset org-tree headlines
350 * Visibility cycling::          Show and hide, much simplified
351 * Motion::                      Jumping to other headlines
352 * Structure editing::           Changing sequence and level of headlines
353 * Archiving::                   Move done task trees to a different place
354 * Sparse trees::                Matches embedded in context
355 * Plain Lists::                 Editing hand-formatted lists
356 @end menu
358 @node Outlines, Headlines, Document Structure, Document Structure
359 @section Outlines
360 @cindex outlines
361 @cindex outline-mode
363 Org-mode is implemented on top of outline-mode.  Outlines allow to
364 organize a document in a hierarchical structure, which (at least for
365 me) is the best representation of notes and thoughts.  Overview over
366 this structure is achieved by folding (hiding) large parts of the
367 document to show only the general document structure and the parts
368 currently being worked on.  Org-mode greatly simplifies the use of
369 outlines by compressing the entire show/hide functionality into a
370 single command @command{org-cycle}, which is bound to the @key{TAB}
371 key.
373 @node Headlines, Visibility cycling, Outlines, Document Structure
374 @section Headlines
375 @cindex headlines
376 @cindex outline tree
378 Headlines define the structure of an outline tree.  The headlines in
379 Org-mode start with one or more stars, on the left margin.  For
380 example:
382 @example
383 * Top level headline
384 ** Second level
385 *** 3rd level
386     some text
387 *** 3rd level
388     more text
389 * Another top level headline
390 @end example
392 @noindent Some people find the many stars too noisy and would prefer an
393 outline that has whitespace followed by a single star as headline
394 starters.  @ref{Clean view} describes a setup to realize this.
396 @node Visibility cycling, Motion, Headlines, Document Structure
397 @section Visibility cycling
398 @cindex cycling, visibility
399 @cindex visibility cycling
400 @cindex trees, visibility
401 @cindex show hidden text
402 @cindex hide text
404 Outlines make it possible to hide parts of the text in the buffer.
405 Org-mode uses a single command bound to the @key{TAB} key to change
406 the visibility in the buffer.
408 @cindex subtree visibility states
409 @cindex folded, subtree visibility state
410 @cindex children, subtree visibility state
411 @cindex subtree, subtree visibility state
412 @table @kbd
413 @kindex @key{TAB}
414 @item @key{TAB}
415 Rotate current subtree between the states
417 @example
418 ,-> FOLDED -> CHILDREN -> SUBTREE --.
419 '-----------------------------------'
420 @end example
422 At the beginning of the buffer (or when called with @kbd{C-u}), this does
423 the same as the command @kbd{S-@key{TAB}} below.
425 @cindex global visibility states
426 @cindex overview, global visibility state
427 @cindex contents, global visibility state
428 @cindex show all, global visibility state
429 @kindex S-@key{TAB}
430 @item S-@key{TAB}
431 Rotate the entire buffer between the states
433 @example
434 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
435 '--------------------------------------'
436 @end example
438 Note that inside tables, @kbd{S-@key{TAB}} jumps to the previous field.
440 @cindex show all, command
441 @kindex C-c C-a
442 @item C-c C-a
443 Show all.
444 @end table
446 When Emacs first visits an Org-mode file, the global state is set to
447 OVERVIEW, i.e. only the top level headlines are visible.  This can be
448 configured through the variable @code{org-startup-folded}, or on a
449 per-file basis by adding one of the following lines anywhere in the
450 buffer:
452 @example
453 #+STARTUP: fold
454 #+STARTUP: nofold
455 #+STARTUP: content
456 @end example
458 @node Motion, Structure editing, Visibility cycling, Document Structure
459 @section Motion
460 @cindex motion, between headlines
461 @cindex jumping, to headlines
462 @cindex headline navigation
463 The following commands jump to other headlines in the buffer.
465 @table @kbd
466 @kindex C-c C-n
467 @item C-c C-n
468 Next heading.
469 @kindex C-c C-p
470 @item C-c C-p
471 Previous heading.
472 @kindex C-c C-f
473 @item C-c C-f
474 Next heading same level.
475 @kindex C-c C-b
476 @item C-c C-b
477 Previous heading same level.
478 @kindex C-c C-u
479 @item C-c C-u
480 Backward to higher level heading.
481 @kindex C-c C-j
482 @item C-c C-j
483 Jump to a different place without changing the current outline
484 visibility.  Shows the document structure in a temporary buffer, where
485 you can use visibility cycling (@key{TAB}) to find your destination.
486 After pressing @key{RET}, the cursor moves to the selected location in
487 the original buffer, and the headings hierarchy above it is made
488 visible.
489 @end table
491 @node Structure editing, Archiving, Motion, Document Structure
492 @section Structure editing
493 @cindex structure editing
494 @cindex headline, promotion and demotion
495 @cindex promotion, of subtrees
496 @cindex demotion, of subtrees
497 @cindex subtree, cut and paste
498 @cindex pasting, of subtrees
499 @cindex cutting, of subtrees
500 @cindex copying, of subtrees
501 @cindex subtrees, cut and paste
503 @table @kbd
504 @kindex M-@key{RET}
505 @item M-@key{RET}
506 Insert new heading with same level as current.  If the cursor is in a
507 plain list item, a new item is created.  To force creation of a new
508 headline, use a prefix arg, or first press @key{RET} to get to the
509 beginning of the next line.
510 @kindex M-S-@key{RET}
511 @item M-S-@key{RET}
512 Insert new TODO entry with same level as current heading.
513 @kindex M-@key{left}
514 @item M-@key{left}
515 Promote current heading by one level.
516 @kindex M-@key{right}
517 @item M-@key{right}
518 Demote current heading by one level.
519 @kindex M-S-@key{left}
520 @item M-S-@key{left}
521 Promote the current subtree by one level.
522 @kindex M-S-@key{right}
523 @item M-S-@key{right}
524 Demote the current subtree by one level.
525 @kindex M-S-@key{up}
526 @item M-S-@key{up}
527 Move subtree up (swap with previous subtree of same
528 level).
529 @kindex M-S-@key{down}
530 @item M-S-@key{down}
531 Move subtree down (swap with next subtree of same level).
532 @kindex C-c C-x C-w
533 @kindex C-c C-x C-k
534 @item C-c C-x C-w
535 @itemx C-c C-x C-k
536 Kill subtree, i.e. remove it from buffer but save in kill ring.
537 @kindex C-c C-x M-w
538 @item C-c C-x M-w
539 Copy subtree to kill ring.
540 @kindex C-c C-x C-y
541 @item C-c C-x C-y
542 Yank subtree from kill ring.  This does modify the level of the subtree to
543 make sure the tree fits in nicely at the yank position.  The yank
544 level can also be specified with a prefix arg, or by yanking after a
545 headline marker like @samp{****}.
546 @end table
548 @cindex region, active
549 @cindex active region
550 @cindex transient-mark-mode
551 When there is an active region (transient-mark-mode), promotion and
552 demotion work on all headlines in the region.  To select a region of
553 headlines, it is best to place both point and mark at the beginning of a
554 line, mark at the beginning of the first headline, and point at the line
555 just after the last headline to change.  Note that when the cursor is
556 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
557 functionality.
559 @node Archiving, Sparse trees, Structure editing, Document Structure
560 @section Archiving
561 @cindex archiving
562 @cindex filing subtrees
564 When a project represented by a (sub)tree is finished, you may want
565 to move the tree to an archive place, either in the same file under a
566 special top-level heading, or even to a different file.
567 @table @kbd
568 @kindex C-c $
569 @item @kbd{C-c $}
570 Archive the subtree starting at the cursor position to the location
571 given by @code{org-archive-location}.
572 @end table
574 @cindex archive locations
575 The default archive is a file in the same directory as the current
576 file, with the name derived by appending @file{_archive} to the
577 current file name.  For information and examples on how to change
578 this, see the documentation string of the variable
579 @code{org-archive-location}.  If you are also using the Org-mode
580 agenda, archiving to a different file is a good way to keep archived
581 trees from contributing agenda items.
583 @node Sparse trees, Plain Lists, Archiving, Document Structure
584 @section Sparse trees
585 @cindex sparse trees
586 @cindex trees, sparse
587 @cindex folding, sparse trees
588 @cindex occur, command
590 An important feature of Org-mode is the ability to construct
591 @emph{sparse trees} for selected information in an outline tree.  A
592 sparse tree means that the entire document is folded as much as
593 possible, but the selected information is made visible along with the
594 headline structure above it@footnote{See also the variables
595 @code{org-show-hierarchy-above} and
596 @code{org-show-following-heading}.}.  Just try it out and you will see
597 immediately how it works.
599 Org-mode contains several commands creating such trees.  The most
600 basic one is @command{org-occur}:
602 @table @kbd
603 @kindex C-c /
604 @item C-c /
605 Occur.  Prompts for a regexp and shows a sparse tree with all matches.
606 If the match is in a headline, the headline is made visible.  If the
607 match is in the body of an entry, headline and body are made visible.
608 In order to provide minimal context, also the full hierarchy of
609 headlines above the match is shown, as well as the headline following
610 the match.  Each match is also highlighted, the highlights disappear
611 when the buffer is changed with an editing command.
612 @end table
613 @noindent
614 For frequently used sparse trees of specific search strings, you can
615 use the variable @code{org-agenda-custom-commands} to define fast
616 keyboard access to specific sparse trees.  These commands will then be
617 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
618 For example:
620 @lisp
621 (setq org-agenda-custom-commands
622       '(("f" occur-tree "FIXME")))
623 @end lisp
625 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
626 a sparse tree matching the string @samp{FIXME}.
628 Other commands are using sparse trees as well.  For example @kbd{C-c
629 C-v} creates a sparse TODO tree (@pxref{TODO basics}).
631 @kindex C-c C-x v
632 @cindex printing sparse trees
633 @cindex visible text, printing
634 To print a sparse tree, you can use the Emacs command
635 @code{ps-print-buffer-with-faces} which does not print invisible parts
636 of the document @footnote{This does not work under XEmacs, because
637 XEmacs uses selective display for outlining, not text properties}.
638 Or you can use the command @kbd{C-c C-x v} to copy the visible part of
639 the document to another file (extension @file{.txt}) which can then be
640 printed in any desired way.
643 @node Plain Lists,  , Sparse trees, Document Structure
644 @section Plain Lists
645 @cindex plain lists
646 @cindex lists, plain
647 @cindex lists, ordered
648 @cindex ordered lists
650 Headlines define both the structure of the Org-mode file, and also lists
651 (for example, TODO items (@pxref{TODO items}) should be created using
652 headline levels).  However, when taking notes, the plain text is
653 sometimes easier to read with hand-formatted lists.  Org-mode supports
654 editing such lists, and the HTML exporter (@pxref{Exporting}) does
655 parse and format them.
657 Org-mode knows ordered and unordered lists.  Unordered list items start
658 with @samp{-}, @samp{+}, or @samp{*}@footnote{When using @samp{*} as a
659 bullet, lines must be indented or they will be seen as top-level
660 headlines.  Also, when you are hiding leading stars to get a clean
661 outline view, plain list items starting with a star are visually
662 indistinguishable from true headlines.  In short: even though @samp{*}
663 is supported, it may be better to not use it for plain list items} as
664 bullets.  Ordered list items start with @samp{1.} or @samp{1)}.  Items
665 belonging to the same list must have the same indentation on the first
666 line.  In particular, if an ordered list reaches number @samp{10.}, then
667 the 2--digit numbers must be written left-aligned with the other numbers
668 in the list.  Indentation also determines the end of a list item.  It
669 ends before the next line that is indented like the bullet/number, or
670 less.  For example:
672 @example
673 ** Lord of the Rings
674 My favorite scenes are (in this order)
675 1. Eowyns fight with the witch king
676    + this was already my favorite scene in the book
677    + I really like Miranda Otto.
678 2. The attack of the Rohirrim
679 3. Peter Jackson being shot by Legolas
680     - on DVD only
681    He makes a really funny face when it happens.
682 @end example
684 Org-mode supports these lists by tuning filling and wrapping commands
685 to correctly deal with them.  Furthermore, the following commands act
686 on items when the cursor is in the first line of an item (the line
687 with the bullet or number).
689 @table @kbd
690 @kindex @key{TAB}
691 @item @key{TAB}
692 Items can be folded just like headline levels if you set the variable
693 @code{org-cycle-include-plain-lists}.  The level of an item is then
694 given by the indentation of the bullet/number.  However, items are
695 always subordinate to real headlines, the hierarchies remain
696 completely separated.
697 @kindex M-@key{RET}
698 @item M-@key{RET}
699 Insert new item at current level.  With prefix arg, for a new heading.
700 @kindex M-S-@key{up}
701 @kindex M-S-@key{down}
702 @item M-S-@key{up}
703 @itemx M-S-@key{down}
704 Move the item including subitems up/down (swap with previous/next item
705 of same indentation).  If the list is ordered, renumbering is
706 automatic.
707 @kindex M-S-@key{left}
708 @kindex M-S-@key{right}
709 @item M-S-@key{left}
710 @itemx M-S-@key{right}
711 Decrease/increase the indentation of the item, including subitems.
712 Initially, the item tree is selected based on current indentation.
713 When these commands are executed several times in direct succession,
714 the initially selected region is used, even if the new indentation
715 would imply a different hierarchy.  To use the new hierarchy, break
716 the command chain with a cursor motion or so.
717 @kindex C-c C-c
718 @item C-c C-c
719 Renumber the ordered list at the cursor.
720 @end table
722 @node Tables, Hyperlinks, Document Structure, Top
723 @chapter Tables
724 @cindex tables
725 @cindex editing tables
727 Org-mode has a very fast and intuitive table editor built-in.
728 Spreadsheet-like calculations are supported in connection with the
729 Emacs @file{calc} package.
731 @menu
732 * Built-in table editor::       Simple tables
733 * Narrow columns::              Stop wasting space in tables   
734 * Table calculations::          Compute a field from other fields
735 * orgtbl-mode::                 The table editor as minor mode
736 * table.el::                    Complex tables
737 @end menu
739 @node Built-in table editor, Narrow columns, Tables, Tables
740 @section The built-in table editor
741 @cindex table editor, builtin
743 Org-mode makes it easy to format tables in plain ASCII.  Any line with
744 @samp{|} as the first non-white character is considered part of a
745 table.  @samp{|} is also the column separator.  A table might look
746 like this:
748 @example
749 | Name  | Phone | Age |
750 |-------+-------+-----|
751 | Peter |  1234 |  17 |
752 | Anna  |  4321 |  25 |
753 @end example
755 A table is re-aligned automatically each time you press @key{TAB} or
756 @key{RET} or @kbd{C-c C-c} inside the table.  @key{TAB} also moves to
757 the next field (@key{RET} to the next row) and creates new table rows
758 at the end of the table or before horizontal lines.  The indentation
759 of the table is set by the first line.  Any line starting with
760 @samp{|-} is considered as a horizontal separator line and will be
761 expanded on the next re-align to span the whole table width.  So, to
762 create the above table, you would only type
764 @example
765 |Name|Phone|Age
767 @end example
769 @noindent and then press @key{TAB} to align the table and start filling in
770 fields.
772 When typing text into a field, Org-mode treats @key{DEL},
773 @key{Backspace}, and all character keys in a special way, so that
774 inserting and deleting avoids shifting other fields.  Also, when
775 typing @emph{immediately after the cursor was moved into a new field
776 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
777 field is automatically made blank.  If this behavior is too
778 unpredictable for you, configure the variables
779 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
781 @table @kbd
782 @tsubheading{Creation and conversion}
783 @kindex C-c |
784 @item C-c |
785 Convert the active region to table. If every line contains at least one
786 TAB character, the function assumes that the material is tab separated.
787 If not, lines are split at whitespace into fields.  You can use a prefix
788 argument to indicate the minimum number of consequtive spaces required
789 to indentify a field separator (default: just one).@* 
790 If there is no active region, this command creates an empty Org-mode
791 table.  However, it's easier to just start typing, like
792 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
794 @tsubheading{Re-aligning and field motion}
795 @kindex C-c C-c
796 @item C-c C-c
797 Re-align the table without moving the cursor.
799 @kindex @key{TAB}
800 @item @key{TAB}
801 Re-align the table, move to the next field.  Creates a new row if
802 necessary.
804 @kindex S-@key{TAB}
805 @item S-@key{TAB}
806 Re-align, move to previous field.
808 @kindex @key{RET}
809 @item @key{RET}
810 Re-align the table and move down to next row.  Creates a new row if
811 necessary.  At the beginning or end of a line, @key{RET} still does
812 NEWLINE, so it can be used to split a table.
814 @tsubheading{Column and row editing}
815 @kindex M-@key{left}
816 @kindex M-@key{right}
817 @item M-@key{left}
818 @itemx M-@key{right}
819 Move the current column left/right.
821 @kindex M-S-@key{left}
822 @item M-S-@key{left}
823 Kill the current column.
825 @kindex M-S-@key{right}
826 @item M-S-@key{right}
827 Insert a new column to the left of the cursor position.
829 @kindex M-@key{up}
830 @kindex M-@key{down}
831 @item M-@key{up}
832 @itemx M-@key{down}
833 Move the current row up/down.
835 @kindex M-S-@key{up}
836 @item M-S-@key{up}
837 Kill the current row or horizontal line.
839 @kindex M-S-@key{down}
840 @item M-S-@key{down}
841 Insert a new row above (with arg: below) the current row.
843 @kindex C-c -
844 @item C-c -
845 Insert a horizontal line below current row. With prefix arg, the line
846 is created above the current line.
848 @kindex C-c ^
849 @item C-c ^
850 Sort the table lines in the region.  Point and mark must be in the first
851 and last line to be included, and must be in the column that should be
852 used for sorting.  The command prompts for numerical versus
853 alphanumerical sorting.
855 @tsubheading{Regions}
856 @kindex C-c C-x M-w
857 @item C-c C-x M-w
858 Copy a rectangular region from a table to a special clipboard.  Point
859 and mark determine edge fields of the rectangle.  The process ignores
860 horizontal separator lines.
861 @kindex C-c C-x C-w
862 @item C-c C-x C-w
863 Copy a rectangular region from a table to a special clipboard, and
864 blank all fields in the rectangle.  So this is the ``cut'' operation.
865 @kindex C-c C-x C-y
866 @item C-c C-x C-y
867 Paste a rectangular region into a table.
868 The upper right corner ends up in the current field.  All involved fields
869 will be overwritten.  If the rectangle does not fit into the present table,
870 the table is enlarged as needed.  The process ignores horizontal separator
871 lines.
872 @kindex C-c C-q
873 @item C-c C-q
874 Wrap several fields in a column like a paragraph.  If there is an active
875 region, and both point and mark are in the same column, the text in the
876 column is wrapped to minimum width for the given number of lines.  A
877 prefix ARG may be used to change the number of desired lines.  If there
878 is no region, the current field is split at the cursor position and the
879 text fragment to the right of the cursor is prepended to the field one
880 line down. If there is no region, but you specify a prefix ARG, the
881 current field is made blank, and the content is appended to the field
882 above.
884 @tsubheading{Calculations}
885 @cindex formula, in tables
886 @cindex calculations, in tables
887 @kindex C-c =
888 @item C-c =
889 Install a new formula for the current column and replace current field
890 with the result of the formula.
892 @kindex C-u C-c =
893 @item C-u C-c =
894 Install a new formula for the current field, which must be a named
895 field.  Evaluate the formula and replace the field content with the
896 result.
898 @kindex C-c '
899 @item C-c '
900 Edit all formulas associated with the current table in a separate
901 buffer.
903 @kindex C-c *
904 @item C-c *
905 Recalculate the current row by applying the stored formulas from left
906 to right.  When called with a @kbd{C-u} prefix, recalculate the
907 entire table, starting with the first non-header line (i.e. below the
908 first horizontal separator line).  For details, see @ref{Table calculations}.
910 @kindex C-#
911 @item C-#
912 Rotate the calculation mark in first column through the states
913 @samp{}, @samp{#}, @samp{*}, @samp{!}, @samp{$}.  For the meaning of
914 these marks see @ref{Advanced features}.  When there is an active
915 region, change all marks in the region.
917 @kindex C-c ?
918 @item C-c ?
919 Which table column is the cursor in?  Displays number >0 in echo
920 area.
922 @cindex region, active
923 @cindex active region
924 @cindex transient-mark-mode
925 @kindex C-c +
926 @item C-c +
927 Sum the numbers in the current column, or in the rectangle defined by
928 the active region.  The result is shown in the echo area and can
929 be inserted with @kbd{C-y}.
931 @kindex S-@key{RET}
932 @item S-@key{RET}
933 When current field is empty, copy from first non-empty field above.
934 When not empty, copy current field down to next row and move cursor
935 along with it.  Depending on the variable
936 @code{org-table-copy-increment}, integer field values will be
937 incremented during copy.  This key is also used by CUA-mode
938 (@pxref{Interaction}).
940 @tsubheading{Miscellaneous}
941 @kindex C-c `
942 @item C-c `
943 Edit the current field in a separate window.  This is useful for fields
944 that are not fully visible (@pxref{Narrow columns}).  When called with a
945 @kbd{C-u} prefix, just make the full field visible, so that it can be
946 edited in place.
948 @kindex C-c @key{TAB}
949 @item C-c @key{TAB}
950 This is an alias for @kbd{C-u C-c `} to make the current field fully
951 visible.
953 @item M-x org-table-import
954 Import a file as a table.  The table should be TAB- or whitespace
955 separated.  Useful, for example, to import an Excel table or data from a
956 database, because these programs generally can write TAB-separated text
957 files.  This command works by inserting the file into the buffer and
958 then converting the region to a table.  Any prefix argument is passed on
959 to the converter, which uses it to determine the separator.
961 @item M-x org-table-export
962 Export the table as a TAB-separated file.  Useful for data exchange with,
963 for example, Excel or database programs.
965 @end table
967 If you don't like the automatic table editor because it gets in your
968 way on lines which you would like to start with @samp{|}, you can turn
969 it off with
971 @lisp
972 (setq org-enable-table-editor nil)
973 @end lisp
975 @noindent The only table command which then still works is
976 @kbd{C-c C-c} to do a manual re-align.
978 @node Narrow columns, Table calculations, Built-in table editor, Tables
979 @section Narrow columns
980 @cindex narrow columns in tables
982 The width of columns is automatically determined by the table editor.
983 Sometimes a single field or a few fields need to carry more text,
984 leading to unconveniently wide columns.  To limit@footnote{This feature
985 does not work on XEmacs.} the width of a column, one field anywhere in
986 the column must carry the string @samp{<N>} where @samp{N} is an integer
987 specifying the width of the column in characters.  The next re-align
988 will then set the width of this column to no more than this value.
990 @example
991 |---+------------------------------|               |---+--------|
992 |   |                              |               |   | <6>    |
993 | 1 | one                          |               | 1 | one    |
994 | 2 | two                          |     ----\     | 2 | two    |
995 | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
996 | 4 | four                         |               | 4 | four   |
997 |---+------------------------------|               |---+--------|
998 @end example
1000 @noindent
1001 Fields that are wider become clipped and end in the string @samp{=>}.
1002 Note that the full text is still in the buffer, it is only invisible.
1003 To see the full text, hold the mouse over the field - a tooltip window
1004 will show the full content.  To edit such a field, use the command
1005 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote).  This will
1006 open a new window with the full field.  Edit it and finish with @kbd{C-c
1007 C-c}.
1009 When visiting a file containing a table with narrowed columns, the
1010 necessary character hiding has not yet happened, and the table needs to
1011 be aligned before it looks nice.  Setting the option
1012 @code{org-startup-align-all-tables} will realign all tables in a file
1013 upon visiting, but also slow down startup.  You can also set this option
1014 on a per-file basis with:
1016 @example
1017 #+STARTUP: align
1018 #+STARTUP: noalign
1019 @end example
1021 @node Table calculations, orgtbl-mode, Narrow columns, Tables
1022 @section Calculations in tables
1023 @cindex calculations, in tables
1024 @cindex spreadsheet capabilities
1025 @cindex @file{calc} package
1027 The table editor makes use of the Emacs @file{calc} package to
1028 implement spreadsheet-like capabilities.  Org-mode has two levels of
1029 complexity for table calculations.  On the basic level, tables do only
1030 horizontal computations, so a field can be computed from other fields
1031 @emph{in the same row}, and Org-mode assumes that there is only one
1032 formula for each column.  This is very efficient to work with and
1033 enough for many tasks.  On the complex level, columns and individual
1034 fields can be named for easier referencing in formulas, individual
1035 named fields can have their own formula associated with them, and
1036 recalculation can be automated.
1038 @menu
1039 * Formula syntax::              How to write a formula
1040 * Column formulas::             Formulas valid for all fields in a column
1041 * Advanced features::           Field names, parameters and automatic recalc
1042 * Named-field formulas::        Formulas valid in single fields
1043 * Editing/debugging formulas::  Changing a stored formula
1044 * Appetizer::                   Taste the power of calc
1045 @end menu
1047 @node Formula syntax, Column formulas, Table calculations, Table calculations
1048 @subsection Formula syntax
1049 @cindex formula syntax
1050 @cindex syntax, of formulas
1052 A formula can be any algebraic expression understood by the Emacs
1053 @file{calc} package.  Note that @file{calc} has the slightly
1054 non-standard convention that @samp{/} has lower precedence than
1055 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.  Before
1056 evaluation by @code{calc-eval} (@pxref{Calling Calc from Your Lisp
1057 Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU Emacs
1058 Calc Manual}), variable substitution takes place:
1060 @example
1061   $        @r{refers to the current field}
1062   $3       @r{refers to the field in column 3 of the current row}
1063   $3..$7   @r{a vector of the fields in columns 3-7 of current row}
1064   $P1..$P3 @r{vector of column range, using column names}
1065   &2       @r{second data field above the current, in same column}
1066   &5-2     @r{vector from fifth to second field above current}
1067   &III-II  @r{vector of fields between 2nd and 3rd hline above}
1068   &III     @r{vector of fields between third hline above and current field}
1069   $name    @r{a named field, parameter or constant}
1070 @end example
1072 @cindex vectors, in table calculations
1073 The range vectors can be directly fed into the calc vector functions
1074 like @samp{vmean} and @samp{vsum}.
1076 @cindex name, of column or field
1077 @cindex constants, in calculations
1078 @samp{$name} is interpreted as the name of a column, parameter or
1079 constant.  Constants are defined globally through the variable
1080 @code{org-table-formula-constants}.  If you have the
1081 @file{constants.el} package, it will also be used to resolve
1082 constants, including natural constants like @samp{$h} for Planck's
1083 constant, and units like @samp{$km} for kilometers.  Column names and
1084 parameters can be specified in special table lines.  These are
1085 described below, see @ref{Advanced features}.
1087 @cindex format specifier
1088 @cindex mode, for @file{calc}
1089 A formula can contain an optional mode string after a semicolon.  This
1090 string consists of flags to influence calc's modes@footnote{By
1091 default, Org-mode uses the standard calc modes (precision 12, angular
1092 units degrees, fraction and symbolic modes off).  However, the display
1093 format has been changed to @code{(float 5)} to keep tables compact.
1094 The default settings can be configured using the variable
1095 @code{org-calc-default-modes}.} during execution, e.g.  @samp{p20} to
1096 switch the internal precision to 20 digits, @samp{n3}, @samp{s3},
1097 @samp{e2} or @samp{f4} to switch to normal, scientific, engineering,
1098 or fixed display format, respectively, and @samp{D}, @samp{R}, @samp{F},
1099 and @samp{S} to turn on degrees, radians, fraction and symbolic modes,
1100 respectively.  In addition, you may provide a @code{printf} format
1101 specifier to reformat the final result.  A few examples:
1103 @example
1104   $1+$2                @r{Sum of first and second field}
1105   $1+$2;%.2f           @r{Same, format result to two decimals}
1106   exp($2)+exp($1)      @r{Math functions can be used}
1107   $;%.1f               @r{Reformat current cell to 1 decimal}
1108   ($3-32)*5/9          @r{Degrees F -> C conversion}
1109   $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
1110   tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
1111   sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
1112   vmean($2..$7)        @r{Compute column range mean, using vector function}
1113   vsum(&III)           @r{Sum numbers from 3rd hline above, up to here}
1114   taylor($3,x=7,2)     @r{taylor series of $3, at x=7, second degree}
1115 @end example
1117 @node Column formulas, Advanced features, Formula syntax, Table calculations
1118 @subsection Column formulas
1119 @cindex column formula
1120 @cindex formula, for table column
1122 To apply a formula to a field, type it directly into the field,
1123 preceded by an equal sign, like @samp{=$1+$2}.  When you press
1124 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
1125 field, the formula will be stored as the formula for the current
1126 column, evaluated and the current field replaced with the result.  If
1127 the field contains only @samp{=}, the previously stored formula for
1128 this column is used.
1130 For each column, Org-mode will remember the most recently used
1131 formula.  The information is stored in a special line starting with
1132 @samp{#+TBLFM} directly below the table.  When adding/deleting/moving
1133 columns with the appropriate commands, the stored equations will be
1134 modified accordingly.  When a column used in a calculation is removed,
1135 references to this column become invalid and will cause an error upon
1136 applying the equation.
1138 Instead of typing an equation into the field, you may also use the
1139 command @kbd{C-c =}.  It prompts for a formula (with default taken
1140 from the @samp{#+TBLFM:} line) and applies it to the current field.  A
1141 numerical prefix (e.g. @kbd{C-5 C-c =}) will apply it to that many
1142 subsequent fields in the current column.
1144 @cindex recomputing table fields
1145 To recompute all the fields in a line, use the command @kbd{C-c *}.
1146 It re-applies all stored equations to the current row, from left to
1147 right.  With a @kbd{C-u} prefix, this will be done to every line in
1148 the table, so use this command it you want to make sure the entire
1149 table is up-to-date. @kbd{C-u C-c C-c} is another way to update the
1150 entire table.  Global updating does not touch the line(s) above the
1151 first horizontal separator line, assuming that this is the table
1152 header.
1154 @node Advanced features, Named-field formulas, Column formulas, Table calculations
1155 @subsection Advanced features
1157 If you want the recalculation of fields to happen automatically,
1158 or if you want to be able to assign a formula to an individual field
1159 (instead of an entire column) you need to reserve the first column of
1160 the table for special marking characters.  Here is an example of a
1161 table that collects exam results of students and makes use of these
1162 features:
1164 @example
1165 @group
1166 |---+---------+--------+--------+--------+-------+------|
1167 |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
1168 |---+---------+--------+--------+--------+-------+------|
1169 | ! |         |     P1 |     P2 |     P3 |   Tot |      |
1170 | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
1171 | ^ |         |     m1 |     m2 |     m3 |    mt |      |
1172 |---+---------+--------+--------+--------+-------+------|
1173 | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
1174 | # | Sara    |      6 |     14 |     19 |    39 |  7.8 |
1175 | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
1176 |---+---------+--------+--------+--------+-------+------|
1177 |   | Average |        |        |        |  29.7 |      |
1178 | ^ |         |        |        |        |    at |      |
1179 | $ | max=50  |        |        |        |       |      |
1180 |---+---------+--------+--------+--------+-------+------|
1181 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(&II);%.1f
1182 @end group
1183 @end example
1185 @noindent @b{Important}: Please note that for these special tables,
1186 recalculating the table with @kbd{C-u C-c *} will only affect rows
1187 which are marked @samp{#} or @samp{*}, and named fields.  The column
1188 formulas are not applied in rows with empty first field.
1190 @cindex marking characters, tables
1191 The marking characters have the following meaning:
1192 @table @samp
1193 @item !
1194 The fields in this line define names for the columns, so that you may
1195 refer to a column as @samp{$Tot} instead of @samp{$6}.
1196 @item ^
1197 This row defines names for the fields @emph{above} the row.  With such
1198 a definition, any formula in the table may use @samp{$m1} to refer to
1199 the value @samp{10}.  Also, named fields can have their own formula
1200 associated with them.
1201 @item _
1202 Similar to @samp{^}, but defines names for the fields in the row
1203 @emph{below}.
1204 @item $
1205 Fields in this row can define @emph{parameters} for formulas.  For
1206 example, if a field in a @samp{$} row contains @samp{max=50}, then
1207 formulas in this table can refer to the value 50 using @samp{$max}.
1208 Parameters work exactly like constants, only that they can be defined on
1209 a per-table basis.  Changing a parameter and then recalculating the
1210 table can be useful.
1211 @item #
1212 Fields in this row are automatically recalculated when pressing
1213 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row.  Also, this row
1214 is selected for a global recalculation with @kbd{C-u C-c *}.  Unmarked
1215 lines will be left alone by this command.
1216 @item *
1217 Selects this line for global recalculation with @kbd{C-u C-c *}, but
1218 not for automatic recalculation.  Use this when automatic
1219 recalculation slows down editing too much.
1220 @item
1221 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
1222 All lines that should be recalculated should be marked with @samp{#}
1223 or @samp{*}.
1224 @end table
1226 @node Named-field formulas, Editing/debugging formulas, Advanced features, Table calculations
1227 @subsection Named-field formulas
1228 @cindex named field formula
1229 @cindex formula, for named table field
1231 A named field can have its own formula associated with it.  In the
1232 example above, this is used for the @samp{at} field that contains
1233 the average result of the students.  To enter a formula for a named
1234 field, just type it into the buffer, preceded by @samp{:=}.  Or use
1235 @kbd{C-u C-c =}.  This equation will be stored below the table like
1236 @samp{$name=...}.  Any recalculation in the table (even if only
1237 requested for the current line) will also update all named field
1238 formulas.
1240 @node Editing/debugging formulas, Appetizer, Named-field formulas, Table calculations
1241 @subsection Editing and debugging formulas
1242 @cindex formula editing
1243 @cindex editing, of table formulas
1245 To edit a column or field formula, use the commands @kbd{C-c
1246 =} and @kbd{C-u C-c =}, respectively.  The currently active expression
1247 is then presented as default in the minibuffer, where it may be edited.
1249 Note that making a table field blank does not remove the formula
1250 associated with the field - during the next recalculation the field
1251 will be filled again.  To remove a formula from a field, you have to
1252 give an empty reply when prompted for the formula, or to edit the
1253 @samp{#+TBLFM} line.
1255 @kindex C-c C-c
1256 You may edit the @samp{#+TBLFM} directly and re-apply
1257 the changed equations with @kbd{C-c C-c} in that line, or with the
1258 normal recalculation commands in the table.
1260 @kindex C-c '
1261 @kindex C-c C-c
1262 @kindex C-c C-q
1263 @kindex C-c ?
1264 In particular for large tables with many formulas, it is convenient to
1265 use the command @kbd{C-c '} to edit the formulas of the current table
1266 in a separate buffer.  That buffer will show the formulas one per
1267 line, and you are free to edit, add and remove formulas.  Press
1268 @kbd{C-c ?} on a @samp{$...}  expression to get information about its
1269 interpretation.  Exiting the buffer with @kbd{C-c C-c} only stores the
1270 modified formulas below the table.  Exiting with @kbd{C-u C-c C-c}
1271 also applies them to the entire table.  @kbd{C-c C-q} exits without
1272 installing the changes.
1274 When the evaluation of a formula leads to an error, the field content
1275 becomes the string @samp{#ERROR}.  If you would like see what is going
1276 on during variable substitution and calculation in order to find a
1277 bug, turn on formula debugging in the menu and repeat the calculation,
1278 for example by pressing @kbd{C-c = @key{RET}} in a field.
1279 Detailed information will be displayed.
1281 @node Appetizer,  , Editing/debugging formulas, Table calculations
1282 @subsection Appetizer
1284 Finally, just to wet your appetite on what can be done with the fantastic
1285 @file{calc} package, here is a table that computes the Taylor series
1286 for a couple of functions (homework: try that with Excel :-)
1288 @example
1289 @group
1290 |---+-------------+---+-----+--------------------------------------|
1291 |   | Func        | n | x   | Result                               |
1292 |---+-------------+---+-----+--------------------------------------|
1293 | # | exp(x)      | 1 | x   | 1 + x                                |
1294 | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
1295 | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
1296 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
1297 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
1298 | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
1299 |---+-------------+---+-----+--------------------------------------|
1300 #+TBLFM: $5=taylor($2,$4,$3);n3
1301 @end group
1302 @end example
1304 @node orgtbl-mode, table.el, Table calculations, Tables
1305 @section The Orgtbl minor mode
1306 @cindex orgtbl-mode
1307 @cindex minor mode for tables
1309 If you like the intuitive way the Org-mode table editor works, you
1310 might want to use it also in other modes like text-mode or mail-mode.
1311 The minor mode Orgtbl-mode makes this possible.  You can always toggle
1312 the mode with @kbd{M-x orgtbl-mode}.  To turn it on by default, for
1313 example in mail mode, use
1315 @lisp
1316 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
1317 @end lisp
1319 @node table.el,  , orgtbl-mode, Tables
1320 @section The @file{table.el} package
1321 @kindex C-c C-c
1322 @cindex table editor, @file{table.el}
1323 @cindex @file{table.el}
1325 Complex ASCII tables with automatic line wrapping, column- and
1326 row-spanning, and alignment can be created using the Emacs table
1327 package by Takaaki Ota (@uref{http://sourceforge.net/projects/table},
1328 and also part of Emacs 22).
1329 When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org-mode
1330 will call @command{table-recognize-table} and move the cursor into the
1331 table.  Inside a table, the keymap of Org-mode is inactive.  In order
1332 to execute Org-mode-related commands, leave the table.
1334 @table @kbd
1335 @kindex C-c C-c
1336 @item C-c C-c
1337 Recognize @file{table.el} table.  Works when the cursor is in a
1338 table.el table.
1340 @kindex C-c ~
1341 @item C-c ~
1342 Insert a table.el table.  If there is already a table at point, this
1343 command converts it between the table.el format and the Org-mode
1344 format.  See the documentation string of the command
1345 @code{org-convert-table} for the restrictions under which this is
1346 possible.
1347 @end table
1349 @node Hyperlinks, TODO items, Tables, Top
1350 @chapter Hyperlinks
1351 @cindex hyperlinks
1353 Just like HMTL, Org-mode provides links inside a file, and external
1354 links to other files, Usenet articles, emails and much more.
1356 @menu
1357 * Link format::                 How links in Org-mode are formatted
1358 * Internal links::              Links to other places in the current file
1359 * External links::              URL-like links to the world
1360 * Managing links::              Creating, inserting and following
1361 * Search Options::              Linking to a specific location
1362 * Remember::                    Org-trees store quick notes
1363 @end menu
1365 @node Link format, Internal links, Hyperlinks, Hyperlinks
1366 @section Link format
1367 @cindex link format
1368 @cindex format, of links
1370 Org-mode will recognize plain URL-like links and activate them as
1371 clickable links.  However, the general link format looks like this:
1373 @example
1374 [[link][description]]       @r{or alternatively}           [[link]]  
1375 @end example
1377 Once a link in the buffer is complete (all brackets present), Org-mode
1378 will change the display so that @samp{description} is displayed instead
1379 of @samp{[[link][description]]} and @samp{link} is displayed instead of
1380 @samp{[[link]]}.  Links will be highlighted in the face @code{org-link},
1381 which by default is an underlined face.  You can directly edit the
1382 visible part of a link.  Note that this can be either the @samp{link}
1383 part (if there is not description) or the @samp{description} part.  To
1384 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
1385 cursor on the link.
1387 If you place the cursor at the beginning or just behind the end of the
1388 displayed text and press @key{BACKSPACE}, you will remove the
1389 (invisible) bracket at that location.  This makes the link incomplete
1390 and the internals are again displayed as plain text.  Inserting the
1391 missing bracket does hide the link internals again.  To show the
1392 internal structure of all links, use the menu entry
1393 @code{Org->Hyperlinks->Literal links}.
1395 @node Internal links, External links, Link format, Hyperlinks
1396 @section Internal links
1397 @cindex internal links
1398 @cindex links, internal
1399 @cindex CamelCase links
1401 If the link text does not look like a URL, links are considered to be
1402 internal in the current file.  Links such as @samp{[[My Target]]} or
1403 @samp{[[My Target][Find my target]]} lead to a text search in the
1404 current file.  The link can be followed with @kbd{C-c C-o} when the
1405 cursor is on the link, or with a mouse click (@pxref{Managing links}).
1406 The preferred match for such a link is a dedicated target: The same
1407 string in double angular brackets.  Targets may be located anywhere,
1408 often it is convenient to put them into a comment line, for example
1410 @example
1411 # <<My Target>>
1412 @end example
1414 If no dedicated target exists, Org-mode will search for the words in the
1415 link, often removing the need for a dedicated target.  In the above
1416 example the search would be for @samp{my target}.  Links starting with a
1417 star like @samp{*My Target} restrict the search to headlines.  When
1418 searching, Org-mode will first try an exact match, but then move on to
1419 more and more lenient searches.  For example, the link @samp{[[*My
1420 Targets]]} will find any of the following:
1422 @example
1423 ** My targets
1424 ** TODO my targets are bright
1425 ** my 20 targets are
1426 @end example
1428 To insert a link targeting a headline, in-buffer completion can be used.
1429 Just type a star followed by a few optional letters into the buffer and
1430 press @kbd{M-@key{TAB}}.  All headlines in the current buffer will be
1431 offered as completions.  @xref{Managing links}, for more commands
1432 creating links.
1434 Following a link pushes a mark onto Org-mode's own mark ring.  You can
1435 return to the previous position with @kbd{C-c &}.  Using this command
1436 several times in direct succession goes back to positions recorded
1437 earlier.
1439 @menu
1440 * Radio targets::               Make targets trigger links in plain text.
1441 * CamelCase links::             Activating CamelCase words as links
1442 @end menu
1444 @node Radio targets, CamelCase links, Internal links, Internal links
1445 @subsection Radio targets
1447 You can configure Org-mode to link any occurrences of certain target
1448 names in normal text.  So without explicitly creating a link, the text
1449 connects to the target radioing its position.  Radio targets are
1450 enclosed by triple angular brackets.  For example, a target
1451 @samp{<<<My Target>>>} causes each occurrence of @samp{my target} in
1452 normal text to become activated as a link.  The Org-mode file is
1453 scanned automatically for radio targets only when the file is first
1454 loaded into Emacs.  To update the target list during editing, press
1455 @kbd{C-c C-c} with the cursor on or at a target.
1457 @node CamelCase links,  , Radio targets, Internal links
1458 @subsection CamelCase words as links
1459 @cindex completion, of CamelCase links
1460 @cindex CamelCase links, completion of
1462 Org-mode also supports CamelCase words as links.  This feature is not
1463 turned on by default because of the inconsistencies this system suffers
1464 from.  To activate CamelCase words as links, you need to customize
1465 the option @code{org-activate-links}.  A CamelCase word then leads to a
1466 text search such that @samp{CamelCaseLink} is equivalent to
1467 @samp{[[camel case link]]}.
1469 @node External links, Managing links, Internal links, Hyperlinks
1470 @section External links
1471 @cindex links, external
1472 @cindex external links
1473 @cindex links, external
1474 @cindex GNUS links
1475 @cindex BBDB links
1476 @cindex URL links
1477 @cindex file links
1478 @cindex VM links
1479 @cindex RMAIL links
1480 @cindex WANDERLUST links
1481 @cindex MH-E links
1482 @cindex USENET links
1483 @cindex SHELL links
1485 Org-mode supports links to files, websites, Usenet and email messages;
1486 and BBDB database entries.  External links are URL-like locators.  The
1487 following list shows examples for each link type.
1489 @example
1490 http://www.astro.uva.nl/~dominik         @r{on the web}
1491 file:/home/dominik/images/jupiter.jpg    @r{file, absolute path}
1492 file:papers/last.pdf                     @r{file, relative path}
1493 news:comp.emacs                          @r{Usenet link}
1494 mailto:adent@@galaxy.net                  @r{Mail link}
1495 vm:folder                                @r{VM folder link}
1496 vm:folder#id                             @r{VM message link}
1497 vm://myself@@some.where.org/folder#id     @r{VM on remote machine}
1498 wl:folder                                @r{WANDERLUST folder link}
1499 wl:folder#id                             @r{WANDERLUST message link}
1500 mhe:folder                               @r{MH-E folder link}
1501 mhe:folder#id                            @r{MH-E message link}
1502 rmail:folder                             @r{RMAIL folder link}
1503 rmail:folder#id                          @r{RMAIL message link}
1504 gnus:group                               @r{GNUS group link}
1505 gnus:group#id                            @r{GNUS article link}
1506 bbdb:Richard Stallman                    @r{BBDB link}
1507 shell:ls *.org                           @r{A shell command}
1508 @end example
1510 A link should be enclosed in double brackets and may contain a
1511 descriptive text to be displayed instead of the url (@pxref{Link
1512 format}), for example:
1514 @example
1515 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
1516 @end example
1518 @cindex angular brackets, around links
1519 @cindex plain text external links
1520 Org-mode also finds external links in the normal text and activates them
1521 as links.  If spaces must be part of the link (for example in
1522 @samp{bbdb:Richard Stallman}) or to remove ambiguities about the end of
1523 the link, enclose them in angular brackets.
1525 @node Managing links, Search Options, External links, Hyperlinks
1526 @section Managing links
1528 Org-mode provides methods to create a link in the correct syntax, to
1529 insert it into an org-mode file, and to follow the link.
1531 @table @kbd
1532 @kindex C-c l
1533 @cindex storing links
1534 @item C-c l
1535 Store a link to the current location.  This is a @emph{global} command
1536 which can be used in any buffer to create a link.  The link will be
1537 stored for later insertion into an Org-mode buffer (see below).  For VM,
1538 RMAIL, WANDERLUST, MH-E, GNUS and BBDB buffers, the link will point to
1539 the current article/entry.  For W3 and W3M buffers, the link goes to the
1540 current URL.  For Org-mode files, the current headline is targeted.  For
1541 any other files, the link will point to the file, with a search string
1542 (@pxref{Search Options}) pointing to the contents of the current line.
1543 If there is an active region, the selected words will form the basis of
1544 the search string.  The key binding @kbd{C-c l} is only a suggestion -
1545 see @ref{Installation and activation}.
1547 @kindex C-c C-l
1548 @cindex link completion
1549 @cindex completion, of links
1550 @cindex inserting links
1551 @item C-c C-l
1552 Insert a link.  This prompts for a link to be inserted into the buffer.
1553 You can just type a link, using text for an internal link, or one of the
1554 link type prefixes mentioned in the examples above.  Through completion,
1555 all links stored during the current session can be accessed.  The link
1556 will be formatted as given in the variable @code{org-link-format} and
1557 inserted into the buffer, along with a descriptive text.  Note that you
1558 don't have to use this command to insert a link.  Links in Org-mode are
1559 plain text, and you can type or paste them straight into the buffer.
1560 By using this command, the links are automatically enclosed in double
1561 brackets, and you will be asked for the optional descriptive text.
1563 @kindex C-u C-c C-l
1564 @cindex file name completion
1565 @cindex completion, of file names
1566 @item C-u C-c C-l
1567 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
1568 a file will be inserted and you may use file name completion to select
1569 the name of the file.  The path to the file is inserted relative to the
1570 directory of the current org file, if the linked file is in the current
1571 directory or in a subdirectory of it.  Otherwise an absolute path, if
1572 possible with @samp{~/} for your home directory is used.  You can force
1573 an absolute path with two @kbd{C-u} prefixes.
1575 @item C-c C-l @r{with cursor on existing link}
1576 When the cursor is on an existing link, @kbd{C-c C-l} allows to edit the
1577 link and description parts of the link.
1579 @cindex following links
1580 @kindex C-c C-o
1581 @item C-c C-o
1582 Open link at point.  This will launch a web browser for URLs (using
1583 @command{browse-url-at-point}), run vm/mh-e/wanderlust/rmail/gnus/bbdb
1584 for the corresponding links, and execute the command in a shell link.
1585 When the cursor is on an internal link, this commands runs the
1586 corresponding search.  When the cursor is on a TAGS list in a headline,
1587 it creates the corresponding TAGS view.  If the cursor is on a time
1588 stamp, it compiles the agenda for that date.  Furthermore, it will visit
1589 text files in @samp{file:} links with Emacs and select a suitable
1590 application for non-text files.  Classification of files is based on
1591 file extension only.  See option @code{org-file-apps}.  If you want to
1592 override the default application and visit the file with Emacs, use a
1593 @kbd{C-u} prefix.
1595 @kindex mouse-2
1596 @kindex mouse-1
1597 @item mouse-2
1598 @itemx mouse-1
1599 On links, @kbd{mouse-2} will open the link just like @kbd{C-c C-o}
1600 would.  Under Emacs 22, also @kbd{mouse-1} will follow a link.
1602 @kindex mouse-3
1603 @item mouse-3
1604 Like @kbd{mouse-2}, but force file links to be opened with Emacs.
1606 @cindex mark ring
1607 @kindex C-c %
1608 @item C-c %
1609 Push the current position onto the mark ring, to be able to return
1610 easily. Commands following an internal link do this automatically.
1612 @cindex links, returning to
1613 @kindex C-c &
1614 @item C-c &
1615 Jump back to a recorded position.  A position is recorded by the
1616 commands following internal links, and by @kbd{C-c %}.  Using this
1617 command several times in direct succession moves through a ring of
1618 previously recorded positions.
1619 @end table
1622 @node Search Options, Remember, Managing links, Hyperlinks
1623 @section Search options in file links
1624 @cindex search option in file links
1625 @cindex file links, searching
1627 File links can contain additional information to make Emacs jump to a
1628 particular location in the file when following a link.  This can be a
1629 line number or a search option after a double@footnote{For backward
1630 compatibility, line numbers can also follow a single colon.} colon.
1631 For example:
1633 @example
1634 [[file:~/code/main.c::255]]
1635 [[file:~/xx.org::My Target]]
1636 [[file:~/xx.org::*My Target]]
1637 [[file:~/xx.org::/regexp/]]
1638 @end example
1640 @noindent Here is what these options do.
1642 @table @code
1643 @item 255
1644 Jump to line 255.
1645 @item My Target
1646 Search for a link target @samp{<<My Target>>}, or do a text search for
1647 @samp{my target}, similar to the search in internal links, see
1648 @ref{Internal links}.
1649 @item *My Target
1650 In an Org-mode file, restrict search to headlines.
1651 @item /regexp/
1652 Do a regular expression search for @code{regexp}.  This uses the Emacs
1653 command @code{occur} to list all matches in a separate window.  If the
1654 target file is in Org-mode, @code{org-occur} is used to create a
1655 sparse tree with the matches.
1656 @c If the target file is a directory,
1657 @c @code{grep} will be used to search all files in the directory.
1658 @end table
1660 As a degenerate case, a file link with an empty file name can be used
1661 to search the current file.  For example, @code{<file:::find me>} does
1662 a search for @samp{find me} in the current file, just like
1663 @samp{[[find me]]} would.
1665 @node Remember,  , Search Options, Hyperlinks
1666 @section Remember
1667 @cindex @file{remember.el}
1669 Another way to create org entries with links to other files is through
1670 the @emph{Remember} package by John Wiegley.  @emph{Remember} lets you
1671 store quick notes with little interruption of your work flow.  See
1672 @uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
1673 information.  The notes produced by @emph{Remember} can be stored in
1674 different ways, and Org-mode files are a good target.  Org-mode allows
1675 to file away notes either to a default file, or directly to the
1676 correct location in your Org-mode outline tree.  The following
1677 customization@footnote{The three autoload forms are only necessary if
1678 @file{org.el} is not part of the Emacs distribution or an XEmacs
1679 package.} will tell @emph{Remember} to use org files as target, and to
1680 create annotations compatible with Org-mode links.
1682 @example
1683 (setq org-directory "~/path/to/my/orgfiles/")
1684 (setq org-default-notes-file "~/.notes")
1685 (autoload 'org-remember-annotation "org")
1686 (autoload 'org-remember-apply-template "org")
1687 (autoload 'org-remember-handler "org")
1688 (setq remember-annotation-functions '(org-remember-annotation))
1689 (setq remember-handler-functions '(org-remember-handler))
1690 (add-hook 'remember-mode-hook 'org-remember-apply-template)
1691 @end example
1693 @cindex templates, for remember
1694 In combination with Org-mode, you can use templates to generate
1695 different types of remember notes.  For example, if you would like to
1696 use one template to create general TODO entries, and another one for
1697 journal entries, you could use:
1699 @example
1700 (setq org-remember-templates
1701       '((?t "* TODO %?\n  %i\n  %a" "~/org/TODO.org")
1702         (?j "* %U %?\n\n  %i\n  %a" "~/org/JOURNAL.org")))
1703 @end example
1705 @noindent In these entries, the character specifies how to select the
1706 template, the first string specifies the template, and the (optional)
1707 second string specifies a default file (overruling
1708 @code{org-default-notes-file}) as a target for this note.
1710 When you call @kbd{M-x remember} to remember something, org will prompt
1711 for a key to select the template and then prepare the buffer like
1712 @example
1713 * TODO
1714   <file:link to where you called remember>
1715 @end example
1717 @noindent or
1719 @example
1720 * [2006-03-21 Tue 15:37]
1722   <file:link to where you called remember>
1723 @end example
1725 @noindent See the variable @code{org-remember-templates} for more details.
1727 When you are finished composing a note with remember, you have to press
1728 @kbd{C-c C-c} to file the note away.  The handler first prompts for a
1729 target file - if you press @key{RET}, the value of
1730 @code{org-default-notes-file} is used.  Then the command offers the
1731 headings tree of the selected file.  You can either immediately press
1732 @key{RET} to get the note appended to the file.  Or you can use vertical
1733 cursor motion (@key{up} and @key{down}) and visibility cycling
1734 (@key{TAB}) to find a better place.  Pressing @key{RET} or @key{left} or
1735 @key{right} leads to the following result.
1737 @multitable @columnfractions 0.2 0.1 0.7
1738 @item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
1739 @item buffer-start @tab @key{RET} @tab as level 2 heading at end of file
1740 @item on headline @tab @key{RET} @tab as sublevel of the heading at cursor
1741 @item             @tab @key{left}  @tab as same level, before current heading
1742 @item             @tab @key{right} @tab as same level, after current heading
1743 @item not on headline @tab @key{RET}
1744       @tab at cursor position, level taken from context.
1745            Or use prefix arg to specify level manually.
1746 @end multitable
1748 So a fast way to store the note is to press @kbd{C-c C-c @key{RET}
1749 @key{RET}} to append it to the default file.  Even shorter would be
1750 @kbd{C-u C-c C-c}, which does the same without even showing the tree.
1751 But with little extra effort, you can push it directly to the correct
1752 location.
1754 Before inserting the text into a tree, the function ensures that the
1755 text has a headline, i.e. a first line that starts with a @samp{*}.
1756 If not, a headline is constructed from the current date and some
1757 additional data.  If the variable @code{org-adapt-indentation} is
1758 non-nil, the entire text is also indented so that it starts in the
1759 same column as the headline (after the asterisks).
1762 @node TODO items, Timestamps, Hyperlinks, Top
1763 @chapter TODO items
1764 @cindex TODO items
1766 Org-mode does not maintain TODO lists as a separate document.  TODO
1767 items are an integral part of the notes file, because TODO items
1768 usually come up while taking notes!  With Org-mode, you simply mark
1769 any entry in a tree as being a TODO item.  In this way, the
1770 information is not duplicated, and the entire context from which the
1771 item emerged is always present when you check.
1773 Of course, this technique causes TODO items to be scattered throughout
1774 your file.  Org-mode provides methods to give you an overview over all
1775 things you have to do.
1777 @menu
1778 * TODO basics::                 Marking and displaying TODO entries
1779 * Progress logging::            Document your productivity
1780 * TODO extensions::             Workflow and assignments
1781 * Priorities::                  Some things are more important than others
1782 @end menu
1784 @node TODO basics, Progress logging, TODO items, TODO items
1785 @section Basic TODO functionality
1787 Any headline can become a TODO item by starting it with the word TODO,
1788 for example:
1790 @example
1791 *** TODO Write letter to Sam Fortune
1792 @end example
1794 @noindent
1795 The most important commands to work with TODO entries are:
1797 @table @kbd
1798 @kindex C-c C-t
1799 @cindex cycling, of TODO states
1800 @item C-c C-t
1801 Rotate the TODO state of the current item between
1803 @example
1804 ,-> (unmarked) -> TODO -> DONE --.
1805 '--------------------------------'
1806 @end example
1808 The same rotation can also be done ``remotely'' from the timeline and
1809 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
1810 @kindex C-c C-v
1811 @cindex sparse tree, for TODO
1812 @item C-c C-v
1813 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds
1814 the entire buffer, but shows all TODO items and the headings hierarchy
1815 above them.  With prefix arg, show also the DONE entries.  With
1816 numerical prefix N, show the tree for the Nth keyword in the variable
1817 @code{org-todo-keywords}.
1818 @kindex C-c a t
1819 @item C-c a t
1820 Show the global TODO list.  This collects the TODO items from all
1821 agenda files (@pxref{Agenda Views}) into a single buffer.  The buffer is in
1822 @code{agenda-mode}, so there are commands to examine and manipulate
1823 the TODO entries directly from that buffer (@pxref{Agenda commands}).
1824 @xref{Global TODO list}, for more information.
1825 @item @code{org-agenda-include-all-todo}
1826 If you would like to have all your TODO items listed as part of your
1827 agenda, customize the variable @code{org-agenda-include-all-todo}.
1828 @end table
1830 @node Progress logging, TODO extensions, TODO basics, TODO items
1831 @section Progress Logging
1832 @cindex progress logging
1833 @cindex logging, of progress
1834 If you want to keep track of @emph{when} a certain TODO item was
1835 finished, turn on logging with
1837 @lisp
1838 (setq org-log-done t)
1839 @end lisp
1841 @noindent
1842 Then each time you turn a TODO entry into DONE using either @kbd{C-c
1843 C-t} in the Org-mode buffer or @kbd{t} in the agenda buffer, a line
1844 @samp{CLOSED: [timestamp]} will be inserted just after the headline.
1845 If you turn the entry back into a TODO item again through further
1846 state cycling, that line will be removed again.  In the timeline
1847 (@pxref{Timeline}) and in the agenda (@pxref{Weekly/Daily Agenda}),
1848 you can then use the @kbd{L} key to display the TODO items closed on
1849 each day, giving you an overview of what has been done on a day.
1851 @node TODO extensions, Priorities, Progress logging, TODO items
1852 @section Extended use of TODO keywords
1853 @cindex extended TODO keywords
1855 The default implementation of TODO entries is just two states: TODO and
1856 DONE.  You can, however, use the TODO feature for more complicated
1857 things by configuring the variables @code{org-todo-keywords} and
1858 @code{org-todo-interpretation}.  Using special setup, you can even use
1859 TODO keywords in different ways in different org files.
1861 Note that @i{tags} are another way to classify headlines in general and
1862 TODO items in particular (@pxref{Tags}).
1864 @menu
1865 * Workflow states::             From TODO to DONE in steps
1866 * TODO types::                  I do this, Fred the rest
1867 * Per file keywords::           Different files, different requirements
1868 @end menu
1870 @node Workflow states, TODO types, TODO extensions, TODO extensions
1871 @subsection TODO keywords as workflow states
1872 @cindex TODO workflow
1873 @cindex workflow states as TODO keywords
1875 You can use TODO keywords to indicate different states in the process
1876 of working on an item, for example:
1878 @lisp
1879 (setq org-todo-keywords '("TODO" "FEEDBACK" "VERIFY" "DONE")
1880       org-todo-interpretation 'sequence)
1881 @end lisp
1883 @cindex completion, of TODO keywords
1884 Changing these variables becomes only effective in a new Emacs session.
1885 With this setup, the command @kbd{C-c C-t} will cycle an entry from
1886 TODO to FEEDBACK, then to VERIFY, and finally to DONE.  You may also
1887 use a prefix argument to quickly select a specific state.  For example
1888 @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
1889 If you define many keywords, you can use in-buffer completion (see
1890 @ref{Completion}) to insert these words into the buffer.
1892 @node TODO types, Per file keywords, Workflow states, TODO extensions
1893 @subsection TODO keywords as types
1894 @cindex TODO types
1895 @cindex names as TODO keywords
1896 @cindex types as TODO keywords
1898 The second possibility is to use TODO keywords to indicate different
1899 types of action items.  For example, you might want to indicate that
1900 items are for ``work'' or ``home''.  If you are into David Allen's
1901 @emph{Getting Things DONE}, you might want to use todo types
1902 @samp{NEXTACTION}, @samp{WAITING}, @samp{MAYBE}.  Or, when you work
1903 with several people on a single project, you might want to assign
1904 action items directly to persons, by using their names as TODO
1905 keywords.  This would be set up like this:
1907 @lisp
1908 (setq org-todo-keywords '("Fred" "Sara" "Lucy" "Mike" "DONE")
1909       org-todo-interpretation 'type)
1910 @end lisp
1912 In this case, different keywords do not indicate a sequence, but
1913 rather different types.  So it is normally not useful to change from
1914 one type to another.  Therefore, in this case the behavior of the
1915 command @kbd{C-c C-t} is changed slightly@footnote{This is also true
1916 for the @kbd{t} command in the timeline and agenda buffers.}.  When
1917 used several times in succession, it will still cycle through all
1918 names.  But when you return to the item after some time and execute
1919 @kbd{C-c C-t} again, it will switch from each name directly to DONE.
1920 Use prefix arguments or completion to quickly select a specific name.
1921 You can also review the items of a specific TODO type in a sparse tree
1922 by using a numeric prefix to @kbd{C-c C-v}.  For example, to see all
1923 things Lucy has to do, you would use @kbd{C-3 C-c C-v}.  To collect
1924 Lucy's items from all agenda files into a single buffer, you
1925 would use the prefix arg as well when creating the global todo list:
1926 @kbd{C-3 C-c t}.
1928 @node Per file keywords,  , TODO types, TODO extensions
1929 @subsection Setting up TODO keywords for individual files
1930 @cindex keyword options
1931 @cindex per file keywords
1933 It can be very useful to use different aspects of the TODO mechanism
1934 in different files, which is not possible with the global settings
1935 described above.  For file-local settings, you need to add special
1936 lines to the file which set the keywords and interpretation for that
1937 file only.  For example, to set one of the two examples discussed
1938 above, you need one of the following lines, starting in column zero
1939 anywhere in the file:
1941 @example
1942 #+SEQ_TODO: TODO FEEDBACK VERIFY DONE
1943 #+TYP_TODO: Fred Sara Lucy Mike DONE
1944 @end example
1946 @cindex Completion, of option keywords
1947 @kindex M-@key{TAB}
1948 @noindent To make sure you are using the correct keyword, type
1949 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
1951 @cindex DONE, final TODO keyword
1952 Remember that the last keyword must always mean that the item is DONE
1953 (you may use a different word, though).  Also note that in each file,
1954 only one of the two aspects of TODO keywords can be used.  After
1955 changing one of these lines, use @kbd{C-c C-c} with the cursor still
1956 in the line to make the changes known to Org-mode@footnote{Org-mode
1957 parses these lines only when Org-mode is activated after visiting a
1958 file.  @kbd{C-c C-c} with the cursor in a line starting with @samp{#+}
1959 is simply restarting Org-mode, making sure that these changes will be
1960 respected.}.
1962 If you want to use very many keywords, for example when working with a
1963 large group of people, you may split the names over several lines:
1965 @example
1966 #+TYP_TODO: Fred Sara Lucy Mike
1967 #+TYP_TODO: Luis George Jules Jessica
1968 #+TYP_TODO: Kim Arnold Peter
1969 #+TYP_TODO: DONE
1970 @end example
1972 @node Priorities,  , TODO extensions, TODO items
1973 @section Priorities
1974 @cindex priorities
1976 If you use Org-mode extensively to organize your work, you may end up
1977 with a number of TODO entries so large that you'd like to prioritize
1978 them.  This can be done by placing a @emph{priority cookie} into the
1979 headline, like this
1981 @example
1982 *** TODO [#A] Write letter to Sam Fortune
1983 @end example
1985 @noindent
1986 With its standard setup, Org-mode supports priorities @samp{A},
1987 @samp{B}, and @samp{C}.  @samp{A} is the highest priority.  An entry
1988 without a cookie is treated as priority @samp{B}.  Priorities make a
1989 difference only in the agenda (@pxref{Weekly/Daily Agenda}).
1991 @table @kbd
1992 @kindex @kbd{C-c ,}
1993 @item @kbd{C-c ,}
1994 Set the priority of the current item.  The command prompts for a
1995 priority character @samp{A}, @samp{B} or @samp{C}.  When you press
1996 @key{SPC} instead, the priority cookie is removed from the headline.
1997 The priorities can also be changed ``remotely'' from the timeline and
1998 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
2000 @kindex S-@key{up}
2001 @kindex S-@key{down}
2002 @item S-@key{up}
2003 @itemx S-@key{down}
2004 Increase/decrease priority of current item.  Note that these keys are
2005 also used to modify time stamps (@pxref{Creating timestamps}).
2006 Furthermore, these keys are also used by CUA-mode
2007 (@pxref{Interaction}).
2008 @end table
2010 @node Timestamps, Tags, TODO items, Top
2011 @chapter Timestamps
2013 Items can be labeled with timestamps to make them useful for project
2014 planning.
2016 @menu
2017 * Time stamps::                 Assigning a time to a tree entry
2018 * Creating timestamps::         Commands which insert timestamps
2019 @end menu
2022 @node Time stamps, Creating timestamps, Timestamps, Timestamps
2023 @section Time stamps, deadlines and scheduling
2024 @cindex time stamps
2025 @cindex ranges, time
2026 @cindex date stamps
2027 @cindex deadlines
2028 @cindex scheduling
2030 A time stamp is a specification of a date (possibly with time) in a
2031 special format, either @samp{<2003-09-16 Tue>} or @samp{<2003-09-16
2032 Tue 09:39>}.  A time stamp can appear anywhere in the headline or body
2033 of an org-tree entry.  Its presence allows entries to be shown on specific
2034 dates in the agenda (@pxref{Weekly/Daily Agenda}).  We distinguish:
2036 @table @var
2037 @cindex timestamp
2038 @item TIMESTAMP
2039 A simple time stamp just assigns a date/time to an item.  In the
2040 timeline and agenda displays, the headline of the entry will be shown
2041 exactly on that date.
2043 @item TIMERANGE
2044 @cindex timerange
2045 Two time stamps connected by @samp{--} denote a time range.  The
2046 headline will be shown on the first and last day of the range, and on
2047 any dates that are displayed and fall in the range.  Here is an
2048 example:
2050 @example
2051 ** Meeting in Amsterdam
2052    <2004-08-23 Mon>--<2004-08-26 Thu>
2053 @end example
2055 @item DEADLINE
2056 @cindex DEADLINE keyword
2057 If a time stamp is preceded by the word @samp{DEADLINE:}, the task
2058 (most likely a TODO item) is supposed to be finished on that date, and
2059 it will be listed then.  In addition, the compilation for @emph{today}
2060 will carry a warning about the approaching or missed deadline,
2061 starting @code{org-deadline-warning-days} before the due date, and
2062 continuing until the entry is marked DONE.  An example:
2064 @example
2065 *** TODO write article about the Earth for the Guide
2066     The editor in charge is <bbdb:Ford Prefect>
2067     DEADLINE: <2004-02-29 Sun>
2068 @end example
2070 @item SCHEDULED
2071 @cindex SCHEDULED keyword
2072 If a time stamp is preceded by the word @samp{SCHEDULED:}, it means
2073 you are planning to start working on that task on the given date.  The
2074 headline will be listed under the given date.  In addition, a reminder
2075 that the scheduled date has passed will be present in the compilation
2076 for @emph{today}, until the entry is marked DONE.  I.e., the
2077 task will automatically be forwarded.
2078 @end table
2080 @node Creating timestamps,  , Time stamps, Timestamps
2081 @section Creating timestamps
2082 @cindex creating timestamps
2083 @cindex timestamps, creating
2085 For Org-mode to recognize time stamps, they need to be in the specific
2086 format.  All commands listed below produce time stamps in the correct
2087 format.
2089 @table @kbd
2090 @kindex C-c .
2091 @item C-c .
2092 Prompt for a date and insert a corresponding time stamp.  When the
2093 cursor is at a previously used time stamp, it is updated to NOW.  When
2094 this command is used twice in succession, a time range is inserted.
2096 @kindex C-u C-c .
2097 @item C-u C-c .
2098 Like @kbd{C-c .}, but use the alternative format which contains date
2099 and time.  The default time can be rounded to multiples of 5 minutes,
2100 see the option @code{org-time-stamp-rounding-minutes}.
2102 @kindex C-c !
2103 @item C-c !
2104 Like @kbd{C-c .}, but insert an inactive time stamp not triggering the
2105 agenda.
2107 @kindex C-c <
2108 @item C-c <
2109 Insert a time stamp corresponding to the cursor date in the Calendar.
2111 @kindex C-c >
2112 @item C-c >
2113 Access the Emacs calendar for the current date.  If there is a
2114 timestamp in the current line, goto the corresponding date
2115 instead.
2117 @kindex C-c C-o
2118 @item C-c C-o
2119 Access the agenda for the date given by the time stamp at point
2120 (@pxref{Weekly/Daily Agenda}).
2122 @kindex C-c C-d
2123 @item C-c C-d
2124 Insert @samp{DEADLINE} keyword along with a stamp.
2125 @kindex C-c C-w
2126 @cindex sparse tree, for deadlines
2127 @item C-c C-w
2128 Create a sparse tree with all deadlines that are either past-due, or
2129 which will become due within @code{org-deadline-warning-days}.
2130 With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
2131 prefix, check that many days.  For example, @kbd{C-1 C-c C-w} shows
2132 all deadlines due tomorrow.
2134 @kindex C-c C-s
2135 @item C-c C-s
2136 Insert @samp{SCHEDULED} keyword along with a stamp.
2138 @kindex S-@key{left}
2139 @kindex S-@key{right}
2140 @item S-@key{left}
2141 @itemx S-@key{right}
2142 Change date at cursor by one day.  These key bindings conflict with
2143 CUA-mode (@pxref{Interaction}).
2145 @kindex S-@key{up}
2146 @kindex S-@key{down}
2147 @item S-@key{up}
2148 @itemx S-@key{down}
2149 Change the item under the cursor in a timestamp.  The cursor can be on
2150 a year, month, day, hour or minute.  Note that if the cursor is not at
2151 a time stamp, these same keys modify the priority of an item.
2152 (@pxref{Priorities}). The key bindings also conflict with CUA-mode
2153 (@pxref{Interaction}).
2156 @kindex C-c C-y
2157 @cindex evaluate time range
2158 @item C-c C-y
2159 Evaluate a time range by computing the difference between start and
2160 end.  With prefix arg, insert result after the time range (in a table:
2161 into the following column).
2162 @end table
2164 @cindex date, reading in minibuffer
2165 @cindex time, reading in minibuffer
2166 @cindex calendar, for selecting date
2167 When Org-mode prompts for a date/time, the function reading your input
2168 will replace anything you choose not to specify with the current date
2169 and time.  For details, see the documentation string of
2170 @command{org-read-date}.  Also, a calender will pop up to allow
2171 selecting a date.  The calendar can be fully controlled from the
2172 minibuffer, and a date can be selected with the following commands:
2174 @table @kbd
2175 @kindex <
2176 @item <
2177 Scroll calendar backwards by one month.
2178 @kindex >
2179 @item >
2180 Scroll calendar forwards by one month.
2181 @kindex mouse-1
2182 @item mouse-1
2183 Select date by clicking on it.
2184 @kindex S-@key{right}
2185 @item S-@key{right}
2186 One day forward.
2187 @kindex S-@key{left}
2188 @item S-@key{left}
2189 One day back.
2190 @kindex S-@key{down}
2191 @item S-@key{down}
2192 One week forward.
2193 @kindex S-@key{up}
2194 @item S-@key{up}
2195 One week back.
2196 @kindex M-S-@key{right}
2197 @item M-S-@key{right}
2198 One month forward.
2199 @kindex M-S-@key{left}
2200 @item M-S-@key{left}
2201 One month back.
2202 @kindex @key{RET}
2203 @item @key{RET}
2204 Choose date in calendar (only if nothing typed into minibuffer).
2205 @end table
2207 @node Tags, Agenda Views, Timestamps, Top
2208 @chapter Tags
2209 @cindex tags
2210 @cindex headline tagging
2211 @cindex matching, tags
2212 @cindex sparse tree, tag based
2214 If you wish to implement a system to cross-correlate information, an
2215 excellent way is to assign @i{tags} to headline.  Org-mode has
2216 extensive support for using tags.
2218 Every headline can contain a list of tags, at the end of the headline.
2219 Tags are normal words containing letters, numbers, @samp{_}, and
2220 @samp{@@}.  Tags must be preceded and followed by a single colon; like
2221 @samp{:WORK:}.  Several tags can be specified like @samp{:WORK:URGENT:}.
2223 @menu
2224 * Tag inheritance::             Tags use the tree structure of the outline
2225 * Setting tags::                How to assign tags to a headline
2226 * Tag searches::                Searching for combinations of tags
2227 @end menu
2229 @node Tag inheritance, Setting tags, Tags, Tags
2230 @section Tag inheritance
2231 @cindex inheritance, of tags
2233 @i{Tags} make use of the hierarchical structure of outline trees.  If a
2234 heading has a certain tag, all subheadings will inherit the tag as
2235 well.  For example, in the list
2237 @example
2238 * Meeting with the French group      :WORK:
2239 ** Summary by Frank                  :BOSS:NOTES:
2240 *** TODO Prepare slides for him      :ACTION:
2241 @end example
2243 @noindent
2244 the final heading will have the tags @samp{:WORK:}, @samp{:BOSS:},
2245 @samp{:NOTES:}, and @samp{:ACTION:}.  When executing tag searches and
2246 Org-mode finds that a certain headline matches the search criterion, it
2247 will not check any sublevel headline, assuming that these likely also
2248 match, and that the list of matches can become very long.  However, this
2249 may not be what you want, and you can influence inheritance and
2250 searching using the variables @code{org-use-tag-inheritance} and
2251 @code{org-tags-match-list-sublevels}.
2253 @node Setting tags, Tag searches, Tag inheritance, Tags
2254 @section Setting tags
2255 @cindex setting tags
2257 @kindex M-@key{TAB}
2258 As Org-mode deals with plain text files, tags can simply be typed into
2259 the buffer.  After a colon, @kbd{M-@key{TAB}} offers completion on all
2260 tags being used in the current buffer.  There is also a special command
2261 for inserting tags:
2263 @table @kbd
2264 @kindex C-c C-c
2265 @item C-c C-c
2266 @cindex completion, of tags
2267 Enter new tags for the current headline.  The minibuffer will prompt for
2268 a list of tags and offer completion with respect to all other tags used
2269 in the current buffer.  Several tags, separated by colons, may be
2270 specified at the prompt.  After pressing @key{RET}, the tags will be
2271 inserted and aligned to @code{org-tags-column}.  When called with a
2272 @kbd{C-u} prefix, all tags in the current buffer will be aligned to that
2273 column, just to make things look nice.  TAGS are automatically realigned
2274 after promotion, demotion, and TODO state changes (@pxref{TODO basics}).
2275 @end table
2277 @node Tag searches,  , Setting tags, Tags
2278 @section Tag searches
2279 @cindex tag searches
2281 Once a tags system has been set up, it can be used to collect related
2282 information into special lists.
2284 @table @kbd
2285 @kindex C-c \
2286 @item C-c \
2287 Create a sparse tree with all headlines matching a tags search.
2288 @kindex C-c a m
2289 @item C-c a m
2290 Create a global list of tag matches from all agenda files.
2291 @xref{Matching headline tags}.
2292 @kindex C-c a M
2293 @item C-c a M
2294 Create a global list of tag matches from all agenda files, but check
2295 only TODO items and force checking subitems (see variable
2296 @code{org-tags-match-list-sublevels}).
2297 @end table
2299 A @i{tags} search string can use Boolean operators @samp{&} for AND and
2300 @samp{|} for OR.  @samp{&} binds more strongly than @samp{|}.
2301 Parenthesis are currently not implemented.  A tag may also be preceded
2302 by @samp{-}, to select against it, and @samp{+} is syntactic sugar for
2303 positive selection.  The AND operator @samp{&} is optional when @samp{+}
2304 or @samp{-} is present.  For example, @samp{+WORK-BOSS} would select all
2305 headlines that are tagged @samp{:WORK:}, but discard those also tagged
2306 @samp{:BOSS:}.  The search string @samp{WORK|LAPTOP} selects all lines
2307 tagged @samp{:WORK:} or @samp{:LAPTOP:}.  The string
2308 @samp{WORK|LAPTOP&NIGHT} requires that the @samp{:LAPTOP:} lines are
2309 also tagged @samp{NIGHT}.
2311 @node Agenda Views, Exporting, Tags, Top
2312 @chapter Agenda Views
2313 @cindex agenda views
2315 Due to the way Org-mode works, TODO items, time-stamped items, and
2316 tagged headlines can be scattered throughout a file or even a number of
2317 files.  To get an overview over open action items, or over events that
2318 are important for a particular date, this information must be collected,
2319 sorted and displayed in an organized way.
2321 Org-mode can select items based on various criteria, and display them
2322 in a separate buffer.  Three different views are provided:
2324 @itemize @bullet
2325 @item
2326 an @emph{agenda} that is like a calendar and shows information
2327 for specific dates
2328 @item
2329 a @emph{TODO list} that covers all unfinished
2330 action items, and
2331 @item
2332 a @emph{tags view} that shows information based on
2333 the tags associated with headlines in the outline tree.
2334 @end itemize
2336 @noindent
2337 The extracted information is displayed in a special @emph{agenda
2338 buffer}.  This buffer is read-only, but provides commands to visit the
2339 corresponding locations in the original Org-mode files, and even to
2340 edit these files remotely.
2342 @menu
2343 * Agenda files::                Files being searched for agenda information
2344 * Agenda dispatcher::           Keyboard access to agenda views
2345 * Weekly/Daily Agenda::         The calendar page with current tasks
2346 * Global TODO list::            All unfinished action items
2347 * Matching headline tags::      Structured information with fine-tuned search
2348 * Timeline::                    Time-sorted view for single file
2349 * Agenda commands::             Remote editing of org trees
2350 @end menu
2352 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
2353 @section Agenda files
2355 The information to be shown is collected from all @emph{agenda files},
2356 the files listed in the variable @code{org-agenda-files}@footnote{If the
2357 value of that variable is not a list, but a single file name, then the
2358 list of agenda files will be maintained in that external file.}.  Thus even
2359 if you only work with a single Org-mode file, this file should be put
2360 into that list@footnote{When using the dispatcher pressing @kbd{1}
2361 before selecting a command will actually limit the command to the
2362 current file, and ignore @code{org-agenda-files} until the next
2363 dispatcher command.}.  You can customize @code{org-agenda-files}, but
2364 the easiest way to maintain it is through the following commands
2366 @cindex files, adding to agenda list
2367 @table @kbd
2368 @kindex C-c [
2369 @item C-c [
2370 Add current file to the list of agenda files.  The file is added to
2371 the front of the list.  If it was already in the list, it is moved to
2372 the front.  With prefix arg, file is added/moved to the end.
2373 @kindex C-c ]
2374 @item C-c ]
2375 Remove current file from the list of agenda files.
2376 @kindex C-,
2377 @item C-,
2378 Cycle through agenda file list, visiting one file after the other.
2379 @end table
2381 @noindent
2382 The Org menu contains the current list of files and can be used
2383 to visit any of them.
2385 @node Agenda dispatcher, Weekly/Daily Agenda, Agenda files, Agenda Views
2386 @section The agenda dispatcher
2387 @cindex agenda dispatcher
2388 @cindex dispatching agenda commands
2389 @cindex custom agenda commands
2390 @cindex agenda commands, custom
2391 The views are created through a dispatcher that should be bound to a
2392 global key, for example @kbd{C-c a} (@pxref{Installation and
2393 activation}).  In the following we will assume that @kbd{C-c a} is
2394 indeed how the dispatcher is accessed and list keyboard access to
2395 commands accordingly.  After pressing @kbd{C-c a}, an additional
2396 letter is required to execute a command.  The dispatcher offers the
2397 following default commands:
2398 @table @kbd
2399 @item a
2400 Create the calendar-like agenda (@pxref{Weekly/Daily Agenda}).
2401 @item t / T
2402 Create a list of all TODO items (@pxref{Global TODO list}).
2403 @item m / M
2404 Create a list of headlines matching a TAGS expression (@pxref{Matching
2405 headline tags}).
2406 @end table
2408 You can also define custom commands that will be accessible through
2409 the dispatcher, just like the default commands.  Custom commands are
2410 global searches for tags and specific TODO keywords, or a variety of
2411 sparse tree creating commands (@pxref{Sparse trees}).  As sparse trees
2412 are only defined for a single org-mode file, these latter commands act
2413 on the current buffer instead of the list of agenda files.
2415 @kindex C-c a C
2416 Custom commands are configured in the variable
2417 @code{org-agenda-custom-commands}.  You can customize this variable,
2418 for example by pressing @kbd{C-c a C}.  You can also directly set it
2419 with Emacs Lisp in @file{.emacs}.  For example:
2421 @lisp
2422 (setq org-agenda-custom-commands
2423       '(("w" todo "WAITING")
2424         ("u" tags "+BOSS-URGENT")
2425         ("U" tags-tree "+BOSS-URGENT")
2426         ("f" occur-tree "\\<FIXME\\>")))
2427 @end lisp
2429 @noindent will define @kbd{C-c a w} as a global search for
2430 TODO entries with @samp{WAITING} as the TODO keyword, @kbd{C-c a u} as a
2431 global tags search for headlines marked @samp{:BOSS:} but not
2432 @samp{:URGENT:}, @kbd{C-c a U} to do the same search but only in the
2433 current buffer and display the result as a sparse tree, and @kbd{C-c a
2434 f} to create a sparse tree with all entries containing the word
2435 @samp{FIXME}.  For more information, look at the documentation string
2436 of the variable @code{org-agenda-custom-commands}.
2438 @node Weekly/Daily Agenda, Global TODO list, Agenda dispatcher, Agenda Views
2439 @section The weekly/daily agenda
2440 @cindex agenda
2442 The purpose of the weekly/daily @emph{agenda} is to act like a page of
2443 a paper agenda, showing all the tasks for the current week or day.
2445 @table @kbd
2446 @cindex org-agenda, command
2447 @kindex C-c a a
2448 @item C-c a a
2449 Compile an agenda for the current week from a list of org files.  The
2450 agenda shows the entries for each day.  With a @kbd{C-u} prefix (or
2451 when the variable @code{org-agenda-include-all-todo} is @code{t}), all
2452 unfinished TODO items (including those without a date) are also listed at
2453 the beginning of the buffer, before the first date.@*
2454 @end table
2456 Remote editing from the agenda buffer means, for example, that you can
2457 change the dates of deadlines and appointments from the agenda buffer.
2458 The commands available in the Agenda buffer are listed in @ref{Agenda
2459 commands}.
2461 @menu
2462 * Categories::                  Not all tasks are equal
2463 * Time-of-day specifications::  How the agenda knows the time
2464 * Calendar/Diary integration::  Integrating Anniversaries and more
2465 * Sorting of agenda items::     The order of things
2466 @end menu
2468 @node Categories, Time-of-day specifications, Weekly/Daily Agenda, Weekly/Daily Agenda
2469 @subsection Categories
2471 @cindex category
2472 In the agenda buffer, each entry is preceded by a @emph{category},
2473 which is derived from the file name.  The category can also be set
2474 with a special line anywhere in the buffer, looking like this:
2476 @example
2477 #+CATEGORY: Thesis
2478 @end example
2480 If there are several such lines in a file, each specifies the category
2481 for the text below it (but the first category also applies to any text
2482 before the first CATEGORY line).  The display in the agenda buffer looks
2483 best if the category is not longer than 10 characters.
2485 @node Time-of-day specifications, Calendar/Diary integration, Categories, Weekly/Daily Agenda
2486 @subsection Time-of-Day Specifications
2488 Org-mode checks each agenda item for a time-of-day specification.  The
2489 time can be part of the time stamp that triggered inclusion into the
2490 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
2491 ranges can be specified with two time stamps, like
2493 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
2495 In the headline of the entry itself, a time(range) may also appear as
2496 plain text (like @samp{12:45} or a @samp{8:30-1pm}.  If the agenda
2497 integrates the Emacs diary (@pxref{Calendar/Diary integration}), time
2498 specifications in diary entries are recognized as well.
2500 For agenda display, Org-mode extracts the time and displays it in a
2501 standard 24 hour format as part of the prefix.  The example times in
2502 the previous paragraphs would end up in the agenda like this:
2504 @example
2505     8:30-13:00 Arthur Dent lies in front of the bulldozer
2506    12:45...... Ford Prefect arrives and takes Arthur to the pub
2507    19:00...... The Vogon reads his poem
2508    20:30-22:15 Marwin escorts the Hitchhikers to the bridge
2509 @end example
2511 If the agenda is in single-day mode, or for the display of today, the
2512 timed entries are embedded in a time grid, like
2514 @example
2515     8:00...... ------------------
2516     8:30-13:00 Arthur Dent lies in front of the bulldozer
2517    10:00...... ------------------
2518    12:00...... ------------------
2519    12:45...... Ford Prefect arrives and takes Arthur to the pub
2520    14:00...... ------------------
2521    16:00...... ------------------
2522    18:00...... ------------------
2523    19:00...... The Vogon reads his poem
2524    20:00...... ------------------
2525    20:30-22:15 Marwin escorts the Hitchhikers to the bridge
2526 @end example
2528 The time grid can be turned on and off with the variable
2529 @code{org-agenda-use-time-grid}, and can be configured with
2530 @code{org-agenda-time-grid}.
2533 @node Calendar/Diary integration, Sorting of agenda items, Time-of-day specifications, Weekly/Daily Agenda
2534 @subsection Calendar/Diary integration
2535 @cindex calendar integration
2536 @cindex diary integration
2538 Emacs contains the calendar and diary by Edward M. Reingold.  The
2539 calendar displays a three-month calendar with holidays from different
2540 countries and cultures.  The diary allows you to keep track of
2541 anniversaries, lunar phases, sunrise/set, recurrent appointments
2542 (weekly, monthly) and more.  In this way, it is quite complementary to
2543 Org-mode.  It can be very useful to combine output from Org-mode with
2544 the diary.
2546 In order to include entries from the Emacs diary into Org-mode's
2547 agenda, you only need to customize the variable
2549 @lisp
2550 (setq org-agenda-include-diary t)
2551 @end lisp
2553 @noindent After that, everything will happen automatically.  All diary
2554 entries including holidays, anniversaries etc will be included in the
2555 agenda buffer created by Org-mode.  @key{SPC}, @key{TAB}, and
2556 @key{RET} can be used from the agenda buffer to jump to the diary
2557 file in order to edit existing diary entries.  The @kbd{i} command to
2558 insert new entries for the current date works in the agenda buffer, as
2559 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
2560 Sunrise/Sunset times, show lunar phases and to convert to other
2561 calendars, respectively.  @kbd{c} can be used to switch back and forth
2562 between calendar and agenda.
2564 @node Sorting of agenda items,  , Calendar/Diary integration, Weekly/Daily Agenda
2565 @subsection Sorting of agenda items
2566 @cindex sorting, of agenda items
2567 @cindex priorities, of agenda items
2568 The entries for each day are sorted.  The default order is to first
2569 collect all items containing an explicit time-of-day specification.
2570 These entries will be shown at the beginning of the list, as a
2571 @emph{schedule} for the day.  After that, items remain grouped in
2572 categories, in the sequence given by @code{org-agenda-files}.  Within
2573 each category, items are sorted by priority (@pxref{Priorities}).
2575 The priority is a numerical quantity composed of the base priority
2576 (2000 for priority @samp{A}, 1000 for @samp{B}, and 0 for @samp{C}),
2577 plus additional increments for overdue scheduled or deadline items.
2579 Sorting can be customized using the variable
2580 @code{org-agenda-sorting-strategy}.
2583 @node Global TODO list, Matching headline tags, Weekly/Daily Agenda, Agenda Views
2584 @section The global TODO list
2585 @cindex global TODO list
2586 @cindex TODO list, global
2588 The global TODO list contains all unfinished TODO items, formatted and
2589 collected into a single place.
2591 @table @kbd
2592 @kindex C-c a t
2593 @item C-c a t
2594 Show the global TODO list.  This collects the TODO items from all
2595 agenda files (@pxref{Agenda Views}) into a single buffer.  The buffer is in
2596 @code{agenda-mode}, so there are commands to examine and manipulate
2597 the TODO entries directly from that buffer (@pxref{Agenda commands}).
2598 @xref{Global TODO list}, for more information.
2599 @kindex C-c a T
2600 @item C-c a T
2601 Like the above, but allows selection of a specific TODO keyword.  You can
2602 also do this by specifying a prefix argument to @kbd{C-c a t}.  With a
2603 @kbd{C-u} prefix you are prompted for a keyword.  With a numeric
2604 prefix, the Nth keyword in @code{org-todo-keywords} is selected.
2605 @kindex r
2606 The @kbd{r} key in the agenda buffer regenerates it, and you can give
2607 a prefix argument to this command to change the selected TODO keyword,
2608 for example @kbd{3 r}.  If you often need a search for a specific
2609 keyword, define a custom command for it (@pxref{Agenda dispatcher}).
2610 @end table
2612 Remote editing of TODO items means that you can change the state of a
2613 TODO entry with a single key press.  The commands available in the
2614 TODO list are described in @ref{Agenda commands}.
2616 @node Matching headline tags, Timeline, Global TODO list, Agenda Views
2617 @section Matching headline tags
2618 @cindex matching, of tags
2619 @cindex tags view
2621 If headlines in the agenda files are marked with @emph{tags}
2622 (@pxref{Tags}), you can select headlines based on the tags that apply
2623 to them and collect them into an agenda buffer.
2625 @table @kbd
2626 @kindex C-c a m
2627 @item C-c a m
2628 Produce a list of all headlines that match a given set of tags.  The
2629 command prompts for a selection criterion, which is a boolean logic
2630 expression with tags, like @samp{+WORK+URGENT-WITHBOSS} or
2631 @samp{WORK|HOME} (@pxref{Tags}).  If you often need a specific search,
2632 define a custom command for it (@pxref{Agenda dispatcher}).
2633 @kindex C-c a M
2634 @item C-c a M
2635 Like @kbd{C-c a m}, but only select headlines that are also TODO items
2636 and force checking subitems (see variable
2637 @code{org-tags-match-list-sublevels}.
2638 @end table
2640 The commands available in the tags list are described in @ref{Agenda
2641 commands}.
2643 @node Timeline, Agenda commands, Matching headline tags, Agenda Views
2644 @section Timeline for a single file
2645 @cindex single file summary
2646 @cindex agenda, for single file
2647 @cindex timeline, single file
2648 @cindex time-sorted view
2650 The timeline is not really an agenda view, because it only summarizes
2651 items from a single Org-mode file.  But it also uses the agenda buffer
2652 and provides similar commands, so we discuss it here.  The timeline
2653 shows all time-stamped items in a single Org-mode file (or the
2654 selected part of it), in a @emph{time-sorted view}.  The main purpose of
2655 this command is to give an overview over events in a project.
2657 @table @kbd
2658 @kindex C-c C-r
2659 @item C-c C-r
2660 Show a time-sorted view of the org file, with all time-stamped items.
2661 When called with a @kbd{C-u} prefix, all unfinished TODO entries
2662 (scheduled or not) are also listed under the current date.
2663 @end table
2665 @noindent
2666 The commands available in the timeline buffer are listed in
2667 @ref{Agenda commands}.
2669 @node Agenda commands,  , Timeline, Agenda Views
2670 @section Commands in the agenda buffer
2671 @cindex commands, in agenda buffer
2673 Entries in the agenda buffer are linked back to the org file or diary
2674 file where they originate.  You are not allowed to edit the agenda
2675 buffer itself, but commands are provided to show and jump to the
2676 original entry location, and to edit the org-files ``remotely'' from
2677 the agenda buffer.  In this way, all information is stored only once,
2678 removing the risk that your agenda and note files may diverge.
2680 Some commands can be executed with mouse clicks on agenda lines.  For
2681 the other commands, the cursor needs to be in the desired line.
2683 @table @kbd
2684 @tsubheading{Motion}
2685 @kindex n
2686 @item n
2687 Next line (same as @key{up}).
2688 @kindex p
2689 @item p
2690 Previous line (same as @key{down}).
2691 @tsubheading{View/GoTo org file}
2692 @kindex mouse-3
2693 @kindex @key{SPC}
2694 @item mouse-3
2695 @itemx @key{SPC}
2696 Display the original location of the item in another window.
2698 @kindex L
2699 @item L
2700 Display original location and recenter that window.
2702 @kindex mouse-2
2703 @kindex mouse-1
2704 @kindex @key{TAB}
2705 @item mouse-2
2706 @itemx mouse-1
2707 @itemx @key{TAB}
2708 Go to the original location of the item in another window.  Under Emacs
2709 22, @kbd{mouse-1} will also works for this.
2711 @kindex @key{RET}
2712 @itemx @key{RET}
2713 Go to the original location of the item and delete other windows.
2715 @kindex f
2716 @item f
2717 Toggle Follow mode.  In Follow mode, as you move the cursor through
2718 the agenda buffer, the other window always shows the corresponding
2719 location in the org file.
2721 @kindex l
2722 @item l
2723 Toggle Logbook mode.  In Logbook mode, entries that where marked DONE while
2724 logging was on (variable @code{org-log-done}) are shown in the agenda.
2726 @tsubheading{Change display}
2727 @kindex o
2728 @item o
2729 Delete other windows.
2731 @kindex w
2732 @item w
2733 Switch to weekly view (7 days displayed together).
2735 @kindex d
2736 @item d
2737 Switch to daily view (just one day displayed).
2739 @kindex D
2740 @item D
2741 Toggle the inclusion of diary entries.  See @ref{Calendar/Diary integration}.
2743 @kindex g
2744 @item g
2745 Toggle the time grid on and off.  See also the variables
2746 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
2748 @kindex r
2749 @item r
2750 Recreate the agenda buffer, for example to reflect the changes
2751 after modification of the time stamps of items with S-@key{left} and
2752 S-@key{right}.  When the buffer is the global todo list, a prefix
2753 argument is interpreted to create a selective list for a specific TODO
2754 keyword.
2756 @kindex @key{right}
2757 @item @key{right}
2758 Display the following @code{org-agenda-ndays} days.  For example, if
2759 the display covers a week, switch to the following week.  With prefix
2760 arg, go forward that many times @code{org-agenda-ndays} days.
2762 @kindex @key{left}
2763 @item @key{left}
2764 Display the previous dates.
2766 @kindex .
2767 @item .
2768 Goto today.
2770 @tsubheading{Remote editing}
2772 @item 0-9
2773 Digit argument.
2775 @kindex t
2776 @item t
2777 Change the TODO state of the item, both in the agenda and in the
2778 original org file.
2780 @kindex T
2781 @item T
2782 Show all tags associated with the current item.  Because of
2783 inheritance, this may be more than the tags listed in the line itself.
2785 @kindex :
2786 @item :
2787 Set tags for the current headline.
2789 @kindex ,
2790 @item ,
2791 Set the priority for the current item.  Org-mode prompts for the
2792 priority character. If you reply with @key{SPC}, the priority cookie
2793 is removed from the entry.
2795 @kindex P
2796 @item p
2797 Display weighted priority of current item.
2799 @kindex +
2800 @kindex S-@key{up}
2801 @item +
2802 @itemx S-@key{up}
2803 Increase the priority of the current item.  The priority is changed in
2804 the original buffer, but the agenda is not resorted.  Use the @kbd{r}
2805 key for this.
2807 @kindex -
2808 @kindex S-@key{down}
2809 @item -
2810 @itemx S-@key{down}
2811 Decrease the priority of the current item.
2813 @kindex S-@key{right}
2814 @item S-@key{right}
2815 Change the time stamp associated with the current line by one day into
2816 the future.  With prefix argument, change it by that many days.  For
2817 example, @kbd{3 6 5 S-@key{right}} will change it by a year.  The
2818 stamp is changed in the original org file, but the change is not
2819 directly reflected in the agenda buffer.  Use the
2820 @kbd{r} key to update the buffer.
2822 @kindex S-@key{left}
2823 @item S-@key{left}
2824 Change the time stamp associated with the current line by one day
2825 into the past.
2827 @kindex >
2828 @item >
2829 Change the time stamp associated with the current line to today.
2830 The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
2831 on my keyboard.
2833 @cindex diary entries, creating from agenda
2834 @kindex i
2835 @item i
2836 Insert a new entry into the diary.  Prompts for the type of entry
2837 (day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
2838 entry in the diary, just like @kbd{i d} etc. would do in the calendar.
2839 The date is taken from the cursor position.
2841 @tsubheading{Calendar commands}
2842 @kindex c
2843 @item c
2844 Open the Emacs calendar and move to the date at the agenda cursor.
2846 @item c
2847 When in the calendar, compute and show the Org-mode agenda for the
2848 date at the cursor.
2850 @kindex M
2851 @item M
2852 Show the phases of the moon for the three months around current date.
2854 @kindex S
2855 @item S
2856 Show sunrise and sunset times.  The geographical location must be set
2857 with calendar variables, see documentation of the Emacs calendar.
2859 @kindex C
2860 @item C
2861 Convert the date at cursor into many other cultural and historic
2862 calendars.
2864 @kindex H
2865 @item H
2866 Show holidays for three month around the cursor date.
2868 @kindex C-c C-x C-c
2869 @item C-c C-x C-c
2870 Export a single iCalendar file containing entries from all agenda files.
2872 @tsubheading{Quit and Exit}
2873 @kindex q
2874 @item q
2875 Quit agenda, remove the agenda buffer.
2877 @kindex x
2878 @cindex agenda files, removing buffers
2879 @item x
2880 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
2881 for the compilation of the agenda.  Buffers created by the user to
2882 visit org files will not be removed.
2884 @end table
2886 @node Exporting, Miscellaneous, Agenda Views, Top
2887 @chapter Exporting
2888 @cindex exporting
2890 For printing and sharing of notes, Org-mode documents can be exported
2891 as ASCII or HTML files.  To incorporate entries with associated times
2892 like deadlines or appointments into a desktop calendar program like
2893 iCal, Org-mode can also produce extracts in the iCalendar format.
2895 @menu
2896 * ASCII export::                Export as a structured ASCII file
2897 * HTML export::                 Export as an HTML file
2898 * iCalendar export::            Create calendar entries.
2899 @end menu
2901 @node ASCII export, HTML export, Exporting, Exporting
2902 @section ASCII export
2903 @cindex ASCII export
2905 @cindex region, active
2906 @cindex active region
2907 @cindex transient-mark-mode
2908 @table @kbd
2909 @kindex C-c C-x a
2910 @item C-c C-x a
2911 Export as ASCII file.  If there is an active region, only the region
2912 will be exported.  For an org file @file{myfile.org}, the ASCII file
2913 will be @file{myfile.txt}.  The file will be overwritten without
2914 warning.
2915 @end table
2917 @cindex headline levels, for exporting
2918 In the exported version, the first 3 outline levels will become
2919 headlines, defining a general document structure.  Additional levels
2920 will be exported as itemized lists.  If you want that transition to occur
2921 at a different level, specify it with a prefix argument.  For example,
2923 @example
2924 @kbd{C-1 C-c C-x a org-export-as-ascii}
2925 @end example
2927 @noindent
2928 creates only top level headlines and does the rest as items.  Lines
2929 starting with @samp{#} and subtrees starting with the word @samp{COMMENT}
2930 will not be exported.
2932 @node HTML export, iCalendar export, ASCII export, Exporting
2933 @section HTML export
2934 @cindex HTML export
2936 Org-mode contains an HTML exporter with extensive HTML formatting, in
2937 ways similar to John Grubers @emph{markdown} language, but with
2938 additional support for tables.
2940 @cindex region, active
2941 @cindex active region
2942 @cindex transient-mark-mode
2943 @table @kbd
2944 @kindex C-c C-x h
2945 @item C-c C-x h
2946 Export as HTML file @file{myfile.html}.
2947 @kindex C-c C-x b
2948 @item C-c C-x b
2949 Export as HTML file and open it with a browser.
2950 @kindex C-c C-x t
2951 @item C-c C-x t
2952 Insert template with export options, see below.
2953 @kindex C-c :
2954 @item C-c :
2955 Toggle fixed-width for entry (QUOTE) or region, see below.
2956 @end table
2958 @cindex headline levels, for exporting
2959 In the exported version, the first 3 outline levels will become
2960 headlines, defining a general document structure.  Additional levels
2961 will be exported as itemized lists.  If you want that transition to occur
2962 at a different level, specify it with a prefix argument.  For example,
2964 @example
2965 @kbd{C-2 C-c C-x b}
2966 @end example
2968 @noindent
2969 creates two levels of headings and does the rest as items.
2971 @menu
2972 * HTML formatting::             Interpretation of the buffer content
2973 * Export options::              How to influence exports
2974 * Comment lines::               Lines which will not be exported
2975 @end menu
2977 @node HTML formatting, Export options, HTML export, HTML export
2978 @subsection HTML formatting
2980 Not all text is transferred literally to the exported HTML file.  The
2981 exporter implements the following interpretation:
2983 @itemize @bullet
2985 @cindex hand-formatted lists
2986 @cindex lists, hand-formatted
2987 @item
2988 Hand-formatted lists with @samp{-}, @samp{*} or @samp{+} as
2989 bullet, or with @samp{1.} or @samp{2)} as enumerator will be recognized and
2990 transformed into HTML lists.  See @xref{Plain Lists}.
2992 @cindex underlined text
2993 @cindex bold text
2994 @cindex italic text
2995 @item
2996 You can make words @b{*bold*}, @i{/italic/}, and _underlined_
2998 @cindex @TeX{} interpretation
2999 @item
3000 Simple @TeX{}-like math constructs are interpreted:
3002 @cindex completion, of @TeX{} symbols
3003 @itemize @minus
3004 @item
3005 @samp{10^22} and @samp{J_n} are super- and subscripts.  You can quote
3006 @samp{^} and @samp{_} with a backslash: @samp{\_} and @samp{\^}
3007 @item
3008 @samp{\alpha} indicates a Greek letter, @samp{\to} an arrow.  You can
3009 use completion for these macros, just type @samp{\} and maybe a few
3010 letters, and press @kbd{M-@key{TAB}} to see possible completions.
3011 @end itemize
3013 @cindex tables, export to HTML
3014 @item
3015 Tables are transformed into HTML tables.  Data fields before the first
3016 horizontal separator line will be formatted as table header fields.
3018 @cindex fixed width
3019 @item
3020 If a headline starts with the word @samp{QUOTE}, the text below the
3021 headline will be typeset as fixed-width, to allow quoting of computer
3022 codes etc.  Lines starting with @samp{:} are also typeset in
3023 fixed-width font.
3025 @cindex HTML tags
3026 @item
3027 If you want to include HTML tags which should be interpreted as such,
3028 mark them with a @samp{@@} like in @samp{@@<b>bold text@@</b>}.
3029 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
3030 @samp{&gt;} in HTML export.
3031 @end itemize
3033 If these conversions conflict with your habits of typing ASCII text,
3034 they can all be turned off with corresponding variables.
3036 @node Export options, Comment lines, HTML formatting, HTML export
3037 @subsection Export options
3038 @cindex options, for export
3040 @cindex completion, of option keywords
3041 The exporter recognizes special lines in the buffer which provide
3042 additional information.  These lines may be put anywhere in the file.
3043 The whole set of lines can be inserted into the buffer with @kbd{C-c
3044 C-x t}.  For individual lines, a good way to make sure the keyword is
3045 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
3046 (@pxref{Completion}).
3048 @example
3049 #+TITLE:     the title to be shown (default is the buffer name)
3050 #+AUTHOR:    the author (default taken from @code{user-full-name})
3051 #+EMAIL:     his/her email address (default from @code{user-mail-address})
3052 #+LANGUAGE:  language for HTML, e.g. @samp{en} (@code{org-export-default-language})
3053 #+TEXT:      Some descriptive text to be inserted at the beginning.
3054 #+TEXT:      Several lines may be given.
3055 #+OPTIONS:   H:2  num:t  toc:t  \n:nil  @:t  ::t  |:t  ^:t  *:nil  TeX:t
3056 @end example
3058 @noindent
3059 The OPTIONS line is a compact form to specify export settings.  Here
3060 you can:
3061 @cindex headline levels
3062 @cindex section-numbers
3063 @cindex table of contents
3064 @cindex linebreak preservation
3065 @cindex quoted html tags
3066 @cindex fixed-width sections
3067 @cindex tables
3068 @cindex @TeX{}-like syntax for sub- and superscripts
3069 @cindex emphasized text
3070 @cindex @TeX{} macros
3071 @example
3072 H:      @r{set the number of headline levels for export}
3073 num:    @r{turn on/off section-numbers}
3074 toc:    @r{turn on/off table of contents}
3075 \n:     @r{turn on/off linebreak-preservation}
3076 @@:      @r{turn on/off quoted html tags}
3077 ::      @r{turn on/off fixed-width sections}
3078 |:      @r{turn on/off tables}
3079 ^:      @r{turn on/off @TeX{}-like syntax for sub- and superscripts.}
3080 *:      @r{turn on/off emphasized text (bold, italic, underlined)}
3081 TeX:    @r{turn on/off @TeX{} macros}
3082 @end example
3084 You can also give style information for the exported file.  The
3085 default specification can be configured through the option
3086 @code{org-export-html-style}.  If you want to use a file-local style,
3087 you may use file variables, best wrapped into a COMMENT section at the
3088 end of the outline tree.  For example:
3090 @example
3091 * COMMENT HTML style specifications
3093 # Local Variables:
3094 # org-export-html-style: "   <style type=\"text/css\">
3095        p @{font-weight: normal; color: gray; @}
3096        h1 @{color: black; @}
3097    </style>"
3098 # End: ***
3099 @end example
3101 Remember to execute @kbd{M-x normal-mode} after changing this to make
3102 the new style visible to Emacs.  This command reastarts org-mode for the
3103 current buffer and forces Emacs to re-evaluate the loval variables
3104 section in the buffer.
3106 @node Comment lines,  , Export options, HTML export
3107 @subsection Comment lines
3108 @cindex comment lines
3109 @cindex exporting, not
3111 Lines starting with @samp{#} in column zero are treated as comments
3112 and will never be exported.  Also entire subtrees starting with the
3113 word @samp{COMMENT} will never be exported.  Finally, any text before
3114 the first headline will not be exported either.  This applies also for
3115 ASCII export.
3117 @table @kbd
3118 @kindex C-c ;
3119 @item C-c ;
3120 Toggle the COMMENT keyword at the beginning of an entry.
3121 @end table
3123 @node iCalendar export,  , HTML export, Exporting
3124 @section iCalendar export
3125 @cindex iCalendar export
3127 Some people like to use Org-mode for keeping track of projects, but
3128 still prefer a standard calendar application for anniversaries and
3129 appointments.  In this case it can be useful to have deadlines and
3130 other time-stamped items in Org-mode files show up in the calendar
3131 application.  Org-mode can export calendar information in the standard
3132 iCalendar format.
3134 @table @kbd
3135 @kindex C-c C-x i
3136 @item C-c C-x i
3137 Create iCalendar entries for the current file and store them in the same
3138 directory, using a file extension @file{.ics}.
3139 @kindex C-c C-x C-i
3140 @item C-c C-x C-i
3141 Like @kbd{C-c C-x i}, but do this for all files in
3142 @code{org-agenda-files}.  For each of these files, a separate iCalendar
3143 file will be written.
3144 @kindex C-c C-x c
3145 @item C-c C-x c
3146 Create a single large iCalendar file from all files in
3147 @code{org-agenda-files} and write it to the file given by
3148 @code{org-combined-agenda-icalendar-file}.
3149 @end table
3151 How this calendar is best read and updated, depends on the application
3152 you are using.  For example, when using iCal under Apple MacOS X, you
3153 could create a new calendar @samp{OrgMode} (the default name for the
3154 calendar created by @kbd{C-c C-x c}, see the variables
3155 @code{org-icalendar-combined-name} and
3156 @code{org-combined-agenda-icalendar-file}).  Then set Org-mode to
3157 overwrite the corresponding file
3158 @file{~/Library/Calendars/OrgMode.ics}.  You may even use AppleScript
3159 to make iCal re-read the calendar files each time a new version of
3160 @file{OrgMode.ics} is produced.  Here is the setup needed for this:
3162 @cindex applescript, for calendar update
3163 @lisp
3164 (setq org-combined-agenda-icalendar-file
3165     "~/Library/Calendars/OrgMode.ics")
3166 (add-hook 'org-after-save-iCalendar-file-hook
3167  (lambda ()
3168   (shell-command
3169    "osascript -e 'tell application \"iCal\" to reload calendars'")))
3170 @end lisp
3172 @node Miscellaneous, Index, Exporting, Top
3173 @chapter Miscellaneous
3175 @menu
3176 * Completion::                  M-TAB knows what you need
3177 * Customization::               Adapting Org-mode to your taste
3178 * Updating settings::           How to tell Org-mode that settings have changed
3179 * Clean view::                  Getting rid of leading stars in the outline
3180 * TTY keys::                    Using Org-mode on a tty
3181 * FAQ::                         Frequently asked questions
3182 * Interaction::                 Other Emacs packages
3183 * Bugs::                        Things which do not work perfectly
3184 * Acknowledgments::             These people provided feedback and more
3185 @end menu
3187 @node Completion, Customization, Miscellaneous, Miscellaneous
3188 @section Completion
3189 @cindex completion, of @TeX{} symbols
3190 @cindex completion, of TODO keywords
3191 @cindex completion, of dictionary words
3192 @cindex completion, of option keywords
3193 @cindex completion, of CamelCase links
3194 @cindex completion, of tags
3195 @cindex @TeX{} symbol completion
3196 @cindex TODO keywords completion
3197 @cindex dictionary word completion
3198 @cindex option keyword completion
3199 @cindex CamelCase link completion
3200 @cindex tag completion
3202 Org-mode supports in-buffer completion.  This type of completion does
3203 not make use of the minibuffer.  You simply type a few letters into
3204 the buffer and use the key to complete text right there.
3206 @table @kbd
3207 @kindex M-@key{TAB}
3208 @item M-@key{TAB}
3209 Complete word at point
3210 @itemize @bullet
3211 @item
3212 At the beginning of a headline, complete TODO keywords.
3213 @item
3214 After @samp{\}, complete @TeX{} symbols supported by the exporter.
3215 @item
3216 After @samp{*}, complete CamelCase versions of all headlines in the
3217 buffer.
3218 @item
3219 After @samp{:}, complete tags used elsewhere in the buffer.
3220 @item
3221 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
3222 @samp{OPTIONS} which set file-specific options for Org-mode.  When the
3223 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
3224 will insert example settings for this keyword.
3225 @item
3226 Elsewhere, complete dictionary words using ispell.
3227 @end itemize
3228 @end table
3231 @node Customization, Updating settings, Completion, Miscellaneous
3232 @section Customization
3233 @cindex customization
3234 @cindex options, for customization
3235 @cindex variables, for customization
3237 There are more than 100 variables that can be used to customize
3238 Org-mode.  For the sake of compactness of the manual, we are not
3239 describing the variables here.  A structured overview of customization
3240 variables is available with @kbd{M-x org-customize}.  Or select
3241 @code{Browse Org Group} from the @code{Org->Customization} menu.
3243 @node Updating settings, Clean view, Customization, Miscellaneous
3244 @section Updating settings after changes
3245 @cindex updating, after setting changes
3246 @kindex C-c C-c
3248 Org-mode uses special lines in the buffer to set file-local values for a
3249 number of user options.  When such settings are changed, you need to
3250 inform Org-mode that something has be modified and that it should
3251 recheck the buffer for setting.  This is done with the command @kbd{C-c
3252 C-c} in the following situations:
3254 @itemize @bullet
3255 @item
3256 After changing any of the special buffer lines starting with @samp{#+},
3257 for example @samp{#+STARTUP}, @samp{#+CATEGORY}.  Org-mode will then
3258 read these settings and activate them (see @ref{Visibility cycling},
3259 @ref{Narrow columns}, @ref{Clean view}, @ref{Per file keywords},
3260 @ref{Categories})
3261 @item
3262 After editing by hand a @samp{#+TBLFM} line containing formulas for a
3263 table.  When pressing @kbd{C-c C-c} in that line, all formulas are
3264 re-applied to the entire table (@pxref{Editing/debugging formulas}).
3265 @item
3266 In a table, @kbd{C-c C-c} does force a re-align, even if the table
3267 editor is turned off (@pxref{Built-in table editor})
3268 @item
3269 In an ordered plain list, @kbd{C-c C-c} forces a renumbering of the list
3270 (@pxref{Plain Lists}).
3271 @item
3272 After adding a new radio target @samp{<<<New target>>>}, @kbd{C-c C-c}
3273 must be used with the cursor on that target to activate it throughout
3274 the buffer.
3275 @end itemize
3277 @node Clean view, TTY keys, Updating settings, Miscellaneous
3278 @section A cleaner outline view
3279 @cindex hiding leading stars
3280 @cindex clean outline view
3282 Some people find it noisy and distracting that the Org-mode headlines
3283 are starting with a potentially large number of stars.  For example
3284 the tree from @ref{Headlines}:
3286 @example
3287 * Top level headline
3288 ** Second level
3289 *** 3rd level
3290     some text
3291 *** 3rd level
3292     more text
3293 * Another top level headline
3294 @end example
3296 @noindent
3297 Unfortunately this is deeply ingrained into the code of Org-mode and
3298 cannot be easily changed.  You can, however, modify the display in such
3299 a way that all leading stars become invisible and the outline more easy
3300 to read.  To do this, customize the variable
3301 @code{org-hide-leading-stars} like this:
3303 @lisp
3304 (setq org-hide-leading-stars t)
3305 @end lisp
3307 @noindent
3308 or change this on a per-file basis with one of the lines (anywhere in
3309 the buffer)
3311 @example
3312 #+STARTUP: showstars
3313 #+STARTUP: hidestars
3314 @end example
3316 @noindent
3317 Press @kbd{C-c C-c} with the cursor in a @samp{STARTUP} line to activate
3318 the modifications.
3320 With stars hidden, the tree becomes:
3322 @example
3323 * Top level headline
3324  * Second level
3325   * 3rd level
3326     some text
3327   * 3rd level
3328     more text
3329 * Another top level headline
3330 @end example
3332 @noindent
3333 Note that the leading stars are not truly replaced by whitespace, they
3334 are only fontified with the face @code{org-hide} that uses the
3335 background color as font color.  If are are not using either white or
3336 black background, you may have to customize this face to get the wanted
3337 effect.  Another possibility is to set this font such that the extra
3338 stars are @i{almost} invisible, for example using the color
3339 @code{grey90} on a white background.
3341 Things become cleaner still if you skip all the even levels and use only
3342 odd levels 1, 3, 5..., effectively adding two stars to go from one
3343 outline level to the next:
3345 @example
3346 * Top level headline
3347   * Second level
3348     * 3rd level
3349       some text
3350     * 3rd level
3351       more text
3352 * Another top level headline
3353 @end example
3355 @noindent
3356 In order to make the structure editing and export commands handle this
3357 convention correctly, use
3359 @lisp
3360 (setq org-odd-levels-only t)
3361 @end lisp
3363 @noindent
3364 or set this on a per-file basis with one of the following lines (don't
3365 forget to press @kbd{C-c C-c} with the cursor in the startup line to
3366 activate changes immediately).
3368 @example
3369 #+STARTUP: odd
3370 #+STARTUP: oddeven
3371 @end example
3373 You can convert an Org-mode file from single-star-per-level to the
3374 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
3375 RET} in that file.  The reverse operation is @kbd{M-x
3376 org-convert-to-oddeven-levels}.
3378 @node TTY keys, FAQ, Clean view, Miscellaneous
3379 @section Using org-mode on a tty
3380 @cindex tty keybindings
3382 Org-mode uses a number of keys that are not accessible on a tty.  This
3383 applies to most special keys like cursor keys, @key{TAB} and
3384 @key{RET}, when these are combined with modifier keys like @key{Meta}
3385 and/or @key{Shift}.  Org-mode uses these bindings because it needs to
3386 provide keys for a large number of commands, and because these keys
3387 appeared particularly easy to remember.  In order to still be able to
3388 access the core functionality of Org-mode on a tty, alternative
3389 bindings are provided.  Here is a complete list of these bindings,
3390 which are obviously more cumbersome to use.  Note that sometimes a
3391 work-around can be better.  For example changing a time stamp is
3392 really only fun with @kbd{S-@key{cursor}} keys.  On a tty you would
3393 rather use @kbd{C-c .}  to re-insert the timestamp.
3395 @multitable @columnfractions 0.15 0.2 0.2
3396 @item @b{Default} @tab @b{Alternative 1} @tab @b{Alternative 2}
3397 @item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab
3398 @item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{@key{Esc} @key{left}}
3399 @item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab
3400 @item @kbd{M-@key{right}}   @tab @kbd{C-c C-x r}           @tab @kbd{@key{Esc} @key{right}}
3401 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab
3402 @item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{@key{Esc} @key{up}}
3403 @item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab
3404 @item @kbd{M-@key{down}}    @tab @kbd{C-c C-x d}           @tab @kbd{@key{Esc} @key{down}}
3405 @item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab
3406 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab
3407 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{@key{Esc} @key{RET}}
3408 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab
3409 @item @kbd{S-@key{left}}    @tab @kbd{C-c C-x @key{left}}  @tab
3410 @item @kbd{S-@key{right}}   @tab @kbd{C-c C-x @key{right}} @tab
3411 @item @kbd{S-@key{up}}      @tab @kbd{C-c C-x @key{up}}    @tab
3412 @item @kbd{S-@key{down}}    @tab @kbd{C-c C-x @key{down}}  @tab
3413 @end multitable
3415 @node FAQ, Interaction, TTY keys, Miscellaneous
3416 @section Frequently asked questions
3417 @cindex FAQ
3419 @enumerate
3420 @item @b{Org-mode seems to be a useful default mode for the various
3421 @file{README} files I have scattered through my directories.  How do I
3422 turn it on for all @file{README} files?}@*
3424 @example
3425 (add-to-list 'auto-mode-alist '("README$" . org-mode))
3426 @end example
3428 @item @b{Some of my links stopped working after I upgraded to a version
3429 4.20 or later.  Why is this, and how can I fix it?}@*
3431 These must be links in plain text, containing white space, such as
3432 @samp{bbdb:Richard Stallman}.  You need to protect these links by
3433 putting double brackets around them, like @samp{[[bbdb:Richard
3434 Stallman]]}.
3436 @item @b{I see that Org-mode now creates links using the double bracket
3437 convention that hides the link part and the brackets, only showing the
3438 description part.  How can I convert my old links to this new format?}@*
3440 Execute once in each Org-mode file: @kbd{M-x org-upgrade-old-links}.
3441 The replaces angular brackets with the link format.
3443 @item @b{I don't care if you find the new bracket links great, I am
3444 attached to the old style using angular brackets and no hiding of the
3445 link text.  Please give them back to me, don't tell me it is not
3446 possible!}@*
3448 Would I let you down like that?  If you must (even if I don't understand
3449 why), you can do this
3450 @lisp
3451 (setq org-link-style 'plain
3452       org-link-format "<%s>")
3453 @end lisp
3455 @item @b{When I am executing shell links I always get a 
3456 confirmation prompt and need to type @kbd{yes @key{RET}}, thats 4 key
3457 presses!  Can I get rid of this?}@*
3459 @cindex shell links, confirmation
3460 @cindex dangerous commands
3461 The confirmation is there to protect you from unwantingly execute
3462 potentially dangerous commands.  For example, imagine a link
3463 @samp{[[shell:rm -rf ~/*][Google Search]]}.  In an Org-mode buffer, this
3464 command would look like @samp{Google Search}, but really it would remove
3465 your home directory.  If you wish, you can make it easier to respond to
3466 the query by setting @code{org-confirm-shell-links} to @code{y-or-n-p}.
3467 Then a single @kbd{y} keypress will be enough to confirm shell links.
3468 It is also possible to turn off this check entirely, but I do not
3469 recommend to do this.  Be warned.
3471 @item @b{All these stars are driving me mad, I just find the Emacs
3472 outlines unreadable. Can't you just put white space and a single star as a
3473 starter for headlines?}@*
3475 See @ref{Clean view}.
3477 @item @b{I would like to have two windows on the same Org-mode
3478 file, but with different outline visibility.  Is that possible?}@*
3480 @cindex @code{make-indirect-buffer}
3481 @cindex indirect buffers
3482 In GNU Emacs, you may use @emph{indirect buffers} which do exactly this.
3483 See the documentation on the command @code{make-indirect-buffer}.  In
3484 XEmacs, this is currently not possible because of the different outline
3485 implementation.
3487 @item @b{When I export my TODO list, every TODO item becomes a
3488 separate section.  How do I enforce these items to be exported as an
3489 itemized list?}@*
3491 If you plan to use ASCII or HTML export, make sure things you want to
3492 be exported as item lists are level 4 at least, even if that does mean
3493 there is a level jump.  For example:
3495 @example
3496 * Todays top priorities
3497 **** TODO write a letter to xyz
3498 **** TODO Finish the paper
3499 **** Pick up kids at the school
3500 @end example
3502 Alternatively, if you need a specific value for the heading/item
3503 transition in a particular file, use the @samp{+OPTIONS} line to
3504 configure the @samp{H} switch.
3506 @example
3507 +OPTIONS:   H:2; ...
3508 @end example
3510 @item @b{I would like to export only a subtree of my file to HTML.
3511 How?}@*
3513 @cindex exporting a subtree
3514 If you want to export a subtree, mark the subtree as region and then
3515 export.  Marking can be done with @kbd{C-c @@ C-x C-x}, for example.
3517 @item @b{Org-mode takes over the S-cursor keys.  I also want to use
3518 CUA-mode, is there a way to fix this conflict?}@*
3519 Yes, see @ref{Interaction}.
3521 @item @b{One of my table columns has started to fill up with
3522 @samp{#ERROR}.  What is going on?}@*
3524 Org-mode tried to compute the column from other fields using a
3525 formula stored in the @samp{#+TBLFM:} line just below the table, and
3526 the evaluation of the formula fails.  Fix the fields used in the
3527 formula, or fix the formula, or remove it!
3529 @item @b{When I am in the last column of a table and just above a
3530 horizontal line in the table, pressing TAB creates a new table line
3531 @i{before} the horizontal line.  How can I quickly move to the line
3532 @i{below} the horizontal line instead?}@*
3534 Press @key{down} (to get on the separator line) and then @key{TAB}.
3535 Or configure the variable @code{org-table-tab-jumps-over-hlines}.
3537 @item @b{How can I change the indentation of an entire table without
3538 fixing every line by hand?}@*
3540 @cindex indentation, of tables
3541 The indentation of a table is set by the first line.  So just fix the
3542 indentation of the first line and realign with @key{TAB}.
3544 @item @b{Is it possible to include entries from org-mode files into my
3545 emacs diary?}@*
3547 Since the org-mode agenda is much more powerful and can contain the
3548 diary (@pxref{Calendar/Diary integration}), you should think twice
3549 before deciding to do this.  Integrating Org-mode information into the
3550 diary is, however, possible.  The following steps are necessary:
3551 Autoload the function @command{org-diary} as shown above under
3552 @ref{Installation and activation}.  You also need to use @emph{fancy
3553 diary display} by setting in @file{.emacs}:
3555 @lisp
3556 (add-hook 'diary-display-hook 'fancy-diary-display)
3557 @end lisp
3559 Then include the following line into your @file{~/diary} file, in
3560 order to get the entries from all files listed in the variable
3561 @code{org-agenda-files}:
3563 @example
3564 &%%(org-diary)
3565 @end example
3566 @noindent
3567 You may also select specific files with
3569 @example
3570 &%%(org-diary) ~/path/to/some/org-file.org
3571 &%%(org-diary) ~/path/to/another/org-file.org
3572 @end example
3574 If you now launch the calendar and press @kbd{d} to display a diary,
3575 the headlines of entries containing a timestamp, date range, schedule,
3576 or deadline referring to the selected date will be listed.  Just like
3577 in Org-mode's agenda view, the diary for @emph{today} contains
3578 additional entries for overdue deadlines and scheduled items.  See
3579 also the documentation of the @command{org-diary} function.
3581 @end enumerate
3584 @node Interaction, Bugs, FAQ, Miscellaneous
3585 @section Interaction with other packages
3586 @cindex packages, interaction with other
3587 Org-mode can cooperate with the following packages:
3589 @table @asis
3590 @cindex @file{org-mouse.el}
3591 @item @file{org-mouse.el} by Piotr Zielinski
3592 This package implements extended mouse functionality for Org-mode.  It
3593 allows you to cycle visibility and to edit the document structure with
3594 the mouse.  It also provides a context-sensitive menu that changes
3595 depending on the context of a mouse-click.  Use a search engine to find
3596 this package on the web.
3597 @cindex @file{table.el}
3598 @item @file{table.el} by Takaaki Ota
3599 Org mode cooperates with table.el, see @ref{table.el}.  @file{table.el}
3600 is part of Emacs 22.
3601 @cindex @file{calc.el}
3602 @item @file{calc.el} by Dave Gillespie
3603 Org-mode uses the calc package for implementing spreadsheet
3604 functionality in its tables (@pxref{Table calculations}).  Org-modes
3605 checks for the availability of calc by looking for the function
3606 @code{calc-eval} which should be autoloaded in your setup if calc has
3607 been installed properly.  As of Emacs 22, calc is part of the Emacs
3608 distribution.  Another possibility for interaction between the two
3609 packages is using calc for embedded calculations. @xref{Embedded Mode,
3610 , Embedded Mode, calc, GNU Emacs Calc Manual}.
3611 @cindex @file{constants.el}
3612 @item @file{constants.el} by Carsten Dominik
3613 In a table formula (@pxref{Table calculations}), it is possible to use
3614 names for natural constants or units.  Instead of defining your own
3615 constants in the variable @code{org-table-formula-constants}, install
3616 the @file{constants} package which defines a large number of constants
3617 and units, and lets you use unit prefixes like @samp{M} for
3618 @samp{Mega} etc.  You will need version 2.0 of this package, available
3619 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org-mode checks for
3620 the function @code{constants-get}, which has to be autoloaded in your
3621 setup.  See the installation instructions in the file
3622 @file{constants.el}.
3623 @cindex @file{remember.el}
3624 @cindex @file{CUA.el}
3625 @item @file{CUA.el} by Kim. F. Storm
3626 Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys
3627 used by CUA-mode (as well as pc-select-mode and s-region-mode) to
3628 select and extend the region.  If you want to use one of these
3629 packages along with Org-mode, configure the variable
3630 @code{org-CUA-compatible}.  When set, Org-mode will move the following
3631 keybindings in org-mode files, and in the agenda buffer (but not
3632 during date selection).
3634 @example
3635 S-UP    -> M-p             S-DOWN  -> M-n
3636 S-LEFT  -> M--             S-RIGHT -> M-+
3637 S-RET   -> C-S-RET
3638 @end example
3640 Yes, these are unfortunately more difficult to remember.  If you want
3641 to have other replacement keys, look at the variable
3642 @code{org-disputed-keys}.
3643 @item @file{remember.el} by John Wiegley
3644 Org mode cooperates with remember, see @ref{Remember}.
3645 @file{Remember.el} is not part of Emacs, find it on the web.
3646 @end table
3648 @node Bugs, Acknowledgments, Interaction, Miscellaneous
3649 @section Bugs
3650 @cindex bugs
3652 Here is a list of things that should work differently, but which I
3653 have found too hard to fix.
3655 @itemize @bullet
3656 @item
3657 If a table field starts with a link, and if the corresponding table
3658 column is narrowed (@pxref{Narrow columns}) to a width too small to
3659 display the link, the field would look entirely empty even though it is
3660 not.  To prevent this, Org-mode throws an error.  The work-around is to
3661 make the column wide enough to fit the link, or to add some text (at
3662 least 2 characters) before the link in the same field.
3663 @item
3664 Narrowing table columns does not work on XEmacs, because the
3665 @code{format} function does not transport text properties.
3666 @item
3667 Text in an entry protected with the @samp{QUOTE} keyword should not
3668 autowrap.
3669 @item
3670 When the application called by @kbd{C-c C-o} to open a file link fails
3671 (for example because the application does not exits or refuses to open
3672 the file), it does so silently.  No error message is displayed.
3673 @item
3674 Plain list items should be able to hold a TODO item.  Unfortunately this
3675 has so many technical problems that I will only consider this change for
3676 the next major release (5.0).
3677 @item
3678 The remote-editing commands in the agenda buffer cannot be undone with
3679 @code{undo} called from within the agenda buffer.  But you can go to
3680 the corresponding buffer (using @key{TAB} or @key{RET} and execute
3681 @code{undo} there.
3682 @item
3683 Recalculating a table line applies the formulas from left to right.
3684 If a formula uses @emph{calculated} fields further down the row,
3685 multiple recalculation may be needed to get all fields consistent.
3686 @item
3687 Under XEmacs, if Org-mode entries are included into the diary, it is
3688 not possible to jump back from the diary to the org file.  Apparently,
3689 the text properties are lost when the fancy-diary-display is used.
3690 However, from Org-mode's timeline and agenda buffers (created with
3691 @kbd{C-c C-r} and @kbd{C-c a}), things do work correctly.
3692 @item
3693 You can only make a single word boldface or italic.  To emphasize
3694 several words in a row, each must have the emphasize markers, like in
3695 @samp{*three* *bold* *words*}.
3696 @item
3697 The exporters work well, but could be made more efficient.
3698 @end itemize
3700 @node Acknowledgments,  , Bugs, Miscellaneous
3701 @section Acknowledgments
3702 @cindex acknowledgments
3703 @cindex thanks
3705 Org-mode was written by Carsten Dominik, who still maintains it at the
3706 Org-mode homepage @uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
3707 The following people (in alphabetic order) have helped the development
3708 along with ideas, suggestions and patches.  Many thanks to all of you,
3709 Org-mode would not be what it is without your input.
3711 @itemize @bullet
3712 @item
3713 Thomas Baumann contributed the code for links to the MH-E email system.
3714 @item
3715 Alex Bochannek provided a patch for rounding time stamps.
3716 @item
3717 Charles Caves' suggestion sparked the implementation of templates for
3718 Remember.
3719 @item
3720 Pavel Chalmoviansky influenced the agenda treatment of items with
3721 specified time.
3722 @item
3723 Sacha Chua suggested to copy some linking code from Planner.
3724 @item
3725 Christian Egli converted the documentation into TeXInfo format, patched
3726 CSS formatting into the HTML exporter, and inspired the agenda.
3727 @item
3728 Nic Ferrier contributed mailcap and XML support.
3729 @item
3730 Kai Grossjohann pointed out key-binding conflicts caused by Org-mode.
3731 @item
3732 Stefan Monnier provided a patch to keep the Emacs-Lisp compiler happy.
3733 @item
3734 Tim O'Callaghan suggested in-file links, search options for
3735 general file links, and TAGS.
3736 @item
3737 Oliver Oppitz suggested multi-state TODO items.
3738 @item
3739 Scott Otterson sparked the introduction of descriptive text for links,
3740 among other things.
3741 @item
3742 Pete Phillips helped the development of the TAGS feature.
3743 @item
3744 Matthias Rempe (Oelde) provided ideas, Windows support, and quality
3745 control.
3746 @item
3747 Kevin Rogers contributed code to access VM files on remote hosts.
3748 @item
3749 Philip Rooke created the Org-mode reference card and provided lots of feedback.
3750 @item
3751 Christian Schlauer proposed angular brackets around links, among other
3752 things.
3753 @item
3754 Linking to VM/BBDB/GNUS was inspired by Tom Shannon's
3755 @file{organizer-mode.el}.
3756 @item
3757 J@"urgen Vollmer contributed code generating the table of contents
3758 in HTML output.
3759 @item
3760 Chris Wallace provided a patch implementing the @samp{QUOTE} keyword.
3761 @item
3762 David Wainberg suggested archiving, and improvements to the linking
3763 system.
3764 @item
3765 John Wiegley wrote @file{emacs-wiki.el} and @file{planner.el}.  The
3766 development of Org-mode was fully independent, and both systems are
3767 really different beasts in their basic ideas and implementation details.
3768 However, I have later looked at John's code and learned from his
3769 implementation of (i) links where the link itself is hidden and only a
3770 description is shown, and (ii) popping up a calendar to select a date.
3771 @item
3772 Carsten Wimmer suggested some changes and helped fix a bug in linking
3773 to GNUS.
3774 @item
3775 Roland Winkler requested additional keybindings to make Org-mode
3776 work on a tty.
3777 @item
3778 Piotr Zielinski wrote @file{org-mouse.el} and showed how to follow links
3779 with mouse-1.
3780 @end itemize
3782 @node Index, Key Index, Miscellaneous, Top
3783 @chapter Index
3785 @printindex cp
3787 @node Key Index,  , Index, Top
3788 @chapter Key Index
3790 @printindex ky
3792 @bye
3794 @ignore
3795    arch-tag: 7893d1fe-cc57-4d13-b5e5-f494a1bcc7ac
3796 @end ignore