Fix ediff problems. (Reported by Dan Nicolaescu.)
[emacs.git] / man / org.texi
blob29436365feb97b5a746e43bcc0bdf8eebec91e1b
1 \input texinfo
2 @c %**start of header
3 @c @setfilename org
4 @setfilename ../info/org
5 @settitle Org Mode Manual
7 @set VERSION 4.08
8 @set DATE March 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.  Need a difference between info and the rest.
26 @macro tsubheading{text}
27 @ifinfo
28 @subsubheading \text\
29 @end ifinfo
30 @ifnotinfo
31 @item @b{\text\}
32 @end ifnotinfo
33 @end macro
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 * Agenda Views::                Collecting information into views
85 * Exporting::                   Sharing and publishing of notes
86 * Miscellaneous::               All the rest which did not fit elsewhere
87 * Index::                       The fast road to specific information
88 * Key Index::                   Key bindings and where they are described
90 @detailmenu
91  --- The Detailed Node Listing ---
93 Introduction
95 * Summary::                     Brief summary of what Org-mode does
96 * Installation and Activation::  How to install Org-mode
97 * Feedback::                    Bug reports, ideas, patches etc.
99 Document Structure
101 * Outlines::                    Org-mode is based on outline-mode
102 * Headlines::                   How to typeset org-tree headlines
103 * Visibility cycling::          Show and hide, much simplified
104 * Motion::                      Jumping to other headlines
105 * Structure editing::           Changing sequence and level of headlines
106 * Archiving::                   Move done task trees to a different place
107 * Sparse trees::                Matches embedded in context
108 * Tags::                        Tagging headlines and matching sets of tags
109 * Plain Lists::                 Editing hand-formatted lists
111 Tables
113 * Built-in table editor::       Simple tables
114 * Table calculations::          Compute a field from other fields
115 * orgtbl-mode::                 The table editor as minor mode
116 * table.el::                    Complex tables
118 Calculations in tables
120 * Formula syntax::              How to write a formula
121 * Column formulas::             Formulas valid for all fields in a column
122 * Advanced features::           Field names, parameters and automatic recalc
123 * Named-field formulas::        Formulas valid in single fields
124 * Editing/debugging formulas::  Changing a stored formula
125 * Appetizer::                   Taste the power of calc
127 Hyperlinks
129 * Internal Links::              Links to other places in the current file
130 * External Links::              URL-like links to the world
131 * Managing links::              Creating, inserting and following
132 * Search Options::              Linking to a specific location
133 * Remember::                    Org-trees store quick notes
135 Internal Links
137 * Radio targets::               Make targets trigger links in plain text.
138 * CamelCase links::             Activating CamelCase words as links
140 TODO items
142 * TODO basics::                 Marking and displaying TODO entries
143 * Progress Logging::            Document your productivity
144 * TODO extensions::             Workflow and assignments
145 * Priorities::                  Some things are more important than others
147 Extended use of TODO keywords
149 * Workflow states::             From TODO to DONE in steps
150 * TODO types::                  I do this, Fred the rest
151 * Per file keywords::           Different files, different requirements
153 Timestamps
155 * Time stamps::                 Assigning a time to a tree entry
156 * Creating timestamps::         Commands which insert timestamps
158 Agenda Views
160 * Agenda files::                Files being searched for agenda information
161 * Agenda dispatcher::           Keyboard access to agenda views
162 * Weekly/Daily Agenda::         The calendar page with current tasks
163 * Global TODO list::            All unfinished action items
164 * Matching headline tags::      Structured information with fine-tuned search
165 * Timeline::                    Time-sorted view for single file
166 * Agenda commands::             Remote editing of org trees
168 The weekly/daily agenda
170 * Categories::                  Not all tasks are equal
171 * Time-of-day specifications::  How the agenda knows the time
172 * Calendar/Diary integration::  Integrating Anniversaries and more
173 * Sorting of agenda items::     The order of things
175 Exporting
177 * ASCII export::                Export as a structured ASCII file
178 * HTML export::                 Export as an HTML file
179 * iCalendar export::            Create calendar entries.
181 HTML export
183 * HTML formatting::             Interpretation of the buffer content
184 * Export options::              How to influence exports
185 * Comment lines::               Lines which will not be exported
187 Miscellaneous
189 * Completion::                  M-TAB knows what you need
190 * Customization::               Adapting Org-mode to your taste
191 * Clean view::                  Getting rid of leading stars in the outline
192 * TTY keys::                    Using Org-mode on a tty
193 * FAQ::                         Frequently asked questions
194 * Interaction::                 Other Emacs packages
195 * Bugs::                        Things which do not work perfectly
196 * Acknowledgments::             These people provided feedback and more
198 @end detailmenu
199 @end menu
201 @node Introduction, Document Structure, Top, Top
202 @chapter Introduction
203 @cindex introduction
205 @menu
206 * Summary::                     Brief summary of what Org-mode does
207 * Installation and Activation::  How to install Org-mode
208 * Feedback::                    Bug reports, ideas, patches etc.
209 @end menu
211 @node Summary, Installation and Activation, Introduction, Introduction
212 @section Summary
213 @cindex summary
215 Org-mode is a mode for keeping notes, maintaining ToDo lists, and doing
216 project planning with a fast and effective plain-text system.
218 Org-mode develops organizational tasks around NOTES files that contain
219 information about projects as plain text.  Org-mode is implemented on
220 top of outline-mode, which makes it possible to keep the content of
221 large files well structured.  Visibility cycling and structure editing
222 help to work with the tree.  Tables are easily created with a built-in
223 table editor.  Org-mode supports ToDo items, deadlines, time stamps,
224 and scheduling.  It dynamically compiles entries into an agenda that
225 utilizes and smoothly integrates much of the Emacs calendar and diary.
226 Plain text URL-like links connect to websites, emails, Usenet
227 messages, BBDB entries, and any files related to the projects.  For
228 printing and sharing of notes, an Org-mode file can be exported as a
229 structured ASCII file, as HTML, or (todo and agenda items only) as an
230 iCalendar file.
232 Org-mode keeps simple things simple.  When first fired up, it should
233 feel like a simple but easy to use outliner.  Complexity is not
234 imposed, but a large amount of functionality is available when you
235 need it.  Org-mode can be used on different levels and in different
236 ways, for example
238 @example
239 @r{@bullet{} as an outline extension with visibility cycling and structure editing}
240 @r{@bullet{} as an ASCII system and table editor for taking structured notes}
241 @r{@bullet{} as an ASCII table editor with spreadsheet-like capabilities}
242 @r{@bullet{} as a simple hypertext system, with HTML export}
243 @r{@bullet{} as a TODO list editor}
244 @r{@bullet{} as a full agenda and planner with deadlines and work scheduling}
245 @end example
247 The Org-mode table editor can be integrated into any major mode by
248 activating the minor Orgtbl-mode.
250 There is a website for Org-mode which provides links to the newest
251 version of Org-mode, as well as additional information, screen shots
252 and example files.  This page is located at
253 @uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
255 @page
257 @node Installation and Activation, Feedback, Summary, Introduction
258 @section Installation and Activation
259 @cindex installation
260 @cindex autoload
261 @cindex global keybindings
262 @cindex keybindings, global
264 If Org-mode is part of the Emacs distribution or an XEmacs package,
265 you only need to copy the following lines to your @file{.emacs} file.
266 The last two lines define @emph{global} keys for the commands
267 @command{org-store-link} and @command{org-agenda} - please
268 choose suitable keys yourself.
270 @lisp
271 ;; The following lines are always needed.  Choose your own keys.
272 (add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
273 (define-key global-map "\C-cl" 'org-store-link)
274 (define-key global-map "\C-ca" 'org-agenda)
275 @end lisp
277 If you have downloaded Org-mode from the Web, you must byte-compile
278 @file{org.el} and put it on your load path.  In addition to the Emacs
279 Lisp lines above, you also need to add the following lines to
280 @file{.emacs}:
282 @lisp
283 ;; These lines only if org-mode is not part of the X/Emacs distribution.
284 (autoload 'org-mode "org" "Org mode" t)
285 (autoload 'org-diary "org" "Diary entries from Org mode")
286 (autoload 'org-agenda "org" "Multi-file agenda from Org mode" t)
287 (autoload 'org-store-link "org" "Store a link to the current location" t)
288 (autoload 'orgtbl-mode "org" "Org tables as a minor mode" t)
289 (autoload 'turn-on-orgtbl "org" "Org tables as a minor mode")
290 @end lisp
292 @cindex org-mode, turning on
293 With this setup, all files with extension @samp{.org} will be put into
294 Org-mode.  As an alternative, make the first line of a file look like
295 this:
297 @example
298 MY PROJECTS    -*- mode: org; -*-
299 @end example
301 @noindent which will select Org-mode for this buffer no matter what
302 the file's name is.  See also the variable
303 @code{org-insert-mode-line-in-empty-file'}.
305 @node Feedback,  , Installation and Activation, Introduction
306 @section Feedback
307 @cindex feedback
308 @cindex bug reports
309 @cindex maintainer
310 @cindex author
312 If you find problems with Org-mode, or if you have questions, remarks,
313 or ideas about it, please contact the maintainer Carsten Dominik at
314 @value{MAINTAINEREMAIL}.
316 For bug reports, please provide as much information as possible,
317 including the version information of Emacs (@kbd{C-h v emacs-version
318 @key{RET}}) and Org-mode (@kbd{M-x org-version}), as well as the
319 Org-mode related setup in @file{.emacs}.  If an error occurs, a
320 traceback can be very useful.  Often a small example file helps, along
321 with clear information about:
322 @enumerate
323 @item What exactly did you do?
324 @item What did you expect to happen?
325 @item What happened instead?
326 @end enumerate
327 @noindent Thanks for helping to improve this mode.
329 @node Document Structure, Tables, Introduction, Top
330 @chapter Document Structure
331 @cindex document structure
332 @cindex structure of document
334 Org-mode is based on outline mode and provides flexible commands to
335 edit the structure of the document.
337 @menu
338 * Outlines::                    Org-mode is based on outline-mode
339 * Headlines::                   How to typeset org-tree headlines
340 * Visibility cycling::          Show and hide, much simplified
341 * Motion::                      Jumping to other headlines
342 * Structure editing::           Changing sequence and level of headlines
343 * Archiving::                   Move done task trees to a different place
344 * Sparse trees::                Matches embedded in context
345 * Tags::                        Tagging headlines and matching sets of tags
346 * Plain Lists::                 Editing hand-formatted lists
347 @end menu
349 @node Outlines, Headlines, Document Structure, Document Structure
350 @section Outlines
351 @cindex outlines
352 @cindex outline-mode
354 Org-mode is implemented on top of outline-mode.  Outlines allow to
355 organize a document in a hierarchical structure, which (at least for
356 me) is the best representation of notes and thoughts.  Overview over
357 this structure is achieved by folding (hiding) large parts of the
358 document to show only the general document structure and the parts
359 currently being worked on.  Org-mode greatly simplifies the use of
360 outlines by compressing the entire show/hide functionality into a
361 single command @command{org-cycle}, which is bound to the @key{TAB}
362 key.
364 @node Headlines, Visibility cycling, Outlines, Document Structure
365 @section Headlines
366 @cindex headlines
367 @cindex outline tree
369 Headlines define the structure of an outline tree.  The Headlines in
370 Org-mode start with one or more stars, on the left margin.  For
371 example
373 @example
374 * Top level headline
375 ** Second level
376 *** 3rd level
377     some text
378 *** 3rd level
379     more text
380 * Another top level headline
381 @end example
382 @noindent Some people find the many stars too noisy and would prefer an
383 outline that has whitespace followed by a single star as headline
384 starters.  @ref{Clean view} describes a setup to realize this.
386 @node Visibility cycling, Motion, Headlines, Document Structure
387 @section Visibility cycling
388 @cindex cycling, visibility
389 @cindex visibility cycling
390 @cindex trees, visibility
391 @cindex show hidden text
392 @cindex hide text
394 Outlines make it possible to hide parts of the text in the buffer.
395 Org-mode uses a single command bound to the @key{TAB} key to change
396 the visibility in the buffer.
398 @cindex subtree visibility states
399 @cindex folded, subtree visibility state
400 @cindex children, subtree visibility state
401 @cindex subtree, subtree visibility state
402 @table @kbd
403 @kindex @key{TAB}
404 @item @key{TAB}
405 Rotate current subtree between the states
406 @example
407 ,-> FOLDED -> CHILDREN -> SUBTREE --.
408 '-----------------------------------'
409 @end example
410 At the beginning of the buffer (or when called with @kbd{C-u}), this does
411 the same as the command @kbd{S-@key{TAB}} below.
413 @cindex global visibility states
414 @cindex overview, global visibility state
415 @cindex contents, global visibility state
416 @cindex show all, global visibility state
417 @kindex S-@key{TAB}
418 @item S-@key{TAB}
419 Rotate the entire buffer between the states
420 @example
421 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
422 '--------------------------------------'
423 @end example
424 Note that inside tables, @kbd{S-@key{TAB}} jumps to the previous field.
426 @cindex show all, command
427 @kindex C-c C-a
428 @item C-c C-a
429 Show all.
430 @end table
432 When Emacs first visits an Org-mode file, the global state is set to
433 OVERVIEW, i.e. only the top level headlines are visible.  This can be
434 configured through the variable @code{org-startup-folded}, or on a
435 per-file basis by adding one of the following lines anywhere in the
436 buffer:
438 @example
439 #+STARTUP: fold
440 #+STARTUP: nofold
441 #+STARTUP: content
442 @end example
444 @node Motion, Structure editing, Visibility cycling, Document Structure
445 @section Motion
446 @cindex motion, between headlines
447 @cindex jumping, to headlines
448 @cindex headline navigation
449 The following commands jump to other headlines in the buffer.
451 @table @kbd
452 @kindex C-c C-n
453 @item C-c C-n
454 Next heading.
455 @kindex C-c C-p
456 @item C-c C-p
457 Previous heading.
458 @kindex C-c C-f
459 @item C-c C-f
460 Next heading same level.
461 @kindex C-c C-b
462 @item C-c C-b
463 Previous heading same level.
464 @kindex C-c C-u
465 @item C-c C-u
466 Backward to higher level heading.
467 @kindex C-c C-j
468 @item C-c C-j
469 Jump to a different place without changing the current outline
470 visibility.  Shows the document structure in a temporary buffer, where
471 you can use visibility cycling (@key{TAB}) to find your destination.
472 After pressing @key{RET}, the cursor moves to the selected location in
473 the original buffer, and the headings hierarchy above it is made
474 visible.
475 @end table
477 @node Structure editing, Archiving, Motion, Document Structure
478 @section Structure editing
479 @cindex structure editing
480 @cindex headline, promotion and demotion
481 @cindex promotion, of subtrees
482 @cindex demotion, of subtrees
483 @cindex subtree, cut and paste
484 @cindex pasting, of subtrees
485 @cindex cutting, of subtrees
486 @cindex copying, of subtrees
487 @cindex subtrees, cut and paste
489 @table @kbd
490 @kindex M-@key{RET}
491 @item M-@key{RET}
492 Insert new heading with same level as current.  If the cursor is in a
493 plain list item, a new item is created.  To force creation of a new
494 headline, use a prefix arg, or first press @key{RET} to get to the
495 beginning of the next line.
496 @kindex M-S-@key{RET}
497 @item M-S-@key{RET}
498 Insert new TODO entry with same level as current heading.
499 @kindex M-@key{left}
500 @item M-@key{left}
501 Promote current heading by one level
502 @kindex M-@key{right}
503 @item M-@key{right}
504 Demote current heading by one level
505 @kindex M-S-@key{left}
506 @item M-S-@key{left}
507 Promote the current subtree by one level
508 @kindex M-S-@key{right}
509 @item M-S-@key{right}
510 Demote the current subtree by one level
511 @kindex M-S-@key{up}
512 @item M-S-@key{up}
513 Move subtree up (swap with previous subtree of same
514 level)
515 @kindex M-S-@key{down}
516 @item M-S-@key{down}
517 Move subtree down (swap with next subtree of same level)
518 @kindex C-c C-x C-w
519 @kindex C-c C-x C-k
520 @item C-c C-x C-w
521 @itemx C-c C-x C-k
522 Kill subtree, i.e. remove it from buffer but save in kill ring.
523 @kindex C-c C-x M-w
524 @item C-c C-x M-w
525 Copy subtree to kill ring.
526 @kindex C-c C-x C-y
527 @item C-c C-x C-y
528 Yank subtree from kill ring.  This does modify the level of the subtree to
529 make sure the tree fits in nicely at the yank position.  The yank
530 level can also be specified with a prefix arg, or by yanking after a
531 headline marker like @samp{****}.
532 @end table
534 @cindex region, active
535 @cindex active region
536 @cindex transient-mark-mode
537 When there is an active region (transient-mark-mode), promotion and
538 demotion work on all headlines in the region.  To select a region of
539 headlines, it is best to place both point and mark at the beginning of a
540 line, mark at the beginning of the first headline, and point at the line
541 just after the last headline to change.  Note that when the cursor is
542 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
543 functionality.
545 @node Archiving, Sparse trees, Structure editing, Document Structure
546 @section Archiving
547 @cindex archiving
548 @cindex filing subtrees
550 When a project represented by a (sub)tree is finished, you may want
551 to move the tree to an archive place, either in the same file under a
552 special top-level heading, or even to a different file.
553 @table @kbd
554 @kindex C-c $
555 @item @kbd{C-c $}
556 Archive the subtree starting at the cursor position to the location
557 given by @code{org-archive-location}.
558 @end table
560 @cindex archive locations
561 The default archive is a file in the same directory as the current
562 file, with the name derived by appending @file{_archive} to the
563 current file name.  For information and examples on how to change
564 this, see the documentation string of the variable
565 @code{org-archive-location}.  If you are also using the Org-mode
566 agenda, archiving to a different file is a good way to keep archived
567 trees from contributing agenda items.
569 @node Sparse trees, Tags, Archiving, Document Structure
570 @section Sparse trees
571 @cindex sparse trees
572 @cindex trees, sparse
573 @cindex folding, sparse trees
574 @cindex occur, command
576 An important feature of Org-mode is the ability to construct
577 @emph{sparse trees} for selected information in an outline tree.  A
578 sparse tree means that the entire document is folded as much as
579 possible, but the selected information is made visible along with the
580 headline structure above it@footnote{See also the variables
581 @code{org-show-hierarchy-above} and
582 @code{org-show-following-heading}.}.  Just try it out and you will see
583 immediately how it works.
585 Org-mode contains several commands creating such trees.  The most
586 basic one is @command{org-occur}:
588 @table @kbd
589 @kindex C-c /
590 @item C-c /
591 Occur.  Prompts for a regexp and shows a sparse tree with all matches.
592 If the match is in a headline, the headline is made visible.  If the
593 match is in the body of an entry, headline and body are made visible.
594 In order to provide minimal context, also the full hierarchy of
595 headlines above the match is shown, as well as the headline following
596 the match.  Each match is also highlighted, the highlights disappear
597 when the buffer is changed with an editing command.
598 @end table
599 @noindent
600 For frequently used sparse trees of specific search strings, you can
601 use the variable @code{org-agenda-custom-commands} to define fast
602 keyboard access to specific sparse trees.  These commands will then be
603 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
604 For example
605 @lisp
606 (setq org-agenda-custom-commands
607       '(("f" occur-tree "FIXME")))
608 @end lisp
609 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
610 a sparse tree matching the string @samp{FIXME}.
612 Other commands are using sparse trees as well.  For example @kbd{C-c
613 C-v} creates a sparse TODO tree (@pxref{TODO basics}).
615 @kindex C-c C-x v
616 @cindex printing sparse trees
617 @cindex visible text, printing
618 To print a sparse tree, you can use the Emacs command
619 @code{ps-print-buffer-with-faces} which does not print invisible parts
620 of the document @footnote{This does not work under XEmacs, because
621 XEmacs uses selective display for outlining, not text properties}.
622 Or you can use the command @kbd{C-c C-x v} to copy the visible part of
623 the document to another file (extension @file{.txt}) which then can be
624 printed in any desired way.
626 @node Tags, Plain Lists, Sparse trees, Document Structure
627 @section Tags
628 @cindex tags
629 @cindex headline tagging
630 @cindex matching, tags
631 @cindex sparse tree, tag based
633 If you wish to implement a tag system to cross-correlate information,
634 this can be done as well in Org-mode.  Every headline can contain a
635 list of tags, at the end of the headline.  Tags are normal words
636 containing letters, numbers, @samp{_}, and @samp{@@}.  Tags must be
637 preceded and followed by a single colon; like @samp{:WORK:}.  Several
638 tags can be specified like @samp{:WORK:URGENT:}.
640 @cindex inheritance, of tags
641 Tags make use of the hierarchical structure of outline trees.  If a
642 heading has a certain tag, all subheadings will inherit the tag as
643 well.  For example, in the list
645 @example
646 * Meeting with the French group      :WORK:
647 ** Summary by Frank                  :BOSS:NOTES:
648 *** TODO Prepare slides for him      :ACTION:
649 @end example
650 @noindent
651 the final heading will have the tags @samp{:WORK:}, @samp{:BOSS:},
652 @samp{:NOTES:}, and @samp{:ACTION:}.  When executing tag searches and
653 Org-mode finds that a certain headline matches the search criterion,
654 it will not check any sublevel headline, assuming that these likely
655 also match, and that the list of matches can become very long.  You
656 can influence inheritance and searching using the variables
657 @code{org-use-tag-inheritance} and
658 @code{org-tags-match-list-sublevels}.
660 @kindex M-@key{TAB}
661 Tags can simply be typed into the buffer.  After a colon,
662 @kbd{M-@key{TAB}} offers completion on all tags being used in the
663 current buffer.  There are also special commands for inserting tags,
664 and for executing searches based on tags.
666 @table @kbd
667 @kindex C-c C-c
668 @item C-c C-c
669 @cindex completion, of tags
670 Enter new tags for the current headline.  The minibuffer will prompt
671 for a list of tags and offer completion with respect to all other tags
672 used in the current buffer.  Several tags, separated by colons, may be
673 specified at the prompt.  After pressing @key{RET}, the tags will
674 be inserted and aligned to @code{org-tags-column}.  When called with a
675 @kbd{C-u} prefix, align all tags in the current buffer to that column,
676 just to make things look nice.  TAGS are automatically realigned after
677 promotion, demotion, and TODO state changes (@pxref{TODO basics}).
678 @kindex C-c \
679 @item C-c \
680 Create a sparse tree with all headlines matching a tags search.
681 @kindex C-c a m
682 @item C-c a m
683 Create a global list of tag matches from all agenda files.
684 @xref{Matching headline tags}.
685 @kindex C-c a M
686 @item C-c a M
687 Create a global list of tag matches from all agenda files, but check
688 only TODO items and force checking subitems (see variable
689 @code{org-tags-match-list-sublevels}).
690 @end table
692 A tags search string can use Boolean operators @samp{&} for AND and
693 @samp{|} for OR.  @samp{&} binds more strongly than
694 @samp{|}. Parenthesis are currently no implemented.  A tag may also be
695 preceded by @samp{-}, to select against it, and @samp{+} is syntactic
696 sugar for positive selection.  The AND operator @samp{&} is optional
697 when @samp{+} or @samp{-} is present.  For example, @samp{+WORK-BOSS}
698 would select all headlines that are tagged @samp{:WORK:}, but discard
699 those also tagged @samp{:BOSS:}.  The search string @samp{WORK|LAPTOP}
700 selects all lines tagged @samp{:WORK:} or @samp{:LAPTOP:}. The string
701 @samp{WORK|LAPTOP&NIGHT} requires that the @samp{:LAPTOP:} lines are
702 also tagged @samp{NIGHT}.
704 @node Plain Lists,  , Tags, Document Structure
705 @section Plain Lists
706 @cindex plain lists
707 @cindex lists, plain
708 @cindex lists, ordered
709 @cindex ordered lists
711 Headlines define the structure of the Org-mode file, and also lists
712 (for example TODO items (@pxref{TODO items}) should be created using
713 headline levels.  However, when taking notes, the plain text is
714 sometimes easier to read with hand-formatted lists.  Org-mode supports
715 editing such lists, and the HTML exporter (@pxref{Exporting}) does
716 parse and format them.
718 Org-mode knows ordered and unordered lists.  Unordered list items start
719 with @samp{-}, @samp{+}, or @samp{*}@footnote{When using @samp{*} as a
720 bullet, lines must be indented or they will be seen as top-level
721 headlines.  Also, when you are hiding leading stars to get a clean
722 outline view, plain list items starting with a star are visually
723 indistinguishable from true headlines.  In short: Even though @samp{*}
724 is supported, it may be better to not use it for plain list items} as
725 bullets.  Ordered list items start with @samp{1.} or @samp{1)}.  Items
726 belonging to the same list must have the same indentation on the first
727 line.  In particular, if an ordered list reaches number @samp{10.}, also
728 the 2--digit numbers must be written left-aligned with the other numbers
729 in the list.  Indentation also determines the end of a list item.  It
730 ends before the next line that is indented like the bullet/number, or
731 less.  For example:
733 @example
734 ** Lord of the Rings
735 My favorite scenes are (in this order)
736 1. Eowyns fight with the witch king
737    + this was already my favorite scene in the book
738    + I really like Miranda Otto.
739 2. The attack of the Rohirrim
740 3. Peter Jackson being shot by Legolas
741     - on DVD only
742    He makes a really funny face when it happens.
743 @end example
745 Org-mode supports these lists by tuning filling and wrapping commands
746 to correctly deal with them.  Furthermore, the following commands act
747 on items when the cursor is in the first line of an item (the line
748 with the bullet or number).
750 @table @kbd
751 @kindex @key{TAB}
752 @item @key{TAB}
753 Items can be folded just like headline levels if you set the variable
754 @code{org-cycle-include-plain-lists}.  The level of an item is then
755 given by the indentation of the bullet/number.  However, items are
756 always subordinate to real headlines, the hierarchies remain
757 completely separated.
758 @kindex M-@key{RET}
759 @item M-@key{RET}
760 Insert new item at current level.  With prefix arg, for a new heading.
761 @kindex M-S-@key{up}
762 @kindex M-S-@key{down}
763 @item M-S-@key{up}
764 @itemx M-S-@key{down}
765 Move the item including subitems up/down (swap with previous/next item
766 of same indentation).  If the list is ordered, renumbering is
767 automatic.
768 @kindex M-S-@key{left}
769 @kindex M-S-@key{right}
770 @item M-S-@key{left}
771 @itemx M-S-@key{right}
772 Decrease/increase the indentation of the item, including subitems.
773 Initially, the item tree is selected based on current indentation.
774 When these commands are executed several times in direct succession,
775 the initially selected region is used, even if the new indentation
776 would imply a different hierarchy.  To use the new hierarchy, break
777 the command chain with a cursor motion or so.
778 @kindex C-c C-c
779 @item C-c C-c
780 Renumber the ordered list at the cursor.
781 @end table
783 @node Tables, Hyperlinks, Document Structure, Top
784 @chapter Tables
785 @cindex tables
786 @cindex editing tables
788 Org-mode has a very fast and intuitive table editor built-in.
789 Spreadsheet-like calculations are supported in connection with the
790 Emacs @file{calc} package.
792 @menu
793 * Built-in table editor::       Simple tables
794 * Table calculations::          Compute a field from other fields
795 * orgtbl-mode::                 The table editor as minor mode
796 * table.el::                    Complex tables
797 @end menu
799 @node Built-in table editor, Table calculations, Tables, Tables
800 @section The built-in table editor
801 @cindex table editor, builtin
803 Org-mode makes it easy to format tables in plain ASCII.  Any line with
804 @samp{|} as the first non-white character is considered part of a
805 table.  @samp{|} is also the column separator.  A table might look
806 like this:
808 @example
809 | Name  | Phone | Age |
810 |-------+-------+-----|
811 | Peter |  1234 |  17 |
812 | Anna  |  4321 |  25 |
813 @end example
815 A table is re-aligned automatically each time you press @key{TAB} or
816 @key{RET} or @kbd{C-c C-c} inside the table.  @key{TAB} also moves to
817 the next field (@key{RET} to the next row) and creates new table rows
818 at the end of the table or before horizontal lines.  The indentation
819 of the table is set by the first line.  Any line starting with
820 @samp{|-} is considered as a horizontal separator line and will be
821 expanded on the next re-align to span the whole table width.  So, to
822 create the above table, you would only type
824 @example
825 |Name|Phone|Age
827 @end example
828 @noindent and then press @key{TAB} to align the table and start filling in
829 fields.
831 When typing text into a field, Org-mode treats @key{DEL},
832 @key{Backspace}, and all character keys in a special way, so that
833 inserting and deleting avoids shifting other fields.  Also, when
834 typing @emph{immediately after the cursor was moved into a new field
835 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
836 field is automatically made blank.  If this behavior is too
837 unpredictable for you, configure the variables
838 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
840 @table @kbd
841 @tsubheading{Creation and conversion}
842 @item M-x org-table-create
843 Creates an empty Org-mode table.  However, it is much easier to just
844 start typing, like @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}
846 @kindex C-c C-c
847 @item C-c C-c
848 Convert region to table.  Works when the cursor is not in an existing
849 table, and when there is a region defined.  If every line contains at
850 least one TAB character, the function assumes that the material is tab
851 separated.  If not, lines are split at whitespace into fields.  You
852 can use a prefix argument to indicate how many consecutive spaces are
853 at least required to indicate a field separator (default: just one).
855 @tsubheading{Re-aligning and field motion}
856 @kindex C-c C-c
857 @item C-c C-c
858 Re-align the table without moving the cursor.
860 @kindex @key{TAB}
861 @item @key{TAB}
862 Re-align the table, move to the next field.  Creates a new row if
863 necessary.
865 @kindex S-@key{TAB}
866 @item S-@key{TAB}
867 Re-align, move to previous field.
869 @kindex @key{RET}
870 @item @key{RET}
871 Re-align the table and move down to next row.  Creates a new row if
872 necessary.  At the beginning or end of a line, @key{RET} still does
873 NEWLINE, so it can be used to split a table.
875 @tsubheading{Column and row editing}
876 @kindex M-@key{left}
877 @kindex M-@key{right}
878 @item M-@key{left}
879 @itemx M-@key{right}
880 Move the current column left/right
882 @kindex M-S-@key{left}
883 @item M-S-@key{left}
884 Kill the current column.
886 @kindex M-S-@key{right}
887 @item M-S-@key{right}
888 Insert a new column to the left of the cursor position.
890 @kindex M-@key{up}
891 @kindex M-@key{down}
892 @item M-@key{up}
893 @itemx M-@key{down}
894 Move the current row up/down
896 @kindex M-S-@key{up}
897 @item M-S-@key{up}
898 Kill the current row or horizontal line.
900 @kindex M-S-@key{down}
901 @item M-S-@key{down}
902 Insert a new row above (with arg: below) the current row.
904 @kindex C-c -
905 @item C-c -
906 Insert a horizontal line below current row. With prefix arg, the line
907 is created above the current line.
909 @kindex C-c ^
910 @item C-c ^
911 Sort the table lines in the region.  Point and mark must be in the first
912 and last line to be included, and must be in the column that should be
913 used for sorting.  The command prompts for numerical versus
914 alphanumerical sorting.
916 @tsubheading{Regions}
917 @kindex C-c C-x M-w
918 @item C-c C-x M-w
919 Copy a rectangular region from a table to a special clipboard.  Point
920 and mark determine edge fields of the rectangle.  The process ignores
921 horizontal separator lines.
922 @kindex C-c C-x C-w
923 @item C-c C-x C-w
924 Copy a rectangular region from a table to a special clipboard, and
925 blank all fields in the rectangle.  So this is the ``cut'' operation.
926 @kindex C-c C-x C-y
927 @item C-c C-x C-y
928 Paste a rectangular region into a table.
929 The upper right corner ends up in the current field.  All involved fields
930 will be overwritten.  If the rectangle does not fit into the present table,
931 the table is enlarged as needed.  The process ignores horizontal separator
932 lines.
933 @kindex C-c C-q
934 @item C-c C-q
935 Wrap several fields in a column like a paragraph.  If there is an active
936 region, and both point and mark are in the same column, the text in the
937 column is wrapped to minimum width for the given number of lines.  A
938 prefix ARG may be used to change the number of desired lines.  If there
939 is no region, the current field is split at the cursor position and the
940 text fragment to the right of the cursor is prepended to the field one
941 line down. If there is no region, but you specify a prefix ARG, the
942 current field gets blank, and the content is appended to the field
943 above.
945 @tsubheading{Calculations}
946 @cindex formula, in tables
947 @cindex calculations, in tables
948 @kindex C-c =
949 @item C-c =
950 Install a new formula for the current column and replace current field
951 with the result of the formula.
953 @kindex C-u C-c =
954 @item C-u C-c =
955 Install a new formula for the current field, which must be a named
956 field.  Evaluate the formula and replace the field content with the
957 result.
959 @kindex C-c '
960 @item C-c '
961 Edit all formulas associated with the current table in a separate
962 buffer.
964 @kindex C-c *
965 @item C-c *
966 Recalculate the current row by applying the stored formulas from left
967 to right.  When called with a @kbd{C-u} prefix, recalculate the
968 entire table, starting with the first non-header line (i.e. below the
969 first horizontal separator line).  For details, see @ref{Table calculations}.
971 @kindex C-#
972 @item C-#
973 Rotate the calculation mark in first column through the states
974 @samp{}, @samp{#}, @samp{*}, @samp{!}, @samp{$}.  For the meaning of
975 these marks see @ref{Advanced features}.  When there is an active
976 region, change all marks in the region.
978 @kindex C-c ?
979 @item C-c ?
980 Which table column is the cursor in?  Displays number >0 in echo
981 area.
983 @cindex region, active
984 @cindex active region
985 @cindex transient-mark-mode
986 @kindex C-c +
987 @item C-c +
988 Sum the numbers in the current column, or in the rectangle defined by
989 the active region.  The result is shown in the echo area and can
990 be inserted with @kbd{C-y}.
992 @kindex S-@key{RET}
993 @item S-@key{RET}
994 When current field is empty, copy from first non-empty field above.
995 When not empty, copy current field down to next row and move cursor
996 along with it.  Depending on the variable
997 @code{org-table-copy-increment}, integer field values will be
998 incremented during copy.  This key is also used by CUA-mode
999 (@pxref{Interaction}).
1001 @tsubheading{Miscellaneous}
1002 @kindex C-c |
1003 @item C-c |
1004 Toggle the visibility of vertical lines in tables.  The lines are
1005 still there, only made invisible with a text property.  Any @samp{|}
1006 added by hand will become invisible on the next align.
1008 @item M-x org-table-import
1009 Import a file as a table.  The table should be TAB- or whitespace
1010 separated.  Useful for example to import an Excel table or data from a
1011 database, because these programs generally can write TAB-separated text
1012 files.  This command works by inserting the file into the buffer and
1013 then converting the region to a table.  Any prefix argument is passed on
1014 to the converter, which uses it to determine the separator.
1016 @item M-x org-table-export
1017 Export the table as a TAB-separated file.  Useful for data exchange with
1018 for example Excel or database programs.
1020 @end table
1022 If you don't like the automatic table editor because it gets into your
1023 way in lines which you would like to start with @samp{|}, you can turn
1024 it off with
1025 @lisp
1026 (setq org-enable-table-editor nil)
1027 @end lisp
1028 @noindent The only table command which then still works is
1029 @kbd{C-c C-c} to do a manual re-align.
1031 @node Table calculations, orgtbl-mode, Built-in table editor, Tables
1032 @section Calculations in tables
1033 @cindex calculations, in tables
1034 @cindex spreadsheet capabilities
1035 @cindex @file{calc} package
1037 The table editor makes use of the Emacs @file{calc} package to
1038 implement spreadsheet-like capabilities.  Org-mode has two levels of
1039 complexity for table calculations.  On the basic level, tables do only
1040 horizontal computations, so a field can be computed from other fields
1041 @emph{in the same row}, and Org-mode assumes that there is only one
1042 formula for each column.  This is very efficient to work with and
1043 enough for many tasks.  On the complex level, columns and individual
1044 fields can be named for easier referencing in formulas, individual
1045 named fields can have their own formula associated with them, and
1046 recalculation can be automated.
1048 @menu
1049 * Formula syntax::              How to write a formula
1050 * Column formulas::             Formulas valid for all fields in a column
1051 * Advanced features::           Field names, parameters and automatic recalc
1052 * Named-field formulas::        Formulas valid in single fields
1053 * Editing/debugging formulas::  Changing a stored formula
1054 * Appetizer::                   Taste the power of calc
1055 @end menu
1057 @node Formula syntax, Column formulas, Table calculations, Table calculations
1058 @subsection Formula syntax
1059 @cindex formula syntax
1060 @cindex syntax, of formulas
1062 A formula can be any algebraic expression understood by the Emacs
1063 @file{calc} package.  Note that @file{calc} has the slightly
1064 non-standard conversion that @samp{/} has lower precedence than
1065 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.  Before
1066 evaluation by @code{calc-eval} (@pxref{Calling Calc from Your Lisp
1067 Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU Emacs
1068 Calc Manual}), variable substitution takes place:
1070 @example
1071   $        @r{refers to the current field}
1072   $3       @r{refers to the field in column 3 of the current row}
1073   $3..$7   @r{a vector of the fields in columns 3-7 of current row}
1074   $P1..$P3 @r{vector of column range, using column names}
1075   &2       @r{second data field above the current, in same column}
1076   &5-2     @r{vector from fifth to second field above current}
1077   &III-II  @r{vector of fields between 2nd and 3rd hline above}
1078   &III     @r{vector of fields between third hline above and current field}
1079   $name    @r{a named field, parameter or constant}
1080 @end example
1082 @cindex vectors, in table calculations
1083 The range vectors can be directly fed into the calc vector functions
1084 like @samp{vmean} and @samp{vsum}.
1086 @cindex name, of column or field
1087 @cindex constants, in calculations
1088 @samp{$name} is interpreted as the name of a column, parameter or
1089 constant.  Constants are defined globally through the variable
1090 @code{org-table-formula-constants}.  If you have the
1091 @file{constants.el} package, it will also be used to resolve
1092 constants, including natural constants like @samp{$h} for Planck's
1093 constant, units like @samp{$km} for kilometers.  Column names and
1094 parameters can be specified in special table lines.  These are
1095 described below, see @ref{Advanced features}.
1097 @cindex format specifier
1098 @cindex mode, for @file{calc}
1099 A formula can contain an optional mode string after a semicolon.  This
1100 string consists of flags to influence calc's modes@footnote{By
1101 default, Org-mode uses the standard calc modes (precision 12, angular
1102 units degrees, fraction and symbolic modes off).  However, the display
1103 format has been changed to @code{(float 5)} to keep tables compact.
1104 The default settings can be configured using the variable
1105 @code{org-calc-default-modes}.} during execution, e.g.  @samp{p20} to
1106 switch the internal precision to 20 digits, @samp{n3}, @samp{s3},
1107 @samp{e2} or @samp{f4} to switch to normal, scientific, engineering,
1108 or fix display format, respectively, and @samp{D}, @samp{R}, @samp{F},
1109 and @samp{S} to turn on degrees, radians, fraction and symbolic modes,
1110 respectively.  In addition, you may provide a @code{printf} format
1111 specifier to reformat the final result.  A few examples:
1112 @example
1113   $1+$2                @r{Sum of first and second field}
1114   $1+$2;%.2f           @r{Same, format result to two decimals}
1115   exp($2)+exp($1)      @r{Math functions can be used}
1116   $;%.1f               @r{Reformat current cell to 1 decimal}
1117   ($3-32)*5/9          @r{Degrees F -> C conversion}
1118   $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
1119   tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
1120   sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
1121   vmean($2..$7)        @r{Compute column range mean, using vector function}
1122   vsum(&III)           @r{Sum numbers from 3rd hline above to here}
1123   taylor($3,x=7,2)     @r{taylor series of $3, at x=7, second degree}
1124 @end example
1126 @node Column formulas, Advanced features, Formula syntax, Table calculations
1127 @subsection Column formulas
1128 @cindex column formula
1129 @cindex formula, for table column
1131 To apply a formula to a field, type it directly into the field,
1132 preceded by an equal sign, like @samp{=$1+$2}.  When you press
1133 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
1134 field, the formula will be stored as the formula for the current
1135 column, evaluated and the current field replaced with the result.  If
1136 the field contains only @samp{=}, the previously stored formula for
1137 this column is used.
1139 For each column, Org-mode will remember the most recently used
1140 formula.  The information is stored in a special line starting with
1141 @samp{#+TBLFM} directly below the table.  When adding/deleting/moving
1142 columns with the appropriate commands, the stored equations will be
1143 modified accordingly.  When a column used in a calculation is removed,
1144 references to this column become invalid and will cause an error upon
1145 applying the equation.
1147 Instead of typing an equation into the field, you may also use the
1148 command @kbd{C-c =}.  It prompts for a formula (with default taken
1149 from the @samp{#+TBLFM:} line) and applies it to the current field.  A
1150 numerical prefix (e.g. @kbd{C-5 C-c =}) will apply it to that many
1151 subsequent fields in the current column.
1153 @cindex recomputing table fields
1154 To recompute all the fields in a line, use the command @kbd{C-c *}.
1155 It re-applies all stored equations to the current row, from left to
1156 right.  With a @kbd{C-u} prefix, this will be done to every line in
1157 the table, so use this command it you want to make sure the entire
1158 table is up-to-date. @kbd{C-u C-c C-c} is another way to update the
1159 entire table.  Global updating does not touch the line(s) above the
1160 first horizontal separator line, assuming that this is the table
1161 header.
1163 @node Advanced features, Named-field formulas, Column formulas, Table calculations
1164 @subsection Advanced features
1166 If you want want the recalculation of fields to happen automatically,
1167 or if you want to be able to assign a formula to an individual field
1168 (instead of an entire column) you need to reserve the first column of
1169 the table for special marking characters.  Here is an example of a
1170 table that collects exam results of students and makes use of these
1171 features:
1172 @example
1173 @group
1174 |---+---------+--------+--------+--------+-------+------|
1175 |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
1176 |---+---------+--------+--------+--------+-------+------|
1177 | ! |         |     P1 |     P2 |     P3 |   Tot |      |
1178 | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
1179 | ^ |         |     m1 |     m2 |     m3 |    mt |      |
1180 |---+---------+--------+--------+--------+-------+------|
1181 | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
1182 | # | Sara    |      6 |     14 |     19 |    39 |  7.8 |
1183 | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
1184 |---+---------+--------+--------+--------+-------+------|
1185 |   | Average |        |        |        |  29.7 |      |
1186 | ^ |         |        |        |        |    at |      |
1187 | $ | max=50  |        |        |        |       |      |
1188 |---+---------+--------+--------+--------+-------+------|
1189 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(&II);%.1f
1190 @end group
1191 @end example
1193 @noindent @b{Important}: Please note that for these special tables,
1194 recalculating the table with @kbd{C-u C-c *} does only affect rows
1195 which are marked @samp{#} or @samp{*}, and named fields.  The column
1196 formulas are not applied in rows with empty first field.
1198 @cindex marking characters, tables
1199 The marking characters have the following meaning:
1200 @table @samp
1201 @item !
1202 The fields in this line define names for the columns, so that you may
1203 refer to a column as @samp{$Tot} instead of @samp{$6}.
1204 @item ^
1205 This row defines names for the fields @emph{above} the row.  With such
1206 a definition, any formula in the table may use @samp{$m1} to refer to
1207 the value @samp{10}.  Also, named fields can have their own formula
1208 associated with them.
1209 @item _
1210 Similar to @samp{^}, but defines names for the fields in the row
1211 @emph{below}. 
1212 @item $
1213 Fields in this row can define @emph{parameters} for formulas.  For
1214 example, if a field in a @samp{$} row contains @samp{max=50}, then
1215 formulas in this table can refer to the value 50 using @samp{$max}.
1216 Parameters work exactly like constants, only that they can be defined on
1217 a per-table basis.  Changing a parameter and then recalculating the
1218 table can be useful.
1219 @item #
1220 Fields in this row are automatically recalculated when pressing
1221 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row.  Also, this row
1222 is selected for a global recalculation with @kbd{C-u C-c *}.  Unmarked
1223 lines will be left alone by this command.
1224 @item *
1225 Selects this line for global recalculation with @kbd{C-u C-c *}, but
1226 not for automatic recalculation.  Use this when automatic
1227 recalculation slows down editing too much.
1228 @item  
1229 Unmarked lines are exempted from recalculation with @kbd{C-u C-c *}.
1230 All lines that should be recalculated should be marked with @samp{#}
1231 or @samp{*}.
1232 @end table
1234 @node Named-field formulas, Editing/debugging formulas, Advanced features, Table calculations
1235 @subsection Named-field formulas
1236 @cindex named field formula
1237 @cindex formula, for named table field
1239 A named field can have its own formula associated with it.  In the
1240 example above, this is used for the @samp{at} field that contains
1241 the average result of the students.  To enter a formula for a named
1242 field, just type it onto the buffer, preceded by @samp{:=}.  Or use
1243 @kbd{C-u C-c =}.  This equation will be stored below the table like
1244 @samp{$name=...}.  Any recalculation in the table (even if only
1245 requested for the current line) will also update all named field
1246 formulas.
1248 @node Editing/debugging formulas, Appetizer, Named-field formulas, Table calculations
1249 @subsection Editing and debugging formulas
1250 @cindex formula editing
1251 @cindex editing, of table formulas
1253 To edit a column or field formula, you can use the commands @kbd{C-c
1254 =} and @kbd{C-u C-c =}, respectively.  The currently active expression
1255 is then presented as default in the minibuffer, were it may be edited.
1257 Note that making a table field blank does not remove the formula
1258 associated with the field - during the next recalculation the field
1259 will be filled again.  To remove a formula from a field, you have to
1260 give an empty reply when prompted for the formula, or to edit the
1261 @samp{#+TBLFM} line.
1263 @kindex C-c C-c
1264 You may edit the @samp{#+TBLFM} directly and re-apply
1265 the changed equations with @kbd{C-c C-c} in that line, or with the
1266 normal recalculation commands in the table.  
1268 @kindex C-c '
1269 @kindex C-c C-c
1270 @kindex C-c C-q
1271 @kindex C-c ?
1272 In particular for large tables with many formulas, it is convenient to
1273 use the command @kbd{C-c '} to edit the formulas of the current table
1274 in a separate buffer.  That buffer will show the formulas one per
1275 line, and you are free to edit, add and remove formulas.  Press
1276 @kbd{C-c ?} on a @samp{$...}  expression to get information about its
1277 interpretation.  Exiting the buffer with @kbd{C-c C-c} only stores the
1278 modified formulas below the table.  Exiting with @kbd{C-u C-c C-c}
1279 also applies them to the entire table.  @kbd{C-c C-q} exits without
1280 installing the changes.
1282 When the evaluation of a formula leads to an error, the field content
1283 becomes the string @samp{#ERROR}.  If you would like see what is going
1284 on during variable substitution and calculation in order to find a
1285 bug, turn on formula debugging in the menu and repeat the calculation
1286 by pressing, for example by pressing @kbd{C-c = @key{RET}} in a field.
1287 Detailed information will be displayed.
1289 @node Appetizer,  , Editing/debugging formulas, Table calculations
1290 @subsection Appetizer
1292 Finally, just to wet your appetite on what can be done with the fantastic
1293 @file{calc} package, here is a table that computes the Taylor series
1294 for a couple of functions (homework: try that with Excel :-)
1296 @example
1297 @group
1298 |---+-------------+---+-----+--------------------------------------|
1299 |   | Func        | n | x   | Result                               |
1300 |---+-------------+---+-----+--------------------------------------|
1301 | # | exp(x)      | 1 | x   | 1 + x                                |
1302 | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
1303 | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
1304 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
1305 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
1306 | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
1307 |---+-------------+---+-----+--------------------------------------|
1308 #+TBLFM: $5=taylor($2,$4,$3);n3
1309 @end group
1310 @end example
1312 @node orgtbl-mode, table.el, Table calculations, Tables
1313 @section The Orgtbl minor mode
1314 @cindex orgtbl-mode
1315 @cindex minor mode for tables
1317 If you like the intuitive way the Org-mode table editor works, you
1318 might want to use it also in other modes like text-mode or mail-mode.
1319 The minor mode Orgtbl-mode makes this possible.  You can always toggle
1320 the mode with @kbd{M-x orgtbl-mode}.  To turn it on by default, for
1321 example in mail mode, use
1322 @lisp
1323 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
1324 @end lisp
1326 @node table.el,  , orgtbl-mode, Tables
1327 @section The @file{table.el} package
1328 @kindex C-c C-c
1329 @cindex table editor, @file{table.el}
1330 @cindex @file{table.el}
1332 Complex ASCII tables with automatic line wrapping, column- and
1333 row-spanning, and alignment can be created using the Emacs table
1334 package by Takaaki Ota (@uref{http://sourceforge.net/projects/table},
1335 and also part of Emacs 22).
1336 When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org-mode
1337 will call @command{table-recognize-table} and move the cursor into the
1338 table.  Inside a table, the keymap of Org-mode is inactive.  In order
1339 to execute Org-mode-related commands, leave the table.
1341 @table @kbd
1342 @kindex C-c C-c
1343 @item C-c C-c
1344 Recognize @file{table.el} table.  Works when the cursor is in a
1345 table.el table.
1347 @kindex C-c ~
1348 @item C-c ~
1349 Insert a table.el table.  If there is already a table at point, this
1350 command converts it between the table.el format and the Org-mode
1351 format.  See the documentation string of the command
1352 @code{org-convert-table} for the restrictions under which this is
1353 possible.
1354 @end table
1356 @node Hyperlinks, TODO items, Tables, Top
1357 @chapter Hyperlinks
1358 @cindex hyperlinks
1360 Just like HMTL, Org-mode provides links inside a file, and external
1361 links to other files, Usenet articles, emails and much more.
1363 @menu
1364 * Internal Links::              Links to other places in the current file
1365 * External Links::              URL-like links to the world
1366 * Managing links::              Creating, inserting and following
1367 * Search Options::              Linking to a specific location
1368 * Remember::                    Org-trees store quick notes
1369 @end menu
1371 @node Internal Links, External Links, Hyperlinks, Hyperlinks
1372 @section Internal Links
1373 @cindex internal links
1374 @cindex links, internal
1375 @cindex CamelCase links
1377 Strings inside double brackets like @samp{[[My Target]]} are links
1378 that lead to a text search in the current file.  The link can be
1379 followed with @kbd{C-c C-o} or with a mouse click (@pxref{Managing
1380 links}).  The preferred match for such a link is a dedicated target:
1381 The same string in double angular brackets.  Targets may be located
1382 anywhere, often it is convenient to put them into a comment line, for
1383 example
1384 @example
1385 # <<My Target>>
1386 @end example
1388 If no dedicated target exists, Org-mode will search for the words in
1389 the link, in the above example for @samp{my target}.  Links starting
1390 with a star like @samp{*My Target} restrict the search to headlines.
1391 When searching, Org-mode will first try an exact match, but then move
1392 on to more and more lenient searches.  For example, the link
1393 @samp{[[*My Targets]]} will find any of the following
1394 @example
1395 ** My targets
1396 ** TODO my targets are bright
1397 ** my 20 targets are
1398 @end example
1399 It is therefore often not necessary to set a dedicated target.  To
1400 insert a link targeting a headline, in-buffer completion can be used.
1401 Just type a star followed by a few optional letters into the buffer
1402 and press @kbd{M-@key{TAB}}.  All headlines in the current buffer will
1403 be offered as completions.  @xref{Managing links}, for more commands
1404 creating links.
1406 Following a link pushes a mark onto Org-mode's own mark ring.  You can
1407 return to the previous position with @kbd{C-c &}.  Using this command
1408 several times in direct succession goes back to positions recorded
1409 earlier.
1411 @menu
1412 * Radio targets::               Make targets trigger links in plain text.
1413 * CamelCase links::             Activating CamelCase words as links
1414 @end menu
1416 @node Radio targets, CamelCase links, Internal Links, Internal Links
1417 @subsection Radio targets
1419 You can configure Org-mode to link any occurrences of certain target
1420 names in normal text.  So without explicitly creating a link, the text
1421 connects to the target radioing its position.  Radio targets are
1422 enclosed by triple angular brackets.  For example, a target
1423 @samp{<<<My Target>>>} causes each occurrence of @samp{my target} in
1424 normal text to become activated as a link.  The Org-mode file is
1425 scanned automatically for radio targets only when the file is first
1426 loaded into Emacs.  To update the target list during editing, press
1427 @kbd{C-c C-c} with the cursor on or at a target.
1429 @node CamelCase links,  , Radio targets, Internal Links
1430 @subsection CamelCase words as links
1431 @cindex completion, of CamelCase links
1432 @cindex CamelCase links, completion of
1434 As an alternative to @samp{[[...]]} links, Org-mode also supports
1435 CamelCase words as links.  This feature is not turned on by default
1436 because of the occasional inconsistencies this system suffers from.
1437 To activate CamelCase words as links, and to make headline completion
1438 offer CamelCase version of headlines, the following customization is
1439 needed:
1440 @lisp
1441 (setq org-activate-camels t
1442       org-file-link-context-use-camel-case t)
1443 @end lisp
1445 @node External Links, Managing links, Internal Links, Hyperlinks
1446 @section External Links
1447 @cindex links, external
1448 @cindex external links
1449 @cindex links, external
1450 @cindex GNUS links
1451 @cindex BBDB links
1452 @cindex URL links
1453 @cindex file links
1454 @cindex VM links
1455 @cindex RMAIL links
1456 @cindex WANDERLUST links
1457 @cindex MH-E links
1458 @cindex USENET links
1459 @cindex SHELL links
1461 Org-mode supports links to files, websites, Usenet and email messages;
1462 and BBDB database entries.  Links are just plain-text URL-like
1463 locators, optionally enclosed by angular brackets.  The following list
1464 shows examples for each link type.
1466 @example
1467 <http://www.astro.uva.nl/~dominik>         @r{on the web}
1468 <file:/home/dominik/images/jupiter.jpg>    @r{file, absolute path}
1469 <file:papers/last.pdf>                     @r{file, relative path}
1470 <news:comp.emacs>                          @r{Usenet link}
1471 <mailto:adent@@galaxy.net>                  @r{Mail link}
1472 <vm:folder>                                @r{VM folder link}
1473 <vm:folder#id>                             @r{VM message link}
1474 <vm://myself@@some.where.org/folder#id>     @r{VM on remote machine}
1475 <wl:folder>                                @r{WANDERLUST folder link}
1476 <wl:folder#id>                             @r{WANDERLUST message link}
1477 <mhe:folder>                               @r{MH-E folder link}
1478 <mhe:folder#id>                            @r{MH-E message link}
1479 <rmail:folder>                             @r{RMAIL folder link}
1480 <rmail:folder#id>                          @r{RMAIL message link}
1481 <gnus:group>                               @r{GNUS group link}
1482 <gnus:group#id>                            @r{GNUS article link}
1483 <bbdb:Richard Stallman>                    @r{BBDB link}
1484 <shell:ls *.org>@footnote{Note that @samp{<} and @samp{>} cannot be part of a link, and therefore of a shell command.  If you need redirection, use @@@{ and @@@} instead.}                          @r{A shell command}
1485 @end example
1487 A link may contain space characters and is terminated by @samp{>} or by
1488 the end of a line.  In tables, the end of a table field also terminates
1489 a link.  Angle brackets around a link are not required, but are
1490 recommended to avoid problems with punctuation and other text following
1491 the link.  See also the variable @code{org-allow-space-in-links}.
1494 @node Managing links, Search Options, External Links, Hyperlinks
1495 @section Managing links
1497 Org-mode provides methods to create a link in the correct syntax, to
1498 insert it into an org-mode file, and to follow the link.
1500 @table @kbd
1501 @kindex C-c l
1502 @cindex storing links
1503 @item C-c l
1504 Store a link to the current location.  This is a @emph{global} command
1505 which can be used in any buffer to create a link.  The link will be
1506 stored for later insertion into an Org-mode buffer (see below).  For
1507 VM, RMAIL, WANDERLUST, GNUS and BBDB buffers, the link will point to
1508 the current article/entry.  For W3 and W3M buffer, the link goes to
1509 the current URL.  For Org-mode files, the current headline is
1510 targeted.  For any other files, the link will point to the file, with
1511 a search string (@pxref{Search Options}) pointing to the
1512 contents of the current line.  If there is an active region, the
1513 selected words will form the basis of the search string.  The key
1514 binding @kbd{C-c l} is only a suggestion - see @ref{Installation and
1515 Activation}.
1517 @kindex C-c C-l
1518 @cindex link completion
1519 @cindex file name completion
1520 @cindex completion, of links
1521 @cindex completion, of file names
1522 @cindex inserting links
1523 @item C-c C-l
1524 Insert a link.  This prompts for a link to be inserted into the
1525 buffer.  You can just type a link, using one of the link type prefixes
1526 mentioned in the examples above.  Through completion, all links stored
1527 during the current session can be accessed.  When called with prefix
1528 arg, you can use file name completion to enter a file link.  The link
1529 will be formatted as given in the variable @code{org-link-format} and
1530 inserted into the buffer.  Note that you don't have to use this
1531 command to insert a link.  Links in Org-mode are plain text, and you
1532 can type or paste them straight into the buffer.
1534 @cindex following links
1535 @kindex C-c C-o
1536 @item C-c C-o
1537 Open link at point.  This will launch a web browser for URLs (using
1538 @command{browse-url-at-point}), run vm/gnus/bbdb for the corresponding
1539 links, and execute the command in a shell link.  When the cursor is on
1540 a CamelCase link, this commands runs the corresponding search.  When
1541 the cursor is on a TAGS list in a headline, it creates the
1542 corresponding TAGS view.  Furthermore, it will visit text files in
1543 @samp{file:} links with Emacs and select a suitable application for
1544 non-text files.  Classification of files is based on file extension
1545 only.  See option @code{org-file-apps}.  If there is no link at point,
1546 the current subtree will be searched for one.  If you want to override
1547 the default application and visit the file with Emacs, use a @kbd{C-u}
1548 prefix.  If the cursor is on a time stamp, compiles the agenda for
1549 that date.
1551 @strong{IMPORTANT}: Be careful not to use any dangerous commands in a
1552 shell link.
1554 @kindex mouse-2
1555 @kindex mouse-1
1556 @item mouse-2
1557 @itemx mouse-1
1558 On links, @kbd{mouse-2} will open the link just like @kbd{C-c C-o}
1559 would.  Under Emacs 22, also @kbd{mouse-1} will follow a link.
1561 @kindex mouse-3
1562 @item mouse-3
1563 Like @kbd{mouse-2}, but force file links to be opened with Emacs.
1565 @cindex mark ring
1566 @kindex C-c %
1567 @item C-c %
1568 Push the current position onto the mark ring, to be able to return
1569 easily. Commands following an internal link do this automatically.
1571 @cindex links, returning to
1572 @kindex C-c &
1573 @item C-c &
1574 Jump back to a recorded position.  A position is recorded by the
1575 commands following internal links, and by @kbd{C-c %}.  Using this
1576 command several times in direct succession moves through a ring of
1577 previously recorded positions.
1578 @end table
1581 @node Search Options, Remember, Managing links, Hyperlinks
1582 @section Search options in file links
1583 @cindex search option in file links
1584 @cindex file links, searching
1586 File links can contain additional information to make Emacs jump to a
1587 particular location in the file when following a link.  This can be a
1588 line number or a search option after a double@footnote{For backward
1589 compatibility, line numbers can also follow a single colon.} colon.
1590 For example:
1591 @example
1592 <file:~/code/main.c::255>
1593 <file:~/xx.org::My Target>
1594 <file:~/xx.org::*My Target>
1595 <file:~/xx.org::/regexp/>
1596 @end example
1597 @noindent Here is what these options do.
1599 @table @code
1600 @item 255
1601 Jump to line 255.
1602 @item My Target
1603 Search for a link target @samp{<<My Target>>}, or do a text search for
1604 @samp{my target}, similar to the search in internal links, see
1605 @ref{Internal Links}.
1606 @item *My Target
1607 In an Org-mode file, restrict search to headlines.
1608 @item /regexp/
1609 Do a regular expression search for @code{regexp}.  This uses the Emacs
1610 command @code{occur} to list all matches in a separate window.  If the
1611 target file is in Org-mode, @code{org-occur} is used to create a
1612 sparse tree with the matches.
1613 @c If the target file is a directory,
1614 @c @code{grep} will be used to search all files in the directory.
1615 @end table
1617 As a degenerate case, a file link with an empty file name can be used
1618 to search the current file.  For example, @code{<file:::find me>} does
1619 a search for @samp{find me} in the current file, just like
1620 @samp{[[find me]]} would.
1622 @node Remember,  , Search Options, Hyperlinks
1623 @section Remember
1624 @cindex @file{remember.el}
1626 Another way to create org entries with links to other files is through
1627 the @emph{Remember} package by John Wiegley.  @emph{Remember} lets you
1628 store quick notes with little interruption of your work flow.  See
1629 @uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
1630 information.  The notes produced by @emph{Remember} can be stored in
1631 different ways, and Org-mode files are a good target.  Org-mode allows
1632 to file away notes either to a default file, or directly to the
1633 correct location in your Org-mode outline tree.  The following
1634 customization@footnote{The two autoload forms are only necessary if
1635 @file{org.el} is not part of the Emacs distribution or an XEmacs
1636 package.} will tell @emph{Remember} to use org files as target, and to
1637 create annotations compatible with Org-mode links.
1639 @example
1640 (autoload 'org-remember-annotation "org")
1641 (autoload 'org-remember-handler "org")
1642 (setq org-directory "~/path/to/my/orgfiles/")
1643 (setq org-default-notes-file "~/.notes")
1644 (setq remember-annotation-functions '(org-remember-annotation))
1645 (setq remember-handler-functions '(org-remember-handler))
1646 @end example
1648 When you compose a note with remember, you have to press @kbd{C-c C-c}
1649 to exit remember-mode and to file away the note.  The handler first
1650 prompts for a target file - if you press @key{RET}, the value of
1651 @code{org-default-notes-file} is used.  Then the command offers the
1652 headings tree of the selected file.  You can either immediately press
1653 @key{RET} to get the note appended to the file.  Or you can use
1654 vertical cursor motion (@key{up} and @key{down}) and visibility
1655 cycling (@key{TAB}) to find a better place.  Pressing @key{RET} or
1656 @key{left} or @key{right} leads to the following result.
1658 @multitable @columnfractions 0.2 0.1 0.7
1659 @item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
1660 @item buffer-start @tab @key{RET} @tab as level 2 heading at end of file
1661 @item on headline @tab @key{RET} @tab as sublevel of the heading at cursor
1662 @item             @tab @key{left}  @tab as same level, before current heading
1663 @item             @tab @key{right} @tab as same level, after current heading
1664 @item not on headline @tab @key{RET}
1665       @tab at cursor position, level taken from context.
1666            Or use prefix arg to specify level manually.
1667 @end multitable
1669 So a fast way to store the note is to press @kbd{C-c C-c @key{RET}
1670 @key{RET}} to append it to the default file.  Even shorter would be
1671 @kbd{C-u C-c C-c}, which does the same without even showing the tree.
1672 But with little extra effort, you can push it directly to the correct
1673 location.
1675 Before inserting the text into a tree, the function ensures that the
1676 text has a headline, i.e. a first line that starts with a @samp{*}.
1677 If not, a headline is constructed from the current date and some
1678 additional data.  If the variable @code{org-adapt-indentation} is
1679 non-nil, the entire text is also indented so that it starts in the
1680 same column as the headline (after the asterisks).
1682 @node TODO items, Timestamps, Hyperlinks, Top
1683 @chapter TODO items
1684 @cindex TODO items
1686 Org-mode does not maintain TODO lists as a separate document.  TODO
1687 items are an integral part of the notes file, because TODO items
1688 usually come up while taking notes!  With Org-mode, you simply mark
1689 any entry in a tree as being a TODO item.  In this way, the
1690 information is not duplicated, and the entire context from which the
1691 item emerged is always present when you check.
1693 Of course, this technique causes TODO items to be scattered throughout
1694 your file.  Org-mode provides methods to give you an overview over all
1695 things you have to do.
1697 @menu
1698 * TODO basics::                 Marking and displaying TODO entries
1699 * Progress Logging::            Document your productivity
1700 * TODO extensions::             Workflow and assignments
1701 * Priorities::                  Some things are more important than others
1702 @end menu
1704 @node TODO basics, Progress Logging, TODO items, TODO items
1705 @section Basic TODO functionality
1707 Any headline can become a TODO item by starting it with the word TODO,
1708 for example
1710 @example
1711 *** TODO Write letter to Sam Fortune
1712 @end example
1714 @noindent
1715 The most important commands to work with TODO entries are:
1717 @table @kbd
1718 @kindex C-c C-t
1719 @cindex cycling, of TODO states
1720 @item C-c C-t
1721 Rotate the TODO state of the current item between
1722 @example
1723 ,-> (unmarked) -> TODO -> DONE --.
1724 '--------------------------------'
1725 @end example
1726 The same rotation can also be done ``remotely'' from the timeline and
1727 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
1728 @kindex C-c C-v
1729 @cindex sparse tree, for TODO
1730 @item C-c C-v
1731 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds
1732 the entire buffer, but shows all TODO items and the headings hierarchy
1733 above them.  With prefix arg, show also the DONE entries.  With
1734 numerical prefix N, show the tree for the Nth keyword in the variable
1735 @code{org-todo-keywords}.
1736 @kindex C-c a t
1737 @item C-c a t
1738 Show the global TODO list.  This collects the TODO items from all
1739 agenda files (@pxref{Agenda Views}) into a single buffer.  The buffer is in
1740 @code{agenda-mode}, so there are commands to examine and manipulate
1741 the TODO entries directly from that buffer (@pxref{Agenda commands}).
1742 @xref{Global TODO list}, for more information.
1743 @item @code{org-agenda-include-all-todo}
1744 If you would like to have all your TODO items listed as part of your
1745 agenda, customize the variable @code{org-agenda-include-all-todo}.
1746 @end table
1748 @node Progress Logging, TODO extensions, TODO basics, TODO items
1749 @section Progress Logging
1750 @cindex progress logging
1751 @cindex logging, of progress
1752 If you want to keep track of @emph{when} a certain TODO item was
1753 finished, turn on logging with
1754 @lisp
1755 (setq org-log-done t)
1756 @end lisp
1757 @noindent
1758 Then each time you turn a TODO entry into DONE using either @kbd{C-c
1759 C-t} in the Org-mode buffer or @kbd{t} in the agenda buffer, a line
1760 @samp{CLOSED: [timestamp]} will be inserted just after the headline.
1761 If you turn the entry back into a TODO item again through further
1762 state cycling, that line will be removed again.  In the timeline
1763 (@pxref{Timeline}) and in the agenda (@pxref{Weekly/Daily Agenda}),
1764 you can then use the @kbd{L} key to display the TODO items closed on
1765 each day, giving you an overview of what has been done on a day.
1767 @node TODO extensions, Priorities, Progress Logging, TODO items
1768 @section Extended use of TODO keywords
1769 @cindex extended TODO keywords
1771 The default implementation of TODO entries is just two states:  TODO
1772 and DONE.  You can, however, use the TODO feature for more
1773 complicated things by configuring the variables
1774 @code{org-todo-keywords} and @code{org-todo-interpretation}.  Using
1775 special setup, you can even use TODO keywords in different ways in
1776 different org files.
1778 @menu
1779 * Workflow states::             From TODO to DONE in steps
1780 * TODO types::                  I do this, Fred the rest
1781 * Per file keywords::           Different files, different requirements
1782 @end menu
1784 @node Workflow states, TODO types, TODO extensions, TODO extensions
1785 @subsection TODO keywords as workflow states
1786 @cindex TODO workflow
1787 @cindex workflow states as TODO keywords
1789 You can use TODO keywords to indicate different states in the process
1790 of working on an item, for example
1792 @lisp
1793 (setq org-todo-keywords '("TODO" "FEEDBACK" "VERIFY" "DONE")
1794       org-todo-interpretation 'sequence)
1795 @end lisp
1797 @cindex completion, of TODO keywords
1798 Changing these variables becomes only effective in a new Emacs session.
1799 With this setup, the command @kbd{C-c C-t} will cycle an entry from
1800 TODO to FEEDBACK, then to VERIFY, and finally to DONE.  You may also
1801 use a prefix argument to quickly select a specific state.  For example
1802 @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
1803 If you define many keywords, you can use in-buffer completion (see
1804 @ref{Completion}) to insert these words into the buffer.
1806 @node TODO types, Per file keywords, Workflow states, TODO extensions
1807 @subsection TODO keywords as types
1808 @cindex TODO types
1809 @cindex names as TODO keywords
1810 @cindex types as TODO keywords
1812 The second possibility is to use TODO keywords to indicate different
1813 types of action items.  For example, you might want to indicate that
1814 items are for ``work'' or ``home''.  If you are into David Allen's
1815 @emph{Getting Things DONE}, you might want to use todo types
1816 @samp{NEXTACTION}, @samp{WAITING}, @samp{MAYBE}.  Or, when you work
1817 with several people on a single project, you might want to assign
1818 action items directly to persons, by using their names as TODO
1819 keywords.  This would be set up like this:
1821 @lisp
1822 (setq org-todo-keywords '("Fred" "Sara" "Lucy" "Mike" "DONE")
1823       org-todo-interpretation 'type)
1824 @end lisp
1826 In this case, different keywords do not indicate a sequence, but
1827 rather different types.  So it is normally not useful to change from
1828 one type to another.  Therefore, in this case the behavior of the
1829 command @kbd{C-c C-t} is changed slightly@footnote{This is also true
1830 for the @kbd{t} command in the timeline and agenda buffers.}.  When
1831 used several times in succession, it will still cycle through all
1832 names.  But when you return to the item after some time and execute
1833 @kbd{C-c C-t} again, it will switch from each name directly to DONE.
1834 Use prefix arguments or completion to quickly select a specific name.
1835 You can also review the items of a specific TODO type in a sparse tree
1836 by using a numeric prefix to @kbd{C-c C-v}.  For example, to see all
1837 things Lucy has to do, you would use @kbd{C-3 C-c C-v}.  To collect
1838 collect Lucy's items from all agenda files into a single buffer, you
1839 would use the prefix arg as well when creating the global todo list:
1840 @kbd{C-3 C-c t}.
1842 @node Per file keywords,  , TODO types, TODO extensions
1843 @subsection Setting up TODO keywords for individual files
1844 @cindex keyword options
1845 @cindex per file keywords
1847 It can be very useful to use different aspects of the TODO mechanism
1848 in different files, which is not possible with the global settings
1849 described above.  For file-local settings, you need to add special
1850 lines to the file which set the keywords and interpretation for that
1851 file only.  For example, to set one of the two examples discussed
1852 above, you need one of the following lines, starting in column zero
1853 anywhere in the file:
1855 @example
1856 #+SEQ_TODO: TODO FEEDBACK VERIFY DONE
1857 #+TYP_TODO: Fred Sara Lucy Mike DONE
1858 @end example
1860 @cindex Completion, of option keywords
1861 @kindex M-@key{TAB}
1862 @noindent To make sure you are using the correct keyword, type
1863 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
1865 @cindex DONE, final TODO keyword
1866 Remember that the last keyword must always mean that the item is DONE
1867 (you may use a different word, though).  Also note that in each file,
1868 only one of the two aspects of TODO keywords can be used.  After
1869 changing one of these lines, use @kbd{C-c C-c} with the cursor still
1870 in the line to make the changes known to Org-mode@footnote{Org-mode
1871 parses these lines only when Org-mode is activated after visiting a
1872 file.  @kbd{C-c C-c} with the cursor in a line starting with @samp{#+}
1873 is simply restarting Org-mode, making sure that these changes will be
1874 respected.}.
1876 If you want to use very many keywords, for example when working with a
1877 large group of people, you may split the names over several lines:
1879 @example
1880 #+TYP_TODO: Fred Sara Lucy Mike
1881 #+TYP_TODO: Luis George Jules Jessica
1882 #+TYP_TODO: Kim Arnold Peter
1883 #+TYP_TODO: DONE
1884 @end example
1886 @node Priorities,  , TODO extensions, TODO items
1887 @section Priorities
1888 @cindex priorities
1890 If you use Org-mode extensively to organize your work, you may end up
1891 with a number of TODO entries so large that you'd like to prioritize
1892 them.  This can be done by placing a @emph{priority cookie} into the
1893 headline, like this
1895 @example
1896 *** TODO [#A] Write letter to Sam Fortune
1897 @end example
1899 @noindent
1900 With its standard setup, Org-mode supports priorities @samp{A},
1901 @samp{B}, and @samp{C}.  @samp{A} is the highest priority.  An entry
1902 without a cookie is treated as priority @samp{B}.  Priorities make a
1903 difference only in the agenda (@pxref{Weekly/Daily Agenda}).
1905 @table @kbd
1906 @kindex @kbd{C-c ,}
1907 @item @kbd{C-c ,}
1908 Set the priority of the current item.  The command prompts for a
1909 priority character @samp{A}, @samp{B} or @samp{C}.  When you press
1910 @key{SPC} instead, the priority cookie is removed from the headline.
1911 The priorities can also be changed ``remotely'' from the timeline and
1912 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
1914 @kindex S-@key{up}
1915 @kindex S-@key{down}
1916 @item S-@key{up}
1917 @itemx S-@key{down}
1918 Increase/decrease priority of current item.  Note that these keys are
1919 also used to modify time stamps (@pxref{Creating timestamps}).
1920 Furthermore, these keys are also used by CUA-mode
1921 (@pxref{Interaction}).
1922 @end table
1924 @node Timestamps, Agenda Views, TODO items, Top
1925 @chapter Timestamps
1927 Items can be labeled with timestamps to make them useful for project
1928 planning.
1930 @menu
1931 * Time stamps::                 Assigning a time to a tree entry
1932 * Creating timestamps::         Commands which insert timestamps
1933 @end menu
1936 @node Time stamps, Creating timestamps, Timestamps, Timestamps
1937 @section Time stamps, deadlines and scheduling
1938 @cindex time stamps
1939 @cindex ranges, time
1940 @cindex date stamps
1941 @cindex deadlines
1942 @cindex scheduling
1944 A time stamp is a specification of a date (possibly with time) in a
1945 special format, either @samp{<2003-09-16 Tue>} or @samp{<2003-09-16
1946 Tue 09:39>}.  A time stamp can appear anywhere in the headline or body
1947 of an org-tree entry.  Its presence allows to show entries on specific
1948 dates in the agenda (@pxref{Weekly/Daily Agenda}).  We distinguish:
1950 @table @var
1951 @cindex timestamp
1952 @item TIMESTAMP
1953 A simple time stamp just assigns a date/time to an item.  In the
1954 timeline and agenda displays, the headline of the entry will be shown
1955 exactly on that date.
1957 @item TIMERANGE
1958 @cindex timerange
1959 Two time stamps connected by @samp{--} denote a time range.  The
1960 headline will be shown on the first and last day of the range, and on
1961 any dates that are displayed and fall in the range.  Here is an
1962 example:
1964 @example
1965 ** Meeting in Amsterdam
1966    <2004-08-23 Mon>--<2004-08-26 Thu>
1967 @end example
1969 @item DEADLINE
1970 @cindex DEADLINE keyword
1971 If a time stamp is preceded by the word @samp{DEADLINE:}, the task
1972 (most likely a TODO item) is supposed to be finished on that date, and
1973 it will be listed then.  In addition, the compilation for @emph{today}
1974 will carry a warning about the approaching or missed deadline,
1975 starting @code{org-deadline-warning-days} before the due date, and
1976 continuing until the entry is marked DONE.  An example:
1978 @example
1979 *** TODO write article about the Earth for the Guide
1980     The editor in charge is <bbdb:Ford Prefect>
1981     DEADLINE: <2004-02-29 Sun>
1982 @end example
1984 @item SCHEDULED
1985 @cindex SCHEDULED keyword
1986 If a time stamp is preceded by the word @samp{SCHEDULED:}, it means
1987 you are planning to start working on that task on the given date.  The
1988 headline will be listed under the given date.  In addition, a reminder
1989 that the scheduled date has passed will be present in the compilation
1990 for @emph{today}, until the entry is marked DONE.  I.e., the
1991 task will automatically be forwarded.
1992 @end table
1994 @node Creating timestamps,  , Time stamps, Timestamps
1995 @section Creating timestamps
1996 @cindex creating timestamps
1997 @cindex timestamps, creating
1999 For Org-mode to recognize time stamps, they need to be in the specific
2000 format.  All commands listed below produce time stamps in the correct
2001 format.
2003 @table @kbd
2004 @kindex C-c .
2005 @item C-c .
2006 Prompt for a date and insert a corresponding time stamp.  When the
2007 cursor is at a previously used time stamp, it is updated to NOW.  When
2008 this command is used twice in succession, a time range is inserted.
2010 @kindex C-u C-c .
2011 @item C-u C-c .
2012 Like @kbd{C-c .}, but use the alternative format which contains date
2013 and time.
2015 @kindex C-c !
2016 @item C-c !
2017 Like @kbd{C-c .}, but insert an inactive time stamp not triggering the
2018 agenda. 
2020 @kindex C-c <
2021 @item C-c <
2022 Insert a time stamp corresponding to the cursor date in the Calendar.
2024 @kindex C-c >
2025 @item C-c >
2026 Access the Emacs calendar for the current date.  If there is a
2027 timestamp in the current line, goto the corresponding date
2028 instead.
2030 @kindex C-c C-o
2031 @item C-c C-o
2032 Access the agenda for the date given by the time stamp at point
2033 (@pxref{Weekly/Daily Agenda}).
2035 @kindex C-c C-d
2036 @item C-c C-d
2037 Insert @samp{DEADLINE} keyword along with a stamp.
2038 @kindex C-c C-w
2039 @cindex sparse tree, for deadlines
2040 @item C-c C-w
2041 Create a sparse tree with all deadlines that are either past-due, or
2042 which will become due within @code{org-deadline-warning-days}.
2043 With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
2044 prefix, check that many days.  For example, @kbd{C-1 C-c C-w} shows
2045 all deadlines due tomorrow.
2047 @kindex C-c C-s
2048 @item C-c C-s
2049 Insert @samp{SCHEDULED} keyword along with a stamp.
2051 @kindex S-@key{left}
2052 @kindex S-@key{right}
2053 @item S-@key{left}
2054 @itemx S-@key{right}
2055 Change date at cursor by one day.  These key bindings conflict with
2056 CUA-mode (@pxref{Interaction}).
2058 @kindex S-@key{up}
2059 @kindex S-@key{down}
2060 @item S-@key{up}
2061 @itemx S-@key{down}
2062 Change the item under the cursor in a timestamp.  The cursor can be on
2063 a year, month, day, hour or minute.  Note that if the cursor is not at
2064 a time stamp, these same keys modify the priority of an item.
2065 (@pxref{Priorities}). The key bindings also conflict with CUA-mode
2066 (@pxref{Interaction}).
2069 @kindex C-c C-y
2070 @cindex evaluate time range
2071 @item C-c C-y
2072 Evaluate a time range by computing the difference between start and
2073 end.  With prefix arg, insert result after the time range (in a table:
2074 into the following column).
2075 @end table
2077 @cindex date, reading in minibuffer
2078 @cindex time, reading in minibuffer
2079 @cindex calendar, for selecting date
2080 When Org-mode prompts for a date/time, the function reading your input
2081 will replace anything you choose not to specify with the current date
2082 and time.  For details, see the documentation string of
2083 @command{org-read-date}.  Also, a calender will pop up to allow
2084 selecting a date.  The calendar can be fully controlled from the
2085 minibuffer, and a date can be selected with the following commands:
2087 @table @kbd
2088 @kindex <
2089 @item <
2090 Scroll calendar backwards by one month.
2091 @kindex >
2092 @item >
2093 Scroll calendar forwards by one month.
2094 @kindex mouse-1
2095 @item mouse-1
2096 Select date by clicking on it.
2097 @kindex S-@key{right}
2098 @item S-@key{right}
2099 One day forward.
2100 @kindex S-@key{left}
2101 @item S-@key{left}
2102 One day back.
2103 @kindex S-@key{down}
2104 @item S-@key{down}
2105 One week forward.
2106 @kindex S-@key{up}
2107 @item S-@key{up}
2108 One week back.
2109 @kindex M-S-@key{right}
2110 @item M-S-@key{right}
2111 One month forward.
2112 @kindex M-S-@key{left}
2113 @item M-S-@key{left}
2114 One month back.
2115 @kindex @key{RET}
2116 @item @key{RET}
2117 Choose date in calendar (only if nothing typed into minibuffer).
2118 @end table
2120 @node Agenda Views, Exporting, Timestamps, Top
2121 @chapter Agenda Views
2122 @cindex agenda views
2124 Due to the way Org-mode works, TODO items and time-stamped items can
2125 be scattered throughout a file or even a number of files.  To get an
2126 overview over open action items, or over events that are important for
2127 a particular date, this information must be collected, sorted and
2128 displayed in an organized way.
2130 Org-mode can select items based on various criteria, and display them
2131 in a separate buffer.  Three different views are provided:
2132 @itemize @bullet
2133 @item
2134 an @emph{agenda} that is like a calendar and shows information
2135 for specific dates
2136 @item
2137 a @emph{TODO list} that covers all unfinished
2138 action items, and
2139 @item
2140 a @emph{tags view} that shows information based on
2141 the tags associated with headlines in the outline tree.
2142 @end itemize
2143 @noindent
2144 The extracted information is displayed in a special @emph{agenda
2145 buffer}.  This buffer is read-only, but provides commands to visit the
2146 corresponding locations in the original Org-mode files, and even to
2147 edit these files remotely.
2149 @menu
2150 * Agenda files::                Files being searched for agenda information
2151 * Agenda dispatcher::           Keyboard access to agenda views
2152 * Weekly/Daily Agenda::         The calendar page with current tasks
2153 * Global TODO list::            All unfinished action items
2154 * Matching headline tags::      Structured information with fine-tuned search
2155 * Timeline::                    Time-sorted view for single file
2156 * Agenda commands::             Remote editing of org trees
2157 @end menu
2159 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
2160 @section Agenda files
2162 The information to be shown is collected from all @emph{agenda files},
2163 the files listed in the variable @code{org-agenda-files}.  Thus even
2164 if you only work with a single Org-mode file, this file should be put
2165 into that list@footnote{When using the dispatcher pressing @kbd{1}
2166 before selecting a command will actually limit the command to the
2167 current file, and ignore @code{org-agenda-files} until the next
2168 dispatcher command.}.  You can customize @code{org-agenda-files}, but
2169 the easiest way to maintain it is through the following commands
2171 @cindex files, adding to agenda list
2172 @table @kbd
2173 @kindex C-c [
2174 @item C-c [
2175 Add current file to the list of agenda files.  The file is added to
2176 the front of the list.  If it was already in the list, it is moved to
2177 the front.  With prefix arg, file is added/moved to the end.
2178 @kindex C-c ]
2179 @item C-c ]
2180 Remove current file from the list of agenda files.
2181 @kindex C-,
2182 @item C-,
2183 Cycle through agenda file list.
2184 @end table
2185 @noindent
2186 The Org menu contains the current list of files and can be used
2187 to visit any of them.
2189 @node Agenda dispatcher, Weekly/Daily Agenda, Agenda files, Agenda Views
2190 @section The agenda dispatcher
2191 @cindex agenda dispatcher
2192 @cindex dispatching agenda commands
2193 @cindex custom agenda commands
2194 @cindex agenda commands, custom
2195 The views are created through a dispatcher that should be bound to a
2196 global key, for example @kbd{C-c a} (@pxref{Installation and
2197 Activation}).  In the following we will assume that @kbd{C-c a} is
2198 indeed how the dispatcher is accessed and list keyboard access to
2199 commands accordingly.  After pressing @kbd{C-c a}, an additional
2200 letter is required to execute a command.  The dispatcher offers the
2201 following default commands:
2202 @table @kbd
2203 @item a
2204 Create the calendar-like agenda (@pxref{Weekly/Daily Agenda}).
2205 @item t / T
2206 Create a list of all TODO items (@pxref{Global TODO list}).
2207 @item m / M
2208 Create a list of headline matching a TAGS expression (@pxref{Matching
2209 headline tags}).
2210 @end table
2212 You can also define custom commands that will be accessible through
2213 the dispatcher, just like the default commands.  Custom commands are
2214 global searches for tags and specific TODO keywords, or a variety of
2215 sparse tree creating commands (@pxref{Sparse trees}).  As sparse trees
2216 are only defined for a single org-mode file, these latter commands act
2217 on the current buffer instead of the list of agenda files.
2219 @kindex C-c a C
2220 Custom commands are configured in the variable
2221 @code{org-agenda-custom-commands}.  You can customize this variable,
2222 for example by pressing @kbd{C-c a C}.  You can also directly set it
2223 with Emacs Lisp in @file{.emacs}.  For example:
2224 @lisp
2225 (setq org-agenda-custom-commands
2226       '(("w" todo "WAITING")
2227         ("u" tags "+BOSS-URGENT")
2228         ("U" tags-tree "+BOSS-URGENT")
2229         ("f" occur-tree "\\<FIXME\\>")))
2230 @end lisp
2231 @noindent will define @kbd{C-c a w} as a global search for
2232 TODO entries with @samp{WAITING} as todo keyword, @kbd{C-c a u} as a
2233 global tags search for headlines marked @samp{:BOSS:} but not
2234 @samp{:URGENT:}, @kbd{C-c a U} to do the same search but only in the
2235 current buffer and display the result as a sparse tree, and @kbd{C-c a
2236 f} to create a sparse tree with all entries containing the word
2237 @samp{FIXME}.  For more information, look at the documentation string
2238 of the variable @code{org-agenda-custom-commands}.
2240 @node Weekly/Daily Agenda, Global TODO list, Agenda dispatcher, Agenda Views
2241 @section The weekly/daily agenda
2242 @cindex agenda
2244 The purpose of the weekly/daily @emph{agenda} is to act like a page of
2245 a paper agenda, showing all the tasks for the current week or day.
2247 @table @kbd
2248 @cindex org-agenda, command
2249 @kindex C-c a a
2250 @item C-c a a
2251 Compile an agenda for the current week from a list of org files.  The
2252 agenda shows the entries for each day.  With a @kbd{C-u} prefix (or
2253 when the variable @code{org-agenda-include-all-todo} is @code{t}), all
2254 unfinished TODO items (also those without a date) are also listed at
2255 the beginning of the buffer, before the first date.@*
2256 @end table
2258 Remote editing from the agenda buffer means for example that you can
2259 change the dates of deadlines and appointments from the agenda buffer.
2260 The commands available in the Agenda buffer are listed in @ref{Agenda
2261 commands}.
2263 @menu
2264 * Categories::                  Not all tasks are equal
2265 * Time-of-day specifications::  How the agenda knows the time
2266 * Calendar/Diary integration::  Integrating Anniversaries and more
2267 * Sorting of agenda items::     The order of things
2268 @end menu
2270 @node Categories, Time-of-day specifications, Weekly/Daily Agenda, Weekly/Daily Agenda
2271 @subsection Categories
2273 @cindex category
2274 In the agenda buffer, each entry is preceded by a @emph{category},
2275 which is derived from the file name.  The category can also be set
2276 with a special line anywhere in the buffer, looking like this:
2277 @example
2278 #+CATEGORY: Thesis
2279 @end example
2280 If there are several such lines in a file, each specifies the category
2281 for the text below it.  The display in the agenda buffer looks best if
2282 the category is not longer than 10 characters.
2284 @node Time-of-day specifications, Calendar/Diary integration, Categories, Weekly/Daily Agenda
2285 @subsection Time-of-Day Specifications
2287 Org-mode checks each agenda item for a time-of-day specification.  The
2288 time can be part of the time stamp that triggered inclusion into the
2289 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
2290 ranges can be specified with two time stamps, like
2292 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
2294 In the headline of the entry itself, a time(range) may also appear as
2295 plain text (like @samp{12:45} or a @samp{8:30-1pm}.  If the agenda
2296 integrates the Emacs diary (@pxref{Calendar/Diary integration}), time
2297 specifications in diary entries are recognized as well.
2299 For agenda display, Org-mode extracts the time and displays it in a
2300 standard 24 hour format as part of the prefix.  The example times in
2301 the previous paragraphs would end up in the agenda like this:
2303 @example
2304     8:30-13:00 Arthur Dent lies in front of the bulldozer
2305    12:45...... Ford Prefect arrives and takes Arthur to the pub
2306    19:00...... The Vogon reads his poem
2307    20:30-22:15 Marwin escorts the Hitchhikers to the bridge
2308 @end example
2310 If the agenda is in single-day mode, or for the display of today, the
2311 timed entries are embedded in a time grid, like
2313 @example
2314     8:00...... ------------------
2315     8:30-13:00 Arthur Dent lies in front of the bulldozer
2316    10:00...... ------------------
2317    12:00...... ------------------
2318    12:45...... Ford Prefect arrives and takes Arthur to the pub
2319    14:00...... ------------------
2320    16:00...... ------------------
2321    18:00...... ------------------
2322    19:00...... The Vogon reads his poem
2323    20:00...... ------------------
2324    20:30-22:15 Marwin escorts the Hitchhikers to the bridge
2325 @end example
2327 The time grid can be turned on and off with the variable
2328 @code{org-agenda-use-time-grid}, and can be configured with
2329 @code{org-agenda-time-grid}.
2332 @node Calendar/Diary integration, Sorting of agenda items, Time-of-day specifications, Weekly/Daily Agenda
2333 @subsection Calendar/Diary integration
2334 @cindex calendar integration
2335 @cindex diary integration
2337 Emacs contains the calendar and diary by Edward M. Reingold.  The
2338 calendar displays a three-month calendar with holidays from different
2339 countries and cultures.  The diary allows to keep track of
2340 anniversaries, lunar phases, sunrise/set, recurrent appointments
2341 (weekly, monthly) and more.  In this way, it is quite complementary to
2342 Org-mode.  It can be very useful to combine output from Org-mode with
2343 the diary.
2345 In order to include entries from the Emacs diary into Org-mode's
2346 agenda, you only need to customize the variable
2348 @lisp
2349 (setq org-agenda-include-diary t)
2350 @end lisp
2351 @noindent
2353 @noindent After that, everything will happen automatically.  All diary
2354 entries including holidays, anniversaries etc will be included in the
2355 agenda buffer created by Org-mode.  @key{SPC}, @key{TAB}, and
2356 @key{RET} can be used from the agenda buffer to jump to the diary
2357 file, in order to edit existing diary entries.  The @kbd{i} command to
2358 insert new entries for the current date works in the agenda buffer, as
2359 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
2360 Sunrise/Sunset times, show lunar phases and to convert to other
2361 calendars, respectively.  @kbd{c} can be used to switch back and forth
2362 between calendar and agenda.
2364 @node Sorting of agenda items,  , Calendar/Diary integration, Weekly/Daily Agenda
2365 @subsection Sorting of agenda items
2366 @cindex sorting, of agenda items
2367 @cindex priorities, of agenda items
2368 The entries for each day are sorted.  The default order is to first
2369 collect all items containing an explicit time-of-day specification.
2370 These entries will be shown at the beginning of the list, as a
2371 @emph{schedule} for the day.  After that, items remain grouped in
2372 categories, in the sequence given by @code{org-agenda-files}.  Within
2373 each category, items are sorted by priority (@pxref{Priorities}).
2375 The priority is a numerical quantity composed of the base priority
2376 (2000 for priority @samp{A}, 1000 for @samp{B}, and 0 for @samp{C}),
2377 plus additional increments for overdue scheduled or deadline items.
2379 Sorting can be customized using the variable
2380 @code{org-agenda-sorting-strategy}.
2383 @node Global TODO list, Matching headline tags, Weekly/Daily Agenda, Agenda Views
2384 @section The global TODO list
2385 @cindex global TODO list
2386 @cindex TODO list, global
2388 The global TODO list contains all unfinished TODO items, formatted and
2389 collected into a single place.
2391 @table @kbd
2392 @kindex C-c a t
2393 @item C-c a t
2394 Show the global TODO list.  This collects the TODO items from all
2395 agenda files (@pxref{Agenda Views}) into a single buffer.  The buffer is in
2396 @code{agenda-mode}, so there are commands to examine and manipulate
2397 the TODO entries directly from that buffer (@pxref{Agenda commands}).
2398 @xref{Global TODO list}, for more information.
2399 @kindex C-c a T
2400 @item C-c a T
2401 Like the above, but allow to select a specific TODO keyword.  You can
2402 also do this by specifying a prefix argument to @kbd{C-c a t}.  With a
2403 @kbd{C-u} prefix you are prompted for a keyword.  With a numeric
2404 prefix, the Nth keyword in @code{org-todo-keywords} is selected.
2405 @kindex r
2406 The @kbd{r} key in the agenda buffer regenerates it, and you can give
2407 a prefix argument to this command to change the selected TODO keyword,
2408 for example @kbd{3 r}.  If you often need a search for a specific
2409 keyword, define a custom command for it (@pxref{Agenda dispatcher}).
2410 @end table
2412 Remote editing of TODO items means that you can change the state of a
2413 TODO entry with a single key press.  The commands available in the
2414 TODO list are described in @ref{Agenda commands}.
2416 @node Matching headline tags, Timeline, Global TODO list, Agenda Views
2417 @section Matching headline tags
2418 @cindex matching, of tags
2419 @cindex tags view
2421 If headlines in the agenda files are marked with @emph{tags}
2422 (@pxref{Tags}), you can select headlines based on the tags that apply
2423 to them and collect them into an agenda buffer.
2425 @table @kbd
2426 @kindex C-c a m
2427 @item C-c a m
2428 Produce a list of all headlines that match a given set of tags.  The
2429 command prompts for a selection criterion, which is a boolean logic
2430 expression with tags, like @samp{+WORK+URGENT-WITHBOSS} or
2431 @samp{WORK|HOME} (@pxref{Tags}).  If you often need a specific search,
2432 define a custom command for it (@pxref{Agenda dispatcher}).
2433 @kindex C-c a M
2434 @item C-c a M
2435 Like @kbd{C-c a m}, but only select headlines that are also TODO items
2436 and force checking subitems (see variable
2437 @code{org-tags-match-list-sublevels}.
2438 @end table
2440 The commands available in the tags list are described in @ref{Agenda
2441 commands}.
2443 @node Timeline, Agenda commands, Matching headline tags, Agenda Views
2444 @section Timeline for a single file
2445 @cindex single file summary
2446 @cindex agenda, for single file
2447 @cindex timeline, single file
2448 @cindex time-sorted view
2450 The timeline is not really an agenda view, because it only summarizes
2451 items from a single Org-mode file.  But it also uses the agenda buffer
2452 and provides similar commands, so we discuss it here.  The timeline
2453 shows all time-stamped items in a single Org-mode file (or the
2454 selected part of it), in @emph{time-sorted view}.  The main purpose of
2455 this command is to give an overview over events in a project.
2457 @table @kbd
2458 @kindex C-c C-r
2459 @item C-c C-r
2460 Show a time-sorted view of the org file, with all time-stamped items.
2461 When called with a @kbd{C-u} prefix, all unfinished TODO entries
2462 (scheduled or not) are also listed under the current date.
2463 @end table
2464 @noindent
2466 The commands available in the timeline buffer are listed in
2467 @ref{Agenda commands}.
2469 @node Agenda commands,  , Timeline, Agenda Views
2470 @section Commands in the agenda buffer
2471 @cindex commands, in agenda buffer
2473 Entries in the agenda buffer are linked back to the org file or diary
2474 file where they originate.  You are not allowed to edit the agenda
2475 buffer itself, but commands are provided to show and jump to the
2476 original entry location, and to edit the org-files ``remotely'' from
2477 the agenda buffer.  In this way, all information is stored only once,
2478 and you don't risk that your agenda and note files diverge.
2480 Some commands can be executed with mouse clicks on agenda lines.  For
2481 the other commands, the cursor needs to be in the desired line.
2483 @table @kbd
2484 @tsubheading{Motion}
2485 @kindex n
2486 @item n
2487 Next line (same as @key{up}).
2488 @kindex p
2489 @item p
2490 Previous line (same as @key{down}).
2491 @tsubheading{View/GoTo org file}
2492 @kindex mouse-3
2493 @kindex @key{SPC}
2494 @item mouse-3
2495 @itemx @key{SPC}
2496 Display the original location of the item in another window.
2498 @kindex L
2499 @item L
2500 Display original location and recenter that window.
2502 @kindex mouse-2
2503 @kindex mouse-1
2504 @kindex @key{TAB}
2505 @item mouse-2
2506 @itemx mouse-1
2507 @itemx @key{TAB}
2508 Go to the original location of the item in another window.  Under Emacs
2509 22, also @kbd{mouse-1} will works for this.
2511 @kindex @key{RET}
2512 @itemx @key{RET}
2513 Go to the original location of the item and delete other windows.
2515 @kindex f
2516 @item f
2517 Toggle Follow mode.  In Follow mode, as you move the cursor through
2518 the agenda buffer, the other window always shows the corresponding
2519 location in the org file.
2521 @kindex l
2522 @item l
2523 Toggle Logbook mode.  In Logbook mode, entries that where marked DONE while
2524 logging was on (variable @code{org-log-done}) are shown in the agenda.
2526 @tsubheading{Change display}
2527 @kindex o
2528 @item o
2529 Delete other windows.
2531 @kindex w
2532 @item w
2533 Switch to weekly view (7 days displayed together)
2535 @kindex d
2536 @item d
2537 Switch to daily view (just one day displayed)
2539 @kindex D
2540 @item D
2541 Toggle the inclusion of diary entries.  See @ref{Calendar/Diary integration}.
2543 @kindex g
2544 @item g
2545 Toggle the time grid on and off.  See also the variables
2546 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
2548 @kindex r
2549 @item r
2550 Recreate the agenda buffer, for example to reflect the changes
2551 after modification of the time stamps of items with S-@key{left} and
2552 S-@key{right}.  When the buffer is the global todo list, a prefix
2553 argument is interpreted to create a selective list for a specific TODO
2554 keyword.
2556 @kindex @key{right}
2557 @item @key{right}
2558 Display the following @code{org-agenda-ndays} days.  For example, if
2559 the display covers a week, switch to the following week.  With prefix
2560 arg, go forward that many times @code{org-agenda-ndays} days.
2562 @kindex @key{left}
2563 @item @key{left}
2564 Display the previous dates.
2566 @kindex .
2567 @item .
2568 Goto today.
2570 @tsubheading{Remote editing}
2572 @item 0-9
2573 Digit argument.
2575 @kindex t
2576 @item t
2577 Change the TODO state of the item, both in the agenda and in the
2578 original org file.
2580 @kindex T
2581 @item T
2582 Show all tags assiciated with the current item.  Because of
2583 inheritance, this may be more than the tags listed in the line itself.
2585 @kindex :
2586 @item :
2587 Set tags for the current headline.
2589 @kindex ,
2590 @item ,
2591 Set the priority for the current item.  Org-mode prompts for the
2592 priority character. If you reply with @key{SPC}, the priority cookie
2593 is removed from the entry.
2595 @kindex P
2596 @item p
2597 Display weighted priority of current item.
2599 @kindex +
2600 @kindex S-@key{up}
2601 @item +
2602 @itemx S-@key{up}
2603 Increase the priority of the current item.  The priority is changed in
2604 the original buffer, but the agenda is not resorted.  Use the @kbd{r}
2605 key for this.
2607 @kindex -
2608 @kindex S-@key{down}
2609 @item -
2610 @itemx S-@key{down}
2611 Decrease the priority of the current item.
2613 @kindex S-@key{right}
2614 @item S-@key{right}
2615 Change the time stamp associated with the current line by one day into
2616 the future.  With prefix argument, change it by that many days.  For
2617 example, @kbd{3 6 5 S-@key{right}} will change it by a year.  The
2618 stamp is changed in the original org file, but the change is not
2619 directly reflected in the agenda buffer.  Use the
2620 @kbd{r} key to update the buffer.
2622 @kindex S-@key{left}
2623 @item S-@key{left}
2624 Change the time stamp associated with the current line by one day
2625 into the past.
2627 @kindex >
2628 @item >
2629 Change the time stamp associated with the current line to today.
2630 The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
2631 on my keyboard.
2633 @cindex diary entries, creating from agenda
2634 @kindex i
2635 @item i
2636 Insert a new entry into the diary.  Prompts for the type of entry
2637 (day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
2638 entry in the diary, just like @kbd{i d} etc. would do in the calendar.
2639 The date is taken from the cursor position.
2641 @tsubheading{Calendar commands}
2642 @kindex c
2643 @item c
2644 Open the Emacs calendar and move to the date at the agenda cursor.
2646 @item c
2647 When in the calendar, compute and show the Org-mode agenda for the
2648 date at the cursor.
2650 @kindex M
2651 @item M
2652 Show the phases of the moon for three month around current date.
2654 @kindex S
2655 @item S
2656 Show sunrise and sunset times.  The geographical location must be set
2657 with calendar variables, see documentation of the Emacs calendar.
2659 @kindex C
2660 @item C
2661 Convert the date at cursor into many other cultural and historic
2662 calendars.
2664 @kindex H
2665 @item H
2666 Show holidays for three month around the cursor date.
2668 @kindex C-c C-x C-c
2669 @item C-c C-x C-c
2670 Export a single iCalendar file containing entries from all agenda files.
2672 @tsubheading{Quit and Exit}
2673 @kindex q
2674 @item q
2675 Quit Agenda, remove the agenda buffer.
2677 @kindex x
2678 @cindex agenda files, removing buffers
2679 @item x
2680 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
2681 for the compilation of the agenda.  Buffers created by the user to
2682 visit org files will not be removed.
2684 @end table
2686 @node Exporting, Miscellaneous, Agenda Views, Top
2687 @chapter Exporting
2688 @cindex exporting
2690 For printing and sharing of notes, Org-mode documents can be exported
2691 as ASCII or HTML files.  To incorporate entries with associated times
2692 like deadlines or appointments into a desktop calendar program like
2693 iCal, Org-mode can also produce extracts in the iCalendar format.
2695 @menu
2696 * ASCII export::                Export as a structured ASCII file
2697 * HTML export::                 Export as an HTML file
2698 * iCalendar export::            Create calendar entries.
2699 @end menu
2701 @node ASCII export, HTML export, Exporting, Exporting
2702 @section ASCII export
2703 @cindex ASCII export
2705 @cindex region, active
2706 @cindex active region
2707 @cindex transient-mark-mode
2708 @table @kbd
2709 @kindex C-c C-x a
2710 @item C-c C-x a
2711 Export as ASCII file.  If there is an active region, only the region
2712 will be exported.  For an org file @file{myfile.org}, the ASCII file
2713 will be @file{myfile.txt}.  The file will be overwritten without
2714 warning.
2715 @end table
2717 @cindex headline levels, for exporting
2718 In the exported version, the first 3 outline levels will become
2719 headlines, defining a general document structure.  Additional levels
2720 will be exported as itemize lists.  If you want that transition to occur
2721 at a different level, specify it with a prefix argument.  For example,
2722 @example
2723 @kbd{C-1 C-c C-x a org-export-as-ascii}
2724 @end example
2725 @noindent
2726 creates only top level headlines and does the rest as items.  Lines
2727 starting with @samp{#} and subtrees starting with the word @samp{COMMENT}
2728 will not be exported.
2730 @node HTML export, iCalendar export, ASCII export, Exporting
2731 @section HTML export
2732 @cindex HTML export
2734 Org-mode contains an HTML exporter with extensive HTML formatting, in
2735 ways similar to John Grubers @emph{markdown} language, but with
2736 additional support for tables.
2738 @cindex region, active
2739 @cindex active region
2740 @cindex transient-mark-mode
2741 @table @kbd
2742 @kindex C-c C-x h
2743 @item C-c C-x h
2744 Export as HTML file @file{myfile.html}.
2745 @kindex C-c C-x b
2746 @item C-c C-x b
2747 Export as HTML file and open it with a browser.
2748 @kindex C-c C-x t
2749 @item C-c C-x t
2750 Insert template with export options, see below.
2751 @kindex C-c :
2752 @item C-c :
2753 Toggle fixed-width for entry (QUOTE) or region, see below.
2754 @end table
2756 @cindex headline levels, for exporting
2757 In the exported version, the first 3 outline levels will become
2758 headlines, defining a general document structure.  Additional levels
2759 will be exported as itemize lists.  If you want that transition to occur
2760 at a different level, specify it with a prefix argument.  For example,
2761 @example
2762 @kbd{C-2 C-c C-x b}
2763 @end example
2764 @noindent
2765 creates two levels of headings and does the rest as items.
2767 @menu
2768 * HTML formatting::             Interpretation of the buffer content
2769 * Export options::              How to influence exports
2770 * Comment lines::               Lines which will not be exported
2771 @end menu
2773 @node HTML formatting, Export options, HTML export, HTML export
2774 @subsection HTML formatting
2776 Not all text is transferred literally to the exported HTML file.  The
2777 exporter implements the following interpretation:
2779 @itemize @bullet
2781 @cindex hand-formatted lists
2782 @cindex lists, hand-formatted
2783 @item
2784 Hand-formatted lists with @samp{-}, @samp{*} or @samp{+} as
2785 bullet, or with @samp{1.} or @samp{2)} as enumerator will be recognized and
2786 transformed into HTML lists.  See @xref{Plain Lists}.
2788 @cindex underlined text
2789 @cindex bold text
2790 @cindex italic text
2791 @item
2792 You can make words @b{*bold*}, @i{/italic/}, and _underlined_
2794 @cindex @TeX{} interpretation
2795 @item
2796 Simple @TeX{}-like math constructs are interpreted:
2798 @cindex completion, of @TeX{} symbols
2799 @itemize @minus
2800 @item
2801 @samp{10^22} and @samp{J_n} are super- and subscripts.  You can quote
2802 @samp{^} and @samp{_} with a backslash: @samp{\_} and @samp{\^}
2803 @item
2804 @samp{\alpha} indicates a Greek letter, @samp{\to} an arrow.  You can
2805 use completion for these macros, just type @samp{\} and maybe a few
2806 letters, and press @kbd{M-@key{TAB}} to see possible completions.
2807 @end itemize
2809 @cindex tables, export to HTML
2810 @item
2811 Tables are transformed into HTML tables.  Data fields before the first
2812 horizontal separator line will be formatted as table header fields.
2814 @cindex fixed width
2815 @item
2816 If a headline starts with the word @samp{QUOTE}, the text below the
2817 headline will be typeset as fixed-width, to allow quoting of computer
2818 codes etc.  Lines starting with @samp{:} are also typeset in
2819 fixed-width font.
2821 @cindex HTML tags
2822 @item
2823 If you want to include HTML tags which should be interpreted as such,
2824 mark them with a @samp{@@} like in @samp{@@<b>bold text@@</b>}.
2825 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
2826 @samp{&gt;} in HTML export.
2827 @end itemize
2829 If these conversions conflict with your habits of typing ASCII text,
2830 they can all be turned off with corresponding variables.
2832 @node Export options, Comment lines, HTML formatting, HTML export
2833 @subsection Export options
2834 @cindex options, for export
2836 @cindex completion, of option keywords
2837 The exporter recognizes special lines in the buffer which provide
2838 additional information.  These lines may be put anywhere in the file.
2839 The whole set of lines can be inserted into the buffer with @kbd{C-c
2840 C-x t}.  For individual lines, a good way to make sure the keyword is
2841 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
2842 (@pxref{Completion}).
2844 @example
2845 #+TITLE:     the title to be shown (default is the buffer name)
2846 #+AUTHOR:    the author (default taken from @code{user-full-name})
2847 #+EMAIL:     his/her email address (default from @code{user-mail-address})
2848 #+LANGUAGE:  language for HTML, e.g. @samp{en} (@code{org-export-default-language})
2849 #+TEXT:      Some descriptive text to be inserted at the beginning.
2850 #+TEXT:      Several lines may be given.
2851 #+OPTIONS:   H:2  num:t  toc:t  \n:nil  @:t  ::t  |:t  ^:t  *:nil  TeX:t
2852 @end example
2853 @noindent
2854 The OPTIONS line is a compact form to specify export settings.  Here
2855 you can
2856 @cindex headline levels
2857 @cindex section-numbers
2858 @cindex table of contents
2859 @cindex linebreak preservation
2860 @cindex quoted html tags
2861 @cindex fixed-width sections
2862 @cindex tables
2863 @cindex @TeX{}-like syntax for sub- and superscripts
2864 @cindex emphasized text
2865 @cindex @TeX{} macros
2866 @example
2867 H:      @r{set the number of headline levels for export}
2868 num:    @r{turn on/off section-numbers}
2869 toc:    @r{turn on/off table of contents}
2870 \n:     @r{turn on/off linebreak-preservation}
2871 @@:      @r{turn on/off quoted html tags}
2872 ::      @r{turn on/off fixed-width sections}
2873 |:      @r{turn on/off tables}
2874 ^:      @r{turn on/off @TeX{}-like syntax for sub- and superscripts.}
2875 *:      @r{turn on/off emphasized text (bold, italic, underlined)}
2876 TeX:    @r{turn on/off @TeX{} macros}
2877 @end example
2879 You can also give style information for the exported file.  The
2880 default specification can be configured through the option
2881 @code{org-export-html-style}.  If you want to use a file-local style,
2882 you may use file variables, best wrapped into a COMMENT section at the
2883 end of the outline tree.  For example:
2885 @example
2886 * COMMENT HTML style specifications
2888 # Local Variables: 
2889 # org-export-html-style: "   <style type=\"text/css\">
2890        p @{font-weight: normal; color: gray; @}
2891        h1 @{color: black; @}
2892    </style>"
2893 # End: ***
2894 @end example
2896 Remember to execute @kbd{M-x normal-mode} after changing this to make
2897 the new style visible to Emacs.
2899 @node Comment lines,  , Export options, HTML export
2900 @subsection Comment lines
2901 @cindex comment lines
2902 @cindex exporting, not
2904 Lines starting with @samp{#} in column zero are treated as comments
2905 and will never be exported.  Also entire subtrees starting with the
2906 word @samp{COMMENT} will never be exported.  Finally, any text before
2907 the first headline will not be exported either.  This applies also for
2908 ASCII export.
2910 @table @kbd
2911 @kindex C-c ;
2912 @item C-c ;
2913 Toggle the COMMENT keyword at the beginning of an entry.
2914 @end table
2916 @node iCalendar export,  , HTML export, Exporting
2917 @section iCalendar export
2918 @cindex iCalendar export
2920 Some people like to use Org-mode for keeping track of projects, but
2921 still prefer a standard calendar application for anniversaries and
2922 appointments.  In this case it can be useful to have deadlines and
2923 other time-stamped items in Org-mode files show up in the calendar
2924 application.  Org-mode can export calendar information in the standard
2925 iCalendar format.
2927 @table @kbd
2928 @kindex C-c C-x i
2929 @item C-c C-x i
2930 Create iCalendar entries for the current file and store them in the same
2931 directory, using a file extension @file{.ics}.
2932 @kindex C-c C-x C-i
2933 @item C-c C-x C-i
2934 Like @kbd{C-c C-x i}, but do this for all files in
2935 @code{org-agenda-files}.  For each of these files, a separate iCalendar
2936 file will be written.
2937 @kindex C-c C-x c
2938 @item C-c C-x c
2939 Create a single large iCalendar file from all files in
2940 @code{org-agenda-files} and write it to the file given by
2941 @code{org-combined-agenda-icalendar-file}.
2942 @end table
2944 How this calendar is best read and updated, depends on the application
2945 you are using.  For example, when using iCal under Apple MacOS X, you
2946 could create a new calendar @samp{OrgMode} (the default name for the
2947 calendar created by @kbd{C-c C-x c}, see the variables
2948 @code{org-icalendar-combined-name} and
2949 @code{org-combined-agenda-icalendar-file}).  Then set Org-mode to
2950 overwrite the corresponding file
2951 @file{~/Library/Calendars/OrgMode.ics}.  You may even use AppleScript
2952 to make iCal re-read the calendar files each time a new version of
2953 @file{OrgMode.ics} is produced.  Here is the setup needed for this:
2955 @cindex applescript, for calendar update
2956 @lisp
2957 (setq org-combined-agenda-icalendar-file
2958     "~/Library/Calendars/OrgMode.ics")
2959 (add-hook 'org-after-save-iCalendar-file-hook
2960  (lambda ()
2961   (shell-command
2962    "osascript -e 'tell application \"iCal\" to reload calendars'")))
2963 @end lisp
2965 @node Miscellaneous, Index, Exporting, Top
2966 @chapter Miscellaneous
2968 @menu
2969 * Completion::                  M-TAB knows what you need
2970 * Customization::               Adapting Org-mode to your taste
2971 * Clean view::                  Getting rid of leading stars in the outline
2972 * TTY keys::                    Using Org-mode on a tty
2973 * FAQ::                         Frequently asked questions
2974 * Interaction::                 Other Emacs packages
2975 * Bugs::                        Things which do not work perfectly
2976 * Acknowledgments::             These people provided feedback and more
2977 @end menu
2979 @node Completion, Customization, Miscellaneous, Miscellaneous
2980 @section Completion
2981 @cindex completion, of @TeX{} symbols
2982 @cindex completion, of TODO keywords
2983 @cindex completion, of dictionary words
2984 @cindex completion, of option keywords
2985 @cindex completion, of CamelCase links
2986 @cindex completion, of tags
2987 @cindex @TeX{} symbol completion
2988 @cindex TODO keywords completion
2989 @cindex dictionary word completion
2990 @cindex option keyword completion
2991 @cindex CamelCase link completion
2992 @cindex tag completion
2994 Org-mode supports in-buffer completion.  This type of completion does
2995 not make use of the minibuffer.  You simply type a few letters into
2996 the buffer and use the key to complete text right there.
2998 @table @kbd
2999 @kindex M-@key{TAB}
3000 @item M-@key{TAB}
3001 Complete word at point
3002 @itemize @bullet
3003 @item
3004 At the beginning of a headline, complete TODO keywords.
3005 @item
3006 After @samp{\}, complete @TeX{} symbols supported by the exporter.
3007 @item
3008 After @samp{*}, complete CamelCase versions of all headlines in the
3009 buffer.
3010 @item
3011 After @samp{:}, complete tags used elsewhere in the buffer.
3012 @item
3013 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
3014 @samp{OPTIONS} which set file-specific options for Org-mode.  When the
3015 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
3016 will insert example settings for this keyword.
3017 @item
3018 Elsewhere, complete dictionary words using ispell.
3019 @end itemize
3020 @end table
3023 @node Customization, Clean view, Completion, Miscellaneous
3024 @section Customization
3025 @cindex customization
3026 @cindex options, for customization
3027 @cindex variables, for customization
3029 There are more than 100 variables that can be used to customize
3030 Org-mode.  For the sake of compactness of the manual, we are not
3031 describing the variables here.  A structured overview of customization
3032 variables is available with @kbd{M-x org-customize}.  Or select
3033 @code{Browse Org Group} from the @code{Org->Customization} menu.
3035 @node Clean view, TTY keys, Customization, Miscellaneous
3036 @section A cleaner outline view
3037 @cindex hiding leading stars
3038 @cindex clean outline view
3040 Some people find it noisy and distracting that the Org-mode headlines
3041 are starting with a potentially large number of stars.  For example in
3042 the example tree from @ref{Headlines}:
3044 @example
3045 * Top level headline
3046 ** Second level
3047 *** 3rd level
3048     some text
3049 *** 3rd level
3050     more text
3051 * Another top level headline
3052 @end example
3054 @noindent
3055 Unfortunately this is deeply ingrained into the code of Org-mode and
3056 cannot be easily changed.  You can, however, modify the display in such
3057 a way that all leading stars become invisible and the outline more easy
3058 to read.  To do this, customize the variable
3059 @code{org-hide-leading-stars} like this:
3061 @lisp
3062 (setq org-hide-leading-stars t)
3063 @end lisp
3065 @noindent
3066 and restart emacs (this is necessary to make this change effective).
3067 The tree then becomes
3069 @example
3070 * Top level headline
3071  * Second level
3072   * 3rd level
3073     some text
3074   * 3rd level
3075     more text
3076 * Another top level headline
3077 @end example
3079 @noindent
3080 Note that the leading stars are not truly replaced by whitespace, they
3081 are only fontified with the face @code{org-hide} that uses the
3082 background color as font color.  If are are not using either white or
3083 black background, you may have to customize this face to get the wanted
3084 effect.  Another possibility is to set this font such that the extra
3085 stars are @i{almost} invisible, for example using the color
3086 @code{grey90} on a white background.
3088 Things become cleaner still if you skip all the even levels and use only
3089 odd levels 1, 3, 5..., effectively adding two stars to go from one
3090 outline level to the next:
3092 @example
3093 * Top level headline
3094   * Second level
3095     * 3rd level
3096       some text
3097     * 3rd level
3098       more text
3099 * Another top level headline
3100 @end example
3102 @noindent
3103 In order to make the structure editing and export commands handle this
3104 convention correctly, use (again a restart of emacs will be needed)
3106 @lisp
3107 (setq org-odd-levels-only t)
3108 @end lisp
3110 @noindent
3111 You can convert an Org-mode file from single-star-per-level to
3112 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
3113 RET} in that file.  It is not possible to use this setting on a
3114 file-local basis, so you need to decide which format to use.
3116 @node TTY keys, FAQ, Clean view, Miscellaneous
3117 @section Using org-mode on a tty
3118 @cindex tty keybindings
3120 Org-mode uses a number of keys that are not accessible on a tty.  This
3121 applies to most special keys like cursor keys, @key{TAB} and
3122 @key{RET}, when these are combined with modifier keys like @key{Meta}
3123 and/or @key{Shift}.  Org-mode uses these bindings because it needs to
3124 provide keys for a large number of commands, and because these keys
3125 appeared particularly easy to remember.  In order to still be able to
3126 access the core functionality of Org-mode on a tty, alternative
3127 bindings are provided.  Here is a complete list of these bindings,
3128 which are obviously more cumbersome to use.  Note that sometimes a
3129 work-around can be better.  For example changing a time stamp is
3130 really only fun with @kbd{S-@key{cursor}} keys.  On a tty you would
3131 rather use @kbd{C-c .}  to re-insert the timestamp.
3133 @page
3134 @multitable @columnfractions 0.15 0.2 0.2
3135 @item @b{Default} @tab @b{Alternative 1} @tab @b{Alternative 2}
3136 @item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab
3137 @item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{@key{Esc} @key{left}}
3138 @item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab
3139 @item @kbd{M-@key{right}}   @tab @kbd{C-c C-x r}           @tab @kbd{@key{Esc} @key{right}}
3140 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab
3141 @item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{@key{Esc} @key{up}}
3142 @item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab
3143 @item @kbd{M-@key{down}}    @tab @kbd{C-c C-x d}           @tab @kbd{@key{Esc} @key{down}}
3144 @item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab
3145 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab
3146 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{@key{Esc} @key{RET}}
3147 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab
3148 @item @kbd{S-@key{left}}    @tab @kbd{C-c C-x @key{left}}  @tab
3149 @item @kbd{S-@key{right}}   @tab @kbd{C-c C-x @key{right}} @tab
3150 @item @kbd{S-@key{up}}      @tab @kbd{C-c C-x @key{up}}    @tab
3151 @item @kbd{S-@key{down}}    @tab @kbd{C-c C-x @key{down}}  @tab
3152 @end multitable
3154 @node FAQ, Interaction, TTY keys, Miscellaneous
3155 @section Frequently asked questions
3156 @cindex FAQ
3158 @enumerate
3159 @item @b{Org-mode seems to be a useful default mode for the various
3160 @file{README} files I have scattered through my directories.  How do I
3161 turn it on for all @file{README} files?}
3162 @example
3163 (add-to-list 'auto-mode-alist '("README$" . org-mode))
3164 @end example
3166 @item @b{All these stars are driving me mad, I just find the Emacs
3167 outlines unreadable. Can't you just put white space and a single star as a
3168 starter for headlines?}@*
3169 See @ref{Clean view}.
3171 @item @b{I would like to have two windows on the same Org-mode
3172 file, but with different outline visibility.  Is that possible?}@*
3173 @cindex @code{make-indirect-buffer}
3174 @cindex indirect buffers
3175 In GNU Emacs, you may use @emph{indirect buffers} which do exactly
3176 this.  See the documentation on the command
3177 @code{make-indirect-buffer}.  In XEmacs, this is currently not
3178 possible because of the different outline implementation.
3180 @item @b{Is there an easy way to insert links to web locations?}@*
3181 @cindex URL, paste into buffer
3182 Sure, just type or paste them into the buffer.  A plain-text URL-like
3183 string is directly interpreted as a link.
3185 @item @b{When I export my TODO list, every TODO item becomes a
3186 separate section.  How do I enforce these items to be exported as an
3187 itemized list?}@*
3188 If you plan to use ASCII or HTML export, make sure things you want to
3189 be exported as item lists are level 4 at least, even if that does mean
3190 there is a level jump.  For example
3192 @example
3193 * Todays top priorities
3194 **** TODO write a letter to xyz
3195 **** TODO Finish the paper
3196 **** Pick up kids at the school
3197 @end example
3199 Alternatively, if you need a specific value for the heading/item
3200 transition in a particular file, use the @samp{+OPTIONS} line to
3201 configure the @samp{H} switch.
3203 @example
3204 +OPTIONS:   H:2; ...
3205 @end example
3207 @item @b{I would like to export only a subtree of my file to HTML.  How?}@*
3208 @cindex exporting a subtree
3209 If you want to export a subtree, mark the subtree as region and then
3210 export.  Marking can be done with @kbd{C-c @@ C-x C-x}, for example.
3212 @item @b{Org-mode takes over the S-cursor keys.  I also want to use
3213 CUA-mode, is there a way to fix this conflict?}@*
3214 Yes, see @ref{Interaction}
3216 @item @b{Is there an easy way to insert an empty table template with a
3217 default number of rows and columns?}@*
3218 @cindex table, empty template
3219 To insert an empty table template, just type @samp{|-} and use
3220 @key{TAB}.  The default size can be changed with the variable
3221 @code{org-table-default-size}.  However, just starting to type the
3222 first line is usually much easier.
3224 @item @b{One of my table columns has started to fill up with
3225 @samp{#ERROR}.  What is going on?}@*
3226 Org-mode tried to compute the column from other fields using a
3227 formula stored in the @samp{#+TBLFMT:} line just below the table, and
3228 the evaluation of the formula fails.  Fix the fields used in the
3229 formula, or fix the formula, or remove it!
3231 @item @b{When I am in the last column of a table and just above a
3232 horizontal line in the table, pressing TAB creates a new table line
3233 @i{before} the horizontal line.  How can I quickly move to the line
3234 @i{below} the horizontal line instead?}@*
3235 Press @key{down} (to get on the separator line) and then @key{TAB}.
3236 Or configure the variable @code{org-table-tab-jumps-over-hlines}.
3238 @item @b{How can I change the indentation of an entire table without
3239 fixing every line by hand?}@*
3240 @cindex indentation, of tables
3241 The indentation of a table is set by the first line.  So just fix the
3242 indentation of the first line and realign with @key{TAB}.
3244 @item @b{Is it possible to include entries from org-mode files into my
3245 emacs diary?}@* 
3246 Since the org-mode agenda is much more powerful and can contain the
3247 diary (@pxref{Calendar/Diary integration}), you should think twice
3248 before deciding to do this.  Inegrating org-mode information into the
3249 diary is, however, possible.  The following steps are necessary:
3250 Autoload the function @command{org-diary} as shown above under
3251 @ref{Installation and Activation}.  You also need to use @emph{fancy
3252 diary display} by setting in @file{.emacs}:
3254 @lisp
3255 (add-hook 'diary-display-hook 'fancy-diary-display)
3256 @end lisp
3258 Then include the following line into your @file{~/diary} file, in
3259 order to get the entries from all files listed in the variable
3260 @code{org-agenda-files}:
3262 @example
3263 &%%(org-diary)
3264 @end example
3265 @noindent
3266 You may also select specific files with
3268 @example
3269 &%%(org-diary) ~/path/to/some/org-file.org
3270 &%%(org-diary) ~/path/to/another/org-file.org
3271 @end example
3273 If you now launch the calendar and press @kbd{d} to display a diary,
3274 the headlines of entries containing a timestamp, date range, schedule,
3275 or deadline referring to the selected date will be listed.  Just like
3276 in Org-mode's agenda view, the diary for @emph{today} contains
3277 additional entries for overdue deadlines and scheduled items.  See
3278 also the documentation of the @command{org-diary} function.
3280 @end enumerate
3283 @node Interaction, Bugs, FAQ, Miscellaneous
3284 @section Interaction with other packages
3285 @cindex packages, interaction with other
3286 Org-mode can cooperate with the following packages:
3288 @table @asis
3289 @cindex @file{org-mouse.el}
3290 @item @file{org-mouse.el} by Piotr Zielinski
3291 This package implements extended mouse functionality for Org-mode.  It
3292 allows to cycle visibility and to edit the document structure with the
3293 mouse.  It also provides a context-sensitive menu that changes depending
3294 on the context of a mouse-click.  Use a search engine to find this
3295 package on the web.
3296 @cindex @file{table.el}
3297 @item @file{table.el} by Takaaki Ota
3298 Org mode cooperates with table.el, see @ref{table.el}.  @file{table.el}
3299 is part of Emacs 22.
3300 @cindex @file{calc.el}
3301 @item @file{calc.el} by Dave Gillespie
3302 Org-mode uses the calc package for implementing spreadsheet
3303 functionality in its tables (@pxref{Table calculations}).  Org-modes
3304 checks for the availability of calc by looking for the function
3305 @code{calc-eval} which should be autoloaded in your setup if calc has
3306 been installed properly.  As of Emacs 22, calc is part of the Emacs
3307 distribution.  Another possibility for interaction between the two
3308 packages is using calc for embedded calculations. @xref{Embedded Mode,
3309 , Embedded Mode, calc, GNU Emacs Calc Manual}.
3310 @cindex @file{constants.el}
3311 @item @file{constants.el} by Carsten Dominik
3312 In a table formula (@pxref{Table calculations}), it is possible to use
3313 names for natural constants or units.  Instead of defining you own
3314 constants in the variable @code{org-table-formula-constants}, install
3315 the @file{constants} package which defines a large number of constants
3316 and units, and lets you use unit prefixes like @samp{M} for
3317 @samp{Mega} etc.  You will need version 2.0 of this package, available
3318 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org-mode checks for
3319 the function @code{constants-get}, which has to be autoloaded in your
3320 setup.  See the installation instructions in the file
3321 @file{constants.el}.
3322 @cindex @file{remember.el}
3323 @cindex @file{CUA.el}
3324 @item @file{CUA.el} by Kim. F. Storm
3325 Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys
3326 used by CUA-mode (as well as pc-select-mode and s-region-mode) to
3327 select and extend the region.  If you want to use one of these
3328 packages along with Org-mode, configure the variable
3329 @code{org-CUA-compatible}.  When set, Org-mode will move the following
3330 keybindings in org-mode files, and in the agenda buffer (but not
3331 during date selection).
3332 @example
3333 S-UP    -> M-p             S-DOWN  -> M-n
3334 S-LEFT  -> M--             S-RIGHT -> M-+
3335 S-RET   -> C-S-RET
3336 @end example
3337 Yes, these are unfortunately more difficult to remember.  If you want
3338 to have other replacement keys, look at the variable
3339 @code{org-disputed-keys}.
3340 @item @file{remember.el} by John Wiegley
3341 Org mode cooperates with remember, see @ref{Remember}.
3342 @file{remember.el} is not part of Emacs, find it on the web.
3343 @cindex @file{planner.el}
3344 @item @file{planner.el} by John Wiegley
3345 Planner is another tool to plan work and keep track of tasks.  Planner
3346 uses a multi-file approach with project pages and day pages.  Is based
3347 on Emacs-Wiki.  If Planner is your primary tool, it can be useful to
3348 display the agenda entries resulting from org files in day-pages of
3349 the planner.  This can be done through the diary of the calendar:
3350 Integrate org files into the diary as described above, and then turn
3351 on the diary support of planner.  Planner is not part of Emacs, find it
3352 on the web.
3353 @end table
3355 @node Bugs, Acknowledgments, Interaction, Miscellaneous
3356 @section Bugs
3357 @cindex bugs
3359 Here is a list of things which should work differently, but which I
3360 have found too hard to fix.
3362 @itemize @bullet
3363 @item
3364 Text in an entry protected with the @samp{QUOTE} keyword should not
3365 autowrap.
3366 @item
3367 When the application called by @kbd{C-c C-o} to open a file link fails
3368 (for example because the application does not exits or refuses to open
3369 the file), it does so silently.  No error message is displayed.
3370 @item
3371 Plain list items should be able to hold a TODO item.  Unfortunately this
3372 has so many technical problems that I will only consider this change for
3373 the next major release (5.0).
3374 @item
3375 The remote-editing commands in the agenda buffer cannot be undone with
3376 @code{undo} called from within the agenda buffer.  But you can go to
3377 the corresponding buffer (using @key{TAB} or @key{RET} and execute
3378 @code{undo} there.
3379 @item
3380 Recalculating a table line applies the formulas from left to right.
3381 If a formula uses @emph{calculated} fields further down the row,
3382 multiple recalculation may be needed to get all fields consistent.
3383 @item
3384 Under XEmacs, if Org-mode entries are included into the diary, it is
3385 not possible to jump back from the diary to the org file.  Apparently,
3386 the text properties are lost when the fancy-diary-display is used.
3387 However, from Org-mode's timeline and agenda buffers (created with
3388 @kbd{C-c C-r} and @kbd{C-c a}), things do work correctly.
3389 @item
3390 You can only make a single word boldface or italic.  To emphasize
3391 several words in a row, each much have the emphasize markers, like in
3392 @samp{*three* *bold* *words*}.
3393 @item
3394 The exporters work well, but could be made more efficient.
3395 @end itemize
3397 @page
3399 @node Acknowledgments,  , Bugs, Miscellaneous
3400 @section Acknowledgments
3401 @cindex acknowledgments
3402 @cindex thanks
3404 Org-mode was written by Carsten Dominik, who still maintains it at the
3405 Org-mode homepage @uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
3406 The following people (in alphabetic order) have helped the development
3407 along with ideas, suggestions and patches.  Many thanks to all of you,
3408 Org-mode would not be what it is without your input.
3410 @itemize @bullet
3411 @item
3412 Thomas Baumann contributed the code for links to the MH-E email system.
3413 @item
3414 Pavel Chalmoviansky reported bugs and suggested improvements
3415 related to the agenda treatment of items with specified time.
3416 @item
3417 Sacha Chua, the current maintainer of Planner, suggested to copy
3418 linking code from Planner (I took code for RMAIL and Wanderlust).
3419 @item
3420 Christian Egli converted the documentation into TeXInfo format and
3421 patched basic CSS formatting support into the HTML exporter.  He also
3422 inspired the agenda by showing me his plans for a multifile summary.
3423 @item
3424 Kai Grossjohann pointed out that a number of key bindings in Org-mode
3425 conflict with other packages.
3426 @item
3427 Stefan Monnier provided a patch with lots of little fixes to keep the
3428 Emacs-Lisp compiler happy.
3429 @item
3430 Tim O'Callaghan suggested in-file links, search options for
3431 general file links, and TAGS.
3432 @item
3433 Oliver Oppitz suggested multi-state TODO items.
3434 @item
3435 Pete Phillips helped the development of the TAGS feature with beta
3436 testing and suggestions.
3437 @item
3438 Matthias Rempe (Oelde) provided ideas, a patch introducing Windows
3439 NT/2000 support, and quality control.
3440 @item
3441 Kevin Rogers contributed code to access VM files on remote hosts.
3442 @item
3443 Philip Rooke created the Org-mode reference card.  He also helped with
3444 beta testing and contributed a number of very useful ideas.
3445 @item
3446 Christian Schlauer proposed angular brackets around links, among other
3447 things.
3448 @item
3449 Linking to VM/BBDB/GNUS was inspired by Tom Shannon's
3450 @file{organizer-mode.el}.
3451 @item
3452 Juergen Vollmer contributed code generating the table of contents
3453 in HTML output, and other export improvements.
3454 @item
3455 David Wainberg suggested the archiving mechanism and shaped the
3456 internal link system with many suggestions and ideas.
3457 @item
3458 Scheduling TODO items was inspired by John Wiegley's @file{planner.el}.
3459 @item
3460 Carsten Wimmer suggested some changes and helped fix a bug in linking
3461 to GNUS.
3462 @item 
3463 Roland Winkler pointed out that additional keybindings are needed to
3464 use Org-mode on a tty.
3465 @item
3466 Piotr Zielinski wrote @file{org-mouse.el} and pointed out to me that
3467 Emacs 22 can be made to follow links using mouse-1 clicks.
3468 @c @item
3469 @c Nic Ferrier and Christian Egli implemented XML export.
3470 @end itemize
3472 @node Index, Key Index, Miscellaneous, Top
3473 @chapter Index
3475 @printindex cp
3477 @node Key Index,  , Index, Top
3478 @chapter Key Index
3480 @printindex ky
3482 @bye
3484 @ignore
3485    arch-tag: 7893d1fe-cc57-4d13-b5e5-f494a1bcc7ac
3486 @end ignore