Release 6.12a
[org-mode.git] / doc / org.texi
blob9d5d43a7df7c5699b4789d6619f9a178791a82d4
1 \input texinfo
2 @c %**start of header
3 @setfilename ../../info/org
4 @settitle The Org Manual
6 @set VERSION 6.12a
7 @set DATE November 2008
9 @dircategory Emacs
10 @direntry
11 * Org Mode: (org).      Outline-based notes management and organizer
12 @end direntry
14 @c Version and Contact Info
15 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
16 @set AUTHOR Carsten Dominik
17 @set MAINTAINER Carsten Dominik
18 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
19 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
20 @c %**end of header
21 @finalout
23 @c Macro definitions
25 @c Subheadings inside a table.
26 @macro tsubheading{text}
27 @ifinfo
28 @subsubheading \text\
29 @end ifinfo
30 @ifnotinfo
31 @item @b{\text\}
32 @end ifnotinfo
33 @end macro
35 @copying
36 This manual is for Org (version @value{VERSION}).
38 Copyright @copyright{} 2004, 2005, 2006, 2007, 2008 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.2 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 license
46 is included in the section entitled ``GNU Free Documentation License.''
48 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
49 modify this GNU manual.  Buying copies from the FSF supports it in
50 developing GNU and promoting software freedom.''
52 This document is part of a collection distributed under the GNU Free
53 Documentation License.  If you want to distribute this document
54 separately from the collection, you can do so by adding a copy of the
55 license to the document, as described in section 6 of the license.
56 @end quotation
57 @end copying
59 @titlepage
60 @title The Org Manual
62 @subtitle Release @value{VERSION}
63 @author by Carsten Dominik
65 @c The following two commands start the copyright page.
66 @page
67 @vskip 0pt plus 1filll
68 @insertcopying
69 @end titlepage
71 @c Output the table of contents at the beginning.
72 @contents
74 @ifnottex
75 @node Top, Introduction, (dir), (dir)
76 @top Org Mode Manual
78 @insertcopying
79 @end ifnottex
81 @menu
82 * Introduction::                Getting started
83 * Document Structure::          A tree works like your brain
84 * Tables::                      Pure magic for quick formatting
85 * Hyperlinks::                  Notes in context
86 * TODO Items::                  Every tree branch can be a TODO item
87 * Tags::                        Tagging headlines and matching sets of tags
88 * Properties and Columns::      Storing information about an entry
89 * Dates and Times::             Making items useful for planning
90 * Capture::                     Creating tasks and attaching files
91 * Agenda Views::                Collecting information into views
92 * Embedded LaTeX::              LaTeX fragments and formulas
93 * Exporting::                   Sharing and publishing of notes
94 * Publishing::                  Create a web site of linked Org files
95 * Miscellaneous::               All the rest which did not fit elsewhere
96 * Extensions::                  Add-ons for Org mode
97 * Hacking::                     How hack your way around
98 * History and Acknowledgments::  How Org came into being
99 * Main Index::                  An index of Org's concepts and features
100 * Key Index::                   Key bindings and where they are described
102 @detailmenu
103  --- The Detailed Node Listing ---
105 Introduction
107 * Summary::                     Brief summary of what Org does
108 * Installation::                How to install a downloaded version of Org
109 * Activation::                  How to activate Org for certain buffers
110 * Feedback::                    Bug reports, ideas, patches etc.
111 * Conventions::                 Type-setting conventions in the manual
113 Document Structure
115 * Outlines::                    Org is based on Outline mode
116 * Headlines::                   How to typeset Org tree headlines
117 * Visibility cycling::          Show and hide, much simplified
118 * Motion::                      Jumping to other headlines
119 * Structure editing::           Changing sequence and level of headlines
120 * Archiving::                   Move done task trees to a different place
121 * Sparse trees::                Matches embedded in context
122 * Plain lists::                 Additional structure within an entry
123 * Drawers::                     Tucking stuff away
124 * Orgstruct mode::              Structure editing outside Org
126 Archiving
128 * ARCHIVE tag::                 Marking a tree as inactive
129 * Moving subtrees::             Moving a tree to an archive file
131 Tables
133 * Built-in table editor::       Simple tables
134 * Narrow columns::              Stop wasting space in tables
135 * Column groups::               Grouping to trigger vertical lines
136 * Orgtbl mode::                 The table editor as minor mode
137 * The spreadsheet::             The table editor has spreadsheet capabilities
138 * Org Plot::                    Plotting from org tables
140 The spreadsheet
142 * References::                  How to refer to another field or range
143 * Formula syntax for Calc::     Using Calc to compute stuff
144 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
145 * Field formulas::              Formulas valid for a single field
146 * Column formulas::             Formulas valid for an entire column
147 * Editing and debugging formulas::  Fixing formulas
148 * Updating the table::          Recomputing all dependent fields
149 * Advanced features::           Field names, parameters and automatic recalc
151 Hyperlinks
153 * Link format::                 How links in Org are formatted
154 * Internal links::              Links to other places in the current file
155 * External links::              URL-like links to the world
156 * Handling links::              Creating, inserting and following
157 * Using links outside Org::     Linking from my C source code?
158 * Link abbreviations::          Shortcuts for writing complex links
159 * Search options::              Linking to a specific location
160 * Custom searches::             When the default search is not enough
162 Internal links
164 * Radio targets::               Make targets trigger links in plain text
166 TODO Items
168 * TODO basics::                 Marking and displaying TODO entries
169 * TODO extensions::             Workflow and assignments
170 * Progress logging::            Dates and notes for progress
171 * Priorities::                  Some things are more important than others
172 * Breaking down tasks::         Splitting a task into manageable pieces
173 * Checkboxes::                  Tick-off lists
175 Extended use of TODO keywords
177 * Workflow states::             From TODO to DONE in steps
178 * TODO types::                  I do this, Fred does the rest
179 * Multiple sets in one file::   Mixing it all, and still finding your way
180 * Fast access to TODO states::  Single letter selection of a state
181 * Per-file keywords::           Different files, different requirements
182 * Faces for TODO keywords::     Highlighting states
184 Progress logging
186 * Closing items::               When was this entry marked DONE?
187 * Tracking TODO state changes::  When did the status change?
189 Tags
191 * Tag inheritance::             Tags use the tree structure of the outline
192 * Setting tags::                How to assign tags to a headline
193 * Tag searches::                Searching for combinations of tags
195 Properties and Columns
197 * Property syntax::             How properties are spelled out
198 * Special properties::          Access to other Org mode features
199 * Property searches::           Matching property values
200 * Property inheritance::        Passing values down the tree
201 * Column view::                 Tabular viewing and editing
202 * Property API::                Properties for Lisp programmers
204 Column view
206 * Defining columns::            The COLUMNS format property
207 * Using column view::           How to create and use column view
208 * Capturing column view::       A dynamic block for column view
210 Defining columns
212 * Scope of column definitions::  Where defined, where valid?
213 * Column attributes::           Appearance and content of a column
215 Dates and Times
217 * Timestamps::                  Assigning a time to a tree entry
218 * Creating timestamps::         Commands which insert timestamps
219 * Deadlines and scheduling::    Planning your work
220 * Clocking work time::          Tracking how long you spend on a task
221 * Effort estimates::            Planning work effort in advance
223 Creating timestamps
225 * The date/time prompt::        How Org mode helps you entering date and time
226 * Custom time format::          Making dates look different
228 Deadlines and scheduling
230 * Inserting deadline/schedule::  Planning items
231 * Repeated tasks::              Items that show up again and again
233 Capture
235 * Remember::                    Capture new tasks/ideas with little interruption
236 * Attachments::                 Add files to tasks.
238 Remember
240 * Setting up Remember::         Some code for .emacs to get things going
241 * Remember templates::          Define the outline of different note types
242 * Storing notes::               Directly get the note to where it belongs
243 * Refiling notes::              Moving a note or task to a project
245 Agenda Views
247 * Agenda files::                Files being searched for agenda information
248 * Agenda dispatcher::           Keyboard access to agenda views
249 * Built-in agenda views::       What is available out of the box?
250 * Presentation and sorting::    How agenda items are prepared for display
251 * Agenda commands::             Remote editing of Org trees
252 * Custom agenda views::         Defining special searches and views
253 * Agenda column view::          Using column view for collected entries
255 The built-in agenda views
257 * Weekly/daily agenda::         The calendar page with current tasks
258 * Global TODO list::            All unfinished action items
259 * Matching tags and properties::  Structured information with fine-tuned search
260 * Timeline::                    Time-sorted view for single file
261 * Keyword search::              Finding entries by keyword
262 * Stuck projects::              Find projects you need to review
264 Presentation and sorting
266 * Categories::                  Not all tasks are equal
267 * Time-of-day specifications::  How the agenda knows the time
268 * Sorting of agenda items::     The order of things
270 Custom agenda views
272 * Storing searches::            Type once, use often
273 * Block agenda::                All the stuff you need in a single buffer
274 * Setting Options::             Changing the rules
275 * Exporting Agenda Views::      Writing agendas to files
276 * Using the agenda elsewhere::  Using agenda information in other programs
278 Embedded LaTeX
280 * Math symbols::                TeX macros for symbols and Greek letters
281 * Subscripts and superscripts::  Simple syntax for raising/lowering text
282 * LaTeX fragments::             Complex formulas made easy
283 * Processing LaTeX fragments::  Previewing LaTeX processing
284 * CDLaTeX mode::                Speed up entering of formulas
286 Exporting
288 * Markup rules::                Which structures are recognized?
289 * Selective export::            Using tags to select and exclude trees
290 * Export options::              Per-file export settings
291 * The export dispatcher::       How to access exporter commands
292 * ASCII export::                Exporting to plain ASCII
293 * HTML export::                 Exporting to HTML
294 * LaTeX and PDF export::        Exporting to LaTeX, and processing to PDF
295 * XOXO export::                 Exporting to XOXO
296 * iCalendar export::            Exporting in iCalendar format
298 Markup rules
300 * Document title::              How the document title is determined
301 * Headings and sections::       The main structure of the exported document
302 * Table of contents::           If, where, how to create a table of contents
303 * Initial text::                Text before the first headline
304 * Lists::                       Plain lists are exported
305 * Paragraphs::                  What determines beginning and ending
306 * Literal examples::            Source code and other examples
307 * Include files::               Include the contents of a file during export
308 * Tables exported::             Tables are exported richly
309 * Footnotes::                   Numbers like [1]
310 * Emphasis and monospace::      To bold or not to bold
311 * TeX macros and LaTeX fragments::  Create special, rich export.
312 * Horizontal rules::            A line across the page
313 * Comment lines::               Some lines will not be exported
315 HTML export
317 * HTML Export commands::        How to invoke HTML export
318 * Quoting HTML tags::           Using direct HTML in Org mode
319 * Links::                       Transformation of links for HTML
320 * Images::                      How to include images
321 * CSS support::                 Changing the appearance of the output
322 * Javascript support::          Info and Folding in a web browser
324 LaTeX and PDF export
326 * LaTeX/PDF export commands::   
327 * Quoting LaTeX code::          Incorporating literal LaTeX code
328 * Sectioning structure::        Changing sectioning in LaTeX output
330 Publishing
332 * Configuration::               Defining projects
333 * Sample configuration::        Example projects
334 * Triggering publication::      Publication commands
336 Configuration
338 * Project alist::               The central configuration variable
339 * Sources and destinations::    From here to there
340 * Selecting files::             What files are part of the project?
341 * Publishing action::           Setting the function doing the publishing
342 * Publishing options::          Tweaking HTML export
343 * Publishing links::            Which links keep working after publishing?
344 * Project page index::          Publishing a list of project files
346 Sample configuration
348 * Simple example::              One-component publishing
349 * Complex example::             A multi-component publishing example
351 Miscellaneous
353 * Completion::                  M-TAB knows what you need
354 * Customization::               Adapting Org to your taste
355 * In-buffer settings::          Overview of the #+KEYWORDS
356 * The very busy C-c C-c key::   When in doubt, press C-c C-c
357 * Clean view::                  Getting rid of leading stars in the outline
358 * TTY keys::                    Using Org on a tty
359 * Interaction::                 Other Emacs packages
360 * Bugs::                        Things which do not work perfectly
362 Interaction with other packages
364 * Cooperation::                 Packages Org cooperates with
365 * Conflicts::                   Packages that lead to conflicts
367 Extensions
369 * Extensions in the contrib directory::  These come with the Org distro
370 * Other extensions::            These you have to find on the web.
372 Hacking
374 * Adding hyperlink types::      New custom link types
375 * Tables in arbitrary syntax::  Orgtbl for LaTeX and other programs
376 * Dynamic blocks::              Automatically filled blocks
377 * Special agenda views::        Customized views
378 * Using the property API::      Writing programs that use entry properties
379 * Using the mapping API::       Mapping over all or selected entries
381 Tables and lists in arbitrary syntax
383 * Radio tables::                Sending and receiving
384 * A LaTeX example::             Step by step, almost a tutorial
385 * Translator functions::        Copy and modify
386 * Radio lists::                 Doing the same for lists
388 @end detailmenu
389 @end menu
391 @node Introduction, Document Structure, Top, Top
392 @chapter Introduction
393 @cindex introduction
395 @menu
396 * Summary::                     Brief summary of what Org does
397 * Installation::                How to install a downloaded version of Org
398 * Activation::                  How to activate Org for certain buffers
399 * Feedback::                    Bug reports, ideas, patches etc.
400 * Conventions::                 Type-setting conventions in the manual
401 @end menu
403 @node Summary, Installation, Introduction, Introduction
404 @section Summary
405 @cindex summary
407 Org is a mode for keeping notes, maintaining TODO lists, and doing
408 project planning with a fast and effective plain-text system.
410 Org develops organizational tasks around NOTES files that contain
411 lists or information about projects as plain text.  Org is
412 implemented on top of Outline mode, which makes it possible to keep the
413 content of large files well structured.  Visibility cycling and
414 structure editing help to work with the tree.  Tables are easily created
415 with a built-in table editor.  Org supports TODO items, deadlines,
416 time stamps, and scheduling.  It dynamically compiles entries into an
417 agenda that utilizes and smoothly integrates much of the Emacs calendar
418 and diary.  Plain text URL-like links connect to websites, emails,
419 Usenet messages, BBDB entries, and any files related to the projects.
420 For printing and sharing of notes, an Org file can be exported as a
421 structured ASCII file, as HTML, or (TODO and agenda items only) as an
422 iCalendar file.  It can also serve as a publishing tool for a set of
423 linked web pages.
425 An important design aspect that distinguishes Org from for example
426 Planner/Muse is that it encourages to store every piece of information
427 only once.  In Planner, you have project pages, day pages and possibly
428 other files, duplicating some information such as tasks.  In Org,
429 you only have notes files.  In your notes you mark entries as tasks,
430 label them with tags and timestamps.  All necessary lists like a
431 schedule for the day, the agenda for a meeting, tasks lists selected by
432 tags etc are created dynamically when you need them.
434 Org keeps simple things simple.  When first fired up, it should
435 feel like a straightforward, easy to use outliner.  Complexity is not
436 imposed, but a large amount of functionality is available when you need
437 it.  Org is a toolbox and can be used in different ways, for
438 example as:
440 @example
441 @r{@bullet{} outline extension with visibility cycling and structure editing}
442 @r{@bullet{} ASCII system and table editor for taking structured notes}
443 @r{@bullet{} ASCII table editor with spreadsheet-like capabilities}
444 @r{@bullet{} TODO list editor}
445 @r{@bullet{} full agenda and planner with deadlines and work scheduling}
446 @r{@bullet{} environment to implement David Allen's GTD system}
447 @r{@bullet{} a basic database application}
448 @r{@bullet{} simple hypertext system, with HTML and LaTeX export}
449 @r{@bullet{} publishing tool to create a set of interlinked webpages}
450 @end example
452 Org's automatic, context sensitive table editor with spreadsheet
453 capabilities can be integrated into any major mode by activating the
454 minor Orgtbl mode.  Using a translation step, it can be used to maintain
455 tables in arbitrary file types, for example in La@TeX{}.  The structure
456 editing and list creation capabilities can be used outside Org with
457 the minor Orgstruct mode.
459 @cindex FAQ
460 There is a website for Org which provides links to the newest
461 version of Org, as well as additional information, frequently asked
462 questions (FAQ), links to tutorials etc.  This page is located at
463 @uref{http://orgmode.org}.
465 @page
468 @node Installation, Activation, Summary, Introduction
469 @section Installation
470 @cindex installation
471 @cindex XEmacs
473 @b{Important:} @i{If Org is part of the Emacs distribution or an
474 XEmacs package, please skip this section and go directly to
475 @ref{Activation}.}
477 If you have downloaded Org from the Web, either as a distribution @file{.zip}
478 or @file{.tar} file, or as a GIT archive, you must take the following steps
479 to install it: Go into the unpacked Org distribution directory and edit the
480 top section of the file @file{Makefile}.  You must set the name of the Emacs
481 binary (likely either @file{emacs} or @file{xemacs}), and the paths to the
482 directories where local Lisp and Info files are kept.  If you don't have
483 access to the system-wide directories, you can simply run Org directly from
484 the distribution directory by adding the @file{lisp} subdirectory to the
485 Emacs load path.  To do this, add the following line to @file{.emacs}:
487 @example
488 (setq load-path (cons "~/path/to/orgdir/lisp" load-path))
489 @end example
491 @noindent
492 If you plan to use code from the @file{contrib} subdirectory, do a similar
493 step for this directory:
495 @example
496 (setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
497 @end example
499 @b{XEmacs users now need to install the file @file{noutline.el} from
500 the @file{xemacs} sub-directory of the Org distribution.  Use the
501 command:}
503 @example
504 @b{make install-noutline}
505 @end example
507 @noindent Now byte-compile the Lisp files with the shell command:
509 @example
510 make
511 @end example
513 @noindent If you are running Org from the distribution directory, this is
514 all.  If you want to install into the system directories, use
516 @example
517 make install
518 make install-info
519 @end example
521 @noindent Then add to @file{.emacs}:
523 @lisp
524 ;; This line only if Org is not part of the X/Emacs distribution.
525 (require 'org-install)
526 @end lisp
529 @node Activation, Feedback, Installation, Introduction
530 @section Activation
531 @cindex activation
532 @cindex autoload
533 @cindex global key bindings
534 @cindex key bindings, global
536 @iftex
537 @b{Important:} @i{If you use copy-and-paste to copy lisp code from the
538 PDF documentation as viewed by some PDF viewers to your .emacs file, the
539 single quote character comes out incorrectly and the code will not work.
540 You need to fix the single quotes by hand, or copy from Info
541 documentation.}
542 @end iftex
544 Add the following lines to your @file{.emacs} file.  The last three lines
545 define @emph{global} keys for the commands @command{org-store-link},
546 @command{org-agenda}, and @command{org-iswitchb} - please choose suitable
547 keys yourself.
549 @lisp
550 ;; The following lines are always needed.  Choose your own keys.
551 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
552 (global-set-key "\C-cl" 'org-store-link)
553 (global-set-key "\C-ca" 'org-agenda)
554 (global-set-key "\C-cb" 'org-iswitchb)
555 @end lisp
557 Furthermore, you must activate @code{font-lock-mode} in Org
558 buffers, because significant functionality depends on font-locking being
559 active.  You can do this with either one of the following two lines
560 (XEmacs user must use the second option):
561 @lisp
562 (global-font-lock-mode 1)                     ; for all buffers
563 (add-hook 'org-mode-hook 'turn-on-font-lock)  ; Org buffers only
564 @end lisp
566 @cindex Org mode, turning on
567 With this setup, all files with extension @samp{.org} will be put
568 into Org mode.  As an alternative, make the first line of a file look
569 like this:
571 @example
572 MY PROJECTS    -*- mode: org; -*-
573 @end example
575 @noindent which will select Org mode for this buffer no matter what
576 the file's name is.  See also the variable
577 @code{org-insert-mode-line-in-empty-file}.
579 @node Feedback, Conventions, Activation, Introduction
580 @section Feedback
581 @cindex feedback
582 @cindex bug reports
583 @cindex maintainer
584 @cindex author
586 If you find problems with Org, or if you have questions, remarks, or ideas
587 about it, please mail to the Org mailing list @code{emacs-orgmode@@gnu.org}.
588 If you are not a member of the mailing list, your mail will be reviewed by a
589 moderator and then passed through to the list.
591 For bug reports, please provide as much information as possible,
592 including the version information of Emacs (@kbd{C-h v emacs-version
593 @key{RET}}) and Org (@kbd{C-h v org-version @key{RET}}), as well as
594 the Org related setup in @file{.emacs}.  If an error occurs, a
595 backtrace can be very useful (see below on how to create one).  Often a
596 small example file helps, along with clear information about:
598 @enumerate
599 @item What exactly did you do?
600 @item What did you expect to happen?
601 @item What happened instead?
602 @end enumerate
603 @noindent Thank you for helping to improve this mode.
605 @subsubheading How to create a useful backtrace
607 @cindex backtrace of an error
608 If working with Org produces an error with a message you don't
609 understand, you may have hit a bug.  The best way to report this is by
610 providing, in addition to what was mentioned above, a @emph{Backtrace}.
611 This is information from the built-in debugger about where and how the
612 error occurred.  Here is how to produce a useful backtrace:
614 @enumerate
615 @item
616 Start a fresh Emacs or XEmacs, and make sure that it will load the
617 original Lisp code in @file{org.el} instead of the compiled version in
618 @file{org.elc}.  The backtrace contains much more information if it is
619 produced with uncompiled code.  To do this, either rename @file{org.elc}
620 to something else before starting Emacs, or ask Emacs explicitly to load
621 @file{org.el} by using the command line
622 @example
623 emacs -l /path/to/org.el
624 @end example
625 @item
626 Go to the @code{Options} menu and select @code{Enter Debugger on Error}
627 (XEmacs has this option in the @code{Troubleshooting} sub-menu).
628 @item
629 Do whatever you have to do to hit the error.  Don't forget to
630 document the steps you take.
631 @item
632 When you hit the error, a @file{*Backtrace*} buffer will appear on the
633 screen.  Save this buffer to a file (for example using @kbd{C-x C-w}) and
634 attach it to your bug report.
635 @end enumerate
637 @node Conventions,  , Feedback, Introduction
638 @section Typesetting conventions used in this manual
640 Org uses three types of keywords: TODO keywords, tags, and property
641 names.  In this manual we use the following conventions:
643 @table @code
644 @item TODO
645 @itemx WAITING
646 TODO keywords are written with all capitals, even if they are
647 user-defined.
648 @item boss
649 @itemx ARCHIVE
650 User-defined tags are written in lowercase; built-in tags with special
651 meaning are written with all capitals.
652 @item Release
653 @itemx PRIORITY
654 User-defined properties are capitalized; built-in properties with
655 special meaning are written with all capitals.
656 @end table
658 @node Document Structure, Tables, Introduction, Top
659 @chapter Document Structure
660 @cindex document structure
661 @cindex structure of document
663 Org is based on outline mode and provides flexible commands to
664 edit the structure of the document.
666 @menu
667 * Outlines::                    Org is based on Outline mode
668 * Headlines::                   How to typeset Org tree headlines
669 * Visibility cycling::          Show and hide, much simplified
670 * Motion::                      Jumping to other headlines
671 * Structure editing::           Changing sequence and level of headlines
672 * Archiving::                   Move done task trees to a different place
673 * Sparse trees::                Matches embedded in context
674 * Plain lists::                 Additional structure within an entry
675 * Drawers::                     Tucking stuff away
676 * Orgstruct mode::              Structure editing outside Org
677 @end menu
679 @node Outlines, Headlines, Document Structure, Document Structure
680 @section Outlines
681 @cindex outlines
682 @cindex Outline mode
684 Org is implemented on top of Outline mode.  Outlines allow a
685 document to be organized in a hierarchical structure, which (at least
686 for me) is the best representation of notes and thoughts.  An overview
687 of this structure is achieved by folding (hiding) large parts of the
688 document to show only the general document structure and the parts
689 currently being worked on.  Org greatly simplifies the use of
690 outlines by compressing the entire show/hide functionality into a single
691 command @command{org-cycle}, which is bound to the @key{TAB} key.
693 @node Headlines, Visibility cycling, Outlines, Document Structure
694 @section Headlines
695 @cindex headlines
696 @cindex outline tree
698 Headlines define the structure of an outline tree.  The headlines in
699 Org start with one or more stars, on the left margin@footnote{See
700 the variable @code{org-special-ctrl-a/e} to configure special behavior
701 of @kbd{C-a} and @kbd{C-e} in headlines.}.  For example:
703 @example
704 * Top level headline
705 ** Second level
706 *** 3rd level
707     some text
708 *** 3rd level
709     more text
711 * Another top level headline
712 @end example
714 @noindent Some people find the many stars too noisy and would prefer an
715 outline that has whitespace followed by a single star as headline
716 starters.  @ref{Clean view} describes a setup to realize this.
718 An empty line after the end of a subtree is considered part of it and
719 will be hidden when the subtree is folded.  However, if you leave at
720 least two empty lines, one empty line will remain visible after folding
721 the subtree, in order to structure the collapsed view.  See the
722 variable @code{org-cycle-separator-lines} to modify this behavior.
724 @node Visibility cycling, Motion, Headlines, Document Structure
725 @section Visibility cycling
726 @cindex cycling, visibility
727 @cindex visibility cycling
728 @cindex trees, visibility
729 @cindex show hidden text
730 @cindex hide text
732 Outlines make it possible to hide parts of the text in the buffer.
733 Org uses just two commands, bound to @key{TAB} and
734 @kbd{S-@key{TAB}} to change the visibility in the buffer.
736 @cindex subtree visibility states
737 @cindex subtree cycling
738 @cindex folded, subtree visibility state
739 @cindex children, subtree visibility state
740 @cindex subtree, subtree visibility state
741 @table @kbd
742 @kindex @key{TAB}
743 @item @key{TAB}
744 @emph{Subtree cycling}: Rotate current subtree among the states
746 @example
747 ,-> FOLDED -> CHILDREN -> SUBTREE --.
748 '-----------------------------------'
749 @end example
751 The cursor must be on a headline for this to work@footnote{see, however,
752 the option @code{org-cycle-emulate-tab}.}.  When the cursor is at the
753 beginning of the buffer and the first line is not a headline, then
754 @key{TAB} actually runs global cycling (see below)@footnote{see the
755 option @code{org-cycle-global-at-bob}.}.  Also when called with a prefix
756 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
758 @cindex global visibility states
759 @cindex global cycling
760 @cindex overview, global visibility state
761 @cindex contents, global visibility state
762 @cindex show all, global visibility state
763 @kindex S-@key{TAB}
764 @item S-@key{TAB}
765 @itemx C-u @key{TAB}
766 @emph{Global cycling}: Rotate the entire buffer among the states
768 @example
769 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
770 '--------------------------------------'
771 @end example
773 When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
774 CONTENTS view up to headlines of level N will be shown.  Note that inside
775 tables, @kbd{S-@key{TAB}} jumps to the previous field.
777 @cindex show all, command
778 @kindex C-u C-u C-u @key{TAB}
779 @item C-u C-u C-u @key{TAB}
780 Show all, including drawers.
781 @kindex C-c C-r
782 @item C-c C-r
783 Reveal context around point, showing the current entry, the following heading
784 and the hierarchy above.  Useful for working near a location that has been
785 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
786 (@pxref{Agenda commands}).  With a prefix argument show, on each
787 level, all sibling headings.
788 @kindex C-c C-x b
789 @item C-c C-x b
790 Show the current subtree in an indirect buffer@footnote{The indirect
791 buffer
792 @ifinfo
793 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
794 @end ifinfo
795 @ifnotinfo
796 (see the Emacs manual for more information about indirect buffers)
797 @end ifnotinfo
798 will contain the entire buffer, but will be narrowed to the current
799 tree.  Editing the indirect buffer will also change the original buffer,
800 but without affecting visibility in that buffer.}.  With a numeric
801 prefix argument N, go up to level N and then take that tree.  If N is
802 negative then go up that many levels.  With a @kbd{C-u} prefix, do not remove
803 the previously used indirect buffer.
804 @end table
806 When Emacs first visits an Org file, the global state is set to
807 OVERVIEW, i.e. only the top level headlines are visible.  This can be
808 configured through the variable @code{org-startup-folded}, or on a
809 per-file basis by adding one of the following lines anywhere in the
810 buffer:
812 @example
813 #+STARTUP: overview
814 #+STARTUP: content
815 #+STARTUP: showall
816 @end example
818 @noindent
819 Forthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
820 and Columns}) will get their visibility adapted accordingly.  Allowed values
821 for this property are @code{folded}, @code{children}, @code{content}, and
822 @code{all}.
823 @table @kbd
824 @kindex C-u C-u @key{TAB}
825 @item C-u C-u @key{TAB}
826 Switch back to the startup visibility of the buffer, i.e. whatever is
827 requested by startup options and @samp{VISIBILITY} properties in individual
828 entries.
829 @end table
831 @node Motion, Structure editing, Visibility cycling, Document Structure
832 @section Motion
833 @cindex motion, between headlines
834 @cindex jumping, to headlines
835 @cindex headline navigation
836 The following commands jump to other headlines in the buffer.
838 @table @kbd
839 @kindex C-c C-n
840 @item C-c C-n
841 Next heading.
842 @kindex C-c C-p
843 @item C-c C-p
844 Previous heading.
845 @kindex C-c C-f
846 @item C-c C-f
847 Next heading same level.
848 @kindex C-c C-b
849 @item C-c C-b
850 Previous heading same level.
851 @kindex C-c C-u
852 @item C-c C-u
853 Backward to higher level heading.
854 @kindex C-c C-j
855 @item C-c C-j
856 Jump to a different place without changing the current outline
857 visibility.  Shows the document structure in a temporary buffer, where
858 you can use the following keys to find your destination:
859 @example
860 @key{TAB}         @r{Cycle visibility.}
861 @key{down} / @key{up}   @r{Next/previous visible headline.}
862 @key{RET}         @r{Select this location.}
863 @kbd{/}           @r{Do a Sparse-tree search}
864 @r{The following keys work if you turn off @code{org-goto-auto-isearch}}
865 n / p        @r{Next/previous visible headline.}
866 f / b        @r{Next/previous headline same level.}
867 u            @r{One level up.}
868 0-9          @r{Digit argument.}
869 q            @r{Quit}
870 @end example
871 @end table
873 @node Structure editing, Archiving, Motion, Document Structure
874 @section Structure editing
875 @cindex structure editing
876 @cindex headline, promotion and demotion
877 @cindex promotion, of subtrees
878 @cindex demotion, of subtrees
879 @cindex subtree, cut and paste
880 @cindex pasting, of subtrees
881 @cindex cutting, of subtrees
882 @cindex copying, of subtrees
883 @cindex subtrees, cut and paste
885 @table @kbd
886 @kindex M-@key{RET}
887 @item M-@key{RET}
888 Insert new heading with same level as current.  If the cursor is in a
889 plain list item, a new item is created (@pxref{Plain lists}).  To force
890 creation of a new headline, use a prefix argument, or first press @key{RET}
891 to get to the beginning of the next line.  When this command is used in
892 the middle of a line, the line is split and the rest of the line becomes
893 the new headline@footnote{If you do not want the line to be split,
894 customize the variable @code{org-M-RET-may-split-line}.}.  If the
895 command is used at the beginning of a headline, the new headline is
896 created before the current line.  If at the beginning of any other line,
897 the content of that line is made the new heading.  If the command is
898 used at the end of a folded subtree (i.e. behind the ellipses at the end
899 of a headline), then a headline like the current one will be inserted
900 after the end of the subtree.
901 @kindex C-@key{RET}
902 @item C-@key{RET}
903 Just like @kbd{M-@key{RET}}, except when adding a new heading below the
904 current heading, the new heading is placed after the body instead of before
905 it.  This command works from anywhere in the entry.
906 @kindex M-S-@key{RET}
907 @item M-S-@key{RET}
908 Insert new TODO entry with same level as current heading.
909 @kindex C-S-@key{RET}
910 @item C-S-@key{RET}
911 Insert new TODO entry with same level as current heading.  Like
912 @kbd{C-@key{RET}}, the new headline will be inserted after the current
913 subtree.
914 @kindex M-@key{left}
915 @item M-@key{left}
916 Promote current heading by one level.
917 @kindex M-@key{right}
918 @item M-@key{right}
919 Demote current heading by one level.
920 @kindex M-S-@key{left}
921 @item M-S-@key{left}
922 Promote the current subtree by one level.
923 @kindex M-S-@key{right}
924 @item M-S-@key{right}
925 Demote the current subtree by one level.
926 @kindex M-S-@key{up}
927 @item M-S-@key{up}
928 Move subtree up (swap with previous subtree of same
929 level).
930 @kindex M-S-@key{down}
931 @item M-S-@key{down}
932 Move subtree down (swap with next subtree of same level).
933 @kindex C-c C-x C-w
934 @item C-c C-x C-w
935 Kill subtree, i.e. remove it from buffer but save in kill ring.
936 With a numeric prefix argument N, kill N sequential subtrees.
937 @kindex C-c C-x M-w
938 @item C-c C-x M-w
939 Copy subtree to kill ring.  With a numeric prefix argument N, copy the N
940 sequential subtrees.
941 @kindex C-c C-x C-y
942 @item C-c C-x C-y
943 Yank subtree from kill ring.  This does modify the level of the subtree to
944 make sure the tree fits in nicely at the yank position.  The yank level can
945 also be specified with a numeric prefix argument, or by yanking after a
946 headline marker like @samp{****}.
947 @kindex C-y 
948 @item C-y
949 Depending on the variables @code{org-yank-adjusted-subtrees} and
950 @code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
951 paste subtrees folded and in a clever way, using the same command as @kbd{C-c
952 C-x C-y}.  With the default settings, level adjustment will take place and
953 yanked trees will be folded unless doing so would swallow text previously
954 visible.  Any prefix argument to this command will force a normal @code{yank}
955 to be executed, with the prefix passed along.  A good way to force a normal
956 yank is @kbd{C-u C-y}.
957 @kindex C-c C-w
958 @item C-c C-w
959 Refile entry or region to a different location.  @xref{Refiling notes}.
960 @kindex C-c ^
961 @item C-c ^
962 Sort same-level entries.  When there is an active region, all entries in the
963 region will be sorted.  Otherwise the children of the current headline are
964 sorted.  The command prompts for the sorting method, which can be
965 alphabetically, numerically, by time (using the first time stamp in each
966 entry), by priority, or by TODO keyword (in the sequence the keywords have
967 been defined in the setup).  Reverse sorting is possible as well.  You can
968 also supply your own function to extract the sorting key.  With a @kbd{C-u}
969 prefix, sorting will be case-sensitive.  With two @kbd{C-u C-u} prefixes,
970 duplicate entries will also be removed.
971 @kindex C-x n s
972 @item C-x n s
973 Narrow buffer to current subtree.
974 @kindex C-x n w
975 @item C-x n w
976 Widen buffer to remove a narrowing.
977 @kindex C-c *
978 @item C-c *
979 Turn a normal line or plain list item into a headline (so that it
980 becomes a subheading at its location).  Also turn a headline into a
981 normal line by removing the stars.  If there is an active region, turn
982 all lines in the region into headlines.  Or, if the first line is a
983 headline, remove the stars from all headlines in the region.
984 @end table
986 @cindex region, active
987 @cindex active region
988 @cindex Transient mark mode
989 When there is an active region (Transient mark mode), promotion and
990 demotion work on all headlines in the region.  To select a region of
991 headlines, it is best to place both point and mark at the beginning of a
992 line, mark at the beginning of the first headline, and point at the line
993 just after the last headline to change.  Note that when the cursor is
994 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
995 functionality.
997 @node Archiving, Sparse trees, Structure editing, Document Structure
998 @section Archiving
999 @cindex archiving
1001 When a project represented by a (sub)tree is finished, you may want
1002 to move the tree out of the way and to stop it from contributing to the
1003 agenda.  Org mode knows two ways of archiving.  You can mark a tree with
1004 the ARCHIVE tag, or you can move an entire (sub)tree to a different
1005 location.
1007 @menu
1008 * ARCHIVE tag::                 Marking a tree as inactive
1009 * Moving subtrees::             Moving a tree to an archive file
1010 @end menu
1012 @node ARCHIVE tag, Moving subtrees, Archiving, Archiving
1013 @subsection The ARCHIVE tag
1014 @cindex internal archiving
1016 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
1017 its location in the outline tree, but behaves in the following way:
1018 @itemize @minus
1019 @item
1020 It does not open when you attempt to do so with a visibility cycling
1021 command (@pxref{Visibility cycling}).  You can force cycling archived
1022 subtrees with @kbd{C-@key{TAB}}, or by setting the option
1023 @code{org-cycle-open-archived-trees}.  Also normal outline commands like
1024 @code{show-all} will open archived subtrees.
1025 @item
1026 During sparse tree construction (@pxref{Sparse trees}), matches in
1027 archived subtrees are not exposed, unless you configure the option
1028 @code{org-sparse-tree-open-archived-trees}.
1029 @item
1030 During agenda view construction (@pxref{Agenda Views}), the content of
1031 archived trees is ignored unless you configure the option
1032 @code{org-agenda-skip-archived-trees}, in which case these trees will always
1033 be included.  In the agenda you can press the @kbd{v} key to get archives
1034 temporarily included.
1035 @item
1036 Archived trees are not exported (@pxref{Exporting}), only the headline
1037 is.  Configure the details using the variable
1038 @code{org-export-with-archived-trees}.
1039 @end itemize
1041 The following commands help managing the ARCHIVE tag:
1043 @table @kbd
1044 @kindex C-c C-x a
1045 @item C-c C-x a
1046 Toggle the ARCHIVE tag for the current headline.  When the tag is set,
1047 the headline changes to a shadowed face, and the subtree below it is
1048 hidden.
1049 @kindex C-u C-c C-x a
1050 @item C-u C-c C-x a
1051 Check if any direct children of the current headline should be archived.
1052 To do this, each subtree is checked for open TODO entries.  If none are
1053 found, the command offers to set the ARCHIVE tag for the child.  If the
1054 cursor is @emph{not} on a headline when this command is invoked, the
1055 level 1 trees will be checked.
1056 @kindex C-@kbd{TAB}
1057 @item C-@kbd{TAB}
1058 Cycle a tree even if it is tagged with ARCHIVE.
1059 @end table
1061 @node Moving subtrees,  , ARCHIVE tag, Archiving
1062 @subsection Moving subtrees
1063 @cindex external archiving
1065 Once an entire project is finished, you may want to move it to a different
1066 location.  Org can move it to an @emph{Archive Sibling} in the same tree, to a
1067 different tree in the current file, or to a different file, the archive file.
1069 @table @kbd
1070 @kindex C-c C-x A
1071 @item C-c C-x A
1072 Move the current entry to the @emph{Archive Sibling}.  This is a sibling of
1073 the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}
1074 (@pxref{ARCHIVE tag}).  The entry becomes a child of that sibling and in this
1075 way retains a lot of its original context, including inherited tags and
1076 approximate position in the outline.
1077 @kindex C-c C-x C-s
1078 @item C-c C-x C-s
1079 Archive the subtree starting at the cursor position to the location
1080 given by @code{org-archive-location}.  Context information that could be
1081 lost like the file name, the category, inherited tags, and the TODO
1082 state will be store as properties in the entry.
1083 @kindex C-u C-c C-x C-s
1084 @item C-u C-c C-x C-s
1085 Check if any direct children of the current headline could be moved to
1086 the archive.  To do this, each subtree is checked for open TODO entries.
1087 If none are found, the command offers to move it to the archive
1088 location.  If the cursor is @emph{not} on a headline when this command
1089 is invoked, the level 1 trees will be checked.
1090 @end table
1092 @cindex archive locations
1093 The default archive location is a file in the same directory as the
1094 current file, with the name derived by appending @file{_archive} to the
1095 current file name.  For information and examples on how to change this,
1096 see the documentation string of the variable
1097 @code{org-archive-location}.  There is also an in-buffer option for
1098 setting this variable, for example@footnote{For backward compatibility,
1099 the following also works: If there are several such lines in a file,
1100 each specifies the archive location for the text below it.  The first
1101 such line also applies to any text before its definition.  However,
1102 using this method is @emph{strongly} deprecated as it is incompatible
1103 with the outline structure of the document.  The correct method for
1104 setting multiple archive locations in a buffer is using a property.}:
1106 @example
1107 #+ARCHIVE: %s_done::
1108 @end example
1110 @noindent
1111 If you would like to have a special ARCHIVE location for a single entry
1112 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
1113 location as the value (@pxref{Properties and Columns}).
1115 When a subtree is moved, it receives a number of special properties that
1116 record context information like the file from where the entry came, it's
1117 outline path the archiving time etc.  Configure the variable
1118 @code{org-archive-save-context-info} to adjust the amount of information
1119 added.
1121 @node Sparse trees, Plain lists, Archiving, Document Structure
1122 @section Sparse trees
1123 @cindex sparse trees
1124 @cindex trees, sparse
1125 @cindex folding, sparse trees
1126 @cindex occur, command
1128 An important feature of Org mode is the ability to construct @emph{sparse
1129 trees} for selected information in an outline tree, so that the entire
1130 document is folded as much as possible, but the selected information is made
1131 visible along with the headline structure above it@footnote{See also the
1132 variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1133 @code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1134 control on how much context is shown around each match.}.  Just try it out
1135 and you will see immediately how it works.
1137 Org mode contains several commands creating such trees, all these
1138 commands can be accessed through a dispatcher:
1140 @table @kbd
1141 @kindex C-c /
1142 @item C-c /
1143 This prompts for an extra key to select a sparse-tree creating command.
1144 @kindex C-c / r
1145 @item C-c / r
1146 Occur.  Prompts for a regexp and shows a sparse tree with all matches.  If
1147 the match is in a headline, the headline is made visible.  If the match is in
1148 the body of an entry, headline and body are made visible.  In order to
1149 provide minimal context, also the full hierarchy of headlines above the match
1150 is shown, as well as the headline following the match.  Each match is also
1151 highlighted; the highlights disappear when the buffer is changed by an
1152 editing command@footnote{depending on the option
1153 @code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1154 When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1155 so several calls to this command can be stacked.
1156 @end table
1158 @noindent
1159 For frequently used sparse trees of specific search strings, you can
1160 use the variable @code{org-agenda-custom-commands} to define fast
1161 keyboard access to specific sparse trees.  These commands will then be
1162 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1163 For example:
1165 @lisp
1166 (setq org-agenda-custom-commands
1167       '(("f" occur-tree "FIXME")))
1168 @end lisp
1170 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1171 a sparse tree matching the string @samp{FIXME}.
1173 The other sparse tree commands select headings based on TODO keywords,
1174 tags, or properties and will be discussed later in this manual.
1176 @kindex C-c C-e v
1177 @cindex printing sparse trees
1178 @cindex visible text, printing
1179 To print a sparse tree, you can use the Emacs command
1180 @code{ps-print-buffer-with-faces} which does not print invisible parts
1181 of the document @footnote{This does not work under XEmacs, because
1182 XEmacs uses selective display for outlining, not text properties.}.
1183 Or you can use the command @kbd{C-c C-e v} to export only the visible
1184 part of the document and print the resulting file.
1186 @node Plain lists, Drawers, Sparse trees, Document Structure
1187 @section Plain lists
1188 @cindex plain lists
1189 @cindex lists, plain
1190 @cindex lists, ordered
1191 @cindex ordered lists
1193 Within an entry of the outline tree, hand-formatted lists can provide
1194 additional structure.  They also provide a way to create lists of
1195 checkboxes (@pxref{Checkboxes}).  Org supports editing such lists,
1196 and the HTML exporter (@pxref{Exporting}) parses and formats them.
1198 Org knows ordered lists, unordered lists, and description lists.
1199 @itemize @bullet
1200 @item
1201 @emph{Unordered} list items start with @samp{-}, @samp{+}, or
1202 @samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1203 they will be seen as top-level headlines.  Also, when you are hiding leading
1204 stars to get a clean outline view, plain list items starting with a star are
1205 visually indistinguishable from true headlines.  In short: even though
1206 @samp{*} is supported, it may be better to not use it for plain list items.}
1207 as bullets.
1208 @item
1209 @emph{Ordered} list items start with a numeral followed by either a period or
1210 a right parenthesis, such as @samp{1.} or @samp{1)}.
1211 @item
1212 @emph{Description} list items are like unordered list items, but contain the
1213 separator @samp{ :: } to separate the description @emph{term} from the
1214 desciption.
1215 @end itemize
1217 Items belonging to the same list must have the same indentation on the first
1218 line.  In particular, if an ordered list reaches number @samp{10.}, then the
1219 2--digit numbers must be written left-aligned with the other numbers in the
1220 list.  Indentation also determines the end of a list item.  It ends before
1221 the next line that is indented like the bullet/number, or less.  Empty lines
1222 are part of the previous item, so you can have several paragraphs in one
1223 item.  If you would like an empty line to terminate all currently open plain
1224 lists, configure the variable @code{org-empty-line-terminates-plain-lists}.
1225 Here is an example:
1227 @example
1228 @group
1229 ** Lord of the Rings
1230    My favorite scenes are (in this order)
1231    1. The attack of the Rohirrim
1232    2. Eowyns fight with the witch king
1233       + this was already my favorite scene in the book
1234       + I really like Miranda Otto.
1235    3. Peter Jackson being shot by Legolas
1236        - on DVD only
1237       He makes a really funny face when it happens.
1238    But in the end, not individual scenes matter but the film as a whole.
1239    Important actors in this film are:
1240    - @b{Elijah Wood} :: He plays the Frodo
1241    - @b{Sean Austin} :: He plays the Sam, Frodos friend.  I still remember
1242      him very well from his role as Mikey Walsh a in the Goonies.
1243 @end group
1244 @end example
1246 Org supports these lists by tuning filling and wrapping commands to
1247 deal with them correctly@footnote{Org only changes the filling
1248 settings for Emacs.  For XEmacs, you should use Kyle E. Jones'
1249 @file{filladapt.el}.  To turn this on,  put into @file{.emacs}:
1250 @code{(require 'filladapt)}}, and by exporting them properly
1251 (@pxref{Exporting}).
1253 The following commands act on items when the cursor is in the first line
1254 of an item (the line with the bullet or number).
1256 @table @kbd
1257 @kindex @key{TAB}
1258 @item @key{TAB}
1259 Items can be folded just like headline levels if you set the variable
1260 @code{org-cycle-include-plain-lists}.  The level of an item is then
1261 given by the indentation of the bullet/number.  Items are always
1262 subordinate to real headlines, however; the hierarchies remain
1263 completely separated.
1265 If @code{org-cycle-include-plain-lists} has not been set, @key{TAB}
1266 fixes the indentation of the current line in a heuristic way.
1267 @kindex M-@key{RET}
1268 @item M-@key{RET}
1269 Insert new item at current level.  With a prefix argument, force a new
1270 heading (@pxref{Structure editing}).  If this command is used in the middle
1271 of a line, the line is @emph{split} and the rest of the line becomes the new
1272 item@footnote{If you do not want the line to be split, customize the variable
1273 @code{org-M-RET-may-split-line}.}.  If this command is executed in the
1274 @emph{whitespace before a bullet or number}, the new item is created
1275 @emph{before} the current item.  If the command is executed in the white
1276 space before the text that is part of an item but does not contain the
1277 bullet, a bullet is added to the current line.
1278 @kindex M-S-@key{RET}
1279 @item M-S-@key{RET}
1280 Insert a new item with a checkbox (@pxref{Checkboxes}).
1281 @kindex S-@key{up}
1282 @kindex S-@key{down}
1283 @item S-@key{up}
1284 @itemx S-@key{down}
1285 Jump to the previous/next item in the current list.
1286 @kindex M-S-@key{up}
1287 @kindex M-S-@key{down}
1288 @item M-S-@key{up}
1289 @itemx M-S-@key{down}
1290 Move the item including subitems up/down (swap with previous/next item
1291 of same indentation).  If the list is ordered, renumbering is
1292 automatic.
1293 @kindex M-S-@key{left}
1294 @kindex M-S-@key{right}
1295 @item M-S-@key{left}
1296 @itemx M-S-@key{right}
1297 Decrease/increase the indentation of the item, including subitems.
1298 Initially, the item tree is selected based on current indentation.
1299 When these commands are executed several times in direct succession,
1300 the initially selected region is used, even if the new indentation
1301 would imply a different hierarchy.  To use the new hierarchy, break
1302 the command chain with a cursor motion or so.
1303 @kindex C-c C-c
1304 @item C-c C-c
1305 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1306 state of the checkbox.  If not, this command makes sure that all the
1307 items on this list level use the same bullet.  Furthermore, if this is
1308 an ordered list, make sure the numbering is OK.
1309 @kindex C-c -
1310 @item C-c -
1311 Cycle the entire list level through the different itemize/enumerate bullets
1312 (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}).  With a numeric prefix
1313 argument N, select the Nth bullet from this list.  If there is an active
1314 region when calling this, all lines will be converted to list items.  If the
1315 first line already was a list item, any item markers will be removed from the
1316 list.  Finally, even without an active region, a normal line will be
1317 converted into a list item.
1318 @end table
1320 @node Drawers, Orgstruct mode, Plain lists, Document Structure
1321 @section Drawers
1322 @cindex drawers
1323 @cindex visibility cycling, drawers
1325 Sometimes you want to keep information associated with an entry, but you
1326 normally don't want to see it.  For this, Org mode has @emph{drawers}.
1327 Drawers need to be configured with the variable
1328 @code{org-drawers}@footnote{You can define drawers on a per-file basis
1329 with a line like @code{#+DRAWERS: HIDDEN PROPERTIES STATE}}.  Drawers
1330 look like this:
1332 @example
1333 ** This is a headline
1334    Still outside the drawer
1335    :DRAWERNAME:
1336       This is inside the drawer.
1337    :END:
1338    After the drawer.
1339 @end example
1341 Visibility cycling (@pxref{Visibility cycling}) on the headline will
1342 hide and show the entry, but keep the drawer collapsed to a single line.
1343 In order to look inside the drawer, you need to move the cursor to the
1344 drawer line and press @key{TAB} there.  Org mode uses a drawer for
1345 storing properties (@pxref{Properties and Columns}), and another one for
1346 storing clock times (@pxref{Clocking work time}).
1348 @node Orgstruct mode,  , Drawers, Document Structure
1349 @section The Orgstruct minor mode
1350 @cindex Orgstruct mode
1351 @cindex minor mode for structure editing
1353 If you like the intuitive way the Org mode structure editing and list
1354 formatting works, you might want to use these commands in other modes
1355 like Text mode or Mail mode as well.  The minor mode Orgstruct mode
1356 makes this possible.  You can always toggle the mode with @kbd{M-x
1357 orgstruct-mode}.  To turn it on by default, for example in Mail mode,
1360 @lisp
1361 (add-hook 'mail-mode-hook 'turn-on-orgstruct)
1362 @end lisp
1364 When this mode is active and the cursor is on a line that looks to
1365 Org like a headline of the first line of a list item, most
1366 structure editing commands will work, even if the same keys normally
1367 have different functionality in the major mode you are using.  If the
1368 cursor is not in one of those special lines, Orgstruct mode lurks
1369 silently in the shadow.
1371 @node Tables, Hyperlinks, Document Structure, Top
1372 @chapter Tables
1373 @cindex tables
1374 @cindex editing tables
1376 Org comes with a fast and intuitive table editor.  Spreadsheet-like
1377 calculations are supported in connection with the Emacs @file{calc}
1378 package
1379 @ifinfo
1380 (@pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
1381 @end ifinfo
1382 @ifnotinfo
1383 (see the Emacs Calculator manual for more information about the Emacs
1384 calculator).
1385 @end ifnotinfo
1387 @menu
1388 * Built-in table editor::       Simple tables
1389 * Narrow columns::              Stop wasting space in tables
1390 * Column groups::               Grouping to trigger vertical lines
1391 * Orgtbl mode::                 The table editor as minor mode
1392 * The spreadsheet::             The table editor has spreadsheet capabilities
1393 * Org Plot::                    Plotting from org tables
1394 @end menu
1396 @node Built-in table editor, Narrow columns, Tables, Tables
1397 @section The built-in table editor
1398 @cindex table editor, built-in
1400 Org makes it easy to format tables in plain ASCII.  Any line with
1401 @samp{|} as the first non-whitespace character is considered part of a
1402 table.  @samp{|} is also the column separator.  A table might look like
1403 this:
1405 @example
1406 | Name  | Phone | Age |
1407 |-------+-------+-----|
1408 | Peter |  1234 |  17 |
1409 | Anna  |  4321 |  25 |
1410 @end example
1412 A table is re-aligned automatically each time you press @key{TAB} or
1413 @key{RET} or @kbd{C-c C-c} inside the table.  @key{TAB} also moves to
1414 the next field (@key{RET} to the next row) and creates new table rows
1415 at the end of the table or before horizontal lines.  The indentation
1416 of the table is set by the first line.  Any line starting with
1417 @samp{|-} is considered as a horizontal separator line and will be
1418 expanded on the next re-align to span the whole table width.  So, to
1419 create the above table, you would only type
1421 @example
1422 |Name|Phone|Age|
1424 @end example
1426 @noindent and then press @key{TAB} to align the table and start filling in
1427 fields.
1429 When typing text into a field, Org treats @key{DEL},
1430 @key{Backspace}, and all character keys in a special way, so that
1431 inserting and deleting avoids shifting other fields.  Also, when
1432 typing @emph{immediately after the cursor was moved into a new field
1433 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
1434 field is automatically made blank.  If this behavior is too
1435 unpredictable for you, configure the variables
1436 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
1438 @table @kbd
1439 @tsubheading{Creation and conversion}
1440 @kindex C-c |
1441 @item C-c |
1442 Convert the active region to table. If every line contains at least one
1443 TAB character, the function assumes that the material is tab separated.
1444 If every line contains a comma, comma-separated values (CSV) are assumed.
1445 If not, lines are split at whitespace into fields.  You can use a prefix
1446 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
1447 C-u} forces TAB, and a numeric argument N indicates that at least N
1448 consecutive spaces, or alternatively a TAB will be the separator.
1450 If there is no active region, this command creates an empty Org
1451 table.  But it's easier just to start typing, like
1452 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
1454 @tsubheading{Re-aligning and field motion}
1455 @kindex C-c C-c
1456 @item C-c C-c
1457 Re-align the table without moving the cursor.
1459 @kindex @key{TAB}
1460 @item @key{TAB}
1461 Re-align the table, move to the next field.  Creates a new row if
1462 necessary.
1464 @kindex S-@key{TAB}
1465 @item S-@key{TAB}
1466 Re-align, move to previous field.
1468 @kindex @key{RET}
1469 @item @key{RET}
1470 Re-align the table and move down to next row.  Creates a new row if
1471 necessary.  At the beginning or end of a line, @key{RET} still does
1472 NEWLINE, so it can be used to split a table.
1474 @tsubheading{Column and row editing}
1475 @kindex M-@key{left}
1476 @kindex M-@key{right}
1477 @item M-@key{left}
1478 @itemx M-@key{right}
1479 Move the current column left/right.
1481 @kindex M-S-@key{left}
1482 @item M-S-@key{left}
1483 Kill the current column.
1485 @kindex M-S-@key{right}
1486 @item M-S-@key{right}
1487 Insert a new column to the left of the cursor position.
1489 @kindex M-@key{up}
1490 @kindex M-@key{down}
1491 @item M-@key{up}
1492 @itemx M-@key{down}
1493 Move the current row up/down.
1495 @kindex M-S-@key{up}
1496 @item M-S-@key{up}
1497 Kill the current row or horizontal line.
1499 @kindex M-S-@key{down}
1500 @item M-S-@key{down}
1501 Insert a new row above the current row.  With a prefix argument, the line is
1502 created below the current one.
1504 @kindex C-c -
1505 @item C-c -
1506 Insert a horizontal line below current row. With a prefix argument, the line
1507 is created above the current line.
1509 @kindex C-c ^
1510 @item C-c ^
1511 Sort the table lines in the region.  The position of point indicates the
1512 column to be used for sorting, and the range of lines is the range
1513 between the nearest horizontal separator lines, or the entire table.  If
1514 point is before the first column, you will be prompted for the sorting
1515 column.  If there is an active region, the mark specifies the first line
1516 and the sorting column, while point should be in the last line to be
1517 included into the sorting.  The command prompts for the sorting type
1518 (alphabetically, numerically, or by time).  When called with a prefix
1519 argument, alphabetic sorting will be case-sensitive.
1521 @tsubheading{Regions}
1522 @kindex C-c C-x M-w
1523 @item C-c C-x M-w
1524 Copy a rectangular region from a table to a special clipboard.  Point
1525 and mark determine edge fields of the rectangle.  The process ignores
1526 horizontal separator lines.
1528 @kindex C-c C-x C-w
1529 @item C-c C-x C-w
1530 Copy a rectangular region from a table to a special clipboard, and
1531 blank all fields in the rectangle.  So this is the ``cut'' operation.
1533 @kindex C-c C-x C-y
1534 @item C-c C-x C-y
1535 Paste a rectangular region into a table.
1536 The upper left corner ends up in the current field.  All involved fields
1537 will be overwritten.  If the rectangle does not fit into the present table,
1538 the table is enlarged as needed.  The process ignores horizontal separator
1539 lines.
1541 @kindex C-c C-q
1542 @kindex M-@key{RET}
1543 @item C-c C-q
1544 @itemx M-@kbd{RET}
1545 Wrap several fields in a column like a paragraph.  If there is an active
1546 region, and both point and mark are in the same column, the text in the
1547 column is wrapped to minimum width for the given number of lines.  A numeric
1548 prefix argument may be used to change the number of desired lines.  If there
1549 is no region, the current field is split at the cursor position and the text
1550 fragment to the right of the cursor is prepended to the field one line
1551 down. If there is no region, but you specify a prefix argument, the current
1552 field is made blank, and the content is appended to the field above.
1554 @tsubheading{Calculations}
1555 @cindex formula, in tables
1556 @cindex calculations, in tables
1557 @cindex region, active
1558 @cindex active region
1559 @cindex Transient mark mode
1560 @kindex C-c +
1561 @item C-c +
1562 Sum the numbers in the current column, or in the rectangle defined by
1563 the active region.  The result is shown in the echo area and can
1564 be inserted with @kbd{C-y}.
1566 @kindex S-@key{RET}
1567 @item S-@key{RET}
1568 When current field is empty, copy from first non-empty field above.  When not
1569 empty, copy current field down to next row and move cursor along with it.
1570 Depending on the variable @code{org-table-copy-increment}, integer field
1571 values will be incremented during copy.  Integers that are too large will not
1572 be incremented.  Also, a @code{0} prefix argument temporarily dispables the
1573 increment.  This key is also used by CUA mode (@pxref{Cooperation}).
1575 @tsubheading{Miscellaneous}
1576 @kindex C-c `
1577 @item C-c `
1578 Edit the current field in a separate window.  This is useful for fields
1579 that are not fully visible (@pxref{Narrow columns}).  When called with a
1580 @kbd{C-u} prefix, just make the full field visible, so that it can be
1581 edited in place.
1583 @item M-x org-table-import
1584 Import a file as a table.  The table should be TAB- or whitespace
1585 separated.  Useful, for example, to import a spreadsheet table or data
1586 from a database, because these programs generally can write
1587 TAB-separated text files.  This command works by inserting the file into
1588 the buffer and then converting the region to a table.  Any prefix
1589 argument is passed on to the converter, which uses it to determine the
1590 separator.
1591 @item C-c |
1592 Tables can also be imported by pasting tabular text into the Org
1593 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
1594 @kbd{C-c |} command (see above under @i{Creation and conversion}).
1596 @item M-x org-table-export
1597 Export the table, by default as a TAB-separated file.  Useful for data
1598 exchange with, for example, spreadsheet or database programs.  The format
1599 used to export the file can be configured in the variable
1600 @code{org-table-export-default-format}.  You may also use properties
1601 @code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
1602 name and the format for table export in a subtree.  Org supports quite
1603 general formats for exported tables.  The exporter format is the same as the
1604 format used by Orgtbl radio tables, see @ref{Translator functions} for a
1605 detailed description.
1606 @end table
1608 If you don't like the automatic table editor because it gets in your
1609 way on lines which you would like to start with @samp{|}, you can turn
1610 it off with
1612 @lisp
1613 (setq org-enable-table-editor nil)
1614 @end lisp
1616 @noindent Then the only table command that still works is
1617 @kbd{C-c C-c} to do a manual re-align.
1619 @node Narrow columns, Column groups, Built-in table editor, Tables
1620 @section Narrow columns
1621 @cindex narrow columns in tables
1623 The width of columns is automatically determined by the table editor.
1624 Sometimes a single field or a few fields need to carry more text,
1625 leading to inconveniently wide columns.  To limit@footnote{This feature
1626 does not work on XEmacs.} the width of a column, one field anywhere in
1627 the column may contain just the string @samp{<N>} where @samp{N} is an
1628 integer specifying the width of the column in characters.  The next
1629 re-align will then set the width of this column to no more than this
1630 value.
1632 @example
1633 @group
1634 |---+------------------------------|               |---+--------|
1635 |   |                              |               |   | <6>    |
1636 | 1 | one                          |               | 1 | one    |
1637 | 2 | two                          |     ----\     | 2 | two    |
1638 | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
1639 | 4 | four                         |               | 4 | four   |
1640 |---+------------------------------|               |---+--------|
1641 @end group
1642 @end example
1644 @noindent
1645 Fields that are wider become clipped and end in the string @samp{=>}.
1646 Note that the full text is still in the buffer, it is only invisible.
1647 To see the full text, hold the mouse over the field - a tool-tip window
1648 will show the full content.  To edit such a field, use the command
1649 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote).  This will
1650 open a new window with the full field.  Edit it and finish with @kbd{C-c
1651 C-c}.
1653 When visiting a file containing a table with narrowed columns, the
1654 necessary character hiding has not yet happened, and the table needs to
1655 be aligned before it looks nice.  Setting the option
1656 @code{org-startup-align-all-tables} will realign all tables in a file
1657 upon visiting, but also slow down startup.  You can also set this option
1658 on a per-file basis with:
1660 @example
1661 #+STARTUP: align
1662 #+STARTUP: noalign
1663 @end example
1665 @node Column groups, Orgtbl mode, Narrow columns, Tables
1666 @section Column groups
1667 @cindex grouping columns in tables
1669 When Org exports tables, it does so by default without vertical
1670 lines because that is visually more satisfying in general.  Occasionally
1671 however, vertical lines can be useful to structure a table into groups
1672 of columns, much like horizontal lines can do for groups of rows.  In
1673 order to specify column groups, you can use a special row where the
1674 first field contains only @samp{/}.  The further fields can either
1675 contain @samp{<} to indicate that this column should start a group,
1676 @samp{>} to indicate the end of a column, or @samp{<>} to make a column
1677 a group of its own.  Boundaries between column groups will upon export be
1678 marked with vertical lines.  Here is an example:
1680 @example
1681 |   |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1682 |---+----+-----+-----+-----+---------+------------|
1683 | / | <> |   < |     |   > |       < |          > |
1684 | # |  1 |   1 |   1 |   1 |       1 |          1 |
1685 | # |  2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
1686 | # |  3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
1687 |---+----+-----+-----+-----+---------+------------|
1688 #+TBLFM: $3=$2^2::$4=$2^3::$5=$2^4::$6=sqrt($2)::$7=sqrt(sqrt(($2)))
1689 @end example
1691 It is also sufficient to just insert the column group starters after
1692 every vertical line you'd like to have:
1694 @example
1695 |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1696 |----+-----+-----+-----+---------+------------|
1697 | /  | <   |     |     | <       |            |
1698 @end example
1700 @node Orgtbl mode, The spreadsheet, Column groups, Tables
1701 @section The Orgtbl minor mode
1702 @cindex Orgtbl mode
1703 @cindex minor mode for tables
1705 If you like the intuitive way the Org table editor works, you
1706 might also want to use it in other modes like Text mode or Mail mode.
1707 The minor mode Orgtbl mode makes this possible.  You can always toggle
1708 the mode with @kbd{M-x orgtbl-mode}.  To turn it on by default, for
1709 example in mail mode, use
1711 @lisp
1712 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
1713 @end lisp
1715 Furthermore, with some special setup, it is possible to maintain tables
1716 in arbitrary syntax with Orgtbl mode.  For example, it is possible to
1717 construct La@TeX{} tables with the underlying ease and power of
1718 Orgtbl mode, including spreadsheet capabilities.  For details, see
1719 @ref{Tables in arbitrary syntax}.
1721 @node The spreadsheet, Org Plot, Orgtbl mode, Tables
1722 @section The spreadsheet
1723 @cindex calculations, in tables
1724 @cindex spreadsheet capabilities
1725 @cindex @file{calc} package
1727 The table editor makes use of the Emacs @file{calc} package to implement
1728 spreadsheet-like capabilities.  It can also evaluate Emacs Lisp forms to
1729 derive fields from other fields.  While fully featured, Org's
1730 implementation is not identical to other spreadsheets.  For example,
1731 Org knows the concept of a @emph{column formula} that will be
1732 applied to all non-header fields in a column without having to copy the
1733 formula to each relevant field.
1735 @menu
1736 * References::                  How to refer to another field or range
1737 * Formula syntax for Calc::     Using Calc to compute stuff
1738 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
1739 * Field formulas::              Formulas valid for a single field
1740 * Column formulas::             Formulas valid for an entire column
1741 * Editing and debugging formulas::  Fixing formulas
1742 * Updating the table::          Recomputing all dependent fields
1743 * Advanced features::           Field names, parameters and automatic recalc
1744 @end menu
1746 @node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
1747 @subsection References
1748 @cindex references
1750 To compute fields in the table from other fields, formulas must
1751 reference other fields or ranges.  In Org, fields can be referenced
1752 by name, by absolute coordinates, and by relative coordinates.  To find
1753 out what the coordinates of a field are, press @kbd{C-c ?} in that
1754 field, or press @kbd{C-c @}} to toggle the display of a grid.
1756 @subsubheading Field references
1757 @cindex field references
1758 @cindex references, to fields
1760 Formulas can reference the value of another field in two ways.  Like in
1761 any other spreadsheet, you may reference fields with a letter/number
1762 combination like @code{B3}, meaning the 2nd field in the 3rd row.
1763 @c Such references are always fixed to that field, they don't change
1764 @c when you copy and paste a formula to a different field.  So
1765 @c Org's @code{B3} behaves like @code{$B$3} in other spreadsheets.
1767 @noindent
1768 Org also uses another, more general operator that looks like this:
1769 @example
1770 @@row$column
1771 @end example
1773 @noindent
1774 Column references can be absolute like @samp{1}, @samp{2},...@samp{N},
1775 or relative to the current column like @samp{+1} or @samp{-2}.
1777 The row specification only counts data lines and ignores horizontal
1778 separator lines (hlines).  You can use absolute row numbers
1779 @samp{1}...@samp{N}, and row numbers relative to the current row like
1780 @samp{+3} or @samp{-1}.  Or specify the row relative to one of the
1781 hlines: @samp{I} refers to the first hline@footnote{Note that only
1782 hlines are counted that @emph{separate} table lines.  If the table
1783 starts with a hline above the header, it does not count.}, @samp{II} to
1784 the second etc.  @samp{-I} refers to the first such line above the
1785 current line, @samp{+I} to the first such line below the current line.
1786 You can also write @samp{III+2} which is the second data line after the
1787 third hline in the table.  Relative row numbers like @samp{-3} will not
1788 cross hlines if the current line is too close to the hline.  Instead,
1789 the value directly at the hline is used.
1791 @samp{0} refers to the current row and column.  Also, if you omit
1792 either the column or the row part of the reference, the current
1793 row/column is implied.
1795 Org's references with @emph{unsigned} numbers are fixed references
1796 in the sense that if you use the same reference in the formula for two
1797 different fields, the same field will be referenced each time.
1798 Org's references with @emph{signed} numbers are floating
1799 references because the same reference operator can reference different
1800 fields depending on the field being calculated by the formula.
1802 Here are a few examples:
1804 @example
1805 @@2$3      @r{2nd row, 3rd column}
1806 C2        @r{same as previous}
1807 $5        @r{column 5 in the current row}
1808 E&        @r{same as previous}
1809 @@2        @r{current column, row 2}
1810 @@-1$-3    @r{the field one row up, three columns to the left}
1811 @@-I$2     @r{field just under hline above current row, column 2}
1812 @end example
1814 @subsubheading Range references
1815 @cindex range references
1816 @cindex references, to ranges
1818 You may reference a rectangular range of fields by specifying two field
1819 references connected by two dots @samp{..}.  If both fields are in the
1820 current row, you may simply use @samp{$2..$7}, but if at least one field
1821 is in a different row, you need to use the general @code{@@row$column}
1822 format at least for the first field (i.e the reference must start with
1823 @samp{@@} in order to be interpreted correctly).  Examples:
1825 @example
1826 $1..$3        @r{First three fields in the current row.}
1827 $P..$Q        @r{Range, using column names (see under Advanced)}
1828 @@2$1..@@4$3    @r{6 fields between these two fields.}
1829 A2..C4        @r{Same as above.}
1830 @@-1$-2..@@-1   @r{3 numbers from the column to the left, 2 up to current row}
1831 @end example
1833 @noindent Range references return a vector of values that can be fed
1834 into Calc vector functions.  Empty fields in ranges are normally
1835 suppressed, so that the vector contains only the non-empty fields (but
1836 see the @samp{E} mode switch below).  If there are no non-empty fields,
1837 @samp{[0]} is returned to avoid syntax errors in formulas.
1839 @subsubheading Named references
1840 @cindex named references
1841 @cindex references, named
1842 @cindex name, of column or field
1843 @cindex constants, in calculations
1845 @samp{$name} is interpreted as the name of a column, parameter or
1846 constant.  Constants are defined globally through the variable
1847 @code{org-table-formula-constants}, and locally (for the file) through a
1848 line like
1850 @example
1851 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
1852 @end example
1854 @noindent
1855 Also properties (@pxref{Properties and Columns}) can be used as
1856 constants in table formulas: For a property @samp{:Xyz:} use the name
1857 @samp{$PROP_Xyz}, and the property will be searched in the current
1858 outline entry and in the hierarchy above it.  If you have the
1859 @file{constants.el} package, it will also be used to resolve constants,
1860 including natural constants like @samp{$h} for Planck's constant, and
1861 units like @samp{$km} for kilometers@footnote{@file{Constant.el} can
1862 supply the values of constants in two different unit systems, @code{SI}
1863 and @code{cgs}.  Which one is used depends on the value of the variable
1864 @code{constants-unit-system}.  You can use the @code{#+STARTUP} options
1865 @code{constSI} and @code{constcgs} to set this value for the current
1866 buffer.}.  Column names and parameters can be specified in special table
1867 lines.  These are described below, see @ref{Advanced features}.  All
1868 names must start with a letter, and further consist of letters and
1869 numbers.
1871 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
1872 @subsection Formula syntax for Calc
1873 @cindex formula syntax, Calc
1874 @cindex syntax, of formulas
1876 A formula can be any algebraic expression understood by the Emacs
1877 @file{Calc} package.  @b{Note that @file{calc} has the
1878 non-standard convention that @samp{/} has lower precedence than
1879 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.}  Before
1880 evaluation by @code{calc-eval} (@pxref{Calling Calc from
1881 Your Programs,calc-eval,Calling Calc from Your Lisp Programs,Calc,GNU
1882 Emacs Calc Manual}),
1883 @c FIXME:  The link to the Calc manual in HTML does not work.
1884 variable substitution takes place according to the rules described above.
1885 @cindex vectors, in table calculations
1886 The range vectors can be directly fed into the Calc vector functions
1887 like @samp{vmean} and @samp{vsum}.
1889 @cindex format specifier
1890 @cindex mode, for @file{calc}
1891 A formula can contain an optional mode string after a semicolon.  This
1892 string consists of flags to influence Calc and other modes during
1893 execution.  By default, Org uses the standard Calc modes (precision
1894 12, angular units degrees, fraction and symbolic modes off).  The display
1895 format, however, has been changed to @code{(float 5)} to keep tables
1896 compact.  The default settings can be configured using the variable
1897 @code{org-calc-default-modes}.
1899 @example
1900 p20           @r{switch the internal precision to 20 digits}
1901 n3 s3 e2 f4   @r{normal, scientific, engineering, or fixed display format}
1902 D R           @r{angle modes: degrees, radians}
1903 F S           @r{fraction and symbolic modes}
1904 N             @r{interpret all fields as numbers, use 0 for non-numbers}
1905 T             @r{force text interpretation}
1906 E             @r{keep empty fields in ranges}
1907 @end example
1909 @noindent
1910 In addition, you may provide a @code{printf} format specifier to
1911 reformat the final result.  A few examples:
1913 @example
1914 $1+$2                @r{Sum of first and second field}
1915 $1+$2;%.2f           @r{Same, format result to two decimals}
1916 exp($2)+exp($1)      @r{Math functions can be used}
1917 $0;%.1f              @r{Reformat current cell to 1 decimal}
1918 ($3-32)*5/9          @r{Degrees F -> C conversion}
1919 $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
1920 tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
1921 sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
1922 vmean($2..$7)        @r{Compute column range mean, using vector function}
1923 vmean($2..$7);EN     @r{Same, but treat empty fields as 0}
1924 taylor($3,x=7,2)     @r{taylor series of $3, at x=7, second degree}
1925 @end example
1927 Calc also contains a complete set of logical operations.  For example
1929 @example
1930 if($1<20,teen,string(""))  @r{``teen'' if age $1 less than 20, else empty}
1931 @end example
1933 @node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
1934 @subsection Emacs Lisp forms as formulas
1935 @cindex Lisp forms, as table formulas
1937 It is also possible to write a formula in Emacs Lisp; this can be useful
1938 for string manipulation and control structures, if the Calc's
1939 functionality is not enough.  If a formula starts with a single quote
1940 followed by an opening parenthesis, then it is evaluated as a lisp form.
1941 The evaluation should return either a string or a number.  Just as with
1942 @file{calc} formulas, you can specify modes and a printf format after a
1943 semicolon.  With Emacs Lisp forms, you need to be conscious about the way
1944 field references are interpolated into the form.  By default, a
1945 reference will be interpolated as a Lisp string (in double quotes)
1946 containing the field.  If you provide the @samp{N} mode switch, all
1947 referenced elements will be numbers (non-number fields will be zero) and
1948 interpolated as Lisp numbers, without quotes.  If you provide the
1949 @samp{L} flag, all fields will be interpolated literally, without quotes.
1950 I.e., if you want a reference to be interpreted as a string by the Lisp
1951 form, enclose the reference operator itself in double quotes, like
1952 @code{"$3"}.  Ranges are inserted as space-separated fields, so you can
1953 embed them in list or vector syntax.  A few examples, note how the
1954 @samp{N} mode is used when we do computations in lisp.
1956 @example
1957 @r{Swap the first two characters of the content of column 1}
1958   '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
1959 @r{Add columns 1 and 2, equivalent to the Calc's @code{$1+$2}}
1960   '(+ $1 $2);N
1961 @r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
1962   '(apply '+ '($1..$4));N
1963 @end example
1965 @node Field formulas, Column formulas, Formula syntax for Lisp, The spreadsheet
1966 @subsection Field formulas
1967 @cindex field formula
1968 @cindex formula, for individual table field
1970 To assign a formula to a particular field, type it directly into the
1971 field, preceded by @samp{:=}, for example @samp{:=$1+$2}.  When you
1972 press @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in
1973 the field, the formula will be stored as the formula for this field,
1974 evaluated, and the current field replaced with the result.
1976 Formulas are stored in a special line starting with @samp{#+TBLFM:}
1977 directly below the table.  If you typed the equation in the 4th field of
1978 the 3rd data line in the table, the formula will look like
1979 @samp{@@3$4=$1+$2}.  When inserting/deleting/swapping column and rows
1980 with the appropriate commands, @i{absolute references} (but not relative
1981 ones) in stored formulas are modified in order to still reference the
1982 same field.  Of cause this is not true if you edit the table structure
1983 with normal editing commands - then you must fix the equations yourself.
1985 Instead of typing an equation into the field, you may also use the
1986 following command
1988 @table @kbd
1989 @kindex C-u C-c =
1990 @item C-u C-c =
1991 Install a new formula for the current field.  The command prompts for a
1992 formula, with default taken from the @samp{#+TBLFM:} line, applies
1993 it to the current field and stores it.
1994 @end table
1996 @node Column formulas, Editing and debugging formulas, Field formulas, The spreadsheet
1997 @subsection Column formulas
1998 @cindex column formula
1999 @cindex formula, for table column
2001 Often in a table, the same formula should be used for all fields in a
2002 particular column.  Instead of having to copy the formula to all fields
2003 in that column, Org allows to assign a single formula to an entire
2004 column.  If the table contains horizontal separator hlines, everything
2005 before the first such line is considered part of the table @emph{header}
2006 and will not be modified by column formulas.
2008 To assign a formula to a column, type it directly into any field in the
2009 column, preceded by an equal sign, like @samp{=$1+$2}.  When you press
2010 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
2011 field, the formula will be stored as the formula for the current column,
2012 evaluated and the current field replaced with the result.  If the field
2013 contains only @samp{=}, the previously stored formula for this column is
2014 used.  For each column, Org will only remember the most recently
2015 used formula.  In the @samp{TBLFM:} line, column formulas will look like
2016 @samp{$4=$1+$2}.
2018 Instead of typing an equation into the field, you may also use the
2019 following command:
2021 @table @kbd
2022 @kindex C-c =
2023 @item C-c =
2024 Install a new formula for the current column and replace current field with
2025 the result of the formula.  The command prompts for a formula, with default
2026 taken from the @samp{#+TBLFM} line, applies it to the current field and
2027 stores it.  With a numeric prefix argument(e.g. @kbd{C-5 C-c =}) the command
2028 will apply it to that many consecutive fields in the current column.
2029 @end table
2031 @node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
2032 @subsection Editing and debugging formulas
2033 @cindex formula editing
2034 @cindex editing, of table formulas
2036 You can edit individual formulas in the minibuffer or directly in the
2037 field.  Org can also prepare a special buffer with all active
2038 formulas of a table.  When offering a formula for editing, Org
2039 converts references to the standard format (like @code{B3} or @code{D&})
2040 if possible.  If you prefer to only work with the internal format (like
2041 @code{@@3$2} or @code{$4}), configure the variable
2042 @code{org-table-use-standard-references}.
2044 @table @kbd
2045 @kindex C-c =
2046 @kindex C-u C-c =
2047 @item C-c =
2048 @itemx C-u C-c =
2049 Edit the formula associated with the current column/field in the
2050 minibuffer.  See @ref{Column formulas} and @ref{Field formulas}.
2051 @kindex C-u C-u C-c =
2052 @item C-u C-u C-c =
2053 Re-insert the active formula (either a
2054 field formula, or a column formula) into the current field, so that you
2055 can edit it directly in the field.  The advantage over editing in the
2056 minibuffer is that you can use the command @kbd{C-c ?}.
2057 @kindex C-c ?
2058 @item C-c ?
2059 While editing a formula in a table field, highlight the field(s)
2060 referenced by the reference at the cursor position in the formula.
2061 @kindex C-c @}
2062 @item C-c @}
2063 Toggle the display of row and column numbers for a table, using
2064 overlays.  These are updated each time the table is aligned, you can
2065 force it with @kbd{C-c C-c}.
2066 @kindex C-c @{
2067 @item C-c @{
2068 Toggle the formula debugger on and off.  See below.
2069 @kindex C-c '
2070 @item C-c '
2071 Edit all formulas for the current table in a special buffer, where the
2072 formulas will be displayed one per line.  If the current field has an
2073 active formula, the cursor in the formula editor will mark it.
2074 While inside the special buffer, Org will automatically highlight
2075 any field or range reference at the cursor position.  You may edit,
2076 remove and add formulas, and use the following commands:
2077 @table @kbd
2078 @kindex C-c C-c
2079 @kindex C-x C-s
2080 @item C-c C-c
2081 @itemx C-x C-s
2082 Exit the formula editor and store the modified formulas.  With @kbd{C-u}
2083 prefix, also apply the new formulas to the entire table.
2084 @kindex C-c C-q
2085 @item C-c C-q
2086 Exit the formula editor without installing changes.
2087 @kindex C-c C-r
2088 @item C-c C-r
2089 Toggle all references in the formula editor between standard (like
2090 @code{B3}) and internal (like @code{@@3$2}).
2091 @kindex @key{TAB}
2092 @item @key{TAB}
2093 Pretty-print or indent lisp formula at point.  When in a line containing
2094 a lisp formula, format the formula according to Emacs Lisp rules.
2095 Another @key{TAB} collapses the formula back again.  In the open
2096 formula, @key{TAB} re-indents just like in Emacs lisp mode.
2097 @kindex M-@key{TAB}
2098 @item M-@key{TAB}
2099 Complete Lisp symbols, just like in Emacs lisp mode.
2100 @kindex S-@key{up}
2101 @kindex S-@key{down}
2102 @kindex S-@key{left}
2103 @kindex S-@key{right}
2104 @item S-@key{up}/@key{down}/@key{left}/@key{right}
2105 Shift the reference at point.  For example, if the reference is
2106 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
2107 This also works for relative references, and for hline references.
2108 @kindex M-S-@key{up}
2109 @kindex M-S-@key{down}
2110 @item M-S-@key{up}/@key{down}
2111 Move the test line for column formulas in the Org buffer up and
2112 down.
2113 @kindex M-@key{up}
2114 @kindex M-@key{down}
2115 @item M-@key{up}/@key{down}
2116 Scroll the window displaying the table.
2117 @kindex C-c @}
2118 @item C-c @}
2119 Turn the coordinate grid in the table on and off.
2120 @end table
2121 @end table
2123 Making a table field blank does not remove the formula associated with
2124 the field, because that is stored in a different line (the @samp{TBLFM}
2125 line) - during the next recalculation the field will be filled again.
2126 To remove a formula from a field, you have to give an empty reply when
2127 prompted for the formula, or to edit the @samp{#+TBLFM} line.
2129 @kindex C-c C-c
2130 You may edit the @samp{#+TBLFM} directly and re-apply the changed
2131 equations with @kbd{C-c C-c} in that line, or with the normal
2132 recalculation commands in the table.
2134 @subsubheading Debugging formulas
2135 @cindex formula debugging
2136 @cindex debugging, of table formulas
2137 When the evaluation of a formula leads to an error, the field content
2138 becomes the string @samp{#ERROR}.  If you would like see what is going
2139 on during variable substitution and calculation in order to find a bug,
2140 turn on formula debugging in the @code{Tbl} menu and repeat the
2141 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2142 field.  Detailed information will be displayed.
2144 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
2145 @subsection Updating the table
2146 @cindex recomputing table fields
2147 @cindex updating, table
2149 Recalculation of a table is normally not automatic, but needs to be
2150 triggered by a command.  See @ref{Advanced features} for a way to make
2151 recalculation at least semi-automatically.
2153 In order to recalculate a line of a table or the entire table, use the
2154 following commands:
2156 @table @kbd
2157 @kindex C-c *
2158 @item C-c *
2159 Recalculate the current row by first applying the stored column formulas
2160 from left to right, and all field formulas in the current row.
2162 @kindex C-u C-c *
2163 @item C-u C-c *
2164 @kindex C-u C-c C-c
2165 @itemx C-u C-c C-c
2166 Recompute the entire table, line by line.  Any lines before the first
2167 hline are left alone, assuming that these are part of the table header.
2169 @kindex C-u C-u C-c *
2170 @kindex C-u C-u C-c C-c
2171 @item C-u C-u C-c *
2172 @itemx C-u C-u C-c C-c
2173 Iterate the table by recomputing it until no further changes occur.
2174 This may be necessary if some computed fields use the value of other
2175 fields that are computed @i{later} in the calculation sequence.
2176 @end table
2178 @node Advanced features,  , Updating the table, The spreadsheet
2179 @subsection Advanced features
2181 If you want the recalculation of fields to happen automatically, or if
2182 you want to be able to assign @i{names} to fields and columns, you need
2183 to reserve the first column of the table for special marking characters.
2184 @table @kbd
2185 @kindex C-#
2186 @item C-#
2187 Rotate the calculation mark in first column through the states @samp{},
2188 @samp{#}, @samp{*}, @samp{!}, @samp{$}.  When there is an active region,
2189 change all marks in the region.
2190 @end table
2192 Here is an example of a table that collects exam results of students and
2193 makes use of these features:
2195 @example
2196 @group
2197 |---+---------+--------+--------+--------+-------+------|
2198 |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2199 |---+---------+--------+--------+--------+-------+------|
2200 | ! |         |     P1 |     P2 |     P3 |   Tot |      |
2201 | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
2202 | ^ |         |     m1 |     m2 |     m3 |    mt |      |
2203 |---+---------+--------+--------+--------+-------+------|
2204 | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
2205 | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
2206 |---+---------+--------+--------+--------+-------+------|
2207 |   | Average |        |        |        |  29.7 |      |
2208 | ^ |         |        |        |        |    at |      |
2209 | $ | max=50  |        |        |        |       |      |
2210 |---+---------+--------+--------+--------+-------+------|
2211 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2212 @end group
2213 @end example
2215 @noindent @b{Important}: Please note that for these special tables,
2216 recalculating the table with @kbd{C-u C-c *} will only affect rows that
2217 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2218 to the field itself.  The column formulas are not applied in rows with
2219 empty first field.
2221 @cindex marking characters, tables
2222 The marking characters have the following meaning:
2223 @table @samp
2224 @item !
2225 The fields in this line define names for the columns, so that you may
2226 refer to a column as @samp{$Tot} instead of @samp{$6}.
2227 @item ^
2228 This row defines names for the fields @emph{above} the row.  With such
2229 a definition, any formula in the table may use @samp{$m1} to refer to
2230 the value @samp{10}.  Also, if you assign a formula to a names field, it
2231 will be stored as @samp{$name=...}.
2232 @item _
2233 Similar to @samp{^}, but defines names for the fields in the row
2234 @emph{below}.
2235 @item $
2236 Fields in this row can define @emph{parameters} for formulas.  For
2237 example, if a field in a @samp{$} row contains @samp{max=50}, then
2238 formulas in this table can refer to the value 50 using @samp{$max}.
2239 Parameters work exactly like constants, only that they can be defined on
2240 a per-table basis.
2241 @item #
2242 Fields in this row are automatically recalculated when pressing
2243 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row.  Also, this row
2244 is selected for a global recalculation with @kbd{C-u C-c *}.  Unmarked
2245 lines will be left alone by this command.
2246 @item *
2247 Selects this line for global recalculation with @kbd{C-u C-c *}, but
2248 not for automatic recalculation.  Use this when automatic
2249 recalculation slows down editing too much.
2250 @item
2251 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
2252 All lines that should be recalculated should be marked with @samp{#}
2253 or @samp{*}.
2254 @item /
2255 Do not export this line.  Useful for lines that contain the narrowing
2256 @samp{<N>} markers.
2257 @end table
2259 Finally, just to whet your appetite on what can be done with the
2260 fantastic @file{calc} package, here is a table that computes the Taylor
2261 series of degree @code{n} at location @code{x} for a couple of
2262 functions.
2264 @example
2265 @group
2266 |---+-------------+---+-----+--------------------------------------|
2267 |   | Func        | n | x   | Result                               |
2268 |---+-------------+---+-----+--------------------------------------|
2269 | # | exp(x)      | 1 | x   | 1 + x                                |
2270 | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
2271 | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
2272 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
2273 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
2274 | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
2275 |---+-------------+---+-----+--------------------------------------|
2276 #+TBLFM: $5=taylor($2,$4,$3);n3
2277 @end group
2278 @end example
2280 @page
2281 @node Org Plot,  , The spreadsheet, Tables
2282 @section Org Plot
2283 @cindex graph, in tables
2284 @cindex plot tables using gnuplot
2286 Org Plot can produce 2D and 3D graphs of information stored in org tables
2287 using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
2288 @uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}.  To see
2289 this in action ensure that you have both Gnuplot and Gnuplot-mode installed
2290 on your system, then call @code{org-plot/gnuplot} on the following table.
2292 @example
2293 @group
2294 #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
2295 | Sede      | Max cites | H-index |
2296 |-----------+-----------+---------|
2297 | Chile     |    257.72 |   21.39 |
2298 | Leeds     |    165.77 |   19.68 |
2299 | Sao Paolo |     71.00 |   11.50 |
2300 | Stockholm |    134.19 |   14.33 |
2301 | Morelia   |    257.56 |   17.67 |
2302 @end group
2303 @end example
2305 Notice that Org Plot is smart enough to apply the tables headers as labels.
2306 Further control over the labels, type, content, and appearance of plots can
2307 be exercised through the @code{#+Plot:} lines preceding a table.  See below
2308 for a complete list of Org plot options.  For more information and examples
2309 see the org-plot tutorial at
2310 @uref{http://legito.org/worg/org-tutorials/org-plot.php}.
2312 @subsubheading Plot Options
2314 @table @code
2315 @item set
2316 Specify any @file{gnuplot} option to be set when graphing.
2318 @item title
2319 Specify the title of the plot.
2321 @item ind
2322 Specify which column of the table to use as the @code{x} axis.
2324 @item deps
2325 Specify the columns to graph as a lisp style list, surrounded by parenthesis
2326 and separated by spaces for example @code{dep:(3 4)} to graph the third and
2327 fourth columns (defaults to graphing all other columns aside from the ind
2328 column).
2330 @item type
2331 Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
2333 @item with
2334 Specify a @code{with} option to be inserted for every col being plotted
2335 (e.g. @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
2336 Defaults to 'lines'.
2338 @item file
2339 If you want to plot to a file specify the @code{"path/to/desired/output-file"}.
2341 @item labels
2342 List of labels to be used for the deps (defaults to column headers if they
2343 exist).
2345 @item line
2346 Specify an entire line to be inserted in the gnuplot script.
2348 @item map
2349 When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
2350 flat mapping rather than a @code{3d} slope.
2352 @item timefmt
2353 Specify format of org-mode timestamps as they will be parsed by gnuplot.
2354 Defaults to '%Y-%m-%d-%H:%M:%S'.
2356 @item script
2357 If you want total control you can specify a script file (place the file name
2358 between double quotes) which will be used to plot.  Before plotting, every
2359 instance of @code{$datafile} in the specified script will be replaced with
2360 the path to the generated data file.  Note even if you set this option you
2361 may still want to specify the plot type, as that can impact the content of
2362 the data file.
2363 @end table
2365 @node Hyperlinks, TODO Items, Tables, Top
2366 @chapter Hyperlinks
2367 @cindex hyperlinks
2369 Like HTML, Org provides links inside a file, external links to
2370 other files, Usenet articles, emails, and much more.
2372 @menu
2373 * Link format::                 How links in Org are formatted
2374 * Internal links::              Links to other places in the current file
2375 * External links::              URL-like links to the world
2376 * Handling links::              Creating, inserting and following
2377 * Using links outside Org::     Linking from my C source code?
2378 * Link abbreviations::          Shortcuts for writing complex links
2379 * Search options::              Linking to a specific location
2380 * Custom searches::             When the default search is not enough
2381 @end menu
2383 @node Link format, Internal links, Hyperlinks, Hyperlinks
2384 @section Link format
2385 @cindex link format
2386 @cindex format, of links
2388 Org will recognize plain URL-like links and activate them as
2389 clickable links.  The general link format, however, looks like this:
2391 @example
2392 [[link][description]]       @r{or alternatively}           [[link]]
2393 @end example
2395 Once a link in the buffer is complete (all brackets present), Org
2396 will change the display so that @samp{description} is displayed instead
2397 of @samp{[[link][description]]} and @samp{link} is displayed instead of
2398 @samp{[[link]]}.  Links will be highlighted in the face @code{org-link},
2399 which by default is an underlined face.  You can directly edit the
2400 visible part of a link.  Note that this can be either the @samp{link}
2401 part (if there is no description) or the @samp{description} part.  To
2402 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
2403 cursor on the link.
2405 If you place the cursor at the beginning or just behind the end of the
2406 displayed text and press @key{BACKSPACE}, you will remove the
2407 (invisible) bracket at that location.  This makes the link incomplete
2408 and the internals are again displayed as plain text.  Inserting the
2409 missing bracket hides the link internals again.  To show the
2410 internal structure of all links, use the menu entry
2411 @code{Org->Hyperlinks->Literal links}.
2413 @node Internal links, External links, Link format, Hyperlinks
2414 @section Internal links
2415 @cindex internal links
2416 @cindex links, internal
2417 @cindex targets, for links
2419 If the link does not look like a URL, it is considered to be internal in
2420 the current file.  Links such as @samp{[[My Target]]} or @samp{[[My
2421 Target][Find my target]]} lead to a text search in the current file.
2422 The link can be followed with @kbd{C-c C-o} when the cursor is on the
2423 link, or with a mouse click (@pxref{Handling links}).  The preferred
2424 match for such a link is a dedicated target: the same string in double
2425 angular brackets.  Targets may be located anywhere; sometimes it is
2426 convenient to put them into a comment line. For example
2428 @example
2429 # <<My Target>>
2430 @end example
2432 @noindent In HTML export (@pxref{HTML export}), such targets will become
2433 named anchors for direct access through @samp{http} links@footnote{Note
2434 that text before the first headline is usually not exported, so the
2435 first such target should be after the first headline.}.
2437 If no dedicated target exists, Org will search for the words in the
2438 link.  In the above example the search would be for @samp{my target}.
2439 Links starting with a star like @samp{*My Target} restrict the search to
2440 headlines.  When searching, Org mode will first try an exact match, but
2441 then move on to more and more lenient searches.  For example, the link
2442 @samp{[[*My Targets]]} will find any of the following:
2444 @example
2445 ** My targets
2446 ** TODO my targets are bright
2447 ** my 20 targets are
2448 @end example
2450 To insert a link targeting a headline, in-buffer completion can be used.
2451 Just type a star followed by a few optional letters into the buffer and
2452 press @kbd{M-@key{TAB}}.  All headlines in the current buffer will be
2453 offered as completions.  @xref{Handling links}, for more commands
2454 creating links.
2456 Following a link pushes a mark onto Org's own mark ring.  You can
2457 return to the previous position with @kbd{C-c &}.  Using this command
2458 several times in direct succession goes back to positions recorded
2459 earlier.
2461 @menu
2462 * Radio targets::               Make targets trigger links in plain text
2463 @end menu
2465 @node Radio targets,  , Internal links, Internal links
2466 @subsection Radio targets
2467 @cindex radio targets
2468 @cindex targets, radio
2469 @cindex links, radio targets
2471 Org can automatically turn any occurrences of certain target names
2472 in normal text into a link.  So without explicitly creating a link, the
2473 text connects to the target radioing its position.  Radio targets are
2474 enclosed by triple angular brackets.  For example, a target @samp{<<<My
2475 Target>>>} causes each occurrence of @samp{my target} in normal text to
2476 become activated as a link.  The Org file is scanned automatically
2477 for radio targets only when the file is first loaded into Emacs.  To
2478 update the target list during editing, press @kbd{C-c C-c} with the
2479 cursor on or at a target.
2481 @node External links, Handling links, Internal links, Hyperlinks
2482 @section External links
2483 @cindex links, external
2484 @cindex external links
2485 @cindex links, external
2486 @cindex Gnus links
2487 @cindex BBDB links
2488 @cindex IRC links
2489 @cindex URL links
2490 @cindex file links
2491 @cindex VM links
2492 @cindex RMAIL links
2493 @cindex WANDERLUST links
2494 @cindex MH-E links
2495 @cindex USENET links
2496 @cindex SHELL links
2497 @cindex Info links
2498 @cindex elisp links
2500 Org supports links to files, websites, Usenet and email messages,
2501 BBDB database entries and links to both IRC conversations and their
2502 logs.  External links are URL-like locators.  They start with a short
2503 identifying string followed by a colon.  There can be no space after
2504 the colon.  The following list shows examples for each link type.
2506 @example
2507 http://www.astro.uva.nl/~dominik          @r{on the web}
2508 file:/home/dominik/images/jupiter.jpg     @r{file, absolute path}
2509 /home/dominik/images/jupiter.jpg          @r{same as above}
2510 file:papers/last.pdf                      @r{file, relative path}
2511 ./papers/last.pdf                         @r{same as above}
2512 news:comp.emacs                           @r{Usenet link}
2513 mailto:adent@@galaxy.net                 @r{Mail link}
2514 vm:folder                                 @r{VM folder link}
2515 vm:folder#id                              @r{VM message link}
2516 vm://myself@@some.where.org/folder#id    @r{VM on remote machine}
2517 wl:folder                                 @r{WANDERLUST folder link}
2518 wl:folder#id                              @r{WANDERLUST message link}
2519 mhe:folder                                @r{MH-E folder link}
2520 mhe:folder#id                             @r{MH-E message link}
2521 rmail:folder                              @r{RMAIL folder link}
2522 rmail:folder#id                           @r{RMAIL message link}
2523 gnus:group                                @r{Gnus group link}
2524 gnus:group#id                             @r{Gnus article link}
2525 bbdb:Richard Stallman                     @r{BBDB link}
2526 irc:/irc.com/#emacs/bob                   @r{IRC link}
2527 shell:ls *.org                            @r{A shell command}
2528 elisp:(find-file-other-frame "Elisp.org") @r{An elisp form to evaluate}
2529 @end example
2531 A link should be enclosed in double brackets and may contain a
2532 descriptive text to be displayed instead of the URL (@pxref{Link
2533 format}), for example:
2535 @example
2536 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
2537 @end example
2539 @noindent
2540 If the description is a file name or URL that points to an image, HTML
2541 export (@pxref{HTML export}) will inline the image as a clickable
2542 button.  If there is no description at all and the link points to an
2543 image,
2544 that image will be inlined into the exported HTML file.
2546 @cindex angular brackets, around links
2547 @cindex plain text external links
2548 Org also finds external links in the normal text and activates them
2549 as links.  If spaces must be part of the link (for example in
2550 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
2551 about the end of the link, enclose them in angular brackets.
2553 @node Handling links, Using links outside Org, External links, Hyperlinks
2554 @section Handling links
2555 @cindex links, handling
2557 Org provides methods to create a link in the correct syntax, to
2558 insert it into an Org file, and to follow the link.
2560 @table @kbd
2561 @kindex C-c l
2562 @cindex storing links
2563 @item C-c l
2564 Store a link to the current location.  This is a @emph{global} command
2565 which can be used in any buffer to create a link.  The link will be
2566 stored for later insertion into an Org buffer (see below).  For
2567 Org files, if there is a @samp{<<target>>} at the cursor, the
2568 link points to the target.  Otherwise it points to the current
2569 headline.  For VM, Rmail, Wanderlust, MH-E, Gnus and BBDB buffers, the
2570 link will indicate the current article/entry.  For W3 and W3M buffers,
2571 the link goes to the current URL.  For IRC links, if you set the
2572 variable @code{org-irc-link-to-logs} to non-nil then @kbd{C-c l} will
2573 store a @samp{file:/} style link to the relevant point in the logs for
2574 the current conversation. Otherwise an @samp{irc:/} style link to the
2575 user/channel/server under the point will be stored.  For any other
2576 files, the link will point to the file, with a search string
2577 (@pxref{Search options}) pointing to the contents of the current line.
2578 If there is an active region, the selected words will form the basis
2579 of the search string.  If the automatically created link is not
2580 working correctly or accurately enough, you can write custom functions
2581 to select the search string and to do the search for particular file
2582 types - see @ref{Custom searches}.  The key binding @kbd{C-c l} is
2583 only a suggestion - see @ref{Installation}.
2585 @kindex C-c C-l
2586 @cindex link completion
2587 @cindex completion, of links
2588 @cindex inserting links
2589 @item C-c C-l
2590 Insert a link.  This prompts for a link to be inserted into the buffer.  You
2591 can just type a link, using text for an internal link, or one of the link
2592 type prefixes mentioned in the examples above.  All links stored during the
2593 current session are part of the history for this prompt, so you can access
2594 them with @key{up} and @key{down} (or @kbd{M-p/n}).  Completion, on the other
2595 hand, will help you to insert valid link prefixes like @samp{http:} or
2596 @samp{ftp:}, including the prefixes defined through link abbreviations
2597 (@pxref{Link abbreviations}).  The link will be inserted into the
2598 buffer@footnote{After insertion of a stored link, the link will be removed
2599 from the list of stored links.  To keep it in the list later use, use a
2600 triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
2601 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
2602 If some text was selected when this command is called, the selected text
2603 becomes the default description.@* Note that you don't have to use this
2604 command to insert a link.  Links in Org are plain text, and you can type
2605 or paste them straight into the buffer.  By using this command, the links are
2606 automatically enclosed in double brackets, and you will be asked for the
2607 optional descriptive text.
2609 @c  If the link is a @samp{file:} link and
2610 @c the linked file is located in the same directory as the current file or
2611 @c a subdirectory of it, the path of the file will be inserted relative to
2612 @c the current directory.
2614 @kindex C-u C-c C-l
2615 @cindex file name completion
2616 @cindex completion, of file names
2617 @item C-u C-c C-l
2618 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
2619 a file will be inserted and you may use file name completion to select
2620 the name of the file.  The path to the file is inserted relative to the
2621 directory of the current org file, if the linked file is in the current
2622 directory or in a sub-directory of it, or if the path is written relative
2623 to the current directory using @samp{../}.  Otherwise an absolute path
2624 is used, if possible with @samp{~/} for your home directory.  You can
2625 force an absolute path with two @kbd{C-u} prefixes.
2627 @item C-c C-l @r{(with cursor on existing link)}
2628 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
2629 link and description parts of the link.
2631 @cindex following links
2632 @kindex C-c C-o
2633 @item C-c C-o
2634 Open link at point.  This will launch a web browser for URLs (using
2635 @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
2636 the corresponding links, and execute the command in a shell link.  When the
2637 cursor is on an internal link, this commands runs the corresponding search.
2638 When the cursor is on a TAG list in a headline, it creates the corresponding
2639 TAGS view.  If the cursor is on a time stamp, it compiles the agenda for that
2640 date.  Furthermore, it will visit text and remote files in @samp{file:} links
2641 with Emacs and select a suitable application for local non-text files.
2642 Classification of files is based on file extension only.  See option
2643 @code{org-file-apps}.  If you want to override the default application and
2644 visit the file with Emacs, use a @kbd{C-u} prefix.  If you want to avoid
2645 opening in Emacs, use a @kbd{C-u C-u} prefix.
2647 @kindex mouse-2
2648 @kindex mouse-1
2649 @item mouse-2
2650 @itemx mouse-1
2651 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
2652 would.  Under Emacs 22, also @kbd{mouse-1} will follow a link.
2654 @kindex mouse-3
2655 @item mouse-3
2656 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
2657 internal links to be displayed in another window@footnote{See the
2658 variable @code{org-display-internal-link-with-indirect-buffer}}.
2660 @cindex mark ring
2661 @kindex C-c %
2662 @item C-c %
2663 Push the current position onto the mark ring, to be able to return
2664 easily. Commands following an internal link do this automatically.
2666 @cindex links, returning to
2667 @kindex C-c &
2668 @item C-c &
2669 Jump back to a recorded position.  A position is recorded by the
2670 commands following internal links, and by @kbd{C-c %}.  Using this
2671 command several times in direct succession moves through a ring of
2672 previously recorded positions.
2674 @kindex C-c C-x C-n
2675 @kindex C-c C-x C-p
2676 @cindex links, finding next/previous
2677 @item C-c C-x C-n
2678 @itemx C-c C-x C-p
2679 Move forward/backward to the next link in the buffer.  At the limit of
2680 the buffer, the search fails once, and then wraps around.  The key
2681 bindings for this are really too long, you might want to bind this also
2682 to @kbd{C-n} and @kbd{C-p}
2683 @lisp
2684 (add-hook 'org-load-hook
2685   (lambda ()
2686     (define-key 'org-mode-map "\C-n" 'org-next-link)
2687     (define-key 'org-mode-map "\C-p" 'org-previous-link)))
2688 @end lisp
2689 @end table
2691 @node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
2692 @section Using links outside Org
2694 You can insert and follow links that have Org syntax not only in
2695 Org, but in any Emacs buffer.  For this, you should create two
2696 global commands, like this (please select suitable global keys
2697 yourself):
2699 @lisp
2700 (global-set-key "\C-c L" 'org-insert-link-global)
2701 (global-set-key "\C-c o" 'org-open-at-point-global)
2702 @end lisp
2704 @node Link abbreviations, Search options, Using links outside Org, Hyperlinks
2705 @section Link abbreviations
2706 @cindex link abbreviations
2707 @cindex abbreviation, links
2709 Long URLs can be cumbersome to type, and often many similar links are
2710 needed in a document.  For this you can use link abbreviations.  An
2711 abbreviated link looks like this
2713 @example
2714 [[linkword:tag][description]]
2715 @end example
2717 @noindent
2718 where the tag is optional.  Such abbreviations are resolved according to
2719 the information in the variable @code{org-link-abbrev-alist} that
2720 relates the linkwords to replacement text.  Here is an example:
2722 @lisp
2723 @group
2724 (setq org-link-abbrev-alist
2725   '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
2726     ("google"   . "http://www.google.com/search?q=")
2727     ("ads"      . "http://adsabs.harvard.edu/cgi-bin/
2728                    nph-abs_connect?author=%s&db_key=AST")))
2729 @end group
2730 @end lisp
2732 If the replacement text contains the string @samp{%s}, it will be
2733 replaced with the tag.  Otherwise the tag will be appended to the string
2734 in order to create the link.  You may also specify a function that will
2735 be called with the tag as the only argument to create the link.
2737 With the above setting, you could link to a specific bug with
2738 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
2739 @code{[[google:OrgMode]]} and find out what the Org author is
2740 doing besides Emacs hacking with @code{[[ads:Dominik,C]]}.
2742 If you need special abbreviations just for a single Org buffer, you
2743 can define them in the file with
2745 @example
2746 #+LINK: bugzilla  http://10.1.2.9/bugzilla/show_bug.cgi?id=
2747 #+LINK: google    http://www.google.com/search?q=%s
2748 @end example
2750 @noindent
2751 In-buffer completion @pxref{Completion} can be used after @samp{[} to
2752 complete link abbreviations.
2754 @node Search options, Custom searches, Link abbreviations, Hyperlinks
2755 @section Search options in file links
2756 @cindex search option in file links
2757 @cindex file links, searching
2759 File links can contain additional information to make Emacs jump to a
2760 particular location in the file when following a link.  This can be a
2761 line number or a search option after a double@footnote{For backward
2762 compatibility, line numbers can also follow a single colon.} colon. For
2763 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
2764 links}) to a file, it encodes the words in the current line as a search
2765 string that can be used to find this line back later when following the
2766 link with @kbd{C-c C-o}.
2768 Here is the syntax of the different ways to attach a search to a file
2769 link, together with an explanation:
2771 @example
2772 [[file:~/code/main.c::255]]
2773 [[file:~/xx.org::My Target]]
2774 [[file:~/xx.org::*My Target]]
2775 [[file:~/xx.org::/regexp/]]
2776 @end example
2778 @table @code
2779 @item 255
2780 Jump to line 255.
2781 @item My Target
2782 Search for a link target @samp{<<My Target>>}, or do a text search for
2783 @samp{my target}, similar to the search in internal links, see
2784 @ref{Internal links}.  In HTML export (@pxref{HTML export}), such a file
2785 link will become an HTML reference to the corresponding named anchor in
2786 the linked file.
2787 @item *My Target
2788 In an Org file, restrict search to headlines.
2789 @item /regexp/
2790 Do a regular expression search for @code{regexp}.  This uses the Emacs
2791 command @code{occur} to list all matches in a separate window.  If the
2792 target file is in Org mode, @code{org-occur} is used to create a
2793 sparse tree with the matches.
2794 @c If the target file is a directory,
2795 @c @code{grep} will be used to search all files in the directory.
2796 @end table
2798 As a degenerate case, a file link with an empty file name can be used
2799 to search the current file.  For example, @code{[[file:::find me]]} does
2800 a search for @samp{find me} in the current file, just as
2801 @samp{[[find me]]} would.
2803 @node Custom searches,  , Search options, Hyperlinks
2804 @section Custom Searches
2805 @cindex custom search strings
2806 @cindex search strings, custom
2808 The default mechanism for creating search strings and for doing the
2809 actual search related to a file link may not work correctly in all
2810 cases.  For example, BibTeX database files have many entries like
2811 @samp{year="1993"} which would not result in good search strings,
2812 because the only unique identification for a BibTeX entry is the
2813 citation key.
2815 If you come across such a problem, you can write custom functions to set
2816 the right search string for a particular file type, and to do the search
2817 for the string in the file.  Using @code{add-hook}, these functions need
2818 to be added to the hook variables
2819 @code{org-create-file-search-functions} and
2820 @code{org-execute-file-search-functions}.  See the docstring for these
2821 variables for more information.  Org actually uses this mechanism
2822 for Bib@TeX{} database files, and you can use the corresponding code as
2823 an implementation example.  See the file @file{org-bibtex.el}.
2825 @node TODO Items, Tags, Hyperlinks, Top
2826 @chapter TODO Items
2827 @cindex TODO items
2829 Org mode does not maintain TODO lists as separate documents@footnote{Of
2830 course, you can make a document that contains inly long lists of TODO items,
2831 but this is not required.}.  Instead, TODO items are an integral part of the
2832 notes file, because TODO items usually come up while taking notes!  With Org
2833 mode, simply mark any entry in a tree as being a TODO item.  In this way,
2834 information is not duplicated, and the entire context from which the TODO
2835 item emerged is always present.
2837 Of course, this technique for managing TODO items scatters them
2838 throughout your notes file.  Org mode compensates for this by providing
2839 methods to give you an overview of all the things that you have to do.
2841 @menu
2842 * TODO basics::                 Marking and displaying TODO entries
2843 * TODO extensions::             Workflow and assignments
2844 * Progress logging::            Dates and notes for progress
2845 * Priorities::                  Some things are more important than others
2846 * Breaking down tasks::         Splitting a task into manageable pieces
2847 * Checkboxes::                  Tick-off lists
2848 @end menu
2850 @node TODO basics, TODO extensions, TODO Items, TODO Items
2851 @section Basic TODO functionality
2853 Any headline becomes a TODO item when it starts with the word
2854 @samp{TODO}, for example:
2856 @example
2857 *** TODO Write letter to Sam Fortune
2858 @end example
2860 @noindent
2861 The most important commands to work with TODO entries are:
2863 @table @kbd
2864 @kindex C-c C-t
2865 @cindex cycling, of TODO states
2866 @item C-c C-t
2867 Rotate the TODO state of the current item among
2869 @example
2870 ,-> (unmarked) -> TODO -> DONE --.
2871 '--------------------------------'
2872 @end example
2874 The same rotation can also be done ``remotely'' from the timeline and
2875 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
2877 @kindex C-u C-c C-t
2878 @item C-u C-c C-t
2879 Select a specific keyword using completion or (if it has been set up)
2880 the fast selection interface.  For the latter, you need to assign keys
2881 to TODO states, see @ref{Per-file keywords} and @ref{Setting tags} for
2882 more information.
2884 @kindex S-@key{right}
2885 @kindex S-@key{left}
2886 @item S-@key{right}
2887 @itemx S-@key{left}
2888 Select the following/preceding TODO state, similar to cycling.  Useful
2889 mostly if more than two TODO states are possible (@pxref{TODO
2890 extensions}).
2891 @kindex C-c C-v
2892 @kindex C-c / t
2893 @cindex sparse tree, for TODO
2894 @item C-c C-v
2895 @itemx C-c / t
2896 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds
2897 the entire buffer, but shows all TODO items and the headings hierarchy
2898 above them.  With a prefix argument, search for a specific TODO.  You will be
2899 prompted for the keyword, and you can also give a list of keywords like
2900 @code{KWD1|KWD2|...}.  With numeric prefix argument N, show the tree for the
2901 Nth keyword in the variable @code{org-todo-keywords}.  With two prefix
2902 arguments, find all TODO and DONE entries.
2903 @kindex C-c a t
2904 @item C-c a t
2905 Show the global TODO list.  Collects the TODO items from all agenda
2906 files (@pxref{Agenda Views}) into a single buffer.  The new buffer will
2907 be in @code{agenda-mode}, which provides commands to examine and
2908 manipulate the TODO entries from the new buffer (@pxref{Agenda
2909 commands}).  @xref{Global TODO list}, for more information.
2910 @kindex S-M-@key{RET}
2911 @item S-M-@key{RET}
2912 Insert a new TODO entry below the current one.
2913 @end table
2915 @noindent
2916 Changing a TODO state can also trigger tag changes.  See the docstring of the
2917 option @code{org-todo-state-tags-triggers} for details.
2919 @node TODO extensions, Progress logging, TODO basics, TODO Items
2920 @section Extended use of TODO keywords
2921 @cindex extended TODO keywords
2923 By default, marked TODO entries have one of only two states: TODO and
2924 DONE.  Org mode allows you to classify TODO items in more complex ways
2925 with @emph{TODO keywords} (stored in @code{org-todo-keywords}).  With
2926 special setup, the TODO keyword system can work differently in different
2927 files.
2929 Note that @i{tags} are another way to classify headlines in general and
2930 TODO items in particular (@pxref{Tags}).
2932 @menu
2933 * Workflow states::             From TODO to DONE in steps
2934 * TODO types::                  I do this, Fred does the rest
2935 * Multiple sets in one file::   Mixing it all, and still finding your way
2936 * Fast access to TODO states::  Single letter selection of a state
2937 * Per-file keywords::           Different files, different requirements
2938 * Faces for TODO keywords::     Highlighting states
2939 @end menu
2941 @node Workflow states, TODO types, TODO extensions, TODO extensions
2942 @subsection TODO keywords as workflow states
2943 @cindex TODO workflow
2944 @cindex workflow states as TODO keywords
2946 You can use TODO keywords to indicate different @emph{sequential} states
2947 in the process of working on an item, for example@footnote{Changing
2948 this variable only becomes effective after restarting Org mode in a
2949 buffer.}:
2951 @lisp
2952 (setq org-todo-keywords
2953   '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
2954 @end lisp
2956 The vertical bar separates the TODO keywords (states that @emph{need
2957 action}) from the DONE states (which need @emph{no further action}).  If
2958 you don't provide the separator bar, the last state is used as the DONE
2959 state.
2960 @cindex completion, of TODO keywords
2961 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
2962 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED.  You may
2963 also use a numeric prefix argument to quickly select a specific state.  For
2964 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
2965 Or you can use @kbd{S-left} to go backward through the sequence.  If you
2966 define many keywords, you can use in-buffer completion
2967 (@pxref{Completion}) or even a special one-key selection scheme
2968 (@pxref{Fast access to TODO states}) to insert these words into the
2969 buffer.  Changing a TODO state can be logged with a timestamp, see
2970 @ref{Tracking TODO state changes} for more information.
2972 @node TODO types, Multiple sets in one file, Workflow states, TODO extensions
2973 @subsection TODO keywords as types
2974 @cindex TODO types
2975 @cindex names as TODO keywords
2976 @cindex types as TODO keywords
2978 The second possibility is to use TODO keywords to indicate different
2979 @emph{types} of action items.  For example, you might want to indicate
2980 that items are for ``work'' or ``home''.  Or, when you work with several
2981 people on a single project, you might want to assign action items
2982 directly to persons, by using their names as TODO keywords.  This would
2983 be set up like this:
2985 @lisp
2986 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
2987 @end lisp
2989 In this case, different keywords do not indicate a sequence, but rather
2990 different types.  So the normal work flow would be to assign a task to a
2991 person, and later to mark it DONE.  Org mode supports this style by adapting
2992 the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
2993 @kbd{t} command in the timeline and agenda buffers.}.  When used several
2994 times in succession, it will still cycle through all names, in order to first
2995 select the right type for a task.  But when you return to the item after some
2996 time and execute @kbd{C-c C-t} again, it will switch from any name directly
2997 to DONE.  Use prefix arguments or completion to quickly select a specific
2998 name.  You can also review the items of a specific TODO type in a sparse tree
2999 by using a numeric prefix to @kbd{C-c C-v}.  For example, to see all things
3000 Lucy has to do, you would use @kbd{C-3 C-c C-v}.  To collect Lucy's items
3001 from all agenda files into a single buffer, you would use the numeric prefix
3002 argument as well when creating the global TODO list: @kbd{C-3 C-c t}.
3004 @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
3005 @subsection Multiple keyword sets in one file
3006 @cindex TODO keyword sets
3008 Sometimes you may want to use different sets of TODO keywords in
3009 parallel.  For example, you may want to have the basic
3010 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3011 separate state indicating that an item has been canceled (so it is not
3012 DONE, but also does not require action).  Your setup would then look
3013 like this:
3015 @lisp
3016 (setq org-todo-keywords
3017       '((sequence "TODO" "|" "DONE")
3018         (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3019         (sequence "|" "CANCELED")))
3020 @end lisp
3022 The keywords should all be different, this helps Org mode to keep track
3023 of which subsequence should be used for a given entry.  In this setup,
3024 @kbd{C-c C-t} only operates within a subsequence, so it switches from
3025 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3026 (nothing) to @code{REPORT}.  Therefore you need a mechanism to initially
3027 select the correct sequence.  Besides the obvious ways like typing a
3028 keyword or using completion, you may also apply the following commands:
3030 @table @kbd
3031 @kindex C-S-@key{right}
3032 @kindex C-S-@key{left}
3033 @item C-S-@key{right}
3034 @itemx C-S-@key{left}
3035 These keys jump from one TODO subset to the next.  In the above example,
3036 @kbd{C-S-@key{right}} would jump from @code{TODO} or @code{DONE} to
3037 @code{REPORT}, and any of the words in the second row to @code{CANCELED}.
3038 @kindex S-@key{right}
3039 @kindex S-@key{left}
3040 @item S-@key{right}
3041 @itemx S-@key{left}
3042 @kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through
3043 @emph{all} keywords from all sets, so for example @kbd{S-@key{<right>}}
3044 would switch from @code{DONE} to @code{REPORT} in the example above.
3045 @end table
3047 @node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3048 @subsection Fast access to TODO states
3050 If you would like to quickly change an entry to an arbitrary TODO state
3051 instead of cycling through the states, you can set up keys for
3052 single-letter access to the states.  This is done by adding the section
3053 key after each keyword, in parenthesis.  For example:
3055 @lisp
3056 (setq org-todo-keywords
3057       '((sequence "TODO(t)" "|" "DONE(d)")
3058         (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3059         (sequence "|" "CANCELED(c)")))
3060 @end lisp
3062 If you then press @code{C-u C-c C-t} followed by the selection key, the
3063 entry will be switched to this state.  @key{SPC} can be used to remove
3064 any TODO keyword from an entry.  Should you like this way of selecting
3065 TODO states a lot, you might want to set the variable
3066 @code{org-use-fast-todo-selection} to @code{t} and make this behavior
3067 the default.  Check also the variable
3068 @code{org-fast-tag-selection-include-todo}, it allows to change the TODO
3069 state through the tags interface (@pxref{Setting tags}), in case you
3070 like to mingle the two concepts.
3072 @node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
3073 @subsection Setting up keywords for individual files
3074 @cindex keyword options
3075 @cindex per-file keywords
3077 It can be very useful to use different aspects of the TODO mechanism in
3078 different files.  For file-local settings, you need to add special lines
3079 to the file which set the keywords and interpretation for that file
3080 only.  For example, to set one of the two examples discussed above, you
3081 need one of the following lines, starting in column zero anywhere in the
3082 file:
3084 @example
3085 #+SEQ_TODO: TODO FEEDBACK VERIFY | DONE CANCELED
3086 @end example
3088 @example
3089 #+TYP_TODO: Fred Sara Lucy Mike | DONE
3090 @end example
3092 A setup for using several sets in parallel would be:
3094 @example
3095 #+SEQ_TODO: TODO | DONE
3096 #+SEQ_TODO: REPORT BUG KNOWNCAUSE | FIXED
3097 #+SEQ_TODO: | CANCELED
3098 @end example
3100 @cindex completion, of option keywords
3101 @kindex M-@key{TAB}
3102 @noindent To make sure you are using the correct keyword, type
3103 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
3105 @cindex DONE, final TODO keyword
3106 Remember that the keywords after the vertical bar (or the last keyword
3107 if no bar is there) must always mean that the item is DONE (although you
3108 may use a different word).  After changing one of these lines, use
3109 @kbd{C-c C-c} with the cursor still in the line to make the changes
3110 known to Org mode@footnote{Org mode parses these lines only when
3111 Org mode is activated after visiting a file.  @kbd{C-c C-c} with the
3112 cursor in a line starting with @samp{#+} is simply restarting Org mode
3113 for the current buffer.}.
3115 @node Faces for TODO keywords,  , Per-file keywords, TODO extensions
3116 @subsection Faces for TODO keywords
3117 @cindex faces, for TODO keywords
3119 Org mode highlights TODO keywords with special faces: @code{org-todo}
3120 for keywords indicating that an item still has to be acted upon, and
3121 @code{org-done} for keywords indicating that an item is finished.  If
3122 you are using more than 2 different states, you might want to use
3123 special faces for some of them.  This can be done using the variable
3124 @code{org-todo-keyword-faces}.  For example:
3126 @lisp
3127 (setq org-todo-keyword-faces
3128       '(("TODO"      . org-warning)
3129         ("DEFERRED"  . shadow)
3130         ("CANCELED"  . (:foreground "blue" :weight bold))))
3131 @end lisp
3133 While using a list with face properties as shown for CANCELED
3134 @emph{should} work, this does not aways seem to be the case.  If
3135 necessary, define a special face and use that.
3137 @page
3138 @node Progress logging, Priorities, TODO extensions, TODO Items
3139 @section Progress logging
3140 @cindex progress logging
3141 @cindex logging, of progress
3143 Org mode can automatically record a time stamp and possibly a note when
3144 you mark a TODO item as DONE, or even each time you change the state of
3145 a TODO item.  This system is highly configurable, settings can be on a
3146 per-keyword basis and can be localized to a file or even a subtree.  For
3147 information on how to clock working time for a task, see @ref{Clocking
3148 work time}.
3150 @menu
3151 * Closing items::               When was this entry marked DONE?
3152 * Tracking TODO state changes::  When did the status change?
3153 @end menu
3155 @node Closing items, Tracking TODO state changes, Progress logging, Progress logging
3156 @subsection Closing items
3158 The most basic logging is to keep track of @emph{when} a certain TODO
3159 item was finished.  This is achieved with@footnote{The corresponding
3160 in-buffer setting is: @code{#+STARTUP: logdone}}.
3162 @lisp
3163 (setq org-log-done 'time)
3164 @end lisp
3166 @noindent
3167 Then each time you turn an entry from a TODO (not-done) state into any
3168 of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
3169 just after the headline.  If you turn the entry back into a TODO item
3170 through further state cycling, that line will be removed again.  If you
3171 want to record a note along with the timestamp, use@footnote{The
3172 corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
3174 @lisp
3175 (setq org-log-done 'note)
3176 @end lisp
3178 @noindent
3179 You will then be prompted for a note, and that note will be stored below
3180 the entry with a @samp{Closing Note} heading.
3182 In the timeline (@pxref{Timeline}) and in the agenda
3183 (@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
3184 display the TODO items with a @samp{CLOSED} timestamp on each day,
3185 giving you an overview of what has been done.
3187 @node Tracking TODO state changes,  , Closing items, Progress logging
3188 @subsection Tracking TODO state changes
3190 When TODO keywords are used as workflow states (@pxref{Workflow
3191 states}), you might want to keep track of when a state change occurred
3192 and maybe take a note about this change.  Since it is normally too much
3193 to record a note for every state, Org mode expects configuration on a
3194 per-keyword basis for this.  This is achieved by adding special markers
3195 @samp{!} (for a time stamp) and @samp{@@} (for a note) in parenthesis
3196 after each keyword.  For example, with the setting
3198 @lisp
3199 (setq org-todo-keywords
3200   '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
3201 @end lisp
3203 @noindent
3204 you not only define global TODO keywords and fast access keys, but also
3205 request that a time is recorded when the entry is turned into
3206 DONE@footnote{It is possible that Org mode will record two time stamps
3207 when you are using both @code{org-log-done} and state change logging.
3208 However, it will never prompt for two notes - if you have configured
3209 both, the state change recording note will take precedence and cancel
3210 the @samp{Closing Note}.}, and that a note is recorded when switching to
3211 WAIT or CANCELED.  The setting for WAIT is even more special: The
3212 @samp{!} after the slash means that in addition to the note taken when
3213 entering the state, a time stamp should be recorded when @i{leaving} the
3214 WAIT state, if and only if the @i{target} state does not configure
3215 logging for entering it.  So it has no effect when switching from WAIT
3216 to DONE, because DONE is configured to record a timestamp only.  But
3217 when switching from WAIT back to TODO, the @samp{/!} in the WAIT
3218 setting now triggers a timestamp even though TODO has no logging
3219 configured.
3221 You can use the exact same syntax for setting logging preferences local
3222 to a buffer:
3223 @example
3224 #+SEQ_TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
3225 @end example
3227 In order to define logging settings that are local to a subtree or a
3228 single item, define a LOGGING property in this entry.  Any non-empty
3229 LOGGING property resets all logging settings to nil.  You may then turn
3230 on logging for this specific tree using STARTUP keywords like
3231 @code{lognotedone} or @code{logrepeat}, as well as adding state specific
3232 settings like @code{TODO(!)}.  For example
3234 @example
3235 * TODO Log each state with only a time
3236   :PROPERTIES:
3237   :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
3238   :END:
3239 * TODO Only log when switching to WAIT, and when repeating
3240   :PROPERTIES:
3241   :LOGGING: WAIT(@@) logrepeat
3242   :END:
3243 * TODO No logging at all
3244   :PROPERTIES:
3245   :LOGGING: nil
3246   :END:
3247 @end example
3249 @node Priorities, Breaking down tasks, Progress logging, TODO Items
3250 @section Priorities
3251 @cindex priorities
3253 If you use Org mode extensively, you may end up enough TODO items that
3254 it starts to make sense to prioritize them.  Prioritizing can be done by
3255 placing a @emph{priority cookie} into the headline of a TODO item, like
3256 this
3258 @example
3259 *** TODO [#A] Write letter to Sam Fortune
3260 @end example
3262 @noindent
3263 By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
3264 @samp{C}.  @samp{A} is the highest priority.  An entry without a cookie
3265 is treated as priority @samp{B}.  Priorities make a difference only in
3266 the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they have
3267 no inherent meaning to Org mode.
3269 Priorities can be attached to any outline tree entries; they do not need
3270 to be TODO items.
3272 @table @kbd
3273 @kindex @kbd{C-c ,}
3274 @item @kbd{C-c ,}
3275 Set the priority of the current headline.  The command prompts for a
3276 priority character @samp{A}, @samp{B} or @samp{C}.  When you press
3277 @key{SPC} instead, the priority cookie is removed from the headline.
3278 The priorities can also be changed ``remotely'' from the timeline and
3279 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
3281 @kindex S-@key{up}
3282 @kindex S-@key{down}
3283 @item S-@key{up}
3284 @itemx S-@key{down}
3285 Increase/decrease priority of current headline@footnote{See also the
3286 option @code{org-priority-start-cycle-with-default'}.}.  Note that these
3287 keys are also used to modify time stamps (@pxref{Creating timestamps}).
3288 Furthermore, these keys are also used by CUA mode (@pxref{Conflicts}).
3289 @end table
3291 You can change the range of allowed priorities by setting the variables
3292 @code{org-highest-priority}, @code{org-lowest-priority}, and
3293 @code{org-default-priority}.  For an individual buffer, you may set
3294 these values (highest, lowest, default) like this (please make sure that
3295 the highest priority is earlier in the alphabet than the lowest
3296 priority):
3298 @example
3299 #+PRIORITIES: A C B
3300 @end example
3302 @node Breaking down tasks, Checkboxes, Priorities, TODO Items
3303 @section Breaking tasks down into subtasks
3304 @cindex tasks, breaking down
3306 It is often advisable to break down large tasks into smaller, manageable
3307 subtasks.  You can do this by creating an outline tree below a TODO item,
3308 with detailed subtasks on the tree@footnote{To keep subtasks out of the
3309 global TODO list, see the @code{org-agenda-todo-list-sublevels}.}.  To keep
3310 the overview over the fraction of subtasks that are already completed, insert
3311 either @samp{[/]} or @samp{[%]} anywhere in the headline.  These cookies will
3312 be updates each time the todo status of a child changes.  For example:
3314 @example
3315 * Organize Party [33%]
3316 ** TODO Call people [1/2]
3317 *** TODO Peter
3318 *** DONE Sarah
3319 ** TODO Buy food
3320 ** DONE Talk to neighbor
3321 @end example
3323 If you would like a TODO entry to automatically change to DONE when all
3324 chilrden are done, you can use the following setup:
3326 @example
3327 (defun org-summary-todo (n-done n-not-done)
3328   "Switch entry to DONE when all subentries are done, to TODO otherwise."
3329   (let (org-log-done org-log-states)   ; turn off logging
3330     (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
3332 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
3333 @end example
3336 Another possibility is the use of checkboxes to identify (a hierarchy of) a
3337 large number of subtasks (@pxref{Checkboxes}).
3340 @node Checkboxes,  , Breaking down tasks, TODO Items
3341 @section Checkboxes
3342 @cindex checkboxes
3344 Every item in a plain list (@pxref{Plain lists}) can be made into a
3345 checkbox by starting it with the string @samp{[ ]}.  This feature is
3346 similar to TODO items (@pxref{TODO Items}), but is more lightweight.
3347 Checkboxes are not included into the global TODO list, so they are often
3348 great to split a task into a number of simple steps.  Or you can use
3349 them in a shopping list.  To toggle a checkbox, use @kbd{C-c C-c}, or
3350 use the mouse (thanks to Piotr Zielinski's @file{org-mouse.el}).
3352 Here is an example of a checkbox list.
3354 @example
3355 * TODO Organize party [2/4]
3356   - [-] call people [1/3]
3357     - [ ] Peter
3358     - [X] Sarah
3359     - [ ] Sam
3360   - [X] order food
3361   - [ ] think about what music to play
3362   - [X] talk to the neighbors
3363 @end example
3365 Checkboxes work hierarchically, so if a checkbox item has children that
3366 are checkboxes, toggling one of the children checkboxes will make the
3367 parent checkbox reflect if none, some, or all of the children are
3368 checked.
3370 @cindex statistics, for checkboxes
3371 @cindex checkbox statistics
3372 The @samp{[2/4]} and @samp{[1/3]} in the first and second line are
3373 cookies indicating how many checkboxes present in this entry have been
3374 checked off, and the total number of checkboxes are present.  This can
3375 give you an idea on how many checkboxes remain, even without opening a
3376 folded entry.  The cookies can be placed into a headline or into (the
3377 first line of) a plain list item. Each cookie covers all checkboxes
3378 structurally below the headline/item on which the cookie appear.  You
3379 have to insert the cookie yourself by typing either @samp{[/]} or
3380 @samp{[%]}.  With @samp{[/]} you get an @samp{n out of m} result, as in
3381 the examples above.  With @samp{[%]} you get information about the
3382 percentage of checkboxes checked (in the above example, this would be
3383 @samp{[50%]} and @samp{[33%]}, respectively).
3385 @noindent The following commands work with checkboxes:
3387 @table @kbd
3388 @kindex C-c C-c
3389 @item C-c C-c
3390 Toggle checkbox at point.  With a prefix argument, set it to @samp{[-]},
3391 which is considered to be an intermediate state.
3392 @kindex C-c C-x C-b
3393 @item C-c C-x C-b
3394 Toggle checkbox at point.
3395 @itemize @minus
3396 @item
3397 If there is an active region, toggle the first checkbox in the region
3398 and set all remaining boxes to the same status as the first.  If you
3399 want to toggle all boxes in the region independently, use a prefix
3400 argument.
3401 @item
3402 If the cursor is in a headline, toggle checkboxes in the region between
3403 this headline and the next (so @emph{not} the entire subtree).
3404 @item
3405 If there is no active region, just toggle the checkbox at point.
3406 @end itemize
3407 @kindex M-S-@key{RET}
3408 @item M-S-@key{RET}
3409 Insert a new item with a checkbox.
3410 This works only if the cursor is already in a plain list item
3411 (@pxref{Plain lists}).
3412 @kindex C-c #
3413 @item C-c #
3414 Update the checkbox statistics in the current outline entry.  When
3415 called with a @kbd{C-u} prefix, update the entire file.  Checkbox
3416 statistic cookies are updated automatically if you toggle checkboxes
3417 with @kbd{C-c C-c} and make new ones with @kbd{M-S-@key{RET}}.  If you
3418 delete boxes or add/change them by hand, use this command to get things
3419 back into synch.  Or simply toggle any checkbox twice with @kbd{C-c C-c}.
3420 @end table
3422 @node Tags, Properties and Columns, TODO Items, Top
3423 @chapter Tags
3424 @cindex tags
3425 @cindex headline tagging
3426 @cindex matching, tags
3427 @cindex sparse tree, tag based
3429 An excellent way to implement labels and contexts for cross-correlating
3430 information is to assign @i{tags} to headlines.  Org mode has extensive
3431 support for tags.
3433 Every headline can contain a list of tags; they occur at the end of the
3434 headline.  Tags are normal words containing letters, numbers, @samp{_},
3435 and @samp{@@}.  Tags must be preceded and followed by a single colon,
3436 e.g., @samp{:work:}.  Several tags can be specified, as in
3437 @samp{:work:urgent:}.
3439 @menu
3440 * Tag inheritance::             Tags use the tree structure of the outline
3441 * Setting tags::                How to assign tags to a headline
3442 * Tag searches::                Searching for combinations of tags
3443 @end menu
3445 @node Tag inheritance, Setting tags, Tags, Tags
3446 @section Tag inheritance
3447 @cindex tag inheritance
3448 @cindex inheritance, of tags
3449 @cindex sublevels, inclusion into tags match
3451 @i{Tags} make use of the hierarchical structure of outline trees.  If a
3452 heading has a certain tag, all subheadings will inherit the tag as
3453 well.  For example, in the list
3455 @example
3456 * Meeting with the French group      :work:
3457 ** Summary by Frank                  :boss:notes:
3458 *** TODO Prepare slides for him      :action:
3459 @end example
3461 @noindent
3462 the final heading will have the tags @samp{:work:}, @samp{:boss:},
3463 @samp{:notes:}, and @samp{:action:} even though the final heading is not
3464 explicitly marked with those tags.  You can also set tags that all entries in
3465 a file should inherit as if these tags would be defined in a hypothetical
3466 level zero that surounds the entire file.
3468 @example
3469 #+FILETAGS: :Peter:Boss:Secret:
3470 @end example
3472 @noindent
3473 To limit tag inheritance to specific tags, or to turn it off entirely, use
3474 the variable @code{org-use-tag-inheritance}.
3476 When a headline matches during a tags search while tag inheritance is turned
3477 on, all the sublevels in the same tree will match as well@footnote{This is
3478 only true if the the search does not involve more complex tests including
3479 properties (@pxref{Property searches}).}.  The list of matches may then
3480 become very long.  If you only want to see the first tags match in a subtree,
3481 configure the variable @code{org-tags-match-list-sublevels}.
3483 @node Setting tags, Tag searches, Tag inheritance, Tags
3484 @section Setting tags
3485 @cindex setting tags
3486 @cindex tags, setting
3488 @kindex M-@key{TAB}
3489 Tags can simply be typed into the buffer at the end of a headline.
3490 After a colon, @kbd{M-@key{TAB}} offers completion on tags.  There is
3491 also a special command for inserting tags:
3493 @table @kbd
3494 @kindex C-c C-q
3495 @item C-c C-q
3496 @cindex completion, of tags
3497 Enter new tags for the current headline.  Org mode will either offer
3498 completion or a special single-key interface for setting tags, see
3499 below.  After pressing @key{RET}, the tags will be inserted and aligned
3500 to @code{org-tags-column}.  When called with a @kbd{C-u} prefix, all
3501 tags in the current buffer will be aligned to that column, just to make
3502 things look nice.  TAGS are automatically realigned after promotion,
3503 demotion, and TODO state changes (@pxref{TODO basics}).
3504 @kindex C-c C-c
3505 @item C-c C-c
3506 When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
3507 @end table
3509 Org will support tag insertion based on a @emph{list of tags}.  By
3510 default this list is constructed dynamically, containing all tags
3511 currently used in the buffer.  You may also globally specify a hard list
3512 of tags with the variable @code{org-tag-alist}.  Finally you can set
3513 the default tags for a given file with lines like
3515 @example
3516 #+TAGS: @@work @@home @@tennisclub
3517 #+TAGS: laptop car pc sailboat
3518 @end example
3520 If you have globally defined your preferred set of tags using the
3521 variable @code{org-tag-alist}, but would like to use a dynamic tag list
3522 in a specific file, add an empty TAGS option line to that file:
3524 @example
3525 #+TAGS:
3526 @end example
3528 By default Org mode uses the standard minibuffer completion facilities for
3529 entering tags.  However, it also implements another, quicker, tag selection
3530 method called @emph{fast tag selection}.  This allows you to select and
3531 deselect tags with just a single key press.  For this to work well you should
3532 assign unique letters to most of your commonly used tags.  You can do this
3533 globally by configuring the variable @code{org-tag-alist} in your
3534 @file{.emacs} file.  For example, you may find the need to tag many items in
3535 different files with @samp{:@@home:}.  In this case you can set something
3536 like:
3538 @lisp
3539 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
3540 @end lisp
3542 @noindent If the tag is only relevant to the file you are working on then you
3543 can, instead, set the TAGS option line as:
3545 @example
3546 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)  laptop(l)  pc(p)
3547 @end example
3549 @noindent
3550 You can also group together tags that are mutually exclusive.  By using
3551 braces, as in:
3553 @example
3554 #+TAGS: @{ @@work(w)  @@home(h)  @@tennisclub(t) @}  laptop(l)  pc(p)
3555 @end example
3557 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
3558 and @samp{@@tennisclub} should be selected.  Multiple such groups are allowed.
3560 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
3561 these lines to activate any changes.
3563 @noindent
3564 To set these mutually exclusive groups in the variable @code{org-mode-alist}
3565 you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
3566 of the braces.  The previous example would be set globally by the following
3567 configuration:
3569 @lisp
3570 (setq org-tag-alist '((:startgroup . nil)
3571                       ("@@work" . ?w) ("@@home" . ?h)
3572                       ("@@tennisclub" . ?t)
3573                       (:endgroup . nil)
3574                       ("laptop" . ?l) ("pc" . ?p)))
3575 @end lisp
3577 If at least one tag has a selection key then pressing @kbd{C-c C-c} will
3578 automatically present you with a special interface, listing inherited tags,
3579 the tags of the current headline, and a list of all valid tags with
3580 corresponding keys@footnote{Keys will automatically be assigned to tags which
3581 have no configured keys.}.  In this interface, you can use the following
3582 keys:
3584 @table @kbd
3585 @item a-z...
3586 Pressing keys assigned to tags will add or remove them from the list of
3587 tags in the current line.  Selecting a tag in a group of mutually
3588 exclusive tags will turn off any other tags from that group.
3589 @kindex @key{TAB}
3590 @item @key{TAB}
3591 Enter a tag in the minibuffer, even if the tag is not in the predefined
3592 list.  You will be able to complete on all tags present in the buffer.
3593 @kindex @key{SPC}
3594 @item @key{SPC}
3595 Clear all tags for this line.
3596 @kindex @key{RET}
3597 @item @key{RET}
3598 Accept the modified set.
3599 @item C-g
3600 Abort without installing changes.
3601 @item q
3602 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
3603 @item !
3604 Turn off groups of mutually exclusive tags.  Use this to (as an
3605 exception) assign several tags from such a group.
3606 @item C-c
3607 Toggle auto-exit after the next change (see below).
3608 If you are using expert mode, the first @kbd{C-c} will display the
3609 selection window.
3610 @end table
3612 @noindent
3613 This method lets you assign tags to a headline with very few keys.  With
3614 the above setup, you could clear the current tags and set @samp{@@home},
3615 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
3616 C-c @key{SPC} h l p @key{RET}}.  Switching from @samp{@@home} to
3617 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
3618 alternatively with @kbd{C-c C-c C-c w}.  Adding the non-predefined tag
3619 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
3620 @key{RET} @key{RET}}.
3622 If you find that most of the time, you need only a single key press to
3623 modify your list of tags, set the variable
3624 @code{org-fast-tag-selection-single-key}.  Then you no longer have to
3625 press @key{RET} to exit fast tag selection - it will immediately exit
3626 after the first change.  If you then occasionally need more keys, press
3627 @kbd{C-c} to turn off auto-exit for the current tag selection process
3628 (in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
3629 C-c}).  If you set the variable to the value @code{expert}, the special
3630 window is not even shown for single-key tag selection, it comes up only
3631 when you press an extra @kbd{C-c}.
3633 @node Tag searches,  , Setting tags, Tags
3634 @section Tag searches
3635 @cindex tag searches
3636 @cindex searching for tags
3638 Once a system of tags has been set up, it can be used to collect related
3639 information into special lists.
3641 @table @kbd
3642 @kindex C-c \
3643 @kindex C-c / T
3644 @item C-c \
3645 @itemx C-c / T
3646 Create a sparse tree with all headlines matching a tags search.  With a
3647 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
3648 @kindex C-c a m
3649 @item C-c a m
3650 Create a global list of tag matches from all agenda files.
3651 @xref{Matching tags and properties}.
3652 @kindex C-c a M
3653 @item C-c a M
3654 Create a global list of tag matches from all agenda files, but check
3655 only TODO items and force checking subitems (see variable
3656 @code{org-tags-match-list-sublevels}).
3657 @end table
3659 @cindex Boolean logic, for tag searches
3660 A @i{tags} search string can use Boolean operators @samp{&} for AND and
3661 @samp{|} for OR.  @samp{&} binds more strongly than @samp{|}.
3662 Parenthesis are currently not implemented.  A tag may also be preceded
3663 by @samp{-}, to select against it, and @samp{+} is syntactic sugar for
3664 positive selection.  The AND operator @samp{&} is optional when @samp{+}
3665 or @samp{-} is present.  Examples:
3667 @table @samp
3668 @item +work-boss
3669 Select headlines tagged @samp{:work:}, but discard those also tagged
3670 @samp{:boss:}.
3671 @item work|laptop
3672 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
3673 @item work|laptop&night
3674 Like before, but require the @samp{:laptop:} lines to be tagged also
3675 @samp{:night:}.
3676 @end table
3678 @cindex TODO keyword matching, with tags search
3679 You may also test for TODO keywords (@pxref{TODO extensions}) and properties
3680 (@pxref{Properties and Columns}) at the same time as matching tags.  For a
3681 guide on how to match properties, see @ref{Property searches}.  To match a
3682 specific TODO keyword, include an expression like @samp{+TODO="NEXT"} as one
3683 of the terms in a tags search.
3685 There is also the possibility to end the tags part of the match (which may
3686 include several terms connected with @samp{|}) with a @samp{/} and then
3687 specify a Boolean expression just for TODO keywords.  The syntax is then
3688 similar to the tag matches, but should be applied with consideration: For
3689 example, a positive selection on several TODO keywords can not meaningfully
3690 be combined with boolean AND.  However, @emph{negative selection} combined
3691 with AND can be meaningful.  To make sure that only lines are checked that
3692 actually have any TODO keyword (resulting in a speed-up), use @kbd{C-c a M},
3693 or equivalently start the TODO part after the slash with @samp{!}.  Examples:
3695 @table @samp
3696 @item work+TODO="WAITING"
3697 Select @samp{:work:}-tagged TODO lines with the specific TODO
3698 keyword @samp{WAITING}.
3699 @item work+TODO="WAITING"|home+TODO="WAITING"
3700 Waiting tasks both at work and at home.
3701 @item work/WAITING
3702 Same as the first example.
3703 @item work/!-WAITING-NEXT
3704 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
3705 nor @samp{NEXT}
3706 @item work/!+WAITING|+NEXT
3707 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
3708 @samp{NEXT}.
3709 @end table
3711 @cindex regular expressions, with tags search
3712 Any element of the tag/todo match can be a regular expression - in this
3713 case it must be enclosed in curly braces.  For example,
3714 @samp{work+@{^boss.*@}} matches headlines that contain the tag
3715 @samp{:work:} and any tag @i{starting} with @samp{boss}.  You may also use a
3716 regular expression in @samp{TODO=@{^W@}} which would match TODO keywords
3717 starting with the letter @samp{W}.
3719 @cindex level, require for tags/property match
3720 @cindex category, require for tags/property match
3721 You can also require a headline to be of a certain level or category, by
3722 writing instead of any TAG an expression like @samp{LEVEL=3} or
3723 @samp{CATEGORY="work"}, respectively.  For example, a search
3724 @samp{+LEVEL=3+boss/-DONE} lists all level three headlines that have the
3725 tag @samp{boss} and are @emph{not} marked with the TODO keyword DONE.
3727 Accessing TODO, LEVEL, and CATEGORY during a search is fast.  Accessing any
3728 other properties will slow down the search.
3730 @node Properties and Columns, Dates and Times, Tags, Top
3731 @chapter Properties and Columns
3732 @cindex properties
3734 Properties are a set of key-value pairs associated with an entry.  There
3735 are two main applications for properties in Org mode.  First, properties
3736 are like tags, but with a value.  Second, you can use properties to
3737 implement (very basic) database capabilities in an Org buffer.  For
3738 an example of the first application, imagine maintaining a file where
3739 you document bugs and plan releases of a piece of software.  Instead of
3740 using tags like @code{:release_1:}, @code{:release_2:}, one can use a
3741 property, say @code{:Release:}, that in different subtrees has different
3742 values, such as @code{1.0} or @code{2.0}.  For an example of the second
3743 application of properties, imagine keeping track of your music CD's,
3744 where properties could be things such as the album artist, date of
3745 release, number of tracks, and so on.
3747 Properties can be conveniently edited and viewed in column view
3748 (@pxref{Column view}).
3750 @menu
3751 * Property syntax::             How properties are spelled out
3752 * Special properties::          Access to other Org mode features
3753 * Property searches::           Matching property values
3754 * Property inheritance::        Passing values down the tree
3755 * Column view::                 Tabular viewing and editing
3756 * Property API::                Properties for Lisp programmers
3757 @end menu
3759 @node Property syntax, Special properties, Properties and Columns, Properties and Columns
3760 @section Property syntax
3761 @cindex property syntax
3762 @cindex drawer, for properties
3764 Properties are key-value pairs.  They need to be inserted into a special
3765 drawer (@pxref{Drawers}) with the name @code{PROPERTIES}.  Each property
3766 is specified on a single line, with the key (surrounded by colons)
3767 first, and the value after it.  Here is an example:
3769 @example
3770 * CD collection
3771 ** Classic
3772 *** Goldberg Variations
3773     :PROPERTIES:
3774     :Title:     Goldberg Variations
3775     :Composer:  J.S. Bach
3776     :Artist:    Glen Gould
3777     :Publisher: Deutsche Grammphon
3778     :NDisks:    1
3779     :END:
3780 @end example
3782 You may define the allowed values for a particular property @samp{:Xyz:}
3783 by setting a property @samp{:Xyz_ALL:}.  This special property is
3784 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
3785 the entire tree.  When allowed values are defined, setting the
3786 corresponding property becomes easier and is less prone to typing
3787 errors.  For the example with the CD collection, we can predefine
3788 publishers and the number of disks in a box like this:
3790 @example
3791 * CD collection
3792   :PROPERTIES:
3793   :NDisks_ALL:  1 2 3 4
3794   :Publisher_ALL: "Deutsche Grammophon" Phillips EMI
3795   :END:
3796 @end example
3798 If you want to set properties that can be inherited by any entry in a
3799 file, use a line like
3801 @example
3802 #+PROPERTY: NDisks_ALL 1 2 3 4
3803 @end example
3805 Property values set with the global variable
3806 @code{org-global-properties} can be inherited by all entries in all
3807 Org files.
3809 @noindent
3810 The following commands help to work with properties:
3812 @table @kbd
3813 @kindex M-@key{TAB}
3814 @item M-@key{TAB}
3815 After an initial colon in a line, complete property keys.  All keys used
3816 in the current file will be offered as possible completions.
3817 @kindex C-c C-x p
3818 @item C-c C-x p
3819 Set a property.  This prompts for a property name and a value.  If
3820 necessary, the property drawer is created as well.
3821 @item M-x org-insert-property-drawer
3822 Insert a property drawer into the current entry.  The drawer will be
3823 inserted early in the entry, but after the lines with planning
3824 information like deadlines.
3825 @kindex C-c C-c
3826 @item C-c C-c
3827 With the cursor in a property drawer, this executes property commands.
3828 @item C-c C-c s
3829 Set a property in the current entry.  Both the property and the value
3830 can be inserted using completion.
3831 @kindex S-@key{right}
3832 @kindex S-@key{left}
3833 @item S-@key{left}/@key{right}
3834 Switch property at point to the next/previous allowed value.
3835 @item C-c C-c d
3836 Remove a property from the current entry.
3837 @item C-c C-c D
3838 Globally remove a property, from all entries in the current file.
3839 @item C-c C-c c
3840 Compute the property at point, using the operator and scope from the
3841 nearest column format definition.
3842 @end table
3844 @node Special properties, Property searches, Property syntax, Properties and Columns
3845 @section Special properties
3846 @cindex properties, special
3848 Special properties provide alternative access method to Org mode
3849 features discussed in the previous chapters, like the TODO state or the
3850 priority of an entry.  This interface exists so that you can include
3851 these states into columns view (@pxref{Column view}), or to use them in
3852 queries.  The following property names are special and should not be
3853 used as keys in the properties drawer:
3855 @example
3856 TODO         @r{The TODO keyword of the entry.}
3857 TAGS         @r{The tags defined directly in the headline.}
3858 ALLTAGS      @r{All tags, including inherited ones.}
3859 PRIORITY     @r{The priority of the entry, a string with a single letter.}
3860 DEADLINE     @r{The deadline time string, without the angular brackets.}
3861 SCHEDULED    @r{The scheduling time stamp, without the angular brackets.}
3862 TIMESTAMP    @r{The first keyword-less time stamp in the entry.}
3863 TIMESTAMP_IA @r{The first inactive time stamp in the entry.}
3864 CLOCKSUM     @r{The sum of CLOCK intervals in the subtree.  @code{org-clock-sum}}
3865              @r{must be run first to compute the values.}
3866 @end example
3868 @node Property searches, Property inheritance, Special properties, Properties and Columns
3869 @section Property searches
3870 @cindex properties, searching
3871 @cindex searching, of properties
3873 To create sparse trees and special lists with selection based on properties,
3874 the same commands are used as for tag searches (@pxref{Tag searches}), and
3875 the same logic applies.  For example, here is a search string:
3877 @example
3878 +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2         \
3879          +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
3880 @end example
3882 @noindent
3883 The type of comparison will depend on how the comparison value is written:
3884 @itemize @minus
3885 @item
3886 If the comparison value is a plain number, a numerical comparison is done,
3887 and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
3888 @samp{>=}, and @samp{<>}.
3889 @item
3890 If the comparison value is enclosed in double
3891 quotes, a string comparison is done, and the same operators are allowed.  
3892 @item
3893 If the comparison value is enclosed in double quotes @emph{and} angular
3894 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
3895 assumed to be date/time specifications in the standard Org way@footnote{The
3896 only special values that will be recognized are @samp{"<now>"} for now, and
3897 @samp{"<today>"} today at 0:00 hours, i.e. without a time specification.}, and
3898 the comparison will be done accordingly.
3899 @item
3900 If the comparison value is enclosed
3901 in curly braces, a regexp match is performed, with @samp{=} meaning that the
3902 regexp matches the property value, and @samp{<>} meaning that it does not
3903 match.  
3904 @end itemize
3906 So the search string in the example finds entries tagged @samp{:work:} but
3907 not @samp{:boss:}, which also have a priority value @samp{A}, a
3908 @samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
3909 property that is numerically smaller than 2, a @samp{:With:} property that is
3910 matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
3911 on or after October 11, 2008.
3913 You can configure Org mode to use property inheritance during a search, but
3914 beware that this can slow down searches considerably.  See @ref{Property
3915 inheritance} for details.
3917 There is also a special command for creating sparse trees based on a
3918 single property:
3920 @table @kbd
3921 @kindex C-c / p
3922 @item C-c / p
3923 Create a sparse tree based on the value of a property.  This first
3924 prompts for the name of a property, and then for a value.  A sparse tree
3925 is created with all entries that define this property with the given
3926 value.  If you enclose the value into curly braces, it is interpreted as
3927 a regular expression and matched against the property values.
3928 @end table
3930 @node Property inheritance, Column view, Property searches, Properties and Columns
3931 @section Property Inheritance
3932 @cindex properties, inheritance
3933 @cindex inheritance, of properties
3935 The outline structure of Org mode documents lends itself for an
3936 inheritance model of properties: If the parent in a tree has a certain
3937 property, the children can inherit this property.  Org mode does not
3938 turn this on by default, because it can slow down property searches
3939 significantly and is often not needed.  However, if you find inheritance
3940 useful, you can turn it on by setting the variable
3941 @code{org-use-property-inheritance}.  It may be set to @code{t}, to make
3942 all properties inherited from the parent, to a list of properties
3943 that should be inherited, or to a regular expression that matches
3944 inherited properties.
3946 Org mode has a few properties for which inheritance is hard-coded, at
3947 least for the special applications for which they are used:
3949 @table @code
3950 @item COLUMNS
3951 The @code{:COLUMNS:} property defines the format of column view
3952 (@pxref{Column view}).  It is inherited in the sense that the level
3953 where a @code{:COLUMNS:} property is defined is used as the starting
3954 point for a column view table, independently of the location in the
3955 subtree from where columns view is turned on.
3956 @item CATEGORY
3957 For agenda view, a category set through a @code{:CATEGORY:} property
3958 applies to the entire subtree.
3959 @item ARCHIVE
3960 For archiving, the @code{:ARCHIVE:} property may define the archive
3961 location for the entire subtree (@pxref{Moving subtrees}).
3962 @item LOGGING
3963 The LOGGING property may define logging settings for an entry or a
3964 subtree (@pxref{Tracking TODO state changes}).
3965 @end table
3967 @node Column view, Property API, Property inheritance, Properties and Columns
3968 @section Column view
3970 A great way to view and edit properties in an outline tree is
3971 @emph{column view}.  In column view, each outline item is turned into a
3972 table row.  Columns in this table provide access to properties of the
3973 entries.  Org mode implements columns by overlaying a tabular structure
3974 over the headline of each item.  While the headlines have been turned
3975 into a table row, you can still change the visibility of the outline
3976 tree.  For example, you get a compact table by switching to CONTENTS
3977 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
3978 is active), but you can still open, read, and edit the entry below each
3979 headline.  Or, you can switch to column view after executing a sparse
3980 tree command and in this way get a table only for the selected items.
3981 Column view also works in agenda buffers (@pxref{Agenda Views}) where
3982 queries have collected selected items, possibly from a number of files.
3984 @menu
3985 * Defining columns::            The COLUMNS format property
3986 * Using column view::           How to create and use column view
3987 * Capturing column view::       A dynamic block for column view
3988 @end menu
3990 @node Defining columns, Using column view, Column view, Column view
3991 @subsection Defining columns
3992 @cindex column view, for properties
3993 @cindex properties, column view
3995 Setting up a column view first requires defining the columns.  This is
3996 done by defining a column format line.
3998 @menu
3999 * Scope of column definitions::  Where defined, where valid?
4000 * Column attributes::           Appearance and content of a column
4001 @end menu
4003 @node Scope of column definitions, Column attributes, Defining columns, Defining columns
4004 @subsubsection Scope of column definitions
4006 To define a column format for an entire file, use a line like
4008 @example
4009 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4010 @end example
4012 To specify a format that only applies to a specific tree, add a
4013 @code{:COLUMNS:} property to the top node of that tree, for example:
4015 @example
4016 ** Top node for columns view
4017    :PROPERTIES:
4018    :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4019    :END:
4020 @end example
4022 If a @code{:COLUMNS:} property is present in an entry, it defines columns
4023 for the entry itself, and for the entire subtree below it.  Since the
4024 column definition is part of the hierarchical structure of the document,
4025 you can define columns on level 1 that are general enough for all
4026 sublevels, and more specific columns further down, when you edit a
4027 deeper part of the tree.
4029 @node Column attributes,  , Scope of column definitions, Defining columns
4030 @subsubsection Column attributes
4031 A column definition sets the attributes of a column.  The general
4032 definition looks like this:
4034 @example
4035  %[width]property[(title)][@{summary-type@}]
4036 @end example
4038 @noindent
4039 Except for the percent sign and the property name, all items are
4040 optional.  The individual parts have the following meaning:
4042 @example
4043 width           @r{An integer specifying the width of the column in characters.}
4044                 @r{If omitted, the width will be determined automatically.}
4045 property        @r{The property that should be edited in this column.}
4046 (title)         @r{The header text for the column. If omitted, the}
4047                 @r{property name is used.}
4048 @{summary-type@}  @r{The summary type.  If specified, the column values for}
4049                 @r{parent nodes are computed from the children.}
4050                 @r{Supported summary types are:}
4051                 @{+@}       @r{Sum numbers in this column.}
4052                 @{+;%.1f@}  @r{Like @samp{+}, but format result with @samp{%.1f}.}
4053                 @{$@}       @r{Currency, short for @samp{+;%.2f}.}
4054                 @{:@}       @r{Sum times, HH:MM:SS, plain numbers are hours.}
4055                 @{X@}       @r{Checkbox status, [X] if all children are [X].}
4056                 @{X/@}      @r{Checkbox status, [n/m].}
4057                 @{X%@}      @r{Checkbox status, [n%].}
4058 @end example
4060 @noindent
4061 Here is an example for a complete columns definition, along with allowed
4062 values.
4064 @example
4065 :COLUMNS:  %20ITEM %9Approved(Approved?)@{X@} %Owner %11Status \@footnote{Please note that the COLUMNS definition must be on a single line - it is wrapped here only because of formatting constraints.}
4066                    %10Time_Estimate@{:@} %CLOCKSUM
4067 :Owner_ALL:    Tammy Mark Karl Lisa Don
4068 :Status_ALL:   "In progress" "Not started yet" "Finished" ""
4069 :Approved_ALL: "[ ]" "[X]"
4070 @end example
4072 The first column, @samp{%25ITEM}, means the first 25 characters of the
4073 item itself, i.e. of the headline.  You probably always should start the
4074 column definition with the @samp{ITEM} specifier.  The other specifiers
4075 create columns @samp{Owner} with a list of names as allowed values, for
4076 @samp{Status} with four different possible values, and for a checkbox
4077 field @samp{Approved}.  When no width is given after the @samp{%}
4078 character, the column will be exactly as wide as it needs to be in order
4079 to fully display all values.  The @samp{Approved} column does have a
4080 modified title (@samp{Approved?}, with a question mark).  Summaries will
4081 be created for the @samp{Time_Estimate} column by adding time duration
4082 expressions like HH:MM, and for the @samp{Approved} column, by providing
4083 an @samp{[X]} status if all children have been checked.  The
4084 @samp{CLOCKSUM} column is special, it lists the sum of CLOCK intervals
4085 in the subtree.
4087 @node Using column view, Capturing column view, Defining columns, Column view
4088 @subsection Using column view
4090 @table @kbd
4091 @tsubheading{Turning column view on and off}
4092 @kindex C-c C-x C-c
4093 @item C-c C-x C-c
4094 Create the column view for the local environment.  This command searches
4095 the hierarchy, up from point, for a @code{:COLUMNS:} property that defines
4096 a format.  When one is found, the column view table is established for
4097 the entire tree, starting from the entry that contains the @code{:COLUMNS:}
4098 property.  If none is found, the format is taken from the @code{#+COLUMNS}
4099 line or from the variable @code{org-columns-default-format}, and column
4100 view is established for the current entry and its subtree.
4101 @kindex r
4102 @item r
4103 Recreate the column view, to include recent changes made in the buffer.
4104 @kindex g
4105 @item g
4106 Same as @kbd{r}.
4107 @kindex q
4108 @item q
4109 Exit column view.
4110 @tsubheading{Editing values}
4111 @item @key{left} @key{right} @key{up} @key{down}
4112 Move through the column view from field to field.
4113 @kindex S-@key{left}
4114 @kindex S-@key{right}
4115 @item  S-@key{left}/@key{right}
4116 Switch to the next/previous allowed value of the field.  For this, you
4117 have to have specified allowed values for a property.
4118 @item 1..9,0
4119 Directly select the nth allowed value, @kbd{0} selects the 10th value.
4120 @kindex n
4121 @kindex p
4122 @itemx  n / p
4123 Same as @kbd{S-@key{left}/@key{right}}
4124 @kindex e
4125 @item e
4126 Edit the property at point.  For the special properties, this will
4127 invoke the same interface that you normally use to change that
4128 property.  For example, when editing a TAGS property, the tag completion
4129 or fast selection interface will pop up.
4130 @kindex C-c C-c
4131 @item C-c C-c
4132 When there is a checkbox at point, toggle it.
4133 @kindex v
4134 @item v
4135 View the full value of this property.  This is useful if the width of
4136 the column is smaller than that of the value.
4137 @kindex a
4138 @item a
4139 Edit the list of allowed values for this property.  If the list is found
4140 in the hierarchy, the modified values is stored there.  If no list is
4141 found, the new value is stored in the first entry that is part of the
4142 current column view.
4143 @tsubheading{Modifying the table structure}
4144 @kindex <
4145 @kindex >
4146 @item < / >
4147 Make the column narrower/wider by one character.
4148 @kindex S-M-@key{right}
4149 @item S-M-@key{right}
4150 Insert a new column, to the left of the current column.
4151 @kindex S-M-@key{left}
4152 @item S-M-@key{left}
4153 Delete the current column.
4154 @end table
4156 @node Capturing column view,  , Using column view, Column view
4157 @subsection Capturing column view
4159 Since column view is just an overlay over a buffer, it cannot be
4160 exported or printed directly.  If you want to capture a column view, use
4161 this @code{columnview} dynamic block (@pxref{Dynamic blocks}).  The frame
4162 of this block looks like this:
4164 @cindex #+BEGIN: columnview
4165 @example
4166 * The column view
4167 #+BEGIN: columnview :hlines 1 :id "label"
4169 #+END:
4170 @end example
4172 @noindent This dynamic block has the following parameters:
4174 @table @code
4175 @item :id
4176 This is most important parameter.  Column view is a feature that is
4177 often localized to a certain (sub)tree, and the capture block might be
4178 in a different location in the file.  To identify the tree whose view to
4179 capture, you can use 3 values:
4180 @example
4181 local     @r{use the tree in which the capture block is located}
4182 global    @r{make a global view, including all headings in the file}
4183 "label"   @r{call column view in the tree that has an @code{:ID:}}
4184           @r{property with the value @i{label}.  You can use}
4185           @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
4186           @r{the current entry and copy it to the kill-ring.}
4187 @end example
4188 @item :hlines
4189 When @code{t}, insert a hline after every line.  When a number N, insert
4190 a hline before each headline with level @code{<= N}.
4191 @item :vlines
4192 When set to @code{t}, enforce column groups to get vertical lines.
4193 @item :maxlevel
4194 When set to a number, don't capture entries below this level.
4195 @item :skip-empty-rows
4196 When set to @code{t}, skip row where the only non-empty specifier of the
4197 column view is @code{ITEM}.
4199 @end table
4201 @noindent
4202 The following commands insert or update the dynamic block:
4204 @table @kbd
4205 @kindex C-c C-x i
4206 @item C-c C-x i
4207 Insert a dynamic block capturing a column view.  You will be prompted
4208 for the scope or id of the view.
4209 @kindex C-c C-c
4210 @item C-c C-c
4211 @kindex C-c C-x C-u
4212 @itemx C-c C-x C-u
4213 Update dynamical block at point.  The cursor needs to be in the
4214 @code{#+BEGIN} line of the dynamic block.
4215 @kindex C-u C-c C-x C-u
4216 @item C-u C-c C-x C-u
4217 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
4218 you have several clock table blocks in a buffer.
4219 @end table
4221 You can add formulas to the column view table and you may add plotting
4222 instructions in front of the table - these will survive an update of the
4223 block.  If there is a @code{#+TBLFM:} after the table, the table will
4224 actually be recalculated automatically after an update.
4226 @node Property API,  , Column view, Properties and Columns
4227 @section The Property API
4228 @cindex properties, API
4229 @cindex API, for properties
4231 There is a full API for accessing and changing properties.  This API can
4232 be used by Emacs Lisp programs to work with properties and to implement
4233 features based on them.  For more information see @ref{Using the
4234 property API}.
4236 @node Dates and Times, Capture, Properties and Columns, Top
4237 @chapter Dates and Times
4238 @cindex dates
4239 @cindex times
4240 @cindex time stamps
4241 @cindex date stamps
4243 To assist project planning, TODO items can be labeled with a date and/or
4244 a time.  The specially formatted string carrying the date and time
4245 information is called a @emph{timestamp} in Org mode.  This may be a
4246 little confusing because timestamp is often used as indicating when
4247 something was created or last changed.  However, in Org mode this term
4248 is used in a much wider sense.
4250 @menu
4251 * Timestamps::                  Assigning a time to a tree entry
4252 * Creating timestamps::         Commands which insert timestamps
4253 * Deadlines and scheduling::    Planning your work
4254 * Clocking work time::          Tracking how long you spend on a task
4255 * Effort estimates::            Planning work effort in advance
4256 @end menu
4259 @node Timestamps, Creating timestamps, Dates and Times, Dates and Times
4260 @section Timestamps, deadlines and scheduling
4261 @cindex time stamps
4262 @cindex ranges, time
4263 @cindex date stamps
4264 @cindex deadlines
4265 @cindex scheduling
4267 A time stamp is a specification of a date (possibly with time or a range
4268 of times) in a special format, either @samp{<2003-09-16 Tue>} or
4269 @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
4270 12:00-12:30>}@footnote{This is the standard ISO date/time format.  To
4271 use an alternative format, see @ref{Custom time format}.}.  A time stamp
4272 can appear anywhere in the headline or body of an Org tree entry.  Its
4273 presence causes entries to be shown on specific dates in the agenda
4274 (@pxref{Weekly/daily agenda}).  We distinguish:
4276 @table @var
4277 @item Plain time stamp; Event; Appointment
4278 @cindex timestamp
4279 A simple time stamp just assigns a date/time to an item.  This is just
4280 like writing down an appointment or event in a paper agenda.  In the
4281 timeline and agenda displays, the headline of an entry associated with a
4282 plain time stamp will be shown exactly on that date.
4284 @example
4285 * Meet Peter at the movies <2006-11-01 Wed 19:15>
4286 * Discussion on climate change <2006-11-02 Thu 20:00-22:00>
4287 @end example
4289 @item Time stamp with repeater interval
4290 @cindex timestamp, with repeater interval
4291 A time stamp may contain a @emph{repeater interval}, indicating that it
4292 applies not only on the given date, but again and again after a certain
4293 interval of N days (d), weeks (w), months(m), or years(y).  The
4294 following will show up in the agenda every Wednesday:
4296 @example
4297 * Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
4298 @end example
4300 @item Diary-style sexp entries
4301 For more complex date specifications, Org mode supports using the
4302 special sexp diary entries implemented in the Emacs calendar/diary
4303 package.  For example
4305 @example
4306 * The nerd meeting on every 2nd Thursday of the month
4307   <%%(diary-float t 4 2)>
4308 @end example
4310 @item Time/Date range
4311 @cindex timerange
4312 @cindex date range
4313 Two time stamps connected by @samp{--} denote a range.  The headline
4314 will be shown on the first and last day of the range, and on any dates
4315 that are displayed and fall in the range.  Here is an example:
4317 @example
4318 ** Meeting in Amsterdam
4319    <2004-08-23 Mon>--<2004-08-26 Thu>
4320 @end example
4322 @item Inactive time stamp
4323 @cindex timestamp, inactive
4324 @cindex inactive timestamp
4325 Just like a plain time stamp, but with square brackets instead of
4326 angular ones.  These time stamps are inactive in the sense that they do
4327 @emph{not} trigger an entry to show up in the agenda.
4329 @example
4330 * Gillian comes late for the fifth time [2006-11-01 Wed]
4331 @end example
4333 @end table
4335 @node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
4336 @section Creating timestamps
4337 @cindex creating timestamps
4338 @cindex timestamps, creating
4340 For Org mode to recognize time stamps, they need to be in the specific
4341 format.  All commands listed below produce time stamps in the correct
4342 format.
4344 @table @kbd
4345 @kindex C-c .
4346 @item C-c .
4347 Prompt for a date and insert a corresponding time stamp.  When the cursor is
4348 at an existing time stamp in the buffer, the command is used to modify this
4349 timestamp instead of inserting a new one.  When this command is used twice in
4350 succession, a time range is inserted.
4352 @kindex C-u C-c .
4353 @item C-u C-c .
4354 Like @kbd{C-c .}, but use the alternative format which contains date
4355 and time.  The default time can be rounded to multiples of 5 minutes,
4356 see the option @code{org-time-stamp-rounding-minutes}.
4358 @kindex C-c !
4359 @item C-c !
4360 Like @kbd{C-c .}, but insert an inactive time stamp that will not cause
4361 an agenda entry.
4363 @kindex C-c <
4364 @item C-c <
4365 Insert a time stamp corresponding to the cursor date in the Calendar.
4367 @kindex C-c >
4368 @item C-c >
4369 Access the Emacs calendar for the current date.  If there is a
4370 timestamp in the current line, go to the corresponding date
4371 instead.
4373 @kindex C-c C-o
4374 @item C-c C-o
4375 Access the agenda for the date given by the time stamp or -range at
4376 point (@pxref{Weekly/daily agenda}).
4378 @kindex S-@key{left}
4379 @kindex S-@key{right}
4380 @item S-@key{left}
4381 @itemx S-@key{right}
4382 Change date at cursor by one day.  These key bindings conflict with
4383 CUA mode (@pxref{Conflicts}).
4385 @kindex S-@key{up}
4386 @kindex S-@key{down}
4387 @item S-@key{up}
4388 @itemx S-@key{down}
4389 Change the item under the cursor in a timestamp.  The cursor can be on a
4390 year, month, day, hour or minute.  Note that if the cursor is in a
4391 headline and not at a time stamp, these same keys modify the priority of
4392 an item.  (@pxref{Priorities}). The key bindings also conflict with
4393 CUA mode (@pxref{Conflicts}).
4395 @kindex C-c C-y
4396 @cindex evaluate time range
4397 @item C-c C-y
4398 Evaluate a time range by computing the difference between start and end.
4399 With a prefix argument, insert result after the time range (in a table: into
4400 the following column).
4401 @end table
4404 @menu
4405 * The date/time prompt::        How Org mode helps you entering date and time
4406 * Custom time format::          Making dates look different
4407 @end menu
4409 @node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
4410 @subsection The date/time prompt
4411 @cindex date, reading in minibuffer
4412 @cindex time, reading in minibuffer
4414 When Org mode prompts for a date/time, the default is shown as an ISO
4415 date, and the prompt therefore seems to ask for an ISO date.  But it
4416 will in fact accept any string containing some date and/or time
4417 information, and it is really smart about interpreting your input.  You
4418 can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
4419 copied from an email message.  Org mode will find whatever information
4420 is in there and derive anything you have not specified from the
4421 @emph{default date and time}.  The default is usually the current date
4422 and time, but when modifying an existing time stamp, or when entering
4423 the second stamp of a range, it is taken from the stamp in the buffer.
4424 When filling in information, Org mode assumes that most of the time you
4425 will want to enter a date in the future: If you omit the month/year and
4426 the given day/month is @i{before} today, it will assume that you mean a
4427 future date@footnote{See the variable
4428 @code{org-read-date-prefer-future}.}.
4430 For example, lets assume that today is @b{June 13, 2006}.  Here is how
4431 various inputs will be interpreted, the items filled in by Org mode are
4432 in @b{bold}.
4434 @example
4435 3-2-5         --> 2003-02-05
4436 14            --> @b{2006}-@b{06}-14
4437 12            --> @b{2006}-@b{07}-12
4438 Fri           --> nearest Friday (defaultdate or later)
4439 sep 15        --> @b{2006}-11-15
4440 feb 15        --> @b{2007}-02-15
4441 sep 12 9      --> 2009-09-12
4442 12:45         --> @b{2006}-@b{06}-@b{13} 12:45
4443 22 sept 0:34  --> @b{2006}-09-22 0:34
4444 w4            --> ISO week for of the current year @b{2006}
4445 2012 w4 fri   --> Friday of ISO week 4 in 2012
4446 2012-w04-5    --> Same as above
4447 @end example
4449 Furthermore you can specify a relative date by giving, as the
4450 @emph{first} thing in the input: a plus/minus sign, a number and a
4451 letter [dwmy] to indicate change in days weeks, months, years.  With a
4452 single plus or minus, the date is always relative to today.  With a
4453 double plus or minus, it is relative to the default date.  If instead of
4454 a single letter, you use the abbreviation of day name, the date will be
4455 the nth such day.  E.g.
4457 @example
4458 +0            --> today
4459 .             --> today
4460 +4d           --> four days from today
4461 +4            --> same as above
4462 +2w           --> two weeks from today
4463 ++5           --> five days from default date
4464 +2tue         --> second tuesday from now.
4465 @end example
4467 The function understands English month and weekday abbreviations.  If
4468 you want to use unabbreviated names and/or other languages, configure
4469 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
4471 @cindex calendar, for selecting date
4472 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
4473 you don't need/want the calendar, configure the variable
4474 @code{org-popup-calendar-for-date-prompt}.}.  When you exit the date
4475 prompt, either by clicking on a date in the calendar, or by pressing
4476 @key{RET}, the date selected in the calendar will be combined with the
4477 information entered at the prompt.  You can control the calendar fully
4478 from the minibuffer:
4480 @kindex <
4481 @kindex >
4482 @kindex mouse-1
4483 @kindex S-@key{right}
4484 @kindex S-@key{left}
4485 @kindex S-@key{down}
4486 @kindex S-@key{up}
4487 @kindex M-S-@key{right}
4488 @kindex M-S-@key{left}
4489 @kindex @key{RET}
4490 @example
4491 > / <          @r{Scroll calendar forward/backward by one month.}
4492 mouse-1        @r{Select date by clicking on it.}
4493 S-@key{right}/@key{left}     @r{One day forward/backward.}
4494 S-@key{down}/@key{up}     @r{One week forward/backward.}
4495 M-S-@key{right}/@key{left}   @r{One month forward/backward.}
4496 @key{RET}           @r{Choose date in calendar.}
4497 @end example
4499 The actions of the date/time prompt may seem complex, but I assure you they
4500 will grow on you, and you will start getting annoyed by pretty much any other
4501 way of entering a date/time out there.  To help you understand what is going
4502 on, the current interpretation of your input will be displayed live in the
4503 minibuffer@footnote{If you find this distracting, turn the display of with
4504 @code{org-read-date-display-live}.}.
4506 @node Custom time format,  , The date/time prompt, Creating timestamps
4507 @subsection Custom time format
4508 @cindex custom date/time format
4509 @cindex time format, custom
4510 @cindex date format, custom
4512 Org mode uses the standard ISO notation for dates and times as it is
4513 defined in ISO 8601.  If you cannot get used to this and require another
4514 representation of date and time to keep you happy, you can get it by
4515 customizing the variables @code{org-display-custom-times} and
4516 @code{org-time-stamp-custom-formats}.
4518 @table @kbd
4519 @kindex C-c C-x C-t
4520 @item C-c C-x C-t
4521 Toggle the display of custom formats for dates and times.
4522 @end table
4524 @noindent
4525 Org mode needs the default format for scanning, so the custom date/time
4526 format does not @emph{replace} the default format - instead it is put
4527 @emph{over} the default format using text properties.  This has the
4528 following consequences:
4529 @itemize @bullet
4530 @item
4531 You cannot place the cursor onto a time stamp anymore, only before or
4532 after.
4533 @item
4534 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
4535 each component of a time stamp.  If the cursor is at the beginning of
4536 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
4537 just like @kbd{S-@key{left}/@key{right}}.  At the end of the stamp, the
4538 time will be changed by one minute.
4539 @item
4540 If the time stamp contains a range of clock times or a repeater, these
4541 will not be overlayed, but remain in the buffer as they were.
4542 @item
4543 When you delete a time stamp character-by-character, it will only
4544 disappear from the buffer after @emph{all} (invisible) characters
4545 belonging to the ISO timestamp have been removed.
4546 @item
4547 If the custom time stamp format is longer than the default and you are
4548 using dates in tables, table alignment will be messed up.  If the custom
4549 format is shorter, things do work as expected.
4550 @end itemize
4553 @node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
4554 @section Deadlines and scheduling
4556 A time stamp may be preceded by special keywords to facilitate planning:
4558 @table @var
4559 @item DEADLINE
4560 @cindex DEADLINE keyword
4562 Meaning: the task (most likely a TODO item, though not necessarily) is supposed
4563 to be finished on that date.
4565 On the deadline date, the task will be listed in the agenda.  In
4566 addition, the agenda for @emph{today} will carry a warning about the
4567 approaching or missed deadline, starting
4568 @code{org-deadline-warning-days} before the due date, and continuing
4569 until the entry is marked DONE.  An example:
4571 @example
4572 *** TODO write article about the Earth for the Guide
4573     The editor in charge is [[bbdb:Ford Prefect]]
4574     DEADLINE: <2004-02-29 Sun>
4575 @end example
4577 You can specify a different lead time for warnings for a specific
4578 deadlines using the following syntax.  Here is an example with a warning
4579 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
4581 @item SCHEDULED
4582 @cindex SCHEDULED keyword
4584 Meaning: you are planning to start working on that task on the given
4585 date.
4587 The headline will be listed under the given date@footnote{It will still
4588 be listed on that date after it has been marked DONE.  If you don't like
4589 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}.  In
4590 addition, a reminder that the scheduled date has passed will be present
4591 in the compilation for @emph{today}, until the entry is marked DONE.
4592 I.e., the task will automatically be forwarded until completed.
4594 @example
4595 *** TODO Call Trillian for a date on New Years Eve.
4596     SCHEDULED: <2004-12-25 Sat>
4597 @end example
4599 @noindent
4600 @b{Important:} Scheduling an item in Org mode should @i{not} be
4601 understood in the same way that we understand @i{scheduling a meeting}.
4602 Setting a date for a meeting is just a simple appointment, you should
4603 mark this entry with a simple plain time stamp, to get this item shown
4604 on the date where it applies.  This is a frequent mis-understanding from
4605 Org-users.  In Org mode, @i{scheduling} means setting a date when you
4606 want to start working on an action item.
4607 @end table
4609 You may use time stamps with repeaters in scheduling and deadline
4610 entries.  Org mode will issue early and late warnings based on the
4611 assumption that the time stamp represents the @i{nearest instance} of
4612 the repeater.  However, the use of diary sexp entries like
4614 @code{<%%(diary-float t 42)>}
4616 in scheduling and deadline timestamps is limited.  Org mode does not
4617 know enough about the internals of each sexp function to issue early and
4618 late warnings.  However, it will show the item on each day where the
4619 sexp entry matches.
4621 @menu
4622 * Inserting deadline/schedule::  Planning items
4623 * Repeated tasks::              Items that show up again and again
4624 @end menu
4626 @node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
4627 @subsection Inserting deadlines or schedules
4629 The following commands allow to quickly insert a deadline or to schedule
4630 an item:
4632 @table @kbd
4634 @kindex C-c C-d
4635 @item C-c C-d
4636 Insert @samp{DEADLINE} keyword along with a stamp.  The insertion will
4637 happen in the line directly following the headline.  When called with a
4638 prefix arg, an existing deadline will be removed from the entry.
4639 @c FIXME Any CLOSED timestamp will be removed.????????
4641 @kindex C-c / d
4642 @cindex sparse tree, for deadlines
4643 @item C-c / d
4644 Create a sparse tree with all deadlines that are either past-due, or
4645 which will become due within @code{org-deadline-warning-days}.
4646 With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
4647 prefix, check that many days.  For example, @kbd{C-1 C-c / d} shows
4648 all deadlines due tomorrow.
4650 @kindex C-c C-s
4651 @item C-c C-s
4652 Insert @samp{SCHEDULED} keyword along with a stamp.  The insertion will
4653 happen in the line directly following the headline.  Any CLOSED
4654 timestamp will be removed.  When called with a prefix argument, remove
4655 the scheduling date from the entry.
4657 @kindex C-c C-x C-k
4658 @kindex k a
4659 @kindex k s
4660 @item C-c C-x C-k
4661 Mark the current entry for agenda action.  After you have marked the entry
4662 like this, you can open the agenda or the calendar to find an appropriate
4663 date.  With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
4664 schedule the marked item.
4665 @end table
4667 @node Repeated tasks,  , Inserting deadline/schedule, Deadlines and scheduling
4668 @subsection Repeated tasks
4670 Some tasks need to be repeated again and again.  Org mode helps to
4671 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
4672 or plain time stamp.  In the following example
4673 @example
4674 ** TODO Pay the rent
4675    DEADLINE: <2005-10-01 Sat +1m>
4676 @end example
4677 the @code{+1m} is a repeater; the intended interpretation is that the
4678 task has a deadline on <2005-10-01> and repeats itself every (one) month
4679 starting from that time.  If you need both a repeater and a special
4680 warning period in a deadline entry, the repeater comes first and the
4681 warning period last: @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
4683 Deadlines and scheduled items produce entries in the agenda when they
4684 are over-due, so it is important to be able to mark such an entry as
4685 completed once you have done so.  When you mark a DEADLINE or a SCHEDULE
4686 with the TODO keyword DONE, it will no longer produce entries in the
4687 agenda.  The problem with this is, however, that then also the
4688 @emph{next} instance of the repeated entry will not be active.  Org mode
4689 deals with this in the following way: When you try to mark such an entry
4690 DONE (using @kbd{C-c C-t}), it will shift the base date of the repeating
4691 time stamp by the repeater interval, and immediately set the entry state
4692 back to TODO.  In the example above, setting the state to DONE would
4693 actually switch the date like this:
4695 @example
4696 ** TODO Pay the rent
4697    DEADLINE: <2005-11-01 Tue +1m>
4698 @end example
4700 A timestamp@footnote{You can change this using the option
4701 @code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
4702 @code{lognoterepeat}, and @code{nologrepeat}.  With @code{lognoterepeat}, you
4703 will aslo be prompted for a note.} will be added under the deadline, to keep
4704 a record that you actually acted on the previous instance of this deadline.
4706 As a consequence of shifting the base date, this entry will no longer be
4707 visible in the agenda when checking past dates, but all future instances
4708 will be visible.
4710 With the @samp{+1m} cookie, the date shift will always be exactly one
4711 month.  So if you have not payed the rent for three months, marking this
4712 entry DONE will still keep it as an overdue deadline.  Depending on the
4713 task, this may not be the best way to handle it.  For example, if you
4714 forgot to call you father for 3 weeks, it does not make sense to call
4715 him 3 times in a single day to make up for it.  Finally, there are tasks
4716 like changing batteries which should always repeat a certain time
4717 @i{after} the last time you did it.  For these tasks, Org mode has
4718 special repeaters markers with @samp{++} and @samp{.+}.  For example:
4720 @example
4721 ** TODO Call Father
4722    DEADLINE: <2008-02-10 Sun ++1w>
4723    Marking this DONE will shift the date by at least one week,
4724    but also by as many weeks as it takes to get this date into
4725    the future.  However, it stays on a Sunday, even if you called
4726    and marked it done on Saturday.
4727 ** TODO Check the batteries in the smoke detectors
4728    DEADLINE: <2005-11-01 Tue .+1m>
4729    Marking this DONE will shift the date to one month after
4730    today.
4731 @end example
4733 You may have both scheduling and deadline information for a specific
4734 task - just make sure that the repeater intervals on both are the same.
4736 @node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
4737 @section Clocking work time
4739 Org mode allows you to clock the time you spent on specific tasks in a
4740 project.  When you start working on an item, you can start the clock.
4741 When you stop working on that task, or when you mark the task done, the
4742 clock is stopped and the corresponding time interval is recorded.  It
4743 also computes the total time spent on each subtree of a project.
4745 @table @kbd
4746 @kindex C-c C-x C-i
4747 @item C-c C-x C-i
4748 Start the clock on the current item (clock-in).  This inserts the CLOCK
4749 keyword together with a timestamp.  If this is not the first clocking of
4750 this item, the multiple CLOCK lines will be wrapped into a
4751 @code{:CLOCK:} drawer (see also the variable
4752 @code{org-clock-into-drawer}).  When called with a @kbd{C-u} prefix argument,
4753 select the task from a list of recently clocked tasks.  With two @kbd{C-u
4754 C-u} prefixes, clock into the task at point and mark it as the default task.
4755 The default task will always be available when selecting a clocking task,
4756 with letter @kbd{d}.
4757 @kindex C-c C-x C-o
4758 @item C-c C-x C-o
4759 Stop the clock (clock-out).  The inserts another timestamp at the same
4760 location where the clock was last started.  It also directly computes
4761 the resulting time in inserts it after the time range as @samp{=>
4762 HH:MM}.  See the variable @code{org-log-note-clock-out} for the
4763 possibility to record an additional note together with the clock-out
4764 time stamp@footnote{The corresponding in-buffer setting is:
4765 @code{#+STARTUP: lognoteclock-out}}.
4766 @kindex C-c C-y
4767 @item C-c C-y
4768 Recompute the time interval after changing one of the time stamps.  This
4769 is only necessary if you edit the time stamps directly.  If you change
4770 them with @kbd{S-@key{cursor}} keys, the update is automatic.
4771 @kindex C-c C-t
4772 @item C-c C-t
4773 Changing the TODO state of an item to DONE automatically stops the clock
4774 if it is running in this same item.
4775 @kindex C-c C-x C-x
4776 @item C-c C-x C-x
4777 Cancel the current clock.  This is useful if a clock was started by
4778 mistake, or if you ended up working on something else.
4779 @kindex C-c C-x C-j
4780 @item C-c C-x C-j
4781 Jump to the entry that contains the currently running clock.  With a
4782 @kbd{C-u} prefix arg, select the target task from a list of recently clocked
4783 tasks.
4784 @kindex C-c C-x C-d
4785 @item C-c C-x C-d
4786 Display time summaries for each subtree in the current buffer.  This
4787 puts overlays at the end of each headline, showing the total time
4788 recorded under that heading, including the time of any subheadings. You
4789 can use visibility cycling to study the tree, but the overlays disappear
4790 when you change the buffer (see variable
4791 @code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
4792 @kindex C-c C-x C-r
4793 @item C-c C-x C-r
4794 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
4795 report as an Org mode table into the current file.  When the cursor is
4796 at an existing clock table, just update it.  When called with a prefix
4797 argument, jump to the first clock report in the current document and
4798 update it.
4799 @cindex #+BEGIN: clocktable
4800 @example
4801 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
4802 #+END: clocktable
4803 @end example
4804 @noindent
4805 If such a block already exists at point, its content is replaced by the
4806 new table.  The @samp{BEGIN} line can specify options:
4807 @example
4808 :maxlevel    @r{Maximum level depth to which times are listed in the table.}
4809 :emphasize   @r{When @code{t}, emphasize level one and level two items}
4810 :scope       @r{The scope to consider.  This can be any of the following:}
4811              nil        @r{the current buffer or narrowed region}
4812              file       @r{the full current buffer}
4813              subtree    @r{the subtree where the clocktable is located}
4814              treeN      @r{the surrounding level N tree, for example @code{tree3}}
4815              tree       @r{the surrounding level 1 tree}
4816              agenda     @r{all agenda files}
4817              ("file"..) @r{scan these files}
4818              file-with-archives    @r{current file and its archives}
4819              agenda-with-archives  @r{all agenda files, including archives}
4820 :block       @r{The time block to consider.  This block is specified either}
4821              @r{absolute, or relative to the current time and may be any of}
4822              @r{these formats:}
4823              2007-12-31    @r{New year eve 2007}
4824              2007-12       @r{December 2007}
4825              2007-W50      @r{ISO-week 50 in 2007}
4826              2007          @r{the year 2007}
4827              today, yesterday, today-N          @r{a relative day}
4828              thisweek, lastweek, thisweek-N     @r{a relative week}
4829              thismonth, lastmonth, thismonth-N  @r{a relative month}
4830              thisyear, lastyear, thisyear-N     @r{a relative year}
4831              @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
4832 :tstart      @r{A time string specifying when to start considering times}
4833 :tend        @r{A time string specifying when to stop considering times}
4834 :step        @r{@code{week} or @code{day}, to split the table into chunks.}
4835              @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
4836 :link        @r{Link the item headlines in the table to their origins}
4837 :formula     @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
4838              @r{As a special case, @samp{:formula %} adds column with % time.}
4839              @r{If you do not specify a formula here, any existing formula}
4840              @r{below the clock table will survive updates and be evaluated.}
4841 @end example
4842 So to get a clock summary of the current level 1 tree, for the current
4843 day, you could write
4844 @example
4845 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
4846 #+END: clocktable
4847 @end example
4848 and to use a specific time range you could write@footnote{Note that all
4849 parameters must be specified in a single line - the line is broken here
4850 only to fit it onto the manual.}
4851 @example
4852 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
4853                     :tend "<2006-08-10 Thu 12:00>"
4854 #+END: clocktable
4855 @end example
4856 A summary of the current subtree with % times would be
4857 @example
4858 #+BEGIN: clocktable :scope subtree :link t :formula %
4859 #+END: clocktable
4860 @end example
4861 @kindex C-c C-c
4862 @item C-c C-c
4863 @kindex C-c C-x C-u
4864 @itemx C-c C-x C-u
4865 Update dynamical block at point.  The cursor needs to be in the
4866 @code{#+BEGIN} line of the dynamic block.
4867 @kindex C-u C-c C-x C-u
4868 @item C-u C-c C-x C-u
4869 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
4870 you have several clock table blocks in a buffer.
4871 @kindex S-@key{left}
4872 @kindex S-@key{right}
4873 @item S-@key{left}
4874 @itemx S-@key{right}
4875 Shift the current @code{:block} interval and update the table.  The cursor
4876 needs to be in the @code{#+BEGIN: clocktable} line for this command.  If
4877 @code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
4878 @end table
4880 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
4881 the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
4882 worked on or closed during a day.
4884 @node Effort estimates,  , Clocking work time, Dates and Times
4885 @section Effort estimates
4886 @cindex Effort estimates
4888 If you want to plan your work in a very detailed way, or if you need to
4889 produce offers with quotations of the estimated work effort, you may want to
4890 assign effort estimates to entries.  If you are also clocking your work, you
4891 may later want to compare the planned effort with the actual working time, a
4892 great way to improve planning estimates.  Effort estimates are stored in a
4893 special property @samp{Effort}@footnote{You may change the property being
4894 used with the variable @code{org-effort-property}.}.  Clearly the best way to
4895 work with effort estimates is through column view (@pxref{Column view}).  You
4896 should start by setting up discrete values for effort estimates, and a
4897 @code{COLUMNS} format that displays these values together with clock sums (if
4898 you want to clock your time).  For a specific buffer you can use
4900 @example
4901 #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00
4902 #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
4903 @end example
4905 @noindent
4906 or, even better, you can set up these values globally by customizing the
4907 variables @code{org-global-properties} and @code{org-columns-default-format}.
4908 In particular if you want to use this setup also in the agenda, a global
4909 setup may be advised.
4911 The way to assign estimates to individual items is then to switch to column
4912 mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
4913 value.  The values you enter will immediately be summed up in the hierarchy.
4914 In the column next to it, any clocked time will be displayed.
4916 If you switch to column view in the daily/weekly agenda, the effort column
4917 will summarize the estimated work effort for each day@footnote{Please note
4918 the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
4919 column view}).}, and you can use this to find space in your schedule.  To get
4920 an overview of the entire part of the day that is committed, you can set the
4921 option @code{org-agenda-columns-add-appointments-to-effort-sum}.  The
4922 appointments on a day that take place over a specified time interval will
4923 then also be added to the load estimate of the day.
4925 Effort estimates can be used in secondary agenda filtering that is triggered
4926 with the @kbd{/} key in the agenda (@pxref{Agenda commands}).  If you have
4927 these estimates defined consistently, two or three key presses will narrow
4928 down the list to stuff that fits into an available time slot.
4930 @node Capture, Agenda Views, Dates and Times, Top
4931 @chapter Capture
4932 @cindex capture
4934 An important part of any organization system is the ability to quickly
4935 capture new ideas and tasks, and to associate reference material with them.
4936 Org uses the @file{remember} package to create tasks, and stores files
4937 related to a task (@i{attachments}) in a special directory.
4939 @menu
4940 * Remember::                    Capture new tasks/ideas with little interruption
4941 * Attachments::                 Add files to tasks.
4942 @end menu
4944 @node Remember, Attachments, Capture, Capture
4945 @section Remember
4946 @cindex @file{remember.el}
4948 The @i{Remember} package by John Wiegley lets you store quick notes with
4949 little interruption of your work flow.  See
4950 @uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
4951 information.  It is an excellent way to add new notes and tasks to
4952 Org files.  Org significantly expands the possibilities of
4953 @i{remember}: You may define templates for different note types, and
4954 associate target files and headlines with specific templates.  It also
4955 allows you to select the location where a note should be stored
4956 interactively, on the fly.
4958 @menu
4959 * Setting up Remember::         Some code for .emacs to get things going
4960 * Remember templates::          Define the outline of different note types
4961 * Storing notes::               Directly get the note to where it belongs
4962 * Refiling notes::              Moving a note or task to a project
4963 @end menu
4965 @node Setting up Remember, Remember templates, Remember, Remember
4966 @subsection Setting up Remember
4968 The following customization will tell @i{remember} to use org files as
4969 target, and to create annotations compatible with Org links.
4971 @example
4972 (org-remember-insinuate)
4973 (setq org-directory "~/path/to/my/orgfiles/")
4974 (setq org-default-notes-file (concat org-directory "/notes.org"))
4975 (define-key global-map "\C-cr" 'org-remember)
4976 @end example
4978 The last line binds the command @code{org-remember} to a global
4979 key@footnote{Please select your own key, @kbd{C-c r} is only a
4980 suggestion.}.  @code{org-remember} basically just calls @code{remember},
4981 but it makes a few things easier: If there is an active region, it will
4982 automatically copy the region into the remember buffer.  It also allows
4983 to jump to the buffer and location where remember notes are being
4984 stored: Just call @code{org-remember} with a prefix argument.  If you
4985 use two prefix arguments, Org jumps to the location where the last
4986 remember note was stored.
4988 You can also call @code{org-remember} in a special way from the agenda,
4989 using the @kbd{k r} key combination.  With this access, any time stamps
4990 inserted by the selected remember template (see below) will default to
4991 the cursor date in the agenda, rather than to the current date.
4993 @node Remember templates, Storing notes, Setting up Remember, Remember
4994 @subsection Remember templates
4995 @cindex templates, for remember
4997 In combination with Org, you can use templates to generate
4998 different types of @i{remember} notes.  For example, if you would like
4999 to use one template to create general TODO entries, another one for
5000 journal entries, and a third one for collecting random ideas, you could
5001 use:
5003 @example
5004 (setq org-remember-templates
5005  '(("Todo" ?t "* TODO %?\n  %i\n  %a" "~/org/TODO.org" "Tasks")
5006    ("Journal" ?j "* %U %?\n\n  %i\n  %a" "~/org/JOURNAL.org")
5007    ("Idea" ?i "* %^@{Title@}\n  %i\n  %a" "~/org/JOURNAL.org" "New Ideas")))
5008 @end example
5010 @noindent In these entries, the first string is just a name, and the
5011 character specifies how to select the template.  It is useful if the
5012 character is also the first letter of the name.  The next string specifies
5013 the template.  Two more (optional) strings give the file in which, and the
5014 headline under which the new note should be stored.  The file (if not present
5015 or @code{nil}) defaults to @code{org-default-notes-file}, the heading to
5016 @code{org-remember-default-headline}.  If the file name is not an absolute
5017 path, it will be interpreted relative to @code{org-directory}.  The heading
5018 can also be the symbols @code{top} or @code{bottom} to send note as level 1
5019 entries to the beginning or end of the file, respectively.
5021 An optional sixth element specifies the contexts in which the user can select
5022 the template.  This element can be a list of major modes or a function.
5023 @code{org-remember} will first check whether the function returns @code{t} or
5024 if we are in any of the listed major mode, and exclude templates fo which
5025 this condition is not fulfilled.  Templates that do not specify this element
5026 at all, or that use @code{nil} or @code{t} as a value will always be
5027 selectable.
5029 So for example:
5031 @example
5032 (setq org-remember-templates
5033  '(("Bug" ?b "* BUG %?\n  %i\n  %a" "~/org/BUGS.org" "Bugs" (emacs-lisp-mode))
5034    ("Journal" ?j "* %U %?\n\n  %i\n  %a" "~/org/JOURNAL.org" "X" my-check)
5035    ("Idea" ?i "* %^@{Title@}\n  %i\n  %a" "~/org/JOURNAL.org" "New Ideas")))
5036 @end example
5038 The first template will only be available when invoking @code{org-remember}
5039 from an buffer in @code{emacs-lisp-mode}.  The second template will only be
5040 available when the function @code{my-check} returns @code{t}.  The third
5041 template will be proposed in any context.
5043 When you call @kbd{M-x org-remember} (or @kbd{M-x remember}) to remember
5044 something, Org will prompt for a key to select the template (if you have
5045 more than one template) and then prepare the buffer like
5046 @example
5047 * TODO
5048   [[file:link to where you called remember]]
5049 @end example
5051 @noindent
5052 During expansion of the template, special @kbd{%}-escapes allow dynamic
5053 insertion of content:
5054 @example
5055 %^@{prompt@}  @r{prompt the user for a string and replace this sequence with it.}
5056             @r{You may specify a default value and a completion table with}
5057             @r{%^@{prompt|default|completion2|completion3...@}}
5058             @r{The arrow keys access a prompt-specific history.}
5059 %a          @r{annotation, normally the link created with @code{org-store-link}}
5060 %A          @r{like @code{%a}, but prompt for the description part}
5061 %i          @r{initial content, the region when remember is called with C-u.}
5062             @r{The entire text will be indented like @code{%i} itself.}
5063 %t          @r{time stamp, date only}
5064 %T          @r{time stamp with date and time}
5065 %u, %U      @r{like the above, but inactive time stamps}
5066 %^t         @r{like @code{%t}, but prompt for date.  Similarly @code{%^T}, @code{%^u}, @code{%^U}}
5067             @r{You may define a prompt like @code{%^@{Birthday@}t}}
5068 %n          @r{user name (taken from @code{user-full-name})}
5069 %c          @r{Current kill ring head.}
5070 %x          @r{Content of the X clipboard.}
5071 %^C         @r{Interactive selection of which kill or clip to use.}
5072 %^L         @r{Like @code{%^C}, but insert as link.}
5073 %^g         @r{prompt for tags, with completion on tags in target file.}
5074 %k          @r{title of currently clocked task}
5075 %K          @r{link to currently clocked task}
5076 %^G         @r{prompt for tags, with completion all tags in all agenda files.}
5077 %^@{prop@}p   @r{Prompt the user for a value for property @code{prop}}
5078 %:keyword   @r{specific information for certain link types, see below}
5079 %[pathname] @r{insert the contents of the file given by @code{pathname}}
5080 %(sexp)     @r{evaluate elisp @code{(sexp)} and replace with the result}
5081 %!          @r{immediately store note after completing the template}
5082             @r{(skipping the @kbd{C-c C-c} that normally triggers storing)}
5083 %&          @r{jump to target location immediately after storing note}
5084 @end example
5086 @noindent
5087 For specific link types, the following keywords will be
5088 defined@footnote{If you define your own link types (@pxref{Adding
5089 hyperlink types}), any property you store with
5090 @code{org-store-link-props} can be accessed in remember templates in a
5091 similar way.}:
5093 @example
5094 Link type          |  Available keywords
5095 -------------------+----------------------------------------------
5096 bbdb               |  %:name %:company
5097 bbdb               |  %::server %:port %:nick
5098 vm, wl, mh, rmail  |  %:type %:subject %:message-id
5099                    |  %:from %:fromname %:fromaddress
5100                    |  %:to   %:toname   %:toaddress
5101                    |  %:fromto @r{(either "to NAME" or "from NAME")@footnote{This will always be the other, not the user.  See the variable @code{org-from-is-user-regexp}.}}
5102 gnus               |  %:group, @r{for messages also all email fields}
5103 w3, w3m            |  %:url
5104 info               |  %:file %:node
5105 calendar           |  %:date"
5106 @end example
5108 @noindent
5109 To place the cursor after template expansion use:
5111 @example
5112 %?          @r{After completing the template, position cursor here.}
5113 @end example
5115 @noindent
5116 If you change your mind about which template to use, call
5117 @code{org-remember} in the remember buffer.  You may then select a new
5118 template that will be filled with the previous context information.
5120 @node Storing notes, Refiling notes, Remember templates, Remember
5121 @subsection Storing notes
5123 When you are finished preparing a note with @i{remember}, you have to press
5124 @kbd{C-c C-c} to file the note away.  If you have started the clock in the
5125 remember buffer, you will first be asked if you want to clock out
5126 now@footnote{To avoid this query, configure the variable
5127 @code{org-remember-clock-out-on-exit}.}.  If you answer @kbd{n}, the clock
5128 will continue to run after the note was filed away.
5130 The handler will then store the note in the file and under the headline
5131 specified in the template, or it will use the default file and headlines.
5132 The window configuration will be restored, sending you back to the working
5133 context before the call to @code{remember}.  To re-use the location found
5134 during the last call to @code{remember}, exit the remember buffer with
5135 @kbd{C-0 C-c C-c}, i.e. specify a zero prefix argument to @kbd{C-c C-c}.
5136 Another special case is @kbd{C-2 C-c C-c} which files the note as a child of
5137 the currently clocked item.
5139 If you want to store the note directly to a different place, use
5140 @kbd{C-1 C-c C-c} instead to exit remember@footnote{Configure the
5141 variable @code{org-remember-store-without-prompt} to make this behavior
5142 the default.}.  The handler will then first prompt for a target file -
5143 if you press @key{RET}, the value specified for the template is used.
5144 Then the command offers the headings tree of the selected file, with the
5145 cursor position at the default headline (if you had specified one in the
5146 template).  You can either immediately press @key{RET} to get the note
5147 placed there.  Or you can use the following keys to find a different
5148 location:
5149 @example
5150 @key{TAB}         @r{Cycle visibility.}
5151 @key{down} / @key{up}   @r{Next/previous visible headline.}
5152 n / p        @r{Next/previous visible headline.}
5153 f / b        @r{Next/previous headline same level.}
5154 u            @r{One level up.}
5155 @c 0-9          @r{Digit argument.}
5156 @end example
5157 @noindent
5158 Pressing @key{RET} or @key{left} or @key{right}
5159 then leads to the following result.
5161 @multitable @columnfractions 0.2 0.15 0.65
5162 @item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
5163 @item on headline     @tab @key{RET}              @tab as sublevel of the heading at cursor, first or last
5164 @item                 @tab                        @tab depending on @code{org-reverse-note-order}.
5165 @item                 @tab @key{left}/@key{right} @tab as same level, before/after current heading
5166 @item buffer-start    @tab @key{RET} @tab as level 2 heading at end of file or level 1 at beginning
5167 @item                 @tab @tab depending on @code{org-reverse-note-order}.
5168 @item not on headline @tab @key{RET}
5169       @tab at cursor position, level taken from context.
5170 @end multitable
5172 Before inserting the text into a tree, the function ensures that the text has
5173 a headline, i.e. a first line that starts with a @samp{*}.  If not, a
5174 headline is constructed from the current date.  If you have indented the text
5175 of the note below the headline, the indentation will be adapted if inserting
5176 the note into the tree requires demotion from level 1.
5178 @node Refiling notes,  , Storing notes, Remember
5179 @subsection Refiling notes
5180 @cindex refiling notes
5182 Remember is usually used to quickly capture notes and tasks into one or
5183 a few capture lists.  When reviewing the captured data, you may want to
5184 refile some of the entries into a different list, for example into a
5185 project.  Cutting, finding the right location and then pasting the note
5186 is cumbersome.  To simplify this process, you can use the following
5187 special command:
5189 @table @kbd
5190 @kindex C-c C-w
5191 @item C-c C-w
5192 Refile the entry or region at point.  This command offers possible locations
5193 for refiling the entry and lets you select one with completion.  The item (or
5194 all items in the region) is filed below the target heading as a subitem.
5195 Depending on @code{org-reverse-note-order}, it will be either the first of
5196 last subitem.@*
5197 By default, all level 1 headlines in the current buffer are considered to be
5198 targets, but you can have more complex definitions across a number of files.
5199 See the variable @code{org-refile-targets} for details.  If you would like to
5200 select a location via a file-pathlike completion along the outline path, see
5201 the variable @code{org-refile-use-outline-path}.
5202 @kindex C-u C-c C-w
5203 @item C-u C-c C-w
5204 Use the refile interface to jump to a heading.
5205 @kindex C-u C-u C-c C-w
5206 @item C-u C-u C-c C-w
5207 Jump to the location where @code{org-refile} last moved a tree to.
5208 @end table
5210 @node Attachments,  , Remember, Capture
5211 @section Attachments
5212 @cindex attachments
5214 It is often useful to associate reference material with an outline node/task.
5215 Small chunks of plain text can simply be stored in the subtree of a project.
5216 Hyperlinks (@pxref{Hyperlinks}) can be used to establish associations with
5217 files that live elsewhere on your computer or in the cloud, like emails or
5218 source code files belonging to a project.  Another method is @i{attachments},
5219 which are files located in a directory belonging to an outline node.  Org
5220 uses directories named by the unique ID of each entry.  These directories are
5221 located in the @file{data} directory which lives in the same directory where
5222 your org-file lives@footnote{If you move entries or Org-files from one
5223 directory to the next, you may want to configure @code{org-attach-directory}
5224 to contain an absolute path.}.  If you initialize this directory with
5225 @code{git-init}, Org will automatically commit changes when it sees them.
5226 The attachment system has been contributed to Org by John Wiegley.
5228 @noindent The following commands deal with attachments.
5230 @table @kbd
5232 @kindex C-c C-a
5233 @item C-c C-a
5234 The dispatcher for commands related to the attachment system.  After these
5235 keys, a list of commands is displayed and you need to press an additional key
5236 to select a command:
5238 @table @kbd
5239 @kindex C-c C-a a 
5240 @item a 
5241 Select a file and move it into the task's attachment directory.  The file
5242 will be copied, moved, or linked, depending on @code{org-attach-method}.
5243 Note that hard links are not supported on all systems.
5245 @kindex C-c C-a c
5246 @kindex C-c C-a m 
5247 @kindex C-c C-a l 
5248 @item c/m/l
5249 Attach a file using the copy/move/link method.
5250 Note that hard links are not supported on all systems.
5252 @kindex C-c C-a n
5253 @item n
5254 Create a new attachment as an Emacs buffer.
5256 @kindex C-c C-a z
5257 @item z
5258 Synchronize the current task with its attachment directory, in case you added
5259 attachments yourself.
5261 @kindex C-c C-a o
5262 @item o
5263 Open current task's attachment.  If there are more than one, prompt for a
5264 file name first.  Opening will follow the rules set by @code{org-file-apps}.
5265 For more details, see the information on following hyperlings
5266 (@pxref{Handling links}).
5268 @kindex C-c C-a O
5269 @item O
5270 Also open the attachment, but force opening the file in Emacs.
5272 @kindex C-c C-a f
5273 @item f
5274 Open the current task's attachment directory.
5276 @kindex C-c C-a F
5277 @item F
5278 Also open the directory, but force using @code{dired} in Emacs.
5280 @kindex C-c C-a d
5281 @item d
5282 Select and delete a single attachment.
5284 @kindex C-c C-a D
5285 @item D
5286 Delete all of a task's attachments.  A safer way is to open the directory in
5287 dired and delete from there.
5288 @end table
5289 @end table
5291 @node Agenda Views, Embedded LaTeX, Capture, Top
5292 @chapter Agenda Views
5293 @cindex agenda views
5295 Due to the way Org works, TODO items, time-stamped items, and
5296 tagged headlines can be scattered throughout a file or even a number of
5297 files.  To get an overview of open action items, or of events that are
5298 important for a particular date, this information must be collected,
5299 sorted and displayed in an organized way.
5301 Org can select items based on various criteria, and display them
5302 in a separate buffer.  Seven different view types are provided:
5304 @itemize @bullet
5305 @item
5306 an @emph{agenda} that is like a calendar and shows information
5307 for specific dates,
5308 @item
5309 a @emph{TODO list} that covers all unfinished
5310 action items,
5311 @item
5312 a @emph{match view}, showings headlines based on the tags, properties and
5313 TODO state associated with them,
5314 @item
5315 a @emph{timeline view} that shows all events in a single Org file,
5316 in time-sorted view,
5317 @item
5318 a @emph{keyword search view} that shows all entries from multiple files
5319 that contain specified keywords.
5320 @item
5321 a @emph{stuck projects view} showing projects that currently don't move
5322 along, and
5323 @item
5324 @emph{custom views} that are special tag/keyword searches and
5325 combinations of different views.
5326 @end itemize
5328 @noindent
5329 The extracted information is displayed in a special @emph{agenda
5330 buffer}.  This buffer is read-only, but provides commands to visit the
5331 corresponding locations in the original Org files, and even to
5332 edit these files remotely.
5334 Two variables control how the agenda buffer is displayed and whether the
5335 window configuration is restored when the agenda exits:
5336 @code{org-agenda-window-setup} and
5337 @code{org-agenda-restore-windows-after-quit}.
5339 @menu
5340 * Agenda files::                Files being searched for agenda information
5341 * Agenda dispatcher::           Keyboard access to agenda views
5342 * Built-in agenda views::       What is available out of the box?
5343 * Presentation and sorting::    How agenda items are prepared for display
5344 * Agenda commands::             Remote editing of Org trees
5345 * Custom agenda views::         Defining special searches and views
5346 * Agenda column view::          Using column view for collected entries
5347 @end menu
5349 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
5350 @section Agenda files
5351 @cindex agenda files
5352 @cindex files for agenda
5354 The information to be shown is normally collected from all @emph{agenda
5355 files}, the files listed in the variable
5356 @code{org-agenda-files}@footnote{If the value of that variable is not a
5357 list, but a single file name, then the list of agenda files will be
5358 maintained in that external file.}. If a directory is part of this list,
5359 all files with the extension @file{.org} in this directory will be part
5360 of the list.
5362 Thus even if you only work with a single Org file, this file should
5363 be put into that list@footnote{When using the dispatcher, pressing
5364 @kbd{<} before selecting a command will actually limit the command to
5365 the current file, and ignore @code{org-agenda-files} until the next
5366 dispatcher command.}.  You can customize @code{org-agenda-files}, but
5367 the easiest way to maintain it is through the following commands
5369 @cindex files, adding to agenda list
5370 @table @kbd
5371 @kindex C-c [
5372 @item C-c [
5373 Add current file to the list of agenda files.  The file is added to
5374 the front of the list.  If it was already in the list, it is moved to
5375 the front.  With a prefix argument, file is added/moved to the end.
5376 @kindex C-c ]
5377 @item C-c ]
5378 Remove current file from the list of agenda files.
5379 @kindex C-,
5380 @kindex C-'
5381 @item C-,
5382 @itemx C-'
5383 Cycle through agenda file list, visiting one file after the other.
5384 @kindex M-x org-iswitchb
5385 @item M-x org-iswitchb
5386 Command to use an @code{iswitchb}-like interface to switch to and between Org
5387 buffers.
5388 @end table
5390 @noindent
5391 The Org menu contains the current list of files and can be used
5392 to visit any of them.
5394 If you would like to focus the agenda temporarily onto a file not in
5395 this list, or onto just one file in the list or even only a subtree in a
5396 file, this can be done in different ways.  For a single agenda command,
5397 you may press @kbd{<} once or several times in the dispatcher
5398 (@pxref{Agenda dispatcher}).  To restrict the agenda scope for an
5399 extended period, use the following commands:
5401 @table @kbd
5402 @kindex C-c C-x <
5403 @item C-c C-x <
5404 Permanently restrict the agenda to the current subtree.  When with a
5405 prefix argument, or with the cursor before the first headline in a file,
5406 the agenda scope is set to the entire file.  This restriction remains in
5407 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
5408 or @kbd{>} in the agenda dispatcher.  If there is a window displaying an
5409 agenda view, the new restriction takes effect immediately.
5410 @kindex C-c C-x <
5411 @item C-c C-x <
5412 Remove the permanent restriction created by @kbd{C-c C-x <}.
5413 @end table
5415 @noindent
5416 When working with @file{Speedbar}, you can use the following commands in
5417 the Speedbar frame:
5418 @table @kbd
5419 @kindex <
5420 @item < @r{in the speedbar frame}
5421 Permanently restrict the agenda to the item at the cursor in the
5422 Speedbar frame, either an Org file or a subtree in such a file.
5423 If there is a window displaying an agenda view, the new restriction takes
5424 effect immediately.
5425 @kindex <
5426 @item > @r{in the speedbar frame}
5427 Lift the restriction again.
5428 @end table
5430 @node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
5431 @section The agenda dispatcher
5432 @cindex agenda dispatcher
5433 @cindex dispatching agenda commands
5434 The views are created through a dispatcher that should be bound to a
5435 global key, for example @kbd{C-c a} (@pxref{Installation}).  In the
5436 following we will assume that @kbd{C-c a} is indeed how the dispatcher
5437 is accessed and list keyboard access to commands accordingly.  After
5438 pressing @kbd{C-c a}, an additional letter is required to execute a
5439 command.  The dispatcher offers the following default commands:
5440 @table @kbd
5441 @item a
5442 Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
5443 @item t @r{/} T
5444 Create a list of all TODO items (@pxref{Global TODO list}).
5445 @item m @r{/} M
5446 Create a list of headlines matching a TAGS expression (@pxref{Matching
5447 tags and properties}).
5448 @item L
5449 Create the timeline view for the current buffer (@pxref{Timeline}).
5450 @item s
5451 Create a list of entries selected by a boolean expression of keywords
5452 and/or regular expressions that must or must not occur in the entry.
5453 @item /
5454 Search for a regular expression in all agenda files and additionally in
5455 the files listed in @code{org-agenda-multi-occur-extra-files}.  This
5456 uses the Emacs command @code{multi-occur}.  A prefix argument can be
5457 used to specify the number of context lines for each match, default is
5459 @item # @r{/} !
5460 Create a list of stuck projects (@pxref{Stuck projects}).
5461 @item <
5462 Restrict an agenda command to the current buffer@footnote{For backward
5463 compatibility, you can also press @kbd{1} to restrict to the current
5464 buffer.}.  After pressing @kbd{<}, you still need to press the character
5465 selecting the command.
5466 @item < <
5467 If there is an active region, restrict the following agenda command to
5468 the region.  Otherwise, restrict it to the current subtree@footnote{For
5469 backward compatibility, you can also press @kbd{0} to restrict to the
5470 current buffer.}.  After pressing @kbd{< <}, you still need to press the
5471 character selecting the command.
5472 @end table
5474 You can also define custom commands that will be accessible through the
5475 dispatcher, just like the default commands.  This includes the
5476 possibility to create extended agenda buffers that contain several
5477 blocks together, for example the weekly agenda, the global TODO list and
5478 a number of special tags matches.  @xref{Custom agenda views}.
5480 @node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
5481 @section The built-in agenda views
5483 In this section we describe the built-in views.
5485 @menu
5486 * Weekly/daily agenda::         The calendar page with current tasks
5487 * Global TODO list::            All unfinished action items
5488 * Matching tags and properties::  Structured information with fine-tuned search
5489 * Timeline::                    Time-sorted view for single file
5490 * Keyword search::              Finding entries by keyword
5491 * Stuck projects::              Find projects you need to review
5492 @end menu
5494 @node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
5495 @subsection The weekly/daily agenda
5496 @cindex agenda
5497 @cindex weekly agenda
5498 @cindex daily agenda
5500 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
5501 paper agenda, showing all the tasks for the current week or day.
5503 @table @kbd
5504 @cindex org-agenda, command
5505 @kindex C-c a a
5506 @item C-c a a
5507 Compile an agenda for the current week from a list of org files.  The agenda
5508 shows the entries for each day.  With a numeric prefix@footnote{For backward
5509 compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
5510 listed before the agenda.  This feature is deprecated, use the dedicated TODO
5511 list, or a block agenda instead (@pxref{Block agenda}).}  (like @kbd{C-u 2 1
5512 C-c a a}) you may set the number of days to be displayed (see also the
5513 variable @code{org-agenda-ndays})
5514 @end table
5516 Remote editing from the agenda buffer means, for example, that you can
5517 change the dates of deadlines and appointments from the agenda buffer.
5518 The commands available in the Agenda buffer are listed in @ref{Agenda
5519 commands}.
5521 @subsubheading Calendar/Diary integration
5522 @cindex calendar integration
5523 @cindex diary integration
5525 Emacs contains the calendar and diary by Edward M. Reingold.  The
5526 calendar displays a three-month calendar with holidays from different
5527 countries and cultures.  The diary allows you to keep track of
5528 anniversaries, lunar phases, sunrise/set, recurrent appointments
5529 (weekly, monthly) and more.  In this way, it is quite complementary to
5530 Org.  It can be very useful to combine output from Org with
5531 the diary.
5533 In order to include entries from the Emacs diary into Org mode's
5534 agenda, you only need to customize the variable
5536 @lisp
5537 (setq org-agenda-include-diary t)
5538 @end lisp
5540 @noindent After that, everything will happen automatically.  All diary
5541 entries including holidays, anniversaries etc will be included in the
5542 agenda buffer created by Org mode.  @key{SPC}, @key{TAB}, and
5543 @key{RET} can be used from the agenda buffer to jump to the diary
5544 file in order to edit existing diary entries.  The @kbd{i} command to
5545 insert new entries for the current date works in the agenda buffer, as
5546 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
5547 Sunrise/Sunset times, show lunar phases and to convert to other
5548 calendars, respectively.  @kbd{c} can be used to switch back and forth
5549 between calendar and agenda.
5551 If you are using the diary only for sexp entries and holidays, it is
5552 faster to not use the above setting, but instead to copy or even move
5553 the entries into an Org file. Org mode evaluates diary-style sexp
5554 entries, and does it faster because there is no overhead for first
5555 creating the diary display.  Note that the sexp entries must start at
5556 the left margin, no white space is allowed before them.  For example,
5557 the following segment of an Org file will be processed and entries
5558 will be made in the agenda:
5560 @example
5561 * Birthdays and similar stuff
5562 #+CATEGORY: Holiday
5563 %%(org-calendar-holiday)   ; special function for holiday names
5564 #+CATEGORY: Ann
5565 %%(diary-anniversary 14  5 1956) Arthur Dent is %d years old
5566 %%(diary-anniversary  2 10 1869) Mahatma Gandhi would be %d years old
5567 @end example
5569 @subsubheading Appointment reminders
5570 @cindex @file{appt.el}
5571 @cindex appointment reminders
5573 Org can interact with Emacs appointments notification facility.
5575 To add all the appointments of your agenda files, use the command
5576 @code{org-agenda-to-appt}.  This commands also lets you filter through
5577 the list of your appointments and add only those belonging to a specific
5578 category or matching a regular expression. See the docstring for
5579 details.
5581 @node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
5582 @subsection The global TODO list
5583 @cindex global TODO list
5584 @cindex TODO list, global
5586 The global TODO list contains all unfinished TODO items, formatted and
5587 collected into a single place.
5589 @table @kbd
5590 @kindex C-c a t
5591 @item C-c a t
5592 Show the global TODO list.  This collects the TODO items from all
5593 agenda files (@pxref{Agenda Views}) into a single buffer.  The buffer is in
5594 @code{agenda-mode}, so there are commands to examine and manipulate
5595 the TODO entries directly from that buffer (@pxref{Agenda commands}).
5596 @kindex C-c a T
5597 @item C-c a T
5598 @cindex TODO keyword matching
5599 Like the above, but allows selection of a specific TODO keyword.  You
5600 can also do this by specifying a prefix argument to @kbd{C-c a t}.  With
5601 a @kbd{C-u} prefix you are prompted for a keyword, and you may also
5602 specify several keywords by separating them with @samp{|} as boolean OR
5603 operator.  With a numeric prefix, the Nth keyword in
5604 @code{org-todo-keywords} is selected.
5605 @kindex r
5606 The @kbd{r} key in the agenda buffer regenerates it, and you can give
5607 a prefix argument to this command to change the selected TODO keyword,
5608 for example @kbd{3 r}.  If you often need a search for a specific
5609 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
5610 Matching specific TODO keywords can also be done as part of a tags
5611 search (@pxref{Tag searches}).
5612 @end table
5614 Remote editing of TODO items means that you can change the state of a
5615 TODO entry with a single key press.  The commands available in the
5616 TODO list are described in @ref{Agenda commands}.
5618 @cindex sublevels, inclusion into TODO list
5619 Normally the global TODO list simply shows all headlines with TODO
5620 keywords.  This list can become very long.  There are two ways to keep
5621 it more compact:
5622 @itemize @minus
5623 @item
5624 Some people view a TODO item that has been @emph{scheduled} for
5625 execution (@pxref{Timestamps}) as no longer @emph{open}.  Configure the
5626 variable @code{org-agenda-todo-ignore-scheduled} to exclude scheduled
5627 items from the global TODO list.
5628 @item
5629 TODO items may have sublevels to break up the task into subtasks.  In
5630 such cases it may be enough to list only the highest level TODO headline
5631 and omit the sublevels from the global list.  Configure the variable
5632 @code{org-agenda-todo-list-sublevels} to get this behavior.
5633 @end itemize
5635 @node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
5636 @subsection Matching tags and properties
5637 @cindex matching, of tags
5638 @cindex matching, of properties
5639 @cindex tags view
5640 @cindex match view
5642 If headlines in the agenda files are marked with @emph{tags}
5643 (@pxref{Tags}), you can select headlines based on the tags that apply
5644 to them and collect them into an agenda buffer.
5646 @table @kbd
5647 @kindex C-c a m
5648 @item C-c a m
5649 Produce a list of all headlines that match a given set of tags.  The
5650 command prompts for a selection criterion, which is a boolean logic
5651 expression with tags, like @samp{+work+urgent-withboss} or
5652 @samp{work|home} (@pxref{Tags}).  If you often need a specific search,
5653 define a custom command for it (@pxref{Agenda dispatcher}).
5654 @kindex C-c a M
5655 @item C-c a M
5656 Like @kbd{C-c a m}, but only select headlines that are also TODO items
5657 and force checking subitems (see variable
5658 @code{org-tags-match-list-sublevels}).  Matching specific TODO keywords
5659 together with a tags match is also possible, see @ref{Tag searches}.
5660 @end table
5662 The commands available in the tags list are described in @ref{Agenda
5663 commands}.
5665 @node Timeline, Keyword search, Matching tags and properties, Built-in agenda views
5666 @subsection Timeline for a single file
5667 @cindex timeline, single file
5668 @cindex time-sorted view
5670 The timeline summarizes all time-stamped items from a single Org mode
5671 file in a @emph{time-sorted view}.  The main purpose of this command is
5672 to give an overview over events in a project.
5674 @table @kbd
5675 @kindex C-c a L
5676 @item C-c a L
5677 Show a time-sorted view of the org file, with all time-stamped items.
5678 When called with a @kbd{C-u} prefix, all unfinished TODO entries
5679 (scheduled or not) are also listed under the current date.
5680 @end table
5682 @noindent
5683 The commands available in the timeline buffer are listed in
5684 @ref{Agenda commands}.
5686 @node Keyword search, Stuck projects, Timeline, Built-in agenda views
5687 @subsection Keyword search
5688 @cindex keyword search
5689 @cindex searching, for keywords
5691 This agenda view is a general text search facility for Org mode entries.
5692 It is particularly useful to find notes.
5694 @table @kbd
5695 @kindex C-c a s
5696 @item C-c a s
5697 This is a special search that lets you select entries by keywords or
5698 regular expression, using a boolean logic.  For example, the search
5699 string
5701 @example
5702 +computer +wifi -ethernet -@{8\.11[bg]@}
5703 @end example
5705 @noindent
5706 will search for note entries that contain the keywords @code{computer}
5707 and @code{wifi}, but not the keyword @code{ethernet}, and which are also
5708 not matched by the regular expression @code{8\.11[bg]}, meaning to
5709 exclude both 8.11b and 8.11g.
5711 Note that in addition to the agenda files, this command will also search
5712 the files listed in @code{org-agenda-text-search-extra-files}.
5713 @end table
5715 @node Stuck projects,  , Keyword search, Built-in agenda views
5716 @subsection Stuck projects
5718 If you are following a system like David Allen's GTD to organize your
5719 work, one of the ``duties'' you have is a regular review to make sure
5720 that all projects move along.  A @emph{stuck} project is a project that
5721 has no defined next actions, so it will never show up in the TODO lists
5722 Org mode produces.  During the review, you need to identify such
5723 projects and define next actions for them.
5725 @table @kbd
5726 @kindex C-c a #
5727 @item C-c a #
5728 List projects that are stuck.
5729 @kindex C-c a !
5730 @item C-c a !
5731 Customize the variable @code{org-stuck-projects} to define what a stuck
5732 project is and how to find it.
5733 @end table
5735 You almost certainly will have to configure this view before it will
5736 work for you.  The built-in default assumes that all your projects are
5737 level-2 headlines, and that a project is not stuck if it has at least
5738 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
5740 Let's assume that you, in your own way of using Org mode, identify
5741 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
5742 indicate a project that should not be considered yet.  Let's further
5743 assume that the TODO keyword DONE marks finished projects, and that NEXT
5744 and TODO indicate next actions.  The tag @@SHOP indicates shopping and
5745 is a next action even without the NEXT tag.  Finally, if the project
5746 contains the special word IGNORE anywhere, it should not be listed
5747 either.  In this case you would start by identifying eligible projects
5748 with a tags/todo match @samp{+PROJECT/-MAYBE-DONE}, and then check for
5749 TODO, NEXT, @@SHOP, and IGNORE in the subtree to identify projects that
5750 are not stuck.  The correct customization for this is
5752 @lisp
5753 (setq org-stuck-projects
5754       '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
5755                                "\\<IGNORE\\>"))
5756 @end lisp
5759 @node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
5760 @section Presentation and sorting
5761 @cindex presentation, of agenda items
5763 Before displaying items in an agenda view, Org mode visually prepares
5764 the items and sorts them.  Each item occupies a single line.  The line
5765 starts with a @emph{prefix} that contains the @emph{category}
5766 (@pxref{Categories}) of the item and other important information.  You can
5767 customize the prefix using the option @code{org-agenda-prefix-format}.
5768 The prefix is followed by a cleaned-up version of the outline headline
5769 associated with the item.
5771 @menu
5772 * Categories::                  Not all tasks are equal
5773 * Time-of-day specifications::  How the agenda knows the time
5774 * Sorting of agenda items::     The order of things
5775 @end menu
5777 @node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
5778 @subsection Categories
5780 @cindex category
5781 The category is a broad label assigned to each agenda item.  By default,
5782 the category is simply derived from the file name, but you can also
5783 specify it with a special line in the buffer, like this@footnote{For
5784 backward compatibility, the following also works: If there are several
5785 such lines in a file, each specifies the category for the text below it.
5786 The first category also applies to any text before the first CATEGORY
5787 line.  However, using this method is @emph{strongly} deprecated as it is
5788 incompatible with the outline structure of the document.  The correct
5789 method for setting multiple categories in a buffer is using a
5790 property.}:
5792 @example
5793 #+CATEGORY: Thesis
5794 @end example
5796 @noindent
5797 If you would like to have a special CATEGORY for a single entry or a
5798 (sub)tree, give the entry a @code{:CATEGORY:} property with the location
5799 as the value (@pxref{Properties and Columns}).
5801 @noindent
5802 The display in the agenda buffer looks best if the category is not
5803 longer than 10 characters.
5805 @node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
5806 @subsection Time-of-day specifications
5807 @cindex time-of-day specification
5809 Org mode checks each agenda item for a time-of-day specification.  The
5810 time can be part of the time stamp that triggered inclusion into the
5811 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
5812 ranges can be specified with two time stamps, like
5814 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
5816 In the headline of the entry itself, a time(range) may also appear as
5817 plain text (like @samp{12:45} or a @samp{8:30-1pm}).  If the agenda
5818 integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
5819 specifications in diary entries are recognized as well.
5821 For agenda display, Org mode extracts the time and displays it in a
5822 standard 24 hour format as part of the prefix.  The example times in
5823 the previous paragraphs would end up in the agenda like this:
5825 @example
5826     8:30-13:00 Arthur Dent lies in front of the bulldozer
5827    12:45...... Ford Prefect arrives and takes Arthur to the pub
5828    19:00...... The Vogon reads his poem
5829    20:30-22:15 Marwin escorts the Hitchhikers to the bridge
5830 @end example
5832 @cindex time grid
5833 If the agenda is in single-day mode, or for the display of today, the
5834 timed entries are embedded in a time grid, like
5836 @example
5837     8:00...... ------------------
5838     8:30-13:00 Arthur Dent lies in front of the bulldozer
5839    10:00...... ------------------
5840    12:00...... ------------------
5841    12:45...... Ford Prefect arrives and takes Arthur to the pub
5842    14:00...... ------------------
5843    16:00...... ------------------
5844    18:00...... ------------------
5845    19:00...... The Vogon reads his poem
5846    20:00...... ------------------
5847    20:30-22:15 Marwin escorts the Hitchhikers to the bridge
5848 @end example
5850 The time grid can be turned on and off with the variable
5851 @code{org-agenda-use-time-grid}, and can be configured with
5852 @code{org-agenda-time-grid}.
5854 @node Sorting of agenda items,  , Time-of-day specifications, Presentation and sorting
5855 @subsection Sorting of agenda items
5856 @cindex sorting, of agenda items
5857 @cindex priorities, of agenda items
5858 Before being inserted into a view, the items are sorted.  How this is
5859 done depends on the type of view.
5860 @itemize @bullet
5861 @item
5862 For the daily/weekly agenda, the items for each day are sorted.  The
5863 default order is to first collect all items containing an explicit
5864 time-of-day specification.  These entries will be shown at the beginning
5865 of the list, as a @emph{schedule} for the day.  After that, items remain
5866 grouped in categories, in the sequence given by @code{org-agenda-files}.
5867 Within each category, items are sorted by priority (@pxref{Priorities}),
5868 which is composed of the base priority (2000 for priority @samp{A}, 1000
5869 for @samp{B}, and 0 for @samp{C}), plus additional increments for
5870 overdue scheduled or deadline items.
5871 @item
5872 For the TODO list, items remain in the order of categories, but within
5873 each category, sorting takes place according to priority
5874 (@pxref{Priorities}).
5875 @item
5876 For tags matches, items are not sorted at all, but just appear in the
5877 sequence in which they are found in the agenda files.
5878 @end itemize
5880 Sorting can be customized using the variable
5881 @code{org-agenda-sorting-strategy}, and may also include criteria based on
5882 the estimated effort of an entry (@pxref{Effort estimates}).
5884 @node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
5885 @section Commands in the agenda buffer
5886 @cindex commands, in agenda buffer
5888 Entries in the agenda buffer are linked back to the org file or diary
5889 file where they originate.  You are not allowed to edit the agenda
5890 buffer itself, but commands are provided to show and jump to the
5891 original entry location, and to edit the org-files ``remotely'' from
5892 the agenda buffer.  In this way, all information is stored only once,
5893 removing the risk that your agenda and note files may diverge.
5895 Some commands can be executed with mouse clicks on agenda lines.  For
5896 the other commands, the cursor needs to be in the desired line.
5898 @table @kbd
5899 @tsubheading{Motion}
5900 @cindex motion commands in agenda
5901 @kindex n
5902 @item n
5903 Next line (same as @key{up} and @kbd{C-p}).
5904 @kindex p
5905 @item p
5906 Previous line (same as @key{down} and @kbd{C-n}).
5907 @tsubheading{View/Go to org file}
5908 @kindex mouse-3
5909 @kindex @key{SPC}
5910 @item mouse-3
5911 @itemx @key{SPC}
5912 Display the original location of the item in another window.
5914 @kindex L
5915 @item L
5916 Display original location and recenter that window.
5918 @kindex mouse-2
5919 @kindex mouse-1
5920 @kindex @key{TAB}
5921 @item mouse-2
5922 @itemx mouse-1
5923 @itemx @key{TAB}
5924 Go to the original location of the item in another window.  Under Emacs
5925 22, @kbd{mouse-1} will also works for this.
5927 @kindex @key{RET}
5928 @itemx @key{RET}
5929 Go to the original location of the item and delete other windows.
5931 @kindex f
5932 @item f
5933 Toggle Follow mode.  In Follow mode, as you move the cursor through
5934 the agenda buffer, the other window always shows the corresponding
5935 location in the org file.  The initial setting for this mode in new
5936 agenda buffers can be set with the variable
5937 @code{org-agenda-start-with-follow-mode}.
5939 @kindex b
5940 @item b
5941 Display the entire subtree of the current item in an indirect buffer.  With a
5942 numeric prefix argument N, go up to level N and then take that tree.  If N is
5943 negative, go up that many levels.  With a @kbd{C-u} prefix, do not remove the
5944 previously used indirect buffer.
5946 @kindex l
5947 @item l
5948 Toggle Logbook mode.  In Logbook mode, entries that where marked DONE while
5949 logging was on (variable @code{org-log-done}) are shown in the agenda, as are
5950 entries that have been clocked on that day.  You can configure the entry
5951 types that should be included in log mode using the variable
5952 @code{org-agenda-log-mode-items}.  When called with a @kbd{C-u} prefix, show
5953 all possible logbook entries, including state changes.  When called with two
5954 prefix args @kbd{C-u C-u}, show only logging information, nothing else.
5956 @kindex v
5957 @item v
5958 Toggle Archives mode.  In archives mode, trees that are marked are also
5959 scanned when producing the agenda.  When you call this command with a
5960 @kbd{C-u} prefix argument, even all archive files are included.  To exit
5961 archives mode, press @kbd{v} again.
5963 @kindex R
5964 @item R
5965 Toggle Clockreport mode.  In clockreport mode, the daily/weekly agenda will
5966 always show a table with the clocked times for the timespan and file scope
5967 covered by the current agenda view.  The initial setting for this mode in new
5968 agenda buffers can be set with the variable
5969 @code{org-agenda-start-with-clockreport-mode}.
5971 @tsubheading{Change display}
5972 @cindex display changing, in agenda
5973 @kindex o
5974 @item o
5975 Delete other windows.
5977 @kindex d
5978 @kindex w
5979 @kindex m
5980 @kindex y
5981 @item d w m y
5982 Switch to day/week/month/year view.  When switching to day or week view,
5983 this setting becomes the default for subsequent agenda commands.  Since
5984 month and year views are slow to create, they do not become the default.
5985 A numeric prefix argument may be used to jump directly to a specific day
5986 of the year, ISO week, month, or year, respectively.  For example,
5987 @kbd{32 d} jumps to February 1st, @kbd{9 w} to ISO week number 9.  When
5988 setting day, week, or month view, a year may be encoded in the prefix
5989 argument as well.  For example, @kbd{200712 w} will jump to week 12 in
5990 2007.  If such a year specification has only one or two digits, it will
5991 be mapped to the interval 1938-2037.
5993 @kindex D
5994 @item D
5995 Toggle the inclusion of diary entries.  See @ref{Weekly/daily agenda}.
5997 @kindex G
5998 @item G
5999 Toggle the time grid on and off.  See also the variables
6000 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
6002 @kindex r
6003 @item r
6004 Recreate the agenda buffer, for example to reflect the changes
6005 after modification of the time stamps of items with S-@key{left} and
6006 S-@key{right}.  When the buffer is the global TODO list, a prefix
6007 argument is interpreted to create a selective list for a specific TODO
6008 keyword.
6009 @kindex g
6010 @item g
6011 Same as @kbd{r}.
6013 @kindex s
6014 @kindex C-x C-s
6015 @item s
6016 @itemx C-x C-s
6017 Save all Org buffers in the current Emacs session.
6019 @kindex @key{right}
6020 @item @key{right}
6021 Display the following @code{org-agenda-ndays} days.  For example, if
6022 the display covers a week, switch to the following week.  With prefix
6023 arg, go forward that many times @code{org-agenda-ndays} days.
6025 @kindex @key{left}
6026 @item @key{left}
6027 Display the previous dates.
6029 @kindex .
6030 @item .
6031 Go to today.
6033 @kindex C-c C-x C-c
6034 @item C-c C-x C-c
6035 Invoke column view (@pxref{Column view}) in the agenda buffer.  The column
6036 view format is taken from the entry at point, or (if there is no entry at
6037 point), from the first entry in the agenda view.  So whatever the format for
6038 that entry would be in the original buffer (taken from a property, from a
6039 @code{#+COLUMNS} line, or from the default variable
6040 @code{org-columns-default-format}), will be used in the agenda.
6042 @tsubheading{Secondary filtering and query editing}
6043 @cindex filtering, by tag and effort, in agenda
6044 @cindex tag filtering, in agenda
6045 @cindex effort filtering, in agenda
6046 @cindex query editing, in agenda
6048 @kindex /
6049 @item /
6050 Filter the current agenda view with respect to a tag and/or effort estimates.
6051 The difference between this and a custom agenda commands is that filtering is
6052 very fast, so that you can switch quickly between different filters without
6053 having to recreate the agenda.
6055 You will be prompted for a tag selection letter.  Pressing @key{TAB} at that
6056 prompt will offer use completion to select a tag (including any tags that do
6057 not have a selection character).  The command then hides all entries that do
6058 not contain or inherit this tag.  When called with prefix arg, remove the
6059 entries that @emph{do} have the tag.  A second @kbd{/} at the prompt will
6060 turn off the filter and unhide any hidden entries.  If the first key you
6061 press is either @kbd{+} or @kbd{-}, the previous filter will be narrowed by
6062 requiring or forbidding the selected additional tag.  Instead of pressing
6063 @kbd{+} or @kbd{-}, you can also use the @kbd{\} command.
6065 In order to filter for effort estimates, you should set-up allowed
6066 efforts globally, for example
6067 @lisp
6068 (setq org-global-properties
6069     '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
6070 @end lisp
6071 You can then filter for an effort by first typing an operator, one of @kbd{<},
6072 @kbd{>}, and @kbd{=}, and then the one-digit index of an effort estimate in
6073 your array of allowed values, where @kbd{0} means the 10th value.  The filter
6074 will then restrict to entries with effort smaller-or-equal, equal, or
6075 larger-or-equal than the selected value.  If the digits 0-9 are not used as
6076 fast access keys to tags, you can also simply press the index digit directly
6077 without an operator.  In this case, @kbd{<} will be assumed.
6079 @kindex \
6080 @item \
6081 Narrow the current agenda filter by an additional condition.  When called with
6082 prefix arg, remove the entries that @emph{do} have the tag, or that do match
6083 the effort criterion.  You can achieve the same effect by pressing @kbd{+} or
6084 @kbd{-} as the first key after the @kbd{/} command.
6086 @kindex [
6087 @kindex ]
6088 @kindex @{
6089 @kindex @}
6090 @item [ ] @{ @}
6091 In the @i{search view} (@pxref{Keyword search}), these keys add new search
6092 words (@kbd{[} and @kbd{]}) or new regular expressions (@kbd{@{} and
6093 @kbd{@}}) to the query string.  The opening bracket/brace will add a positive
6094 search term prefixed by @samp{+}, indicating that this search term @i{must}
6095 occur/match in the entry.  The closing bracket/brace will add a negative
6096 search term which @i{must not} occur/match in the entry for it to be
6097 selected.
6100 @tsubheading{Remote editing}
6101 @cindex remote editing, from agenda
6103 @item 0-9
6104 Digit argument.
6106 @cindex undoing remote-editing events
6107 @cindex remote editing, undo
6108 @kindex C-_
6109 @item C-_
6110 Undo a change due to a remote editing command.  The change is undone
6111 both in the agenda buffer and in the remote buffer.
6113 @kindex t
6114 @item t
6115 Change the TODO state of the item, both in the agenda and in the
6116 original org file.
6118 @kindex C-k
6119 @item C-k
6120 Delete the current agenda item along with the entire subtree belonging
6121 to it in the original Org file.  If the text to be deleted remotely
6122 is longer than one line, the kill needs to be confirmed by the user.  See
6123 variable @code{org-agenda-confirm-kill}.
6125 @kindex a
6126 @item a
6127 Toggle the ARCHIVE tag for the current headline.
6129 @kindex A
6130 @item A
6131 Move the subtree corresponding to the current entry to its @emph{Archive
6132 Sibling}.
6134 @kindex $
6135 @item $
6136 Archive the subtree corresponding to the current headline.  This means the
6137 entry will be moved to the configured archive location, most likely a
6138 different file.
6140 @kindex T
6141 @item T
6142 Show all tags associated with the current item.  Because of
6143 inheritance, this may be more than the tags listed in the line itself.
6145 @kindex :
6146 @item :
6147 Set tags for the current headline.  If there is an active region in the
6148 agenda, change a tag for all headings in the region.
6150 @kindex ,
6151 @item ,
6152 Set the priority for the current item.  Org mode prompts for the
6153 priority character. If you reply with @key{SPC}, the priority cookie
6154 is removed from the entry.
6156 @kindex P
6157 @item P
6158 Display weighted priority of current item.
6160 @kindex +
6161 @kindex S-@key{up}
6162 @item +
6163 @itemx S-@key{up}
6164 Increase the priority of the current item.  The priority is changed in
6165 the original buffer, but the agenda is not resorted.  Use the @kbd{r}
6166 key for this.
6168 @kindex -
6169 @kindex S-@key{down}
6170 @item -
6171 @itemx S-@key{down}
6172 Decrease the priority of the current item.
6174 @kindex C-c C-a
6175 @item C-c C-a
6176 Dispatcher for all command related to attachments.
6178 @kindex C-c C-s
6179 @item C-c C-s
6180 Schedule this item
6182 @kindex C-c C-d
6183 @item C-c C-d
6184 Set a deadline for this item.
6186 @kindex k
6187 @item k
6188 Agenda actions, to set dates for selected items to the cursor date.
6189 This command also works in the calendar!  The command prompts for an
6190 additonal key:
6191 @example
6192 m   @r{Mark the entry at point for action.  You can also make entries}
6193     @r{in Org files with @kbd{C-c C-x C-k}.}
6194 d   @r{Set the deadline of the marked entry to the date at point.}
6195 s   @r{Schedule the marked entry at the date at point.}
6196 r   @r{Call @code{org-remember} with the cursor date as default date.}
6197 @end example
6198 Press @kbd{r} afterwards to refresh the agenda and see the effect of the
6199 command.
6201 @kindex S-@key{right}
6202 @item S-@key{right}
6203 Change the time stamp associated with the current line by one day into the
6204 future.  With a numeric prefix argument, change it by that many days.  For
6205 example, @kbd{3 6 5 S-@key{right}} will change it by a year.  The stamp is
6206 changed in the original org file, but the change is not directly reflected in
6207 the agenda buffer.  Use the @kbd{r} key to update the buffer.
6209 @kindex S-@key{left}
6210 @item S-@key{left}
6211 Change the time stamp associated with the current line by one day
6212 into the past.
6214 @kindex >
6215 @item >
6216 Change the time stamp associated with the current line to today.
6217 The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
6218 on my keyboard.
6220 @kindex I
6221 @item I
6222 Start the clock on the current item.  If a clock is running already, it
6223 is stopped first.
6225 @kindex O
6226 @item O
6227 Stop the previously started clock.
6229 @kindex X
6230 @item X
6231 Cancel the currently running clock.
6233 @kindex J
6234 @item J
6235 Jump to the running clock in another window.
6237 @tsubheading{Calendar commands}
6238 @cindex calendar commands, from agenda
6239 @kindex c
6240 @item c
6241 Open the Emacs calendar and move to the date at the agenda cursor.
6243 @item c
6244 When in the calendar, compute and show the Org mode agenda for the
6245 date at the cursor.
6247 @cindex diary entries, creating from agenda
6248 @kindex i
6249 @item i
6250 Insert a new entry into the diary.  Prompts for the type of entry
6251 (day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
6252 entry in the diary, just as @kbd{i d} etc. would do in the calendar.
6253 The date is taken from the cursor position.
6255 @kindex M
6256 @item M
6257 Show the phases of the moon for the three months around current date.
6259 @kindex S
6260 @item S
6261 Show sunrise and sunset times.  The geographical location must be set
6262 with calendar variables, see documentation of the Emacs calendar.
6264 @kindex C
6265 @item C
6266 Convert the date at cursor into many other cultural and historic
6267 calendars.
6269 @kindex H
6270 @item H
6271 Show holidays for three month around the cursor date.
6273 @item M-x org-export-icalendar-combine-agenda-files
6274 Export a single iCalendar file containing entries from all agenda files.
6275 This is a globally available command, and also available in the agenda menu.
6277 @tsubheading{Exporting to a file}
6278 @kindex C-x C-w
6279 @item C-x C-w
6280 @cindex exporting agenda views
6281 @cindex agenda views, exporting
6282 Write the agenda view to a file.  Depending on the extension of the
6283 selected file name, the view will be exported as HTML (extension
6284 @file{.html} or @file{.htm}), Postscript (extension @file{.ps}), or
6285 plain text (any other extension).  Use the variable
6286 @code{org-agenda-exporter-settings} to set options for @file{ps-print}
6287 and for @file{htmlize} to be used during export.
6289 @tsubheading{Quit and Exit}
6290 @kindex q
6291 @item q
6292 Quit agenda, remove the agenda buffer.
6294 @kindex x
6295 @cindex agenda files, removing buffers
6296 @item x
6297 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
6298 for the compilation of the agenda.  Buffers created by the user to
6299 visit org files will not be removed.
6300 @end table
6303 @node Custom agenda views, Agenda column view, Agenda commands, Agenda Views
6304 @section Custom agenda views
6305 @cindex custom agenda views
6306 @cindex agenda views, custom
6308 Custom agenda commands serve two purposes: to store and quickly access
6309 frequently used TODO and tags searches, and to create special composite
6310 agenda buffers.  Custom agenda commands will be accessible through the
6311 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
6313 @menu
6314 * Storing searches::            Type once, use often
6315 * Block agenda::                All the stuff you need in a single buffer
6316 * Setting Options::             Changing the rules
6317 * Exporting Agenda Views::      Writing agendas to files
6318 * Using the agenda elsewhere::  Using agenda information in other programs
6319 @end menu
6321 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
6322 @subsection Storing searches
6324 The first application of custom searches is the definition of keyboard
6325 shortcuts for frequently used searches, either creating an agenda
6326 buffer, or a sparse tree (the latter covering of course only the current
6327 buffer).
6328 @kindex C-c a C
6329 Custom commands are configured in the variable
6330 @code{org-agenda-custom-commands}.  You can customize this variable, for
6331 example by pressing @kbd{C-c a C}.  You can also directly set it with
6332 Emacs Lisp in @file{.emacs}.  The following example contains all valid
6333 search types:
6335 @lisp
6336 @group
6337 (setq org-agenda-custom-commands
6338       '(("w" todo "WAITING")
6339         ("W" todo-tree "WAITING")
6340         ("u" tags "+boss-urgent")
6341         ("v" tags-todo "+boss-urgent")
6342         ("U" tags-tree "+boss-urgent")
6343         ("f" occur-tree "\\<FIXME\\>")
6344         ("h" . "HOME+Name tags searches") ; description for "h" prefix
6345         ("hl" tags "+home+Lisa")
6346         ("hp" tags "+home+Peter")
6347         ("hk" tags "+home+Kim")))
6348 @end group
6349 @end lisp
6351 @noindent
6352 The initial string in each entry defines the keys you have to press
6353 after the dispatcher command @kbd{C-c a} in order to access the command.
6354 Usually this will be just a single character, but if you have many
6355 similar commands, you can also define two-letter combinations where the
6356 first character is the same in several combinations and serves as a
6357 prefix key@footnote{You can provide a description for a prefix key by
6358 inserting a cons cell with the prefix and the description.}.  The second
6359 parameter is the search type, followed by the string or regular
6360 expression to be used for the matching.  The example above will
6361 therefore define:
6363 @table @kbd
6364 @item C-c a w
6365 as a global search for TODO entries with @samp{WAITING} as the TODO
6366 keyword
6367 @item C-c a W
6368 as the same search, but only in the current buffer and displaying the
6369 results as a sparse tree
6370 @item C-c a u
6371 as a global tags search for headlines marked @samp{:boss:} but not
6372 @samp{:urgent:}
6373 @item C-c a v
6374 as the same search as @kbd{C-c a u}, but limiting the search to
6375 headlines that are also TODO items
6376 @item C-c a U
6377 as the same search as @kbd{C-c a u}, but only in the current buffer and
6378 displaying the result as a sparse tree
6379 @item C-c a f
6380 to create a sparse tree (again: current buffer only) with all entries
6381 containing the word @samp{FIXME}
6382 @item C-c a h
6383 as a prefix command for a HOME tags search where you have to press an
6384 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
6385 Peter, or Kim) as additional tag to match.
6386 @end table
6388 @node Block agenda, Setting Options, Storing searches, Custom agenda views
6389 @subsection Block agenda
6390 @cindex block agenda
6391 @cindex agenda, with block views
6393 Another possibility is the construction of agenda views that comprise
6394 the results of @emph{several} commands, each of which creates a block in
6395 the agenda buffer.  The available commands include @code{agenda} for the
6396 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
6397 for the global TODO list (as constructed with @kbd{C-c a t}), and the
6398 matching commands discussed above: @code{todo}, @code{tags}, and
6399 @code{tags-todo}.  Here are two examples:
6401 @lisp
6402 @group
6403 (setq org-agenda-custom-commands
6404       '(("h" "Agenda and Home-related tasks"
6405          ((agenda "")
6406           (tags-todo "home")
6407           (tags "garden")))
6408         ("o" "Agenda and Office-related tasks"
6409          ((agenda "")
6410           (tags-todo "work")
6411           (tags "office")))))
6412 @end group
6413 @end lisp
6415 @noindent
6416 This will define @kbd{C-c a h} to create a multi-block view for stuff
6417 you need to attend to at home.  The resulting agenda buffer will contain
6418 your agenda for the current week, all TODO items that carry the tag
6419 @samp{home}, and also all lines tagged with @samp{garden}.  Finally the
6420 command @kbd{C-c a o} provides a similar view for office tasks.
6422 @node Setting Options, Exporting Agenda Views, Block agenda, Custom agenda views
6423 @subsection Setting options for custom commands
6424 @cindex options, for custom agenda views
6426 Org mode contains a number of variables regulating agenda construction
6427 and display.  The global variables define the behavior for all agenda
6428 commands, including the custom commands.  However, if you want to change
6429 some settings just for a single custom view, you can do so.  Setting
6430 options requires inserting a list of variable names and values at the
6431 right spot in @code{org-agenda-custom-commands}.  For example:
6433 @lisp
6434 @group
6435 (setq org-agenda-custom-commands
6436       '(("w" todo "WAITING"
6437          ((org-agenda-sorting-strategy '(priority-down))
6438           (org-agenda-prefix-format "  Mixed: ")))
6439         ("U" tags-tree "+boss-urgent"
6440          ((org-show-following-heading nil)
6441           (org-show-hierarchy-above nil)))
6442         ("N" search ""
6443          ((org-agenda-files '("~org/notes.org"))
6444           (org-agenda-text-search-extra-files nil)))))
6445 @end group
6446 @end lisp
6448 @noindent
6449 Now the @kbd{C-c a w} command will sort the collected entries only by
6450 priority, and the prefix format is modified to just say @samp{  Mixed: }
6451 instead of giving the category of the entry.  The sparse tags tree of
6452 @kbd{C-c a U} will now turn out ultra-compact, because neither the
6453 headline hierarchy above the match, nor the headline following the match
6454 will be shown.  The command @kbd{C-c a N} will do a text search limited
6455 to only a single file.
6457 For command sets creating a block agenda,
6458 @code{org-agenda-custom-commands} has two separate spots for setting
6459 options.  You can add options that should be valid for just a single
6460 command in the set, and options that should be valid for all commands in
6461 the set.  The former are just added to the command entry, the latter
6462 must come after the list of command entries.  Going back to the block
6463 agenda example (@pxref{Block agenda}), let's change the sorting strategy
6464 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
6465 the results for GARDEN tags query in the opposite order,
6466 @code{priority-up}.  This would look like this:
6468 @lisp
6469 @group
6470 (setq org-agenda-custom-commands
6471       '(("h" "Agenda and Home-related tasks"
6472          ((agenda)
6473           (tags-todo "home")
6474           (tags "garden"
6475                 ((org-agenda-sorting-strategy '(priority-up)))))
6476          ((org-agenda-sorting-strategy '(priority-down))))
6477         ("o" "Agenda and Office-related tasks"
6478          ((agenda)
6479           (tags-todo "work")
6480           (tags "office")))))
6481 @end group
6482 @end lisp
6484 As you see, the values and parenthesis setting is a little complex.
6485 When in doubt, use the customize interface to set this variable - it
6486 fully supports its structure.  Just one caveat: When setting options in
6487 this interface, the @emph{values} are just lisp expressions.  So if the
6488 value is a string, you need to add the double quotes around the value
6489 yourself.
6492 @node Exporting Agenda Views, Using the agenda elsewhere, Setting Options, Custom agenda views
6493 @subsection Exporting Agenda Views
6494 @cindex agenda views, exporting
6496 If you are away from your computer, it can be very useful to have a
6497 printed version of some agenda views to carry around.  Org mode can
6498 export custom agenda views as plain text, HTML@footnote{You need to
6499 install Hrvoje Niksic' @file{htmlize.el}.} postscript, and iCalendar
6500 files.  If you want to do this only occasionally, use the command
6502 @table @kbd
6503 @kindex C-x C-w
6504 @item C-x C-w
6505 @cindex exporting agenda views
6506 @cindex agenda views, exporting
6507 Write the agenda view to a file.  Depending on the extension of the
6508 selected file name, the view will be exported as HTML (extension
6509 @file{.html} or @file{.htm}), Postscript (extension @file{.ps}),
6510 iCalendar (extension @file{.ics}), or plain text (any other extension).
6511 Use the variable @code{org-agenda-exporter-settings} to
6512 set options for @file{ps-print} and for @file{htmlize} to be used during
6513 export, for example
6515 @lisp
6516 (setq org-agenda-exporter-settings
6517       '((ps-number-of-columns 2)
6518         (ps-landscape-mode t)
6519         (htmlize-output-type 'css)))
6520 @end lisp
6521 @end table
6523 If you need to export certain agenda views frequently, you can associate
6524 any custom agenda command with a list of output file names
6525 @footnote{If you want to store standard views like the weekly agenda
6526 or the global TODO list as well, you need to define custom commands for
6527 them in order to be able to specify file names.}.  Here is an example
6528 that first does define custom commands for the agenda and the global
6529 todo list, together with a number of files to which to export them.
6530 Then we define two block agenda commands and specify file names for them
6531 as well.  File names can be relative to the current working directory,
6532 or absolute.
6534 @lisp
6535 @group
6536 (setq org-agenda-custom-commands
6537       '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
6538         ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
6539         ("h" "Agenda and Home-related tasks"
6540          ((agenda "")
6541           (tags-todo "home")
6542           (tags "garden"))
6543          nil
6544          ("~/views/home.html"))
6545         ("o" "Agenda and Office-related tasks"
6546          ((agenda)
6547           (tags-todo "work")
6548           (tags "office"))
6549          nil
6550          ("~/views/office.ps" "~/calendars/office.ics"))))
6551 @end group
6552 @end lisp
6554 The extension of the file name determines the type of export.  If it is
6555 @file{.html}, Org mode will use the @file{htmlize.el} package to convert
6556 the buffer to HTML and save it to this file name.  If the extension is
6557 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
6558 postscript output.  If the extension is @file{.ics}, iCalendar export is
6559 run export over all files that were used to construct the agenda, and
6560 limit the export to entries listed in the agenda now.  Any other
6561 extension produces a plain ASCII file.
6563 The export files are @emph{not} created when you use one of those
6564 commands interactively because this might use too much overhead.
6565 Instead, there is a special command to produce @emph{all} specified
6566 files in one step:
6568 @table @kbd
6569 @kindex C-c a e
6570 @item C-c a e
6571 Export all agenda views that have export file names associated with
6572 them.
6573 @end table
6575 You can use the options section of the custom agenda commands to also
6576 set options for the export commands.  For example:
6578 @lisp
6579 (setq org-agenda-custom-commands
6580       '(("X" agenda ""
6581          ((ps-number-of-columns 2)
6582           (ps-landscape-mode t)
6583           (org-agenda-prefix-format " [ ] ")
6584           (org-agenda-with-colors nil)
6585           (org-agenda-remove-tags t))
6586          ("theagenda.ps"))))
6587 @end lisp
6589 @noindent
6590 This command sets two options for the postscript exporter, to make it
6591 print in two columns in landscape format - the resulting page can be cut
6592 in two and then used in a paper agenda.  The remaining settings modify
6593 the agenda prefix to omit category and scheduling information, and
6594 instead include a checkbox to check off items.  We also remove the tags
6595 to make the lines compact, and we don't want to use colors for the
6596 black-and-white printer.  Settings specified in
6597 @code{org-agenda-exporter-settings} will also apply, but the settings
6598 in @code{org-agenda-custom-commands} take precedence.
6600 @noindent
6601 From the command line you may also use
6602 @example
6603 emacs -f org-batch-store-agenda-views -kill
6604 @end example
6605 @noindent
6606 or, if you need to modify some parameters@footnote{Quoting may depend on the
6607 system you use, please check th FAQ for examples.}
6608 @example
6609 emacs -eval '(org-batch-store-agenda-views                      \
6610               org-agenda-ndays 30                               \
6611               org-agenda-start-day "2007-11-01"                 \
6612               org-agenda-include-diary nil                      \
6613               org-agenda-files (quote ("~/org/project.org")))'  \
6614       -kill
6615 @end example
6616 @noindent
6617 which will create the agenda views restricted to the file
6618 @file{~/org/project.org}, without diary entries and with 30 days
6619 extent.
6621 @node Using the agenda elsewhere,  , Exporting Agenda Views, Custom agenda views
6622 @subsection Using agenda information outside of Org
6623 @cindex agenda, pipe
6624 @cindex Scripts, for agenda processing
6626 Org provides commands to access agenda information for the command
6627 line in emacs batch mode.  This extracted information can be sent
6628 directly to a printer, or it can be read by a program that does further
6629 processing of the data.  The first of these commands is the function
6630 @code{org-batch-agenda}, that produces an agenda view and sends it as
6631 ASCII text to STDOUT.  The command takes a single string as parameter.
6632 If the string has length 1, it is used as a key to one of the commands
6633 you have configured in @code{org-agenda-custom-commands}, basically any
6634 key you can use after @kbd{C-c a}.  For example, to directly print the
6635 current TODO list, you could use
6637 @example
6638 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
6639 @end example
6641 If the parameter is a string with 2 or more characters, it is used as a
6642 tags/todo match string.  For example, to print your local shopping list
6643 (all items with the tag @samp{shop}, but excluding the tag
6644 @samp{NewYork}), you could use
6646 @example
6647 emacs -batch -l ~/.emacs                                      \
6648       -eval '(org-batch-agenda "+shop-NewYork")' | lpr
6649 @end example
6651 @noindent
6652 You may also modify parameters on the fly like this:
6654 @example
6655 emacs -batch -l ~/.emacs                                      \
6656    -eval '(org-batch-agenda "a"                               \
6657             org-agenda-ndays 30                               \
6658             org-agenda-include-diary nil                      \
6659             org-agenda-files (quote ("~/org/project.org")))'  \
6660    | lpr
6661 @end example
6663 @noindent
6664 which will produce a 30 day agenda, fully restricted to the Org file
6665 @file{~/org/projects.org}, not even including the diary.
6667 If you want to process the agenda data in more sophisticated ways, you
6668 can use the command @code{org-batch-agenda-csv} to get a comma-separated
6669 list of values for each agenda item.  Each line in the output will
6670 contain a number of fields separated by commas.  The fields in a line
6671 are:
6673 @example
6674 category     @r{The category of the item}
6675 head         @r{The headline, without TODO kwd, TAGS and PRIORITY}
6676 type         @r{The type of the agenda entry, can be}
6677                 todo               @r{selected in TODO match}
6678                 tagsmatch          @r{selected in tags match}
6679                 diary              @r{imported from diary}
6680                 deadline           @r{a deadline}
6681                 scheduled          @r{scheduled}
6682                 timestamp          @r{appointment, selected by timestamp}
6683                 closed             @r{entry was closed on date}
6684                 upcoming-deadline  @r{warning about nearing deadline}
6685                 past-scheduled     @r{forwarded scheduled item}
6686                 block              @r{entry has date block including date}
6687 todo         @r{The TODO keyword, if any}
6688 tags         @r{All tags including inherited ones, separated by colons}
6689 date         @r{The relevant date, like 2007-2-14}
6690 time         @r{The time, like 15:00-16:50}
6691 extra        @r{String with extra planning info}
6692 priority-l   @r{The priority letter if any was given}
6693 priority-n   @r{The computed numerical priority}
6694 @end example
6696 @noindent
6697 Time and date will only be given if a timestamp (or deadline/scheduled)
6698 lead to the selection of the item.
6700 A CSV list like this is very easy to use in a post processing script.
6701 For example, here is a Perl program that gets the TODO list from
6702 Emacs/Org and prints all the items, preceded by a checkbox:
6704 @example
6705 @group
6706 #!/usr/bin/perl
6708 # define the Emacs command to run
6709 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
6711 # run it and capture the output
6712 $agenda = qx@{$cmd 2>/dev/null@};
6714 # loop over all lines
6715 foreach $line (split(/\n/,$agenda)) @{
6717   # get the individual values
6718   ($category,$head,$type,$todo,$tags,$date,$time,$extra,
6719    $priority_l,$priority_n) = split(/,/,$line);
6721   # proccess and print
6722   print "[ ] $head\n";
6724 @end group
6725 @end example
6727 @node Agenda column view,  , Custom agenda views, Agenda Views
6728 @section Using column view in the agenda
6729 @cindex column view, in agenda
6730 @cindex agenda, column view
6732 Column view (@pxref{Column view}) is normally used to view and edit
6733 properties embedded in the hierarchical structure of an Org file.  It can be
6734 quite useful to use column view also from the agenda, where entries are
6735 collected by certain criteria.
6737 @table @kbd
6738 @kindex C-c C-x C-c
6739 @item C-c C-x C-c
6740 Turn on column view in the agenda.
6741 @end table
6743 To understand how to use this properly, it is important to realize that the
6744 entries in the agenda are no longer in their proper outline environment.
6745 This causes the following issues:
6747 @enumerate
6748 @item
6749 Org needs to make a decision which @code{COLUMNS} format to use.  Since the
6750 entries in the agenda are collected from different files, and different files
6751 may have different @code{COLUMNS} formats, this is a non-trivial problem.
6752 Org first checks if the variable @code{org-overriding-columns-format} is
6753 currently set, and if yes takes the format from there.  Otherwise it takes
6754 the format associated with the first item in the agenda, or, if that item
6755 does not have a specific format (defined in a property, or in it's file), it
6756 uses @code{org-columns-default-format}.
6757 @item
6758 If any of the columns has a summary type defined (@pxref{Column attributes}),
6759 turning on column view in the agenda will visit all relevant agenda files and
6760 make sure that the computations of this property are up to date.  This is
6761 also true for the special @code{CLOCKSUM} property.  Org will then sum the
6762 values displayed in the agenda.  In the daily/weekly agenda, the sums will
6763 cover a single day, in all other views they cover the entire block.  It is
6764 vital to realize that the agenda may show the same entry @emph{twice} (for
6765 example as scheduled and as a deadline), and it may show two entries from the
6766 same hierarchy (for example a @emph{parent} and it's @emph{child}).  In these
6767 cases, the summation in the agenda will lead to incorrect results because
6768 some values will count double.
6769 @item
6770 When the column view in the agenda shows the @code{CLOCKSUM}, that is always
6771 the entire clocked time for this item.  So even in the daily/weekly agenda,
6772 the clocksum listed in column view may originate from times outside the
6773 current view.  This has the advantage that you can compare these values with
6774 a column listing the planned total effort for a task - one of the major
6775 applications for column view in the agenda.  If you want information about
6776 clocked time in the displayed period use clock table mode (press @kbd{R} in
6777 the agenda).
6778 @end enumerate
6781 @node Embedded LaTeX, Exporting, Agenda Views, Top
6782 @chapter Embedded LaTeX
6783 @cindex @TeX{} interpretation
6784 @cindex La@TeX{} interpretation
6786 Plain ASCII is normally sufficient for almost all note taking.  One
6787 exception, however, are scientific notes which need to be able to contain
6788 mathematical symbols and the occasional formula.  La@TeX{}@footnote{La@TeX{}
6789 is a macro system based on Donald E. Knuth's @TeX{} system.  Many of the
6790 features described here as ``La@TeX{}'' are really from @TeX{}, but for
6791 simplicity I am blurring this distinction.}  is widely used to typeset
6792 scientific documents. Org mode supports embedding La@TeX{} code into its
6793 files, because many academics are used to reading La@TeX{} source code, and
6794 because it can be readily processed into images for HTML production.
6796 It is not necessary to mark La@TeX{} macros and code in any special way.
6797 If you observe a few conventions, Org mode knows how to find it and what
6798 to do with it.
6800 @menu
6801 * Math symbols::                TeX macros for symbols and Greek letters
6802 * Subscripts and superscripts::  Simple syntax for raising/lowering text
6803 * LaTeX fragments::             Complex formulas made easy
6804 * Processing LaTeX fragments::  Previewing LaTeX processing
6805 * CDLaTeX mode::                Speed up entering of formulas
6806 @end menu
6808 @node Math symbols, Subscripts and superscripts, Embedded LaTeX, Embedded LaTeX
6809 @section Math symbols
6810 @cindex math symbols
6811 @cindex TeX macros
6813 You can use La@TeX{} macros to insert special symbols like @samp{\alpha}
6814 to indicate the Greek letter, or @samp{\to} to indicate an arrow.
6815 Completion for these macros is available, just type @samp{\} and maybe a
6816 few letters, and press @kbd{M-@key{TAB}} to see possible completions.
6817 Unlike La@TeX{} code, Org mode allows these macros to be present
6818 without surrounding math delimiters, for example:
6820 @example
6821 Angles are written as Greek letters \alpha, \beta and \gamma.
6822 @end example
6824 During HTML export (@pxref{HTML export}), these symbols are translated
6825 into the proper syntax for HTML, for the above examples this is
6826 @samp{&alpha;} and @samp{&rarr;}, respectively.  If you need such a symbol
6827 inside a word, terminate it like this: @samp{\Aacute@{@}stor}.
6829 @node Subscripts and superscripts, LaTeX fragments, Math symbols, Embedded LaTeX
6830 @section Subscripts and superscripts
6831 @cindex subscript
6832 @cindex superscript
6834 Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
6835 and subscripts.  Again, these can be used without embedding them in
6836 math-mode delimiters.  To increase the readability of ASCII text, it is
6837 not necessary (but OK) to surround multi-character sub- and superscripts
6838 with curly braces.  For example
6840 @example
6841 The mass if the sun is M_sun = 1.989 x 10^30 kg.  The radius of
6842 the sun is R_@{sun@} = 6.96 x 10^8 m.
6843 @end example
6845 To avoid interpretation as raised or lowered text, you can quote
6846 @samp{^} and @samp{_} with a backslash: @samp{\_} and @samp{\^}.
6848 During HTML export (@pxref{HTML export}), subscript and superscripts
6849 are surrounded with @code{<sub>} and @code{<sup>} tags, respectively.
6851 @node LaTeX fragments, Processing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
6852 @section LaTeX fragments
6853 @cindex LaTeX fragments
6855 With symbols, sub- and superscripts, HTML is pretty much at its end when
6856 it comes to representing mathematical formulas@footnote{Yes, there is
6857 MathML, but that is not yet fully supported by many browsers, and there
6858 is no decent converter for turning La@TeX{} or ASCII representations of
6859 formulas into MathML. So for the time being, converting formulas into
6860 images seems the way to go.}. More complex expressions need a dedicated
6861 formula processor. To this end, Org mode can contain arbitrary La@TeX{}
6862 fragments. It provides commands to preview the typeset result of these
6863 fragments, and upon export to HTML, all fragments will be converted to
6864 images and inlined into the HTML document@footnote{The La@TeX{} export
6865 will not use images for displaying La@TeX{} fragments but include these
6866 fragments directly into the La@TeX{} code.}. For this to work you
6867 need to be on a system with a working La@TeX{} installation. You also
6868 need the @file{dvipng} program, available at
6869 @url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that
6870 will be used when processing a fragment can be configured with the
6871 variable @code{org-format-latex-header}.
6873 La@TeX{} fragments don't need any special marking at all.  The following
6874 snippets will be identified as La@TeX{} source code:
6875 @itemize @bullet
6876 @item
6877 Environments of any kind.  The only requirement is that the
6878 @code{\begin} statement appears on a new line, preceded by only
6879 whitespace.
6880 @item
6881 Text within the usual La@TeX{} math delimiters.  To avoid conflicts with
6882 currency specifications, single @samp{$} characters are only recognized
6883 as math delimiters if the enclosed text contains at most two line breaks,
6884 is directly attached to the @samp{$} characters with no whitespace in
6885 between, and if the closing @samp{$} is followed by whitespace or
6886 punctuation.  For the other delimiters, there is no such restriction, so
6887 when in doubt, use @samp{\(...\)} as inline math delimiters.
6888 @end itemize
6890 @noindent For example:
6892 @example
6893 \begin@{equation@}                          % arbitrary environments,
6894 x=\sqrt@{b@}                                % even tables, figures
6895 \end@{equation@}                            % etc
6897 If $a^2=b$ and \( b=2 \), then the solution must be
6898 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
6899 @end example
6901 @noindent
6902 If you need any of the delimiter ASCII sequences for other purposes, you
6903 can configure the option @code{org-format-latex-options} to deselect the
6904 ones you do not wish to have interpreted by the La@TeX{} converter.
6906 @node Processing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
6907 @section Processing LaTeX fragments
6908 @cindex LaTeX fragments, preview
6910 La@TeX{} fragments can be processed to produce a preview images of the
6911 typeset expressions:
6913 @table @kbd
6914 @kindex C-c C-x C-l
6915 @item C-c C-x C-l
6916 Produce a preview image of the La@TeX{} fragment at point and overlay it
6917 over the source code.  If there is no fragment at point, process all
6918 fragments in the current entry (between two headlines).  When called
6919 with a prefix argument, process the entire subtree.  When called with
6920 two prefix arguments, or when the cursor is before the first headline,
6921 process the entire buffer.
6922 @kindex C-c C-c
6923 @item C-c C-c
6924 Remove the overlay preview images.
6925 @end table
6927 During HTML export (@pxref{HTML export}), all La@TeX{} fragments are
6928 converted into images and inlined into the document if the following
6929 setting is active:
6931 @lisp
6932 (setq org-export-with-LaTeX-fragments t)
6933 @end lisp
6935 @node CDLaTeX mode,  , Processing LaTeX fragments, Embedded LaTeX
6936 @section Using CDLaTeX to enter math
6937 @cindex CDLaTeX
6939 CDLaTeX mode is a minor mode that is normally used in combination with a
6940 major La@TeX{} mode like AUCTeX in order to speed-up insertion of
6941 environments and math templates.  Inside Org mode, you can make use of
6942 some of the features of CDLaTeX mode.  You need to install
6943 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
6944 AUCTeX) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
6945 Don't use CDLaTeX mode itself under Org mode, but use the light
6946 version @code{org-cdlatex-mode} that comes as part of Org mode.  Turn it
6947 on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
6948 Org files with
6950 @lisp
6951 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
6952 @end lisp
6954 When this mode is enabled, the following features are present (for more
6955 details see the documentation of CDLaTeX mode):
6956 @itemize @bullet
6957 @kindex C-c @{
6958 @item
6959 Environment templates can be inserted with @kbd{C-c @{}.
6960 @item
6961 @kindex @key{TAB}
6962 The @key{TAB} key will do template expansion if the cursor is inside a
6963 La@TeX{} fragment@footnote{Org mode has a method to test if the cursor is
6964 inside such a fragment, see the documentation of the function
6965 @code{org-inside-LaTeX-fragment-p}.}.  For example, @key{TAB} will
6966 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
6967 correctly inside the first brace.  Another @key{TAB} will get you into
6968 the second brace.  Even outside fragments, @key{TAB} will expand
6969 environment abbreviations at the beginning of a line.  For example, if
6970 you write @samp{equ} at the beginning of a line and press @key{TAB},
6971 this abbreviation will be expanded to an @code{equation} environment.
6972 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
6973 @item
6974 @kindex _
6975 @kindex ^
6976 Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
6977 characters together with a pair of braces.  If you use @key{TAB} to move
6978 out of the braces, and if the braces surround only a single character or
6979 macro, they are removed again (depending on the variable
6980 @code{cdlatex-simplify-sub-super-scripts}).
6981 @item
6982 @kindex `
6983 Pressing the backquote @kbd{`} followed by a character inserts math
6984 macros, also outside La@TeX{} fragments.  If you wait more than 1.5 seconds
6985 after the backquote, a help window will pop up.
6986 @item
6987 @kindex '
6988 Pressing the normal quote @kbd{'} followed by another character modifies
6989 the symbol before point with an accent or a font.  If you wait more than
6990 1.5 seconds after the backquote, a help window will pop up.  Character
6991 modification will work only inside La@TeX{} fragments, outside the quote
6992 is normal.
6993 @end itemize
6995 @node Exporting, Publishing, Embedded LaTeX, Top
6996 @chapter Exporting
6997 @cindex exporting
6999 Org mode documents can be exported into a variety of other formats.  For
7000 printing and sharing of notes, ASCII export produces a readable and
7001 simple version of an Org file.  HTML export allows you to publish a
7002 notes file on the web, while the XOXO format provides a solid base for
7003 exchange with a broad range of other applications. La@TeX{} export lets
7004 you use Org mode and its structured editing functions to easily create
7005 La@TeX{} files.  To incorporate entries with associated times like
7006 deadlines or appointments into a desktop calendar program like iCal,
7007 Org mode can also produce extracts in the iCalendar format.  Currently
7008 Org mode only supports export, not import of these different formats.
7010 @menu
7011 * Markup rules::                Which structures are recognized?
7012 * Selective export::            Using tags to select and exclude trees
7013 * Export options::              Per-file export settings
7014 * The export dispatcher::       How to access exporter commands
7015 * ASCII export::                Exporting to plain ASCII
7016 * HTML export::                 Exporting to HTML
7017 * LaTeX and PDF export::        Exporting to LaTeX, and processing to PDF
7018 * XOXO export::                 Exporting to XOXO
7019 * iCalendar export::            Exporting in iCalendar format
7020 @end menu
7022 @node Markup rules, Selective export, Exporting, Exporting
7023 @section Markup rules
7025 When exporting Org mode documents,  the exporter tries to reflect the
7026 structure of the document as accurately as possible in the back-end.  Since
7027 export targets like HTML or La@TeX{} allow much richer formatting, Org mode
7028 has rules how to prepare text for rich export.  This section summarizes the
7029 markup rule used in an Org mode buffer.
7031 @menu
7032 * Document title::              How the document title is determined
7033 * Headings and sections::       The main structure of the exported document
7034 * Table of contents::           If, where, how to create a table of contents
7035 * Initial text::                Text before the first headline
7036 * Lists::                       Plain lists are exported
7037 * Paragraphs::                  What determines beginning and ending
7038 * Literal examples::            Source code and other examples
7039 * Include files::               Include the contents of a file during export
7040 * Tables exported::             Tables are exported richly
7041 * Footnotes::                   Numbers like [1]
7042 * Emphasis and monospace::      To bold or not to bold
7043 * TeX macros and LaTeX fragments::  Create special, rich export.
7044 * Horizontal rules::            A line across the page
7045 * Comment lines::               Some lines will not be exported
7046 @end menu
7048 @node Document title, Headings and sections, Markup rules, Markup rules
7049 @subheading Document title
7050 @cindex document title, markup rules
7052 @noindent
7053 The title of the exported document is taken from the special line
7055 @example
7056 #+TITLE: This is the title of the document
7057 @end example
7059 @noindent
7060 If this line does not exist, the title is derived from the first non-empty,
7061 non-comment line in the buffer.  If no such line exists, or if you have
7062 turned off exporting of the text before the first headline (see below), the
7063 title will be the file name without extension.
7065 If you are exporting only a subtree by marking is as the region, the heading
7066 of the subtree will become the title of the document.  If the subtree has a
7067 property @code{EXPORT_TITLE}, that will take precedence.
7069 @node Headings and sections, Table of contents, Document title, Markup rules
7070 @subheading Headings and sections
7071 @cindex headings and sections, markup rules
7073 The outline structure of the document as described in @ref{Document
7074 Structure} forms the basis for defining sections of the exported document.
7075 However, since the outline structure is also used for (for example) lists of
7076 tasks, only the first three outline levels will be used as headings.  Deeper
7077 levels will become itemized lists.  You can change the location of this
7078 switch, globally by setting the variable @code{org-headline-levels}, or on a
7079 per file basis with a line
7081 @example
7082 #+OPTIONS: H:4
7083 @end example
7085 @node Table of contents, Initial text, Headings and sections, Markup rules
7086 @subheading Table of contents
7087 @cindex table of contents, markup rules
7089 The table of contents is normally inserted directly before the first headline
7090 of the file.  If you would like to get it to a different location, insert the
7091 string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
7092 location.  The depth of the table of contents is by default the same as the
7093 number of headline levels, but you can choose a smaller number or turn off
7094 the table of contents entirely by configuring the variable
7095 @code{org-export-with-toc}, or on a per-file basis with a line like
7097 @example
7098 #+OPTIONS: toc:2          (only to two levels in TOC)
7099 #+OPTIONS: toc:nil        (no TOC at all)
7100 @end example
7102 @node Initial text, Lists, Table of contents, Markup rules
7103 @subheading Text before the first headline
7104 @cindex text before first headline, markup rules
7105 @cindex #+TEXT
7107 Org mode normally exports the text before the first headline, and even uses
7108 the first line as the document title.  The text will be fully marked up.  If
7109 you need to include literal HTML or La@TeX{} code, use the special constructs
7110 described below in the sections for the individual exporters.
7112 Some people like to use the space before the first headline for setup and
7113 internal links and therefore would like to control the exported text before
7114 the first headline in a different way.  You can do so by setting the variable
7115 @code{org-export-skip-text-before-1st-heading} to @code{t}.  On a per-file
7116 basis, you can get the same effect with @samp{#+OPTIONS: skip:t}.
7118 @noindent
7119 If you still want to have some text before the first headline, use the
7120 @code{#+TEXT} construct:
7122 @example
7123 #+OPTIONS: skip:t
7124 #+TEXT: This text will go before the *first* headline.
7125 #+TEXT: [TABLE-OF-CONTENTS]
7126 #+TEXT: This goes between the table of contents and the first headline
7127 @end example
7129 @node Lists, Paragraphs, Initial text, Markup rules
7130 @subheading Lists
7131 @cindex lists, markup rules
7133 Plain lists as described in @ref{Plain lists} are translated to the back-ends
7134 syntax for such lists.  Most back-ends support unordered, ordered, and
7135 description lists.
7137 @node Paragraphs, Literal examples, Lists, Markup rules
7138 @subheading Paragraphs, line breaks, and quoting
7139 @cindex paragraphs, markup rules
7141 Paragraphs are separated by at least one empty line.  If you need to enforce
7142 a line break within a paragraph, use @samp{\\} at the end of a line.
7144 To keep the line breaks in a region, but otherwise use normal formatting, you
7145 can use this construct, which can also be used to format poetry.
7147 @example
7148 #+BEGIN_VERSE
7149  Great clouds overhead
7150  Tiny black birds rise and fall
7151  Snow covers Emacs
7153      -- AlexSchroeder
7154 #+END_VERSE
7155 @end example
7157 When quoting a passage from another document, it is customary to format this
7158 as a paragraph that is indented on both the left and the right margin.  You
7159 can include quotations in Org mode documents like this:
7161 @example
7162 #+BEGIN_QUOTE
7163 Everything should be made as simple as possible,
7164 but not any simpler -- Albert Einstein
7165 #+END_QUOTE
7166 @end example
7169 @node Literal examples, Include files, Paragraphs, Markup rules
7170 @subheading Literal examples
7171 @cindex literal examples, markup rules
7173 You can include literal examples that should not be subjected to
7174 markup.  Such examples will be typeset in monospace, so this is well suited
7175 for source code and similar examples.
7176 @cindex #+BEGIN_EXAMPLE
7178 @example
7179 #+BEGIN_EXAMPLE
7180 Some example from a text file.
7181 #+END_EXAMPLE
7182 @end example
7184 For simplicity when using small examples, you can also start the example
7185 lines with a colon:
7187 @example
7188 : Some example from a text file.
7189 @end example
7191 @cindex formatting source code, markup rules
7192 If the example is source code from a programming language, or any other text
7193 that can be marked up by font-lock in Emacs, you can ask for the example to
7194 look like the fontified Emacs buffer@footnote{Currently this works only for
7195 the HTML back-end, and requires the @file{htmlize.el} package version 1.34 or
7196 later.}.  This is done with the @samp{src} block, where you also need to
7197 specify the name of the major mode that should be used to fontify the
7198 example:
7199 @cindex #+BEGIN_SRC
7201 @example
7202 #+BEGIN_SRC emacs-lisp
7203 (defun org-xor (a b)
7204    "Exclusive or."
7205    (if a (not b) b))
7206 #+END_SRC
7207 @end example
7209 @table @kbd
7210 @kindex C-c '
7211 @item C-c '
7212 Edit the source code example at point in its native mode.  This works by
7213 switching to an indirect buffer, narrowing the buffer and switching to the
7214 other mode.  You need to exit by pressing @kbd{C-c '} again@footnote{Upon
7215 exit, lines starting with @samp{*} or @samp{#} will get a comma prepended, to
7216 keep them from being interpreted by Org as outline nodes or special
7217 comments.  These commas will be striped for editing with @kbd{C-c '}, and
7218 also for export.}.  Fixed-width
7219 regions (where each line starts with a colon followed by a space) will be
7220 edited using @code{artist-mode}@footnote{You may select a different-mode with
7221 the variable @code{org-edit-fixed-width-region-mode}.} to allow creating
7222 ASCII drawings easily.  Using this command in an empty line will create a new
7223 fixed-width region.
7224 @end table
7227 @node Include files, Tables exported, Literal examples, Markup rules
7228 @subheading Include files
7229 @cindex include files, markup rules
7231 During export, you can include the content of another file.  For example, to
7232 include your .emacs file, you could use:
7233 @cindex #+INCLUDE
7235 @example
7236 #+INCLUDE: "~/.emacs" src emacs-lisp
7237 @end example
7239 The optional second and third parameter are the markup (@samp{quote},
7240 @samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
7241 language for formatting the contents.  The markup is optional, if it is not
7242 given, the text will be assumed to be in Org mode format and will be
7243 processed normally.  The include line will also allow additional keyword
7244 parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
7245 first line and for each following line.  For example, to include a file as an
7246 item, use
7248 @example
7249 #+INCLUDE: "~/snippets/xx" :prefix1 "   + " :prefix "     "
7250 @end example
7252 @table @kbd
7253 @kindex C-c '
7254 @item C-c '
7255 Visit the include file at point.
7256 @end table
7258 @node Tables exported, Footnotes, Include files, Markup rules
7259 @subheading Tables
7260 @cindex tables, markup rules
7262 Both the native Org mode tables (@pxref{Tables}) and tables formatted with
7263 the @file{table.el} package will be exported properly.  For Org mode tables,
7264 the lines before the first horizontal separator line will become table header
7265 lines.
7267 @node Footnotes, Emphasis and monospace, Tables exported, Markup rules
7268 @subheading Footnotes
7269 @cindex footnotes, markup rules
7270 @cindex @file{footnote.el}
7272 @kindex C-c !
7273 Numbers in square brackets are treated as footnote markers, and lines
7274 starting with such a marker are interpreted as the footnote itself.  You can
7275 use the Emacs package @file{footnote.el} to create footnotes@footnote{The
7276 @file{footnote} package uses @kbd{C-c !} to invoke its commands.  This
7277 binding conflicts with the Org mode command for inserting inactive time
7278 stamps.  You could use the variable @code{footnote-prefix} to switch
7279 footnotes commands to another key.  Or, if you are too used to this binding,
7280 you could use @code{org-replace-disputed-keys} and @code{org-disputed-keys}
7281 to change the settings in Org.}.  For example:
7283 @example
7284 The Org homepage[1] now looks a lot better than it used to.
7286 [1] The link is: http://orgmode.org
7287 @end example
7289 @node Emphasis and monospace, TeX macros and LaTeX fragments, Footnotes, Markup rules
7290 @subheading Emphasis and monospace
7292 @cindex underlined text, markup rules
7293 @cindex bold text, markup rules
7294 @cindex italic text, markup rules
7295 @cindex verbatim text, markup rules
7296 @cindex code text, markup rules
7297 @cindex strike-through text, markup rules
7298 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
7299 and @code{~verbatim~}, and, if you must, @samp{+strike-through+}.  Text
7300 in the code and verbatim string is not processed for Org mode specific
7301 syntax, it is exported verbatim.
7303 @node TeX macros and LaTeX fragments, Horizontal rules, Emphasis and monospace, Markup rules
7304 @subheading @TeX{} macros and La@TeX{} fragments
7305 @cindex LaTeX fragments, markup rules
7306 @cindex TeX macros, markup rules
7307 @cindex HTML entities
7308 @cindex LaTeX entities
7310 A @TeX{}-like syntax is used to specify special characters.  Where possible,
7311 these will be transformed into the native format of the exporter back-end.
7312 Strings like @code{\alpha} will be exported as @code{&alpha;} in the HTML
7313 output, and as @code{$\alpha$} in the La@TeX{} output.  Similarly,
7314 @code{\nbsp} will become @code{&nbsp;} in HTML and @code{~} in La@TeX{}.
7315 This applies for a large number of entities, with names taken from both HTML
7316 and La@TeX{}, see the variable @code{org-html-entities} for the complete
7317 list.  If you are unsure about a name, use @kbd{M-@key{TAB}} for completion
7318 after having types the backslash and maybe a few characters
7319 (@pxref{Completion}).
7321 La@TeX{} fragments are converted into images for HTML export, and they are
7322 written literally into the La@TeX{} export.  See also @ref{Embedded LaTeX}.
7324 Finally, @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
7325 @samp{...} are all converted into special commands creating hyphens of
7326 different lengths or a compact set of dots.
7328 @node Horizontal rules, Comment lines, TeX macros and LaTeX fragments, Markup rules
7329 @subheading  Horizontal rules
7330 @cindex horizontal rules, markup rules
7331 A line consisting of only dashes, and at least 5 of them, will be
7332 exported as a horizontal line (@samp{<hr/>} in HTML).
7334 @node Comment lines,  , Horizontal rules, Markup rules
7335 @subheading Comment lines
7336 @cindex comment lines
7337 @cindex exporting, not
7339 Lines starting with @samp{#} in column zero are treated as comments and will
7340 never be exported.  Also entire subtrees starting with the word
7341 @samp{COMMENT} will never be exported.  Finally, regions surrounded by
7342 @samp{#+BEGIN_COMMENT} ... @samp{#+END_COMMENT} will not be exported.
7344 @table @kbd
7345 @kindex C-c ;
7346 @item C-c ;
7347 Toggle the COMMENT keyword at the beginning of an entry.
7348 @end table
7350 @node Selective export, Export options, Markup rules, Exporting
7351 @section Selective export
7352 @cindex export, selective by tags
7354 You may use tags to select the parts of a document that should be exported,
7355 or to exclude parts from export.  This behavior is governed by two variables:
7356 @code{org-export-select-tags} and @code{org-export-exclude-tags}.
7358 Org first checks if any of the @emph{select} tags is present in the buffer.
7359 If yes, all trees that do not carry one of these tags will be excluded.  If a
7360 selected tree is a subtree, the heading hierarchy above it will also be
7361 selected for export, but not the text below those headings.
7363 @noindent
7364 If none of the select tags is found, the whole buffer will be selected for
7365 export.
7367 @noindent
7368 Finally, all subtrees that are marked by any of the @emph{exclude} tags will
7369 be removed from the export buffer.
7371 @node Export options, The export dispatcher, Selective export, Exporting
7372 @section Export options
7373 @cindex options, for export
7375 @cindex completion, of option keywords
7376 The exporter recognizes special lines in the buffer which provide
7377 additional information.  These lines may be put anywhere in the file.
7378 The whole set of lines can be inserted into the buffer with @kbd{C-c
7379 C-e t}.  For individual lines, a good way to make sure the keyword is
7380 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
7381 (@pxref{Completion}).
7383 @table @kbd
7384 @kindex C-c C-e t
7385 @item C-c C-e t
7386 Insert template with export options, see example below.
7387 @end table
7389 @cindex #+TITLE:
7390 @cindex #+AUTHOR:
7391 @cindex #+DATE:
7392 @cindex #+EMAIL:
7393 @cindex #+LANGUAGE:
7394 @cindex #+TEXT:
7395 @cindex #+OPTIONS:
7396 @cindex #+LINK_UP:
7397 @cindex #+LINK_HOME:
7398 @cindex #+EXPORT_SELECT_TAGS:
7399 @cindex #+EXPORT_EXCLUDE_TAGS:
7400 @example
7401 #+TITLE:     the title to be shown (default is the buffer name)
7402 #+AUTHOR:    the author (default taken from @code{user-full-name})
7403 #+DATE:      A date, fixed, of a format string for @code{format-time-string}
7404 #+EMAIL:     his/her email address (default from @code{user-mail-address})
7405 #+LANGUAGE:  language for HTML, e.g. @samp{en} (@code{org-export-default-language})
7406 #+TEXT:      Some descriptive text to be inserted at the beginning.
7407 #+TEXT:      Several lines may be given.
7408 #+OPTIONS:   H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
7409 #+LINK_UP:   the ``up'' link of an exported page
7410 #+LINK_HOME: the ``home'' link of an exported page
7411 #+EXPORT_SELECT_TAGS:   Tags that select a tree for export
7412 #+EXPORT_EXCLUDE_TAGS:  Tags that exclude a tree from export
7413 @end example
7415 @noindent
7416 The OPTIONS line is a compact@footnote{If you want to configure many options
7417 this way, you can use several OPTIONS lines.} form to specify export settings.  Here
7418 you can:
7419 @cindex headline levels
7420 @cindex section-numbers
7421 @cindex table of contents
7422 @cindex line-break preservation
7423 @cindex quoted HTML tags
7424 @cindex fixed-width sections
7425 @cindex tables
7426 @cindex @TeX{}-like syntax for sub- and superscripts
7427 @cindex footnotes
7428 @cindex special strings
7429 @cindex emphasized text
7430 @cindex @TeX{} macros
7431 @cindex La@TeX{} fragments
7432 @cindex author info, in export
7433 @cindex time info, in export
7434 @example
7435 H:         @r{set the number of headline levels for export}
7436 num:       @r{turn on/off section-numbers}
7437 toc:       @r{turn on/off table of contents, or set level limit (integer)}
7438 \n:        @r{turn on/off line-break-preservation}
7439 @@:         @r{turn on/off quoted HTML tags}
7440 ::         @r{turn on/off fixed-width sections}
7441 |:         @r{turn on/off tables}
7442 ^:         @r{turn on/off @TeX{}-like syntax for sub- and superscripts.  If}
7443            @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
7444            @r{the simple @code{a_b} will be left as it is.}
7445 -:         @r{turn on/off conversion of special strings.}
7446 f:         @r{turn on/off footnotes like this[1].}
7447 *:         @r{turn on/off emphasized text (bold, italic, underlined)}
7448 TeX:       @r{turn on/off simple @TeX{} macros in plain text}
7449 LaTeX:     @r{turn on/off La@TeX{} fragments}
7450 skip:      @r{turn on/off skipping the text before the first heading}
7451 author:    @r{turn on/off inclusion of author name/email into exported file}
7452 creator:   @r{turn on/off inclusion of creator info into exported file}
7453 timestamp: @r{turn on/off inclusion creation time into exported file}
7454 d:         @r{turn on/off inclusion of drawers}
7455 @end example
7457 These options take effect in both the HTML and La@TeX{} export, except
7458 for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
7459 @code{nil} for the La@TeX{} export.
7461 When exporting only a single subtree by selecting it with @kbd{C-c @@} before
7462 calling an export command, the subtree can overrule some of the file's export
7463 settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
7464 @code{EXPORT_TEXT}, and @code{EXPORT_OPTIONS}.
7466 @node The export dispatcher, ASCII export, Export options, Exporting
7467 @section The export dispatcher
7468 @cindex dispatcher, for export commands
7470 All export commands can be reached using the export dispatcher, which is a
7471 prefix key that prompts for an additional key specifying the command.
7472 Normally the entire file is exported, but if there is an active region that
7473 contains one outline tree, the first heading is used as document title and
7474 the subtrees are exported.
7476 @table @kbd
7477 @kindex C-c C-e
7478 @item C-c C-e
7479 Dispatcher for export and publishing commands.  Displays a help-window
7480 listing the additional key(s) needed to launch an export or publishing
7481 command.  The prefix arg is passed through to the exporter.  If the option
7482 @code{org-export-run-in-background} is set, Org will run the command in the
7483 background if that seems useful for the specific command (i.e. commands that
7484 write to a file).
7485 @kindex C-c C-e v
7486 @item C-c C-e v
7487 Like @kbd{C-c C-e}, but only export the text that is currently visible
7488 (i.e. not hidden by outline visibility).
7489 @kindex C-u C-u C-c C-e
7490 @item C-u C-u C-c C-e
7491 Call an the exporter, but reverse the setting of
7492 @code{org-export-run-in-background}, i.e. request background processing if
7493 not set, or force processing in the current Emacs process if st.
7494 @end table
7496 @node ASCII export, HTML export, The export dispatcher, Exporting
7497 @section ASCII export
7498 @cindex ASCII export
7500 ASCII export produces a simple and very readable version of an Org mode
7501 file.
7503 @cindex region, active
7504 @cindex active region
7505 @cindex Transient mark mode
7506 @table @kbd
7507 @kindex C-c C-e a
7508 @item C-c C-e a
7509 Export as ASCII file.  For an org file @file{myfile.org}, the ASCII file
7510 will be @file{myfile.txt}.  The file will be overwritten without
7511 warning.  If there is an active region, only the region will be
7512 exported. If the selected region is a single tree@footnote{To select the
7513 current subtree, use @kbd{C-c @@}.}, the tree head will
7514 become the document title.  If the tree head entry has or inherits an
7515 @code{EXPORT_FILE_NAME} property, that name will be used for the
7516 export.
7517 @kindex C-c C-e v a
7518 @item C-c C-e v a
7519 Export only the visible part of the document.
7520 @end table
7522 @cindex headline levels, for exporting
7523 In the exported version, the first 3 outline levels will become
7524 headlines, defining a general document structure.  Additional levels
7525 will be exported as itemized lists.  If you want that transition to occur
7526 at a different level, specify it with a prefix argument.  For example,
7528 @example
7529 @kbd{C-1 C-c C-e a}
7530 @end example
7532 @noindent
7533 creates only top level headlines and does the rest as items.  When
7534 headlines are converted to items, the indentation of the text following
7535 the headline is changed to fit nicely under the item.  This is done with
7536 the assumption that the first body line indicates the base indentation of
7537 the body text.  Any indentation larger than this is adjusted to preserve
7538 the layout relative to the first line.  Should there be lines with less
7539 indentation than the first, these are left alone.
7541 @node HTML export, LaTeX and PDF export, ASCII export, Exporting
7542 @section HTML export
7543 @cindex HTML export
7545 Org mode contains an HTML (XHTML 1.0 strict) exporter with extensive
7546 HTML formatting, in ways similar to John Grubers @emph{markdown}
7547 language, but with additional support for tables.
7549 @menu
7550 * HTML Export commands::        How to invoke HTML export
7551 * Quoting HTML tags::           Using direct HTML in Org mode
7552 * Links::                       Transformation of links for HTML
7553 * Images::                      How to include images
7554 * CSS support::                 Changing the appearance of the output
7555 * Javascript support::          Info and Folding in a web browser
7556 @end menu
7558 @node HTML Export commands, Quoting HTML tags, HTML export, HTML export
7559 @subsection HTML export commands
7561 @cindex region, active
7562 @cindex active region
7563 @cindex Transient mark mode
7564 @table @kbd
7565 @kindex C-c C-e h
7566 @item C-c C-e h
7567 Export as HTML file @file{myfile.html}.  For an org file @file{myfile.org},
7568 the ASCII file will be @file{myfile.html}.  The file will be overwritten
7569 without warning.  If there is an active region, only the region will be
7570 exported. If the selected region is a single tree@footnote{To select the
7571 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
7572 title.  If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
7573 property, that name will be used for the export.
7574 @kindex C-c C-e b
7575 @item C-c C-e b
7576 Export as HTML file and immediately open it with a browser.
7577 @kindex C-c C-e H
7578 @item C-c C-e H
7579 Export to a temporary buffer, do not create a file.
7580 @kindex C-c C-e R
7581 @item C-c C-e R
7582 Export the active region to a temporary buffer.  With a prefix argument, do
7583 not produce the file header and footer, but just the plain HTML section for
7584 the region.  This is good for cut-and-paste operations.
7585 @kindex C-c C-e v h
7586 @kindex C-c C-e v b
7587 @kindex C-c C-e v H
7588 @kindex C-c C-e v R
7589 @item C-c C-e v h
7590 @item C-c C-e v b
7591 @item C-c C-e v H
7592 @item C-c C-e v R
7593 Export only the visible part of the document.
7594 @item M-x org-export-region-as-html
7595 Convert the region to HTML under the assumption that it was Org mode
7596 syntax before.  This is a global command that can be invoked in any
7597 buffer.
7598 @item M-x org-replace-region-by-HTML
7599 Replace the active region (assumed to be in Org mode syntax) by HTML
7600 code.
7601 @end table
7603 @cindex headline levels, for exporting
7604 In the exported version, the first 3 outline levels will become headlines,
7605 defining a general document structure.  Additional levels will be exported as
7606 itemized lists.  If you want that transition to occur at a different level,
7607 specify it with a numeric prefix argument.  For example,
7609 @example
7610 @kbd{C-2 C-c C-e b}
7611 @end example
7613 @noindent
7614 creates two levels of headings and does the rest as items.
7616 @node Quoting HTML tags, Links, HTML Export commands, HTML export
7617 @subsection Quoting HTML tags
7619 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
7620 @samp{&gt;} in HTML export.  If you want to include simple HTML tags
7621 which should be interpreted as such, mark them with @samp{@@} as in
7622 @samp{@@<b>bold text@@</b>}.  Note that this really works only for
7623 simple tags.  For more extensive HTML that should be copied verbatim to
7624 the exported file use either
7626 @example
7627 #+HTML: Literal HTML code for export
7628 @end example
7630 @noindent or
7631 @cindex #+BEGIN_HTML
7633 @example
7634 #+BEGIN_HTML
7635 All lines between these markers are exported literally
7636 #+END_HTML
7637 @end example
7640 @node Links, Images, Quoting HTML tags, HTML export
7641 @subsection Links
7643 @cindex links, in HTML export
7644 @cindex internal links, in HTML export
7645 @cindex external links, in HTML export
7646 Internal links (@pxref{Internal links}) will continue to work in HTML
7647 files only if they match a dedicated @samp{<<target>>}.  Automatic links
7648 created by radio targets (@pxref{Radio targets}) will also work in the
7649 HTML file.  Links to external files will still work if the HTML file is
7650 in the same directory as the Org file.  Links to other @file{.org}
7651 files will be translated into HTML links under the assumption that an
7652 HTML version also exists of the linked file.  For information related to
7653 linking files while publishing them to a publishing directory see
7654 @ref{Publishing links}.
7656 If you want to specify attributes for links, you can do so using a special
7657 syntax.  Here is an example that sets @code{alt} and @code{title} attributes
7658 for an inlined image:
7660 @example
7661 [[./img/a.jpg@{@{alt="This is image A" title="Image with no action"@}@}]]
7662 @end example
7664 @node Images, CSS support, Links, HTML export
7665 @subsection Images
7667 @cindex images, inline in HTML
7668 @cindex inlining images in HTML
7669 HTML export can inline images given as links in the Org file, and
7670 it can make an image the clickable part of a link.  By
7671 default@footnote{but see the variable
7672 @code{org-export-html-inline-images}}, images are inlined if a link does
7673 not have a description.  So @samp{[[file:myimg.jpg]]} will be inlined,
7674 while @samp{[[file:myimg.jpg][the image]]} will just produce a link
7675 @samp{the image} that points to the image.  If the description part
7676 itself is a @code{file:} link or a @code{http:} URL pointing to an
7677 image, this image will be inlined and activated so that clicking on the
7678 image will activate the link.  For example, to include a thumbnail that
7679 will link to a high resolution version of the image, you could use:
7681 @example
7682 [[file:highres.jpg][file:thumb.jpg]]
7683 @end example
7685 @noindent
7686 and you could use @code{http} addresses just as well.
7688 @node CSS support, Javascript support, Images, HTML export
7689 @subsection CSS support
7690 @cindex CSS, for HTML export
7691 @cindex HTML export, CSS
7693 You can also give style information for the exported file.  The HTML
7694 exporter assigns the following CSS classes to appropriate parts of the
7695 document - your style specifications may change these:
7696 @example
7697 .todo           @r{TODO keywords}
7698 .done           @r{the DONE keyword}
7699 .timestamp      @r{time stamp}
7700 .timestamp-kwd  @r{keyword associated with a time stamp, like SCHEDULED}
7701 .tag            @r{tag in a headline}
7702 .target         @r{target for links}
7703 @end example
7705 Each exported files contains a compact default style that defines these
7706 classes in a basic way@footnote{This style is defined in the constant
7707 @code{org-export-html-style-default}, which you should not modify.  To turn
7708 inclusion of these defaults off, customize
7709 @code{org-export-html-style-include-default}}.  You may overwrite these
7710 settings, or add to them by using the variables @code{org-export-html-style}
7711 (for Org-wide settings) and @code{org-export-html-style-extra} (for more
7712 granular settings, like file-local settings).  To set the latter variable
7713 individually for each file, you can use
7715 @example
7716 #+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
7717 @end example
7719 @noindent
7720 For longer style definitions, you can use several such lines.  You could also
7721 directly write a @code{<style>} @code{</style>} section in this way, without
7722 referring to an external file.
7724 @c FIXME: More about header and footer styles
7725 @c FIXME: Talk about links and targets.
7727 @node Javascript support,  , CSS support, HTML export
7728 @subsection Javascript supported display of web pages
7730 @emph{Sebastian Rose} has written a JavaScript program especially designed to
7731 enhance the web viewing experience of HTML files created with Org.  This
7732 program allows to view large files in two different ways.  The first one is
7733 an @emph{Info}-like mode where each section is displayed separately and
7734 navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
7735 as well, press @kbd{?} for an overview of the available keys).  The second
7736 view type is a @emph{folding} view much like Org provides it inside Emacs.
7737 The script is available at @url{http://orgmode.org/org-info.js} and you can
7738 find the documentation for it at
7739 @url{http://orgmode.org/worg/code/org-info-js/org-info.js.html}.  We are
7740 serving the script from our site, but if you use it a lot, you might not want
7741 to be dependent on @url{orgmode.org} and prefer to install a local copy on
7742 your own web server.
7744 To use the script, you need to make sure that the @file{org-jsinfo.el} module
7745 gets loaded.  It should be loaded by default, try @kbd{M-x customize-variable
7746 @key{RET} org-modules @key{RET}} to convince yourself that this is indeed the
7747 case.  All it then takes to make use of the program is adding a single line
7748 to the Org file:
7750 @example
7751 #+INFOJS_OPT: view:info toc:nil
7752 @end example
7754 @noindent
7755 If this line is found, the HTML header will automatically contain the code
7756 needed to invoke the script.  Using the line above, you can set the following
7757 viewing options:
7759 @example
7760 path:    @r{The path to the script.  The default is to grab the script from}
7761          @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
7762          @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
7763 view:    @r{Initial view when website is first shown.  Possible values are:}
7764          info      @r{Info-like interface with one section per page.}
7765          overview  @r{Folding interface, initially showing only top-level.}
7766          content   @r{Folding interface, starting with all headlines visible.}
7767          showall   @r{Folding interface, all headlines and text visible.}
7768 sdepth:  @r{Maximum headline level that will still become an independent}
7769          @r{section for info and folding modes.  The default is taken from}
7770          @r{@code{org-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
7771          @r{If this is smaller than in @code{org-headline-levels}, each}
7772          @r{info/folding section can still contain children headlines.}
7773 toc:     @r{Should the table of content @emph{initially} be visible?}
7774          @r{Even when @code{nil}, you can always get to the toc with @kbd{i}.}
7775 tdepth:  @r{The depth of the table of contents.  The defaults are taken from}
7776          @r{the variables @code{org-headline-levels} and @code{org-export-with-toc}.}
7777 ftoc:    @r{Does the css of the page specify a fixed position for the toc?}
7778          @r{If yes, the toc will never be displayed as a section.}
7779 ltoc:    @r{Should there be short contents (children) in each section?}
7780 mouse:   @r{Headings are highlighted when the mouse is over them.  Should be}
7781          @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
7782 buttons: @r{Should view-toggle buttons be everywhere?  When @code{nil} (the}
7783          @r{default), only one such button will be present.}
7784 @end example
7786 You can choose default values for these options by customizing the variable
7787 @code{org-infojs-options}.  If you always want to apply the script to your
7788 pages, configure the variable @code{org-export-html-use-infojs}.
7790 @node LaTeX and PDF export, XOXO export, HTML export, Exporting
7791 @section LaTeX and PDF export
7792 @cindex LaTeX export
7793 @cindex PDF export
7795 Org mode contains a La@TeX{} exporter written by Bastien Guerry.  With
7796 further processing, this backend is also used to produce PDF output.  Since
7797 the LaTeX output uses @file{hyperref} to implement links and cross
7798 references, the PDF output file will be fully linked.
7800 @menu
7801 * LaTeX/PDF export commands::   
7802 * Quoting LaTeX code::          Incorporating literal LaTeX code
7803 * Sectioning structure::        Changing sectioning in LaTeX output
7804 @end menu
7806 @node LaTeX/PDF export commands, Quoting LaTeX code, LaTeX and PDF export, LaTeX and PDF export
7807 @subsection LaTeX export commands
7809 @table @kbd
7810 @kindex C-c C-e l
7811 @item C-c C-e l
7812 Export as La@TeX{} file @file{myfile.tex}.  For an org file
7813 @file{myfile.org}, the ASCII file will be @file{myfile.tex}.  The file will
7814 be overwritten without warning.  If there is an active region, only the
7815 region will be exported. If the selected region is a single tree@footnote{To
7816 select the current subtree, use @kbd{C-c @@}.}, the tree head will become the
7817 document title.  If the tree head entry has or inherits an
7818 @code{EXPORT_FILE_NAME} property, that name will be used for the export.
7819 @kindex C-c C-e L
7820 @item C-c C-e L
7821 Export to a temporary buffer, do not create a file.
7822 @kindex C-c C-e v l
7823 @kindex C-c C-e v L
7824 @item C-c C-e v l
7825 @item C-c C-e v L
7826 Export only the visible part of the document.
7827 @item M-x org-export-region-as-latex
7828 Convert the region to La@TeX{} under the assumption that it was Org mode
7829 syntax before.  This is a global command that can be invoked in any
7830 buffer.
7831 @item M-x org-replace-region-by-latex
7832 Replace the active region (assumed to be in Org mode syntax) by La@TeX{}
7833 code.
7834 @kindex C-c C-e p
7835 @item C-c C-e p
7836 Export as LaTeX and then process to PDF.
7837 @kindex C-c C-e d
7838 @item C-c C-e d
7839 Export as LaTeX and then process to PDF, then open the resulting PDF file.
7840 @end table
7842 @cindex headline levels, for exporting
7843 In the exported version, the first 3 outline levels will become
7844 headlines, defining a general document structure.  Additional levels
7845 will be exported as description lists.  The exporter can ignore them or
7846 convert them to a custom string depending on
7847 @code{org-latex-low-levels}.
7849 If you want that transition to occur at a different level, specify it
7850 with a numeric prefix argument. For example,
7852 @example
7853 @kbd{C-2 C-c C-e l}
7854 @end example
7856 @noindent
7857 creates two levels of headings and does the rest as items.
7859 @node Quoting LaTeX code, Sectioning structure, LaTeX/PDF export commands, LaTeX and PDF export
7860 @subsection Quoting LaTeX code
7862 Embedded La@TeX{} as described in @ref{Embedded LaTeX} will be correctly
7863 inserted into the La@TeX{} file.  Furthermore, you can add special code
7864 that should only be present in La@TeX{} export with the following
7865 constructs:
7867 @example
7868 #+LaTeX: Literal LaTeX code for export
7869 @end example
7871 @noindent or
7872 @cindex #+BEGIN_LaTeX
7874 @example
7875 #+BEGIN_LaTeX
7876 All lines between these markers are exported literally
7877 #+END_LaTeX
7878 @end example
7880 @node   Sectioning structure,  , Quoting LaTeX code, LaTeX and PDF export
7881 @subsection Sectioning structure
7882 @cindex LaTeX class
7883 @cindex LaTeX sectioning structure
7885 By default, the La@TeX{} output uses the class @code{article}.
7887 You can change this globally by setting a different value for
7888 @code{org-export-latex-default-class} or locally by adding an option like
7889 @code{#+LaTeX_CLASS: myclass} in your file.  The class should be listed in
7890 @code{org-export-latex-classes}, where you can also define the sectioning
7891 structure for each class, as well as defining additonal classes.
7894 @node XOXO export, iCalendar export, LaTeX and PDF export, Exporting
7895 @section XOXO export
7896 @cindex XOXO export
7898 Org mode contains an exporter that produces XOXO-style output.
7899 Currently, this exporter only handles the general outline structure and
7900 does not interpret any additional Org mode features.
7902 @table @kbd
7903 @kindex C-c C-e x
7904 @item C-c C-e x
7905 Export as XOXO file @file{myfile.html}.
7906 @kindex C-c C-e v
7907 @item C-c C-e v x
7908 Export only the visible part of the document.
7909 @end table
7911 @node iCalendar export,  , XOXO export, Exporting
7912 @section iCalendar export
7913 @cindex iCalendar export
7915 Some people like to use Org mode for keeping track of projects, but still
7916 prefer a standard calendar application for anniversaries and appointments.
7917 In this case it can be useful to have deadlines and other time-stamped items
7918 in Org files show up in the calendar application.  Org mode can export
7919 calendar information in the standard iCalendar format.  If you also want to
7920 have TODO entries included in the export, configure the variable
7921 @code{org-icalendar-include-todo}.  iCalendar export will export plain time
7922 stamps as VEVENT, and TODO items as VTODO.  It will also create events from
7923 deadlines that are in non-TODO items.  Deadlines and scheduling dates in TODO
7924 items will be used to set the start and due dates for the todo
7925 entry@footnote{See the variables @code{org-icalendar-use-deadline} and
7926 @code{org-icalendar-use-scheduled}.}.  As categories, it will use the tags
7927 locally defined in the heading, and the file/tree category@footnote{To add
7928 inherited tags or the TODO state, configure the variable
7929 @code{org-icalendar-categories}.}. 
7931 The iCalendar standard requires each entry to have a globally unique
7932 identifier (UID).  Org creates these identifiers during export.  If you set
7933 the variable @code{org-icalendar-store-UID}, the UID will be stored in the
7934 @code{:ID:} property of the entry and re-used next time you report this
7935 entry.  Since a single entry can give rise to multiple iCalendar entries (as
7936 a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
7937 prefixes to the UID, depending on what triggered the inclusion of the entry.
7938 In this way the UID remains unique, but a synchronization program can still
7939 figure out from which entry all the different instances originate.
7941 @table @kbd
7942 @kindex C-c C-e i
7943 @item C-c C-e i
7944 Create iCalendar entries for the current file and store them in the same
7945 directory, using a file extension @file{.ics}.
7946 @kindex C-c C-e I
7947 @item C-c C-e I
7948 Like @kbd{C-c C-e i}, but do this for all files in
7949 @code{org-agenda-files}.  For each of these files, a separate iCalendar
7950 file will be written.
7951 @kindex C-c C-e c
7952 @item C-c C-e c
7953 Create a single large iCalendar file from all files in
7954 @code{org-agenda-files} and write it to the file given by
7955 @code{org-combined-agenda-icalendar-file}.
7956 @end table
7958 The export will honor SUMMARY, DESCRIPTION and LOCATION properties if
7959 the selected entries have them.  If not, the summary will be derived
7960 from the headline, and the description from the body (limited to
7961 @code{org-icalendar-include-body} characters).
7963 How this calendar is best read and updated, that depends on the application
7964 you are using.  The FAQ covers this issue.
7966 @node Publishing, Miscellaneous, Exporting, Top
7967 @chapter Publishing
7968 @cindex publishing
7970 Org includes@footnote{@file{org-publish.el} is not distributed with
7971 Emacs 21, if you are still using Emacs 21, you need you need to download
7972 this file separately.} a publishing management system that allows you to
7973 configure automatic HTML conversion of @emph{projects} composed of
7974 interlinked org files.  This system is called @emph{org-publish}.  You can
7975 also configure org-publish to automatically upload your exported HTML
7976 pages and related attachments, such as images and source code files, to
7977 a web server. Org-publish turns Org into a web-site authoring tool.
7979 You can also use Org-publish to convert files into La@TeX{}, or even
7980 combine HTML and La@TeX{} conversion so that files are available in both
7981 formats on the server@footnote{Since La@TeX{} files on a server are not
7982 that helpful, you surely want to perform further conversion on them --
7983 e.g. convert them to @code{PDF} format.}.
7985 Org-publish has been contributed to Org by David O'Toole.
7987 @menu
7988 * Configuration::               Defining projects
7989 * Sample configuration::        Example projects
7990 * Triggering publication::      Publication commands
7991 @end menu
7993 @node Configuration, Sample configuration, Publishing, Publishing
7994 @section Configuration
7996 Publishing needs significant configuration to specify files, destination
7997 and many other properties of a project.
7999 @menu
8000 * Project alist::               The central configuration variable
8001 * Sources and destinations::    From here to there
8002 * Selecting files::             What files are part of the project?
8003 * Publishing action::           Setting the function doing the publishing
8004 * Publishing options::          Tweaking HTML export
8005 * Publishing links::            Which links keep working after publishing?
8006 * Project page index::          Publishing a list of project files
8007 @end menu
8009 @node Project alist, Sources and destinations, Configuration, Configuration
8010 @subsection The variable @code{org-publish-project-alist}
8011 @cindex org-publish-project-alist
8012 @cindex projects, for publishing
8014 Org-publish is configured almost entirely through setting the value of
8015 one variable, called @code{org-publish-project-alist}.
8016 Each element of the list configures one project, and may be in one of
8017 the two following forms:
8019 @lisp
8020 ("project-name" :property value :property value ...)
8022 @r{or}
8024 ("project-name" :components ("project-name" "project-name" ...))
8026 @end lisp
8028 In both cases, projects are configured by specifying property values.
8029 A project defines the set of files that will be published, as well as
8030 the publishing configuration to use when publishing those files.  When
8031 a project takes the second form listed above, the individual members
8032 of the ``components'' property are taken to be components of the
8033 project, which group together files requiring different publishing
8034 options. When you publish such a ``meta-project'' all the components
8035 will also publish.
8037 @node Sources and destinations, Selecting files, Project alist, Configuration
8038 @subsection Sources and destinations for files
8039 @cindex directories, for publishing
8041 Most properties are optional, but some should always be set. In
8042 particular, org-publish needs to know where to look for source files,
8043 and where to put published files.
8045 @multitable @columnfractions 0.3 0.7
8046 @item @code{:base-directory}
8047 @tab Directory containing publishing source files
8048 @item @code{:publishing-directory}
8049 @tab Directory (possibly remote) where output files will be published.
8050 @item @code{:preparation-function}
8051 @tab Function called before starting the publishing process, for example to
8052 run @code{make} for updating files to be published.
8053 @item @code{:completion-function}
8054 @tab Function called after finishing the publishing process, for example to
8055 change permissions of the resulting files.
8056 @end multitable
8057 @noindent
8059 @node Selecting files, Publishing action, Sources and destinations, Configuration
8060 @subsection Selecting files
8061 @cindex files, selecting for publishing
8063 By default, all files with extension @file{.org} in the base directory
8064 are considered part of the project.  This can be modified by setting the
8065 properties
8066 @multitable @columnfractions 0.25 0.75
8067 @item @code{:base-extension}
8068 @tab Extension (without the dot!) of source files.  This actually is a
8069 regular expression.
8071 @item @code{:exclude}
8072 @tab Regular expression to match file names that should not be
8073 published, even though they have been selected on the basis of their
8074 extension.
8076 @item @code{:include}
8077 @tab List of files to be included regardless of @code{:base-extension}
8078 and @code{:exclude}.
8079 @end multitable
8081 @node Publishing action, Publishing options, Selecting files, Configuration
8082 @subsection Publishing action
8083 @cindex action, for publishing
8085 Publishing means that a file is copied to the destination directory and
8086 possibly transformed in the process.  The default transformation is to export
8087 Org files as HTML files, and this is done by the function
8088 @code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
8089 export}). But you also can publish your files in La@TeX{} by using the
8090 function @code{org-publish-org-to-latex} instead, or as PDF files using
8091 @code{org-publish-org-to-pdf}.  Other files like images only need to be
8092 copied to the publishing destination. For non-Org files, you need to provide
8093 your own publishing function:
8095 @multitable @columnfractions 0.3 0.7
8096 @item @code{:publishing-function}
8097 @tab Function executing the publication of a file.  This may also be a
8098 list of functions, which will all be called in turn.
8099 @end multitable
8101 The function must accept two arguments: a property list containing at
8102 least a @code{:publishing-directory} property, and the name of the file
8103 to be published.  It should take the specified file, make the necessary
8104 transformation (if any) and place the result into the destination folder.
8105 You can write your own publishing function, but @code{org-publish}
8106 provides one for attachments (files that only need to be copied):
8107 @code{org-publish-attachment}.
8109 @node Publishing options, Publishing links, Publishing action, Configuration
8110 @subsection Options for the HTML/LaTeX exporters
8111 @cindex options, for publishing
8113 The property list can be used to set many export options for the HTML
8114 and La@TeX{} exporters.  In most cases, these properties correspond to user
8115 variables in Org.  The table below lists these properties along
8116 with the variable they belong to.  See the documentation string for the
8117 respective variable for details.
8119 @multitable @columnfractions 0.3 0.7
8120 @item @code{:language}              @tab @code{org-export-default-language}
8121 @item @code{:headline-levels}       @tab @code{org-export-headline-levels}
8122 @item @code{:section-numbers}       @tab @code{org-export-with-section-numbers}
8123 @item @code{:table-of-contents}     @tab @code{org-export-with-toc}
8124 @item @code{:archived-trees}        @tab @code{org-export-with-archived-trees}
8125 @item @code{:emphasize}             @tab @code{org-export-with-emphasize}
8126 @item @code{:sub-superscript}       @tab @code{org-export-with-sub-superscripts}
8127 @item @code{:special-strings}       @tab @code{org-export-with-special-strings}
8128 @item @code{:TeX-macros}            @tab @code{org-export-with-TeX-macros}
8129 @item @code{:LaTeX-fragments}       @tab @code{org-export-with-LaTeX-fragments}
8130 @item @code{:fixed-width}           @tab @code{org-export-with-fixed-width}
8131 @item @code{:timestamps}            @tab @code{org-export-with-timestamps}
8132 @item @code{:author-info}           @tab @code{org-export-author-info}
8133 @item @code{:creator-info}          @tab @code{org-export-creator-info}
8134 @item @code{:tags}                  @tab @code{org-export-with-tags}
8135 @item @code{:tables}                @tab @code{org-export-with-tables}
8136 @item @code{:table-auto-headline}   @tab @code{org-export-highlight-first-table-line}
8137 @item @code{:style-include-default} @tab @code{org-export-html-style-include-default}
8138 @item @code{:style}                 @tab @code{org-export-html-style}
8139 @item @code{:style-extra}           @tab @code{org-export-html-style-extra}
8140 @item @code{:convert-org-links}     @tab @code{org-export-html-link-org-files-as-html}
8141 @item @code{:inline-images}         @tab @code{org-export-html-inline-images}
8142 @item @code{:expand-quoted-html}    @tab @code{org-export-html-expand}
8143 @item @code{:timestamp}             @tab @code{org-export-html-with-timestamp}
8144 @item @code{:publishing-directory}  @tab @code{org-export-publishing-directory}
8145 @item @code{:preamble}              @tab @code{org-export-html-preamble}
8146 @item @code{:postamble}             @tab @code{org-export-html-postamble}
8147 @item @code{:auto-preamble}         @tab @code{org-export-html-auto-preamble}
8148 @item @code{:auto-postamble}        @tab @code{org-export-html-auto-postamble}
8149 @item @code{:author}                @tab @code{user-full-name}
8150 @item @code{:email}                 @tab @code{user-mail-address}
8151 @item @code{:select-tags}           @tab @code{org-export-select-tags}
8152 @item @code{:exclude-tags}          @tab @code{org-export-exclude-tags}
8153 @end multitable
8155 If you use several email addresses, separate them by a semi-column.
8157 Most of the @code{org-export-with-*} variables have the same effect in
8158 both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
8159 @code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
8160 La@TeX{} export.
8162 When a property is given a value in @code{org-publish-project-alist},
8163 its setting overrides the value of the corresponding user variable (if
8164 any) during publishing.  Options set within a file (@pxref{Export
8165 options}), however, override everything.
8167 @node Publishing links, Project page index, Publishing options, Configuration
8168 @subsection Links between published files
8169 @cindex links, publishing
8171 To create a link from one Org file to another, you would use
8172 something like @samp{[[file:foo.org][The foo]]} or simply
8173 @samp{file:foo.org.} (@pxref{Hyperlinks}).  Upon publishing this link
8174 becomes a link to @file{foo.html}.  In this way, you can interlink the
8175 pages of your "org web" project and the links will work as expected when
8176 you publish them to HTML.
8178 You may also link to related files, such as images. Provided you are
8179 careful with relative pathnames, and provided you have also configured
8180 @code{org-publish} to upload the related files, these links will work
8181 too. @ref{Complex example} for an example of this usage.
8183 Sometime an Org file to be published may contain links that are
8184 only valid in your production environment, but not in the publishing
8185 location.  In this case, use the property
8187 @multitable @columnfractions 0.4 0.6
8188 @item @code{:link-validation-function}
8189 @tab Function to validate links
8190 @end multitable
8192 @noindent
8193 to define a function for checking link validity.  This function must
8194 accept two arguments, the file name and a directory relative to which
8195 the file name is interpreted in the production environment.  If this
8196 function returns @code{nil}, then the HTML generator will only insert a
8197 description into the HTML file, but no link.  One option for this
8198 function is @code{org-publish-validate-link} which checks if the given
8199 file is part of any project in @code{org-publish-project-alist}.
8201 @node Project page index,  , Publishing links, Configuration
8202 @subsection Project page index
8203 @cindex index, of published pages
8205 The following properties may be used to control publishing of an
8206 index of files or summary page for a given project.
8208 @multitable @columnfractions 0.25 0.75
8209 @item @code{:auto-index}
8210 @tab When non-nil, publish an index during org-publish-current-project or
8211 org-publish-all.
8213 @item @code{:index-filename}
8214 @tab Filename for output of index. Defaults to @file{index.org} (which
8215 becomes @file{index.html}).
8217 @item @code{:index-title}
8218 @tab Title of index page. Defaults to name of file.
8220 @item @code{:index-function}
8221 @tab Plug-in function to use for generation of index.
8222 Defaults to @code{org-publish-org-index}, which generates a plain list
8223 of links to all files in the project.
8224 @end multitable
8226 @node Sample configuration, Triggering publication, Configuration, Publishing
8227 @section Sample configuration
8229 Below we provide two example configurations.  The first one is a simple
8230 project publishing only a set of Org files.  The second example is
8231 more complex, with a multi-component project.
8233 @menu
8234 * Simple example::              One-component publishing
8235 * Complex example::             A multi-component publishing example
8236 @end menu
8238 @node Simple example, Complex example, Sample configuration, Sample configuration
8239 @subsection Example: simple publishing configuration
8241 This example publishes a set of Org files to the @file{public_html}
8242 directory on the local machine.
8244 @lisp
8245 (setq org-publish-project-alist
8246       '(("org"
8247          :base-directory "~/org/"
8248          :publishing-directory "~/public_html"
8249          :section-numbers nil
8250          :table-of-contents nil
8251          :style "<link rel=\"stylesheet\"
8252                 href=\"../other/mystyle.css\"
8253                 type=\"text/css\">")))
8254 @end lisp
8256 @node Complex example,  , Simple example, Sample configuration
8257 @subsection Example: complex publishing configuration
8259 This more complicated example publishes an entire website, including
8260 org files converted to HTML, image files, emacs lisp source code, and
8261 style sheets. The publishing-directory is remote and private files are
8262 excluded.
8264 To ensure that links are preserved, care should be taken to replicate
8265 your directory structure on the web server, and to use relative file
8266 paths. For example, if your org files are kept in @file{~/org} and your
8267 publishable images in @file{~/images}, you'd link to an image with
8269 @example
8270 file:../images/myimage.png
8271 @end example
8273 On the web server, the relative path to the image should be the
8274 same. You can accomplish this by setting up an "images" folder in the
8275 right place on the web server, and publishing images to it.
8277 @lisp
8278 (setq org-publish-project-alist
8279       '(("orgfiles"
8280           :base-directory "~/org/"
8281           :base-extension "org"
8282           :publishing-directory "/ssh:user@@host:~/html/notebook/"
8283           :publishing-function org-publish-org-to-html
8284           :exclude "PrivatePage.org"   ;; regexp
8285           :headline-levels 3
8286           :section-numbers nil
8287           :table-of-contents nil
8288           :style "<link rel=\"stylesheet\"
8289                   href=\"../other/mystyle.css\" type=\"text/css\">"
8290           :auto-preamble t
8291           :auto-postamble nil)
8293          ("images"
8294           :base-directory "~/images/"
8295           :base-extension "jpg\\|gif\\|png"
8296           :publishing-directory "/ssh:user@@host:~/html/images/"
8297           :publishing-function org-publish-attachment)
8299          ("other"
8300           :base-directory "~/other/"
8301           :base-extension "css\\|el"
8302           :publishing-directory "/ssh:user@@host:~/html/other/"
8303           :publishing-function org-publish-attachment)
8304          ("website" :components ("orgfiles" "images" "other"))))
8305 @end lisp
8307 @node Triggering publication,  , Sample configuration, Publishing
8308 @section Triggering publication
8310 Once org-publish is properly configured, you can publish with the
8311 following functions:
8313 @table @kbd
8314 @item C-c C-e C
8315 Prompt for a specific project and publish all files that belong to it.
8316 @item C-c C-e P
8317 Publish the project containing the current file.
8318 @item C-c C-e F
8319 Publish only the current file.
8320 @item C-c C-e A
8321 Publish all projects.
8322 @end table
8324 Org uses timestamps to track when a file has changed. The above
8325 functions normally only publish changed files. You can override this and
8326 force publishing of all files by giving a prefix argument.
8328 @node Miscellaneous, Extensions, Publishing, Top
8329 @chapter Miscellaneous
8331 @menu
8332 * Completion::                  M-TAB knows what you need
8333 * Customization::               Adapting Org to your taste
8334 * In-buffer settings::          Overview of the #+KEYWORDS
8335 * The very busy C-c C-c key::   When in doubt, press C-c C-c
8336 * Clean view::                  Getting rid of leading stars in the outline
8337 * TTY keys::                    Using Org on a tty
8338 * Interaction::                 Other Emacs packages
8339 * Bugs::                        Things which do not work perfectly
8340 @end menu
8342 @node Completion, Customization, Miscellaneous, Miscellaneous
8343 @section Completion
8344 @cindex completion, of @TeX{} symbols
8345 @cindex completion, of TODO keywords
8346 @cindex completion, of dictionary words
8347 @cindex completion, of option keywords
8348 @cindex completion, of tags
8349 @cindex completion, of property keys
8350 @cindex completion, of link abbreviations
8351 @cindex @TeX{} symbol completion
8352 @cindex TODO keywords completion
8353 @cindex dictionary word completion
8354 @cindex option keyword completion
8355 @cindex tag completion
8356 @cindex link abbreviations, completion of
8358 Org supports in-buffer completion.  This type of completion does
8359 not make use of the minibuffer.  You simply type a few letters into
8360 the buffer and use the key to complete text right there.
8362 @table @kbd
8363 @kindex M-@key{TAB}
8364 @item M-@key{TAB}
8365 Complete word at point
8366 @itemize @bullet
8367 @item
8368 At the beginning of a headline, complete TODO keywords.
8369 @item
8370 After @samp{\}, complete @TeX{} symbols supported by the exporter.
8371 @item
8372 After @samp{*}, complete headlines in the current buffer so that they
8373 can be used in search links like @samp{[[*find this headline]]}.
8374 @item
8375 After @samp{:} in a headline, complete tags.  The list of tags is taken
8376 from the variable @code{org-tag-alist} (possibly set through the
8377 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
8378 dynamically from all tags used in the current buffer.
8379 @item
8380 After @samp{:} and not in a headline, complete property keys.  The list
8381 of keys is constructed dynamically from all keys used in the current
8382 buffer.
8383 @item
8384 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
8385 @item
8386 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
8387 @samp{OPTIONS} which set file-specific options for Org mode.  When the
8388 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
8389 will insert example settings for this keyword.
8390 @item
8391 In the line after @samp{#+STARTUP: }, complete startup keywords,
8392 i.e. valid keys for this line.
8393 @item
8394 Elsewhere, complete dictionary words using Ispell.
8395 @end itemize
8396 @end table
8398 @node Customization, In-buffer settings, Completion, Miscellaneous
8399 @section Customization
8400 @cindex customization
8401 @cindex options, for customization
8402 @cindex variables, for customization
8404 There are more than 180 variables that can be used to customize
8405 Org.  For the sake of compactness of the manual, I am not
8406 describing the variables here.  A structured overview of customization
8407 variables is available with @kbd{M-x org-customize}.  Or select
8408 @code{Browse Org Group} from the @code{Org->Customization} menu.  Many
8409 settings can also be activated on a per-file basis, by putting special
8410 lines into the buffer (@pxref{In-buffer settings}).
8412 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
8413 @section Summary of in-buffer settings
8414 @cindex in-buffer settings
8415 @cindex special keywords
8417 Org mode uses special lines in the buffer to define settings on a
8418 per-file basis.  These lines start with a @samp{#+} followed by a
8419 keyword, a colon, and then individual words defining a setting.  Several
8420 setting words can be in the same line, but you can also have multiple
8421 lines for the keyword.  While these settings are described throughout
8422 the manual, here is a summary.  After changing any of those lines in the
8423 buffer, press @kbd{C-c C-c} with the cursor still in the line to
8424 activate the changes immediately.  Otherwise they become effective only
8425 when the file is visited again in a new Emacs session.
8427 @table @kbd
8428 @item #+ARCHIVE: %s_done::
8429 This line sets the archive location for the agenda file.  It applies for
8430 all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
8431 of the file.  The first such line also applies to any entries before it.
8432 The corresponding variable is @code{org-archive-location}.
8433 @item #+CATEGORY:
8434 This line sets the category for the agenda file.  The category applies
8435 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
8436 end of the file.  The first such line also applies to any entries before it.
8437 @item #+COLUMNS: %25ITEM .....
8438 Set the default format for columns view.  This format applies when
8439 columns view is invoked in location where no @code{COLUMNS} property
8440 applies.
8441 @item #+CONSTANTS: name1=value1 ...
8442 Set file-local values for constants to be used in table formulas.  This
8443 line set the local variable @code{org-table-formula-constants-local}.
8444 The global version of this variable is
8445 @code{org-table-formula-constants}.
8446 @item #+FILETAGS: :tag1:tag2:tag3:
8447 Set tags that can be inherited by any entry in the file, including the
8448 top-level entries.
8449 @item #+DRAWERS: NAME1 .....
8450 Set the file-local set of drawers.  The corresponding global variable is
8451 @code{org-drawers}.
8452 @item #+LINK:  linkword replace
8453 These lines (several are allowed) specify link abbreviations.
8454 @xref{Link abbreviations}.  The corresponding variable is
8455 @code{org-link-abbrev-alist}.
8456 @item #+PRIORITIES: highest lowest default
8457 This line sets the limits and the default for the priorities.  All three
8458 must be either letters A-Z or numbers 0-9.  The highest priority must
8459 have a lower ASCII number that the lowest priority.
8460 @item #+PROPERTY: Property_Name Value
8461 This line sets a default inheritance value for entries in the current
8462 buffer, most useful for specifying the allowed values of a property.
8463 @item #+SETUPFILE: file
8464 This line defines a file that holds more in-buffer setup.  Normally this is
8465 entirely ignored.  Only when the buffer is parsed for option-setting lines
8466 (i.e. when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
8467 settings line, or when exporting), then the contents of this file are parsed
8468 as if they had been included in the buffer.  In particlar, the file can be
8469 any other Org mode file with internal setup.  You can visit the file the
8470 cursor is in the line with @kbd{C-c '}.
8471 @item #+STARTUP:
8472 This line sets options to be used at startup of Org mode, when an
8473 Org file is being visited.  The first set of options deals with the
8474 initial visibility of the outline tree.  The corresponding variable for
8475 global default settings is @code{org-startup-folded}, with a default
8476 value @code{t}, which means @code{overview}.
8477 @cindex @code{overview}, STARTUP keyword
8478 @cindex @code{content}, STARTUP keyword
8479 @cindex @code{showall}, STARTUP keyword
8480 @example
8481 overview   @r{top-level headlines only}
8482 content    @r{all headlines}
8483 showall    @r{no folding at all, show everything}
8484 @end example
8485 Then there are options for aligning tables upon visiting a file.  This
8486 is useful in files containing narrowed table columns.  The corresponding
8487 variable is @code{org-startup-align-all-tables}, with a default value
8488 @code{nil}.
8489 @cindex @code{align}, STARTUP keyword
8490 @cindex @code{noalign}, STARTUP keyword
8491 @example
8492 align      @r{align all tables}
8493 noalign    @r{don't align tables on startup}
8494 @end example
8495 Logging closing and reinstating TODO items, and clock intervals
8496 (variables @code{org-log-done}, @code{org-log-note-clock-out}, and
8497 @code{org-log-repeat}) can be configured using these options.
8498 @cindex @code{logdone}, STARTUP keyword
8499 @cindex @code{lognotedone}, STARTUP keyword
8500 @cindex @code{nologdone}, STARTUP keyword
8501 @cindex @code{lognoteclock-out}, STARTUP keyword
8502 @cindex @code{nolognoteclock-out}, STARTUP keyword
8503 @cindex @code{logrepeat}, STARTUP keyword
8504 @cindex @code{lognoterepeat}, STARTUP keyword
8505 @cindex @code{nologrepeat}, STARTUP keyword
8506 @example
8507 logdone            @r{record a timestamp when an item is marked DONE}
8508 lognotedone        @r{record timestamp and a note when DONE}
8509 nologdone          @r{don't record when items are marked DONE}
8510 logrepeat          @r{record a time when reinstating a repeating item}
8511 lognoterepeat      @r{record a note when reinstating a repeating item}
8512 nologrepeat        @r{do not record when reinstating repeating item}
8513 lognoteclock-out   @r{record a note when clocking out}
8514 nolognoteclock-out @r{don't record a note when clocking out}
8515 @end example
8516 Here are the options for hiding leading stars in outline headings, and for
8517 indenting outlines.  The corresponding variables are
8518 @code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
8519 default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
8520 @cindex @code{hidestars}, STARTUP keyword
8521 @cindex @code{showstars}, STARTUP keyword
8522 @cindex @code{odd}, STARTUP keyword
8523 @cindex @code{even}, STARTUP keyword
8524 @example
8525 hidestars  @r{make all but one of the stars starting a headline invisible.}
8526 showstars  @r{show all stars starting a headline}
8527 indent     @r{virtual indentation according to outline level}
8528 noindent   @r{no virtual indentation according to outline level}
8529 odd        @r{allow only odd outline levels (1,3,...)}
8530 oddeven    @r{allow all outline levels}
8531 @end example
8532 To turn on custom format overlays over time stamps (variables
8533 @code{org-put-time-stamp-overlays} and
8534 @code{org-time-stamp-overlay-formats}), use
8535 @cindex @code{customtime}, STARTUP keyword
8536 @example
8537 customtime @r{overlay custom time format}
8538 @end example
8539 The following options influence the table spreadsheet (variable
8540 @code{constants-unit-system}).
8541 @cindex @code{constcgs}, STARTUP keyword
8542 @cindex @code{constSI}, STARTUP keyword
8543 @example
8544 constcgs   @r{@file{constants.el} should use the c-g-s unit system}
8545 constSI    @r{@file{constants.el} should use the SI unit system}
8546 @end example
8547 @item #+TAGS:  TAG1(c1) TAG2(c2)
8548 These lines (several such lines are allowed) specify the valid tags in
8549 this file, and (potentially) the corresponding @emph{fast tag selection}
8550 keys.  The corresponding variable is @code{org-tag-alist}.
8551 @item #+TBLFM:
8552 This line contains the formulas for the table directly above the line.
8553 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS, #+DATE:
8554 These lines provide settings for exporting files.  For more details see
8555 @ref{Export options}.
8556 @item #+SEQ_TODO:   #+TYP_TODO:
8557 These lines set the TODO keywords and their interpretation in the
8558 current file.  The corresponding variables are @code{org-todo-keywords}
8559 and @code{org-todo-interpretation}.
8560 @end table
8562 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
8563 @section The very busy C-c C-c key
8564 @kindex C-c C-c
8565 @cindex C-c C-c, overview
8567 The key @kbd{C-c C-c} has many purposes in Org, which are all
8568 mentioned scattered throughout this manual.  One specific function of
8569 this key is to add @emph{tags} to a headline (@pxref{Tags}).  In many
8570 other circumstances it means something like @emph{Hey Org, look
8571 here and update according to what you see here}.  Here is a summary of
8572 what this means in different contexts.
8574 @itemize @minus
8575 @item
8576 If there are highlights in the buffer from the creation of a sparse
8577 tree, or from clock display, remove these highlights.
8578 @item
8579 If the cursor is in one of the special @code{#+KEYWORD} lines, this
8580 triggers scanning the buffer for these lines and updating the
8581 information.
8582 @item
8583 If the cursor is inside a table, realign the table.  This command
8584 works even if the automatic table editor has been turned off.
8585 @item
8586 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
8587 the entire table.
8588 @item
8589 If the cursor is inside a table created by the @file{table.el} package,
8590 activate that table.
8591 @item
8592 If the current buffer is a remember buffer, close the note and file it.
8593 With a prefix argument, file it, without further interaction, to the
8594 default location.
8595 @item
8596 If the cursor is on a @code{<<<target>>>}, update radio targets and
8597 corresponding links in this buffer.
8598 @item
8599 If the cursor is in a property line or at the start or end of a property
8600 drawer, offer property commands.
8601 @item
8602 If the cursor is in a plain list item with a checkbox, toggle the status
8603 of the checkbox.
8604 @item
8605 If the cursor is on a numbered item in a plain list, renumber the
8606 ordered list.
8607 @item
8608 If the cursor is on the @code{#+BEGIN} line of a dynamical block, the
8609 block is updated.
8610 @end itemize
8612 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
8613 @section A cleaner outline view
8614 @cindex hiding leading stars
8615 @cindex dynamic indentation
8616 @cindex odd-levels-only outlines
8617 @cindex clean outline view
8619 Some people find it noisy and distracting that the Org headlines are starting
8620 with a potentially large number of stars, and that text below the headlines
8621 is not indented.  This is not really a problem when you are writing a book
8622 where the outline headings are really section headlines.  However, in a more
8623 list-oriented outline, it is clear that an indented structure is a lot
8624 cleaner, as can be seen by comparing the two columns in the following
8625 example: 
8627 @example
8628 @group
8629 * Top level headline             |    * Top level headline
8630 ** Second level                  |      * Second level
8631 *** 3rd level                    |        * 3rd level
8632 some text                        |          some text
8633 *** 3rd level                    |        * 3rd level
8634 more text                        |          more text
8635 * Another top level headline     |    * Another top level headline
8636 @end group
8637 @end example
8639 @noindent
8640 It is non-trivial to make such a look work in Emacs, but Org contains three
8641 separate features that, combined, achieve just that.
8643 @enumerate
8644 @item 
8645 @emph{Indentation of text below headlines}@*
8646 You may indent text below each headline to make the left boundary line up
8647 with the headline, like
8649 @example
8650 *** 3rd level
8651     more text, now indented
8652 @end example
8654 A good way to get this indentation is by hand, and Org supports this with
8655 paragraph filling, line wrapping, and structure editing@footnote{See also the
8656 variable @code{org-adapt-indentation}.} preserving or adapting the
8657 indentation appropriate.  A different approach would be to have a way to
8658 automatically indent lines according to outline structure by adding overlays
8659 or text properties.  But I have not yet found a robust and efficient way to
8660 do this in large files.
8662 @item
8663 @emph{Hiding leading stars}@* You can modify the display in such a way that
8664 all leading stars become invisible.  To do this in a global way, configure
8665 the variable @code{org-hide-leading-stars} or change this on a per-file basis
8666 with
8668 @example
8669 #+STARTUP: hidestars
8670 @end example
8672 @noindent
8673 Note that the opposite behavior is selected with @code{showstars}.
8675 With hidden stars, the tree becomes:
8677 @example
8678 @group
8679 * Top level headline
8680  * Second level
8681   * 3rd level
8682   ...
8683 @end group
8684 @end example
8686 @noindent
8687 Note that the leading stars are not truly replaced by whitespace, they
8688 are only fontified with the face @code{org-hide} that uses the
8689 background color as font color.  If you are not using either white or
8690 black background, you may have to customize this face to get the wanted
8691 effect.  Another possibility is to set this font such that the extra
8692 stars are @i{almost} invisible, for example using the color
8693 @code{grey90} on a white background.
8695 @item
8696 Things become cleaner still if you skip all the even levels and use only odd
8697 levels 1, 3, 5..., effectively adding two stars to go from one outline level
8698 to the next.  In this way we get the outline view shown at the beginning of
8699 this section.  In order to make the structure editing and export commands
8700 handle this convention correctly, configure the variable
8701 @code{org-odd-levels-only}, or set this on a per-file basis with one of the
8702 following lines:
8704 @example
8705 #+STARTUP: odd
8706 #+STARTUP: oddeven
8707 @end example
8709 You can convert an Org file from single-star-per-level to the
8710 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
8711 RET} in that file.  The reverse operation is @kbd{M-x
8712 org-convert-to-oddeven-levels}.
8713 @end enumerate
8715 @node TTY keys, Interaction, Clean view, Miscellaneous
8716 @section Using Org on a tty
8717 @cindex tty key bindings
8719 Because Org contains a large number of commands, by default much of
8720 Org's core commands are bound to keys that are generally not
8721 accessible on a tty, such as the cursor keys (@key{left}, @key{right},
8722 @key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
8723 together with modifiers like @key{Meta} and/or @key{Shift}.  To access
8724 these commands on a tty when special keys are unavailable, the following
8725 alternative bindings can be used.  The tty bindings below will likely be
8726 more cumbersome; you may find for some of the bindings below that a
8727 customized work-around suits you better.  For example, changing a time
8728 stamp is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
8729 tty you would rather use @kbd{C-c .} to re-insert the timestamp.
8731 @multitable @columnfractions 0.15 0.2 0.2
8732 @item @b{Default} @tab @b{Alternative 1} @tab @b{Alternative 2}
8733 @item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab
8734 @item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{@key{Esc} @key{left}}
8735 @item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab
8736 @item @kbd{M-@key{right}}   @tab @kbd{C-c C-x i}           @tab @kbd{@key{Esc} @key{right}}
8737 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab
8738 @item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{@key{Esc} @key{up}}
8739 @item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab
8740 @item @kbd{M-@key{down}}    @tab @kbd{C-c C-x d}           @tab @kbd{@key{Esc} @key{down}}
8741 @item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab
8742 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab
8743 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{@key{Esc} @key{RET}}
8744 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab
8745 @item @kbd{S-@key{left}}    @tab @kbd{C-c @key{left}}      @tab
8746 @item @kbd{S-@key{right}}   @tab @kbd{C-c @key{right}}     @tab
8747 @item @kbd{S-@key{up}}      @tab @kbd{C-c @key{up}}        @tab
8748 @item @kbd{S-@key{down}}    @tab @kbd{C-c @key{down}}      @tab
8749 @item @kbd{C-S-@key{left}}  @tab @kbd{C-c C-x @key{left}}  @tab
8750 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab
8751 @end multitable
8753 @node Interaction, Bugs, TTY keys, Miscellaneous
8754 @section Interaction with other packages
8755 @cindex packages, interaction with other
8756 Org lives in the world of GNU Emacs and interacts in various ways
8757 with other code out there.
8759 @menu
8760 * Cooperation::                 Packages Org cooperates with
8761 * Conflicts::                   Packages that lead to conflicts
8762 @end menu
8764 @node Cooperation, Conflicts, Interaction, Interaction
8765 @subsection Packages that Org cooperates with
8767 @table @asis
8768 @cindex @file{calc.el}
8769 @item @file{calc.el} by Dave Gillespie
8770 Org uses the Calc package for implementing spreadsheet
8771 functionality in its tables (@pxref{The spreadsheet}).  Org
8772 checks for the availability of Calc by looking for the function
8773 @code{calc-eval} which should be autoloaded in your setup if Calc has
8774 been installed properly.  As of Emacs 22, Calc is part of the Emacs
8775 distribution.  Another possibility for interaction between the two
8776 packages is using Calc for embedded calculations. @xref{Embedded Mode,
8777 , Embedded Mode, Calc, GNU Emacs Calc Manual}.
8778 @cindex @file{constants.el}
8779 @item @file{constants.el} by Carsten Dominik
8780 In a table formula (@pxref{The spreadsheet}), it is possible to use
8781 names for natural constants or units.  Instead of defining your own
8782 constants in the variable @code{org-table-formula-constants}, install
8783 the @file{constants} package which defines a large number of constants
8784 and units, and lets you use unit prefixes like @samp{M} for
8785 @samp{Mega} etc.  You will need version 2.0 of this package, available
8786 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
8787 the function @code{constants-get}, which has to be autoloaded in your
8788 setup.  See the installation instructions in the file
8789 @file{constants.el}.
8790 @item @file{cdlatex.el} by Carsten Dominik
8791 @cindex @file{cdlatex.el}
8792 Org mode can make use of the CDLaTeX package to efficiently enter
8793 La@TeX{} fragments into Org files. See @ref{CDLaTeX mode}.
8794 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
8795 @cindex @file{imenu.el}
8796 Imenu allows menu access to an index of items in a file.  Org mode
8797 supports Imenu - all you need to do to get the index is the following:
8798 @lisp
8799 (add-hook 'org-mode-hook
8800           (lambda () (imenu-add-to-menubar "Imenu")))
8801 @end lisp
8802 By default the index is two levels deep - you can modify the depth using
8803 the option @code{org-imenu-depth}.
8804 @item @file{remember.el} by John Wiegley
8805 @cindex @file{remember.el}
8806 Org cooperates with remember, see @ref{Remember}.
8807 @file{Remember.el} is not part of Emacs, find it on the web.
8808 @item @file{speedbar.el} by Eric M. Ludlam
8809 @cindex @file{speedbar.el}
8810 Speedbar is a package that creates a special frame displaying files and
8811 index items in files.  Org mode supports Speedbar and allows you to
8812 drill into Org files directly from the Speedbar.  It also allows to
8813 restrict the scope of agenda commands to a file or a subtree by using
8814 the command @kbd{<} in the Speedbar frame.
8815 @cindex @file{table.el}
8816 @item @file{table.el} by Takaaki Ota
8817 @kindex C-c C-c
8818 @cindex table editor, @file{table.el}
8819 @cindex @file{table.el}
8821 Complex ASCII tables with automatic line wrapping, column- and
8822 row-spanning, and alignment can be created using the Emacs table
8823 package by Takaaki Ota (@uref{http://sourceforge.net/projects/table},
8824 and also part of Emacs 22).
8825 When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org mode
8826 will call @command{table-recognize-table} and move the cursor into the
8827 table.  Inside a table, the keymap of Org mode is inactive.  In order
8828 to execute Org mode-related commands, leave the table.
8830 @table @kbd
8831 @kindex C-c C-c
8832 @item C-c C-c
8833 Recognize @file{table.el} table.  Works when the cursor is in a
8834 table.el table.
8836 @kindex C-c ~
8837 @item C-c ~
8838 Insert a table.el table.  If there is already a table at point, this
8839 command converts it between the table.el format and the Org mode
8840 format.  See the documentation string of the command
8841 @code{org-convert-table} for the restrictions under which this is
8842 possible.
8843 @end table
8844 @file{table.el} is part of Emacs 22.
8845 @cindex @file{footnote.el}
8846 @item @file{footnote.el} by Steven L. Baur
8847 Org mode recognizes numerical footnotes as provided by this package
8848 (@pxref{Footnotes}).
8849 @end table
8851 @node Conflicts,  , Cooperation, Interaction
8852 @subsection Packages that lead to conflicts with Org mode
8854 @table @asis
8856 @cindex @file{allout.el}
8857 @item @file{allout.el} by Ken Manheimer
8858 Startup of Org may fail with the error message
8859 @code{(wrong-type-argument keymapp nil)} when there is an outdated
8860 version @file{allout.el} on the load path, for example the version
8861 distributed with Emacs 21.x.  Upgrade to Emacs 22 and this problem will
8862 disappear.  If for some reason you cannot do this, make sure that org.el
8863 is loaded @emph{before} @file{allout.el}, for example by putting
8864 @code{(require 'org)} early enough into your @file{.emacs} file.
8866 @cindex @file{CUA.el}
8867 @item @file{CUA.el} by Kim. F. Storm
8868 Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by
8869 CUA mode (as well as pc-select-mode and s-region-mode) to select and
8870 extend the region.  If you want to use one of these packages along with
8871 Org, configure the variable @code{org-replace-disputed-keys}.  When
8872 set, Org will move the following key bindings in Org files, and
8873 in the agenda buffer (but not during date selection).
8875 @example
8876 S-UP    -> M-p             S-DOWN  -> M-n
8877 S-LEFT  -> M--             S-RIGHT -> M-+
8878 @end example
8880 Yes, these are unfortunately more difficult to remember.  If you want
8881 to have other replacement keys, look at the variable
8882 @code{org-disputed-keys}.
8883 @item @file{windmove.el} by Hovav Shacham
8884 @cindex @file{windmove.el}
8885 Also this package uses the @kbd{S-<cursor>} keys, so everything written
8886 in the paragraph above about CUA mode also applies here.
8888 @cindex @file{footnote.el}
8889 @item @file{footnote.el} by Steven L. Baur
8890 Org supports the syntax of the footnote package, but only the
8891 numerical footnote markers.  Also, the default key for footnote
8892 commands, @kbd{C-c !} is already used by Org.  You could use the
8893 variable @code{footnote-prefix} to switch footnotes commands to another
8894 key.  Or, you could use @code{org-replace-disputed-keys} and
8895 @code{org-disputed-keys} to change the settings in Org.
8897 @end table
8900 @node Bugs,  , Interaction, Miscellaneous
8901 @section Bugs
8902 @cindex bugs
8904 Here is a list of things that should work differently, but which I
8905 have found too hard to fix.
8907 @itemize @bullet
8908 @item
8909 If a table field starts with a link, and if the corresponding table
8910 column is narrowed (@pxref{Narrow columns}) to a width too small to
8911 display the link, the field would look entirely empty even though it is
8912 not.  To prevent this, Org throws an error.  The work-around is to
8913 make the column wide enough to fit the link, or to add some text (at
8914 least 2 characters) before the link in the same field.
8915 @item
8916 Narrowing table columns does not work on XEmacs, because the
8917 @code{format} function does not transport text properties.
8918 @item
8919 Text in an entry protected with the @samp{QUOTE} keyword should not
8920 autowrap.
8921 @item
8922 When the application called by @kbd{C-c C-o} to open a file link fails
8923 (for example because the application does not exist or refuses to open
8924 the file), it does so silently.  No error message is displayed.
8925 @item
8926 Recalculating a table line applies the formulas from left to right.
8927 If a formula uses @emph{calculated} fields further down the row,
8928 multiple recalculation may be needed to get all fields consistent.  You
8929 may use the command @code{org-table-iterate} (@kbd{C-u C-c *}) to
8930 recalculate until convergence.
8931 @item
8932 The exporters work well, but could be made more efficient.
8933 @end itemize
8936 @node Extensions, Hacking, Miscellaneous, Top
8937 @appendix Extensions
8939 This appendix lists the extension modules that have been written for Org.
8940 Many of these extensions live in the @file{contrib} directory of the Org
8941 distribution, others are available somewhere on the web.
8943 @menu
8944 * Extensions in the contrib directory::  These come with the Org distro
8945 * Other extensions::            These you have to find on the web.
8946 @end menu
8948 @node Extensions in the contrib directory, Other extensions, Extensions, Extensions
8949 @section Extensions in the @file{contrib} directory
8951 @table @asis
8952 @item @file{org-annotate-file.el} by @i{Philip Jackson}
8953       Annotate a file with org syntax, in a separate file, with links back to
8954       the annotated file.
8955 @item @file{org-annotation-helper.el} by @i{Bastien Guerry and Daniel E. German} 
8956       Call @i{remember} directly from Firefox/Opera, or from Adobe Reader.
8957       When activating a special link or bookmark, Emacs receives a trigger to
8958       create a note with a link back to the website.  Requires some setup, a
8959       detailes description is in
8960       @file{contrib/packages/org-annotation-helper}.
8961 @item @file{org-bookmark.el} by @i{Tokuya Kameshima}
8962       Support for links to Emacs bookmarks.
8963 @item @file{org-depend.el} by @i{Carsten Dominik}
8964       TODO dependencies for Org-mode.  Make TODO state changes in one entry
8965       trigger changes in another, or be blocked by the state of another
8966       entry.  Also, easily create chains of TODO items with exactly one
8967       active item at any time.
8968 @item @file{org-elisp-symbol.el} by @i{Bastien Guerry}
8969       Org links to emacs-lisp symbols.  This can create annotated links that
8970       exactly point to the definition location of a variable of function.
8971 @item @file{org-eval.el} by @i{Carsten Dominik}
8972       The @code{<lisp>} tag, adapted from Emacs Wiki and Emacs Muse, allows
8973       to include text in a document that is the result of evaluating some
8974       code.  Other scripting languages like @code{perl} can be supported with
8975       this package as well.
8976 @item @file{org-expiry.el} by @i{Bastien Guerry}
8977       Expiry mechanism for Org entries.
8978 @item @file{org-indent.el} by @i{Carsten Dominik}
8979       Dynamic indentation of Org outlines.  The plan is to indent an outline
8980       according to level, but so far this is too hard for a proper and stable
8981       implementation.  Still, it works somewhat.
8982 @item @file{org-interactive-query.el} by @i{Christopher League}
8983       Interactive modification of tags queries.  After running a general
8984       query in Org, this package allows to narrow down the results by adding
8985       more tags or keywords.
8986 @item @file{org-mairix.el} by @i{Georg C. F. Greve}
8987       Hook mairix search into Org for different MUAs.
8988 @item @file{org-man.el} by @i{Carsten Dominik}
8989       Support for links to manpages in Org-mode.
8990 @item @file{org-mtags.el} by @i{Carsten Dominik}
8991       Support for some Muse-like tags in Org-mode.  This package allows you
8992       to write @code{<example>} and @code{<src>} and other syntax copied from
8993       Emacs Muse, right inside an Org file.  The goal here is to make it easy
8994       to publish the same file using either org-publish or Muse.
8995 @item @file{org-panel.el} by @i{Lennard Borgman}
8996       Simplified and display-aided access to some Org commands.
8997 @c @item @file{org-plot.el} by @i{Eric Schulte}
8998 @c      Plotting Org tables with Gnuplot.
8999 @item @file{org-registry.el} by @i{Bastien Guerry}
9000       A registry for Org links, to find out from where links point to a given
9001       file or location.
9002 @item @file{org2rem.el} by @i{Bastien Guerry}
9003       Convert org appointments into reminders for the @file{remind} program.
9004 @item @file{org-screen.el} by @i{Andrew Hyatt}
9005       Visit screen sessions through Org-mode links.
9006 @item @file{org-toc.el} by @i{Bastien Guerry}
9007       Table of contents in a separate buffer, with fast access to sections
9008       and easy visibility cycling.
9009 @item @file{orgtbl-sqlinsert.el} by @i{Jason Riedy}
9010       Convert Org-mode tables to SQL insertions.  Documentation for this can
9011       be found on the Worg pages.
9012 @end table
9015 @node Other extensions,  , Extensions in the contrib directory, Extensions
9016 @section Other extensions
9018 @i{TO BE DONE}
9020 @node Hacking, History and Acknowledgments, Extensions, Top
9021 @appendix Hacking
9023 This appendix covers some aspects where users can extend the functionality of
9024 Org.
9026 @menu
9027 * Adding hyperlink types::      New custom link types
9028 * Tables in arbitrary syntax::  Orgtbl for LaTeX and other programs
9029 * Dynamic blocks::              Automatically filled blocks
9030 * Special agenda views::        Customized views
9031 * Using the property API::      Writing programs that use entry properties
9032 * Using the mapping API::       Mapping over all or selected entries
9033 @end menu
9035 @node Adding hyperlink types, Tables in arbitrary syntax, Hacking, Hacking
9036 @section Adding hyperlink types
9037 @cindex hyperlinks, adding new types
9039 Org has a large number of hyperlink types built-in
9040 (@pxref{Hyperlinks}).  If you would like to add new link types, it
9041 provides an interface for doing so.  Let's look at an example file
9042 @file{org-man.el} that will add support for creating links like
9043 @samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
9044 emacs:
9046 @lisp
9047 ;;; org-man.el - Support for links to manpages in Org
9049 (require 'org)
9051 (org-add-link-type "man" 'org-man-open)
9052 (add-hook 'org-store-link-functions 'org-man-store-link)
9054 (defcustom org-man-command 'man
9055   "The Emacs command to be used to display a man page."
9056   :group 'org-link
9057   :type '(choice (const man) (const woman)))
9059 (defun org-man-open (path)
9060   "Visit the manpage on PATH.
9061 PATH should be a topic that can be thrown at the man command."
9062   (funcall org-man-command path))
9064 (defun org-man-store-link ()
9065   "Store a link to a manpage."
9066   (when (memq major-mode '(Man-mode woman-mode))
9067     ;; This is a man page, we do make this link
9068     (let* ((page (org-man-get-page-name))
9069            (link (concat "man:" page))
9070            (description (format "Manpage for %s" page)))
9071       (org-store-link-props
9072        :type "man"
9073        :link link
9074        :description description))))
9076 (defun org-man-get-page-name ()
9077   "Extract the page name from the buffer name."
9078   ;; This works for both `Man-mode' and `woman-mode'.
9079   (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
9080       (match-string 1 (buffer-name))
9081     (error "Cannot create link to this man page")))
9083 (provide 'org-man)
9085 ;;; org-man.el ends here
9086 @end lisp
9088 @noindent
9089 You would activate this new link type in @file{.emacs} with
9091 @lisp
9092 (require 'org-man)
9093 @end lisp
9095 @noindent
9096 Let's go through the file and see what it does.
9097 @enumerate
9098 @item
9099 It does @code{(require 'org)} to make sure that @file{org.el} has been
9100 loaded.
9101 @item
9102 The next line calls @code{org-add-link-type} to define a new link type
9103 with prefix @samp{man}.  The call also contains the name of a function
9104 that will be called to follow such a link.
9105 @item
9106 The next line adds a function to @code{org-store-link-functions}, in
9107 order to allow the command @kbd{C-c l} to record a useful link in a
9108 buffer displaying a man page.
9109 @end enumerate
9111 The rest of the file defines the necessary variables and functions.
9112 First there is a customization variable that determines which emacs
9113 command should be used to display man pages.  There are two options,
9114 @code{man} and @code{woman}.  Then the function to follow a link is
9115 defined.  It gets the link path as an argument - in this case the link
9116 path is just a topic for the manual command.  The function calls the
9117 value of @code{org-man-command} to display the man page.
9119 Finally the function @code{org-man-store-link} is defined.  When you try
9120 to store a link with @kbd{C-c l}, also this function will be called to
9121 try to make a link.  The function must first decide if it is supposed to
9122 create the link for this buffer type, we do this by checking the value
9123 of the variable @code{major-mode}.  If not, the function must exit and
9124 return the value @code{nil}.  If yes, the link is created by getting the
9125 manual topic from the buffer name and prefixing it with the string
9126 @samp{man:}.  Then it must call the command @code{org-store-link-props}
9127 and set the @code{:type} and @code{:link} properties.  Optionally you
9128 can also set the @code{:description} property to provide a default for
9129 the link description when the link is later inserted into an Org
9130 buffer with @kbd{C-c C-l}.
9132 @node Tables in arbitrary syntax, Dynamic blocks, Adding hyperlink types, Hacking
9133 @section Tables and lists in arbitrary syntax
9134 @cindex tables, in other modes
9135 @cindex lists, in other modes
9136 @cindex Orgtbl mode
9138 Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
9139 frequent feature request has been to make it work with native tables in
9140 specific languages, for example La@TeX{}.  However, this is extremely
9141 hard to do in a general way, would lead to a customization nightmare,
9142 and would take away much of the simplicity of the Orgtbl mode table
9143 editor.
9146 This appendix describes a different approach.  We keep the Orgtbl mode
9147 table in its native format (the @i{source table}), and use a custom
9148 function to @i{translate} the table to the correct syntax, and to
9149 @i{install} it in the right location (the @i{target table}).  This puts
9150 the burden of writing conversion functions on the user, but it allows
9151 for a very flexible system.
9153 Bastien added the ability to do the same with lists.  You can use Org's
9154 facilities to edit and structure lists by turning @code{orgstruct-mode}
9155 on, then locally exporting such lists in another format (HTML, La@TeX{}
9156 or Texinfo.)
9159 @menu
9160 * Radio tables::                Sending and receiving
9161 * A LaTeX example::             Step by step, almost a tutorial
9162 * Translator functions::        Copy and modify
9163 * Radio lists::                 Doing the same for lists
9164 @end menu
9166 @node Radio tables, A LaTeX example, Tables in arbitrary syntax, Tables in arbitrary syntax
9167 @subsection Radio tables
9168 @cindex radio tables
9170 To define the location of the target table, you first need to create two
9171 lines that are comments in the current mode, but contain magic words for
9172 Orgtbl mode to find.  Orgtbl mode will insert the translated table
9173 between these lines, replacing whatever was there before.  For example:
9175 @example
9176 /* BEGIN RECEIVE ORGTBL table_name */
9177 /* END RECEIVE ORGTBL table_name */
9178 @end example
9180 @noindent
9181 Just above the source table, we put a special line that tells
9182 Orgtbl mode how to translate this table and where to install it.  For
9183 example:
9184 @example
9185 #+ORGTBL: SEND table_name translation_function arguments....
9186 @end example
9188 @noindent
9189 @code{table_name} is the reference name for the table that is also used
9190 in the receiver lines. @code{translation_function} is the Lisp function
9191 that does the translation.  Furthermore, the line can contain a list of
9192 arguments (alternating key and value) at the end.  The arguments will be
9193 passed as a property list to the translation function for
9194 interpretation.  A few standard parameters are already recognized and
9195 acted upon before the translation function is called:
9197 @table @code
9198 @item :skip N
9199 Skip the first N lines of the table.  Hlines do count as separate lines for
9200 this parameter!
9202 @item :skipcols (n1 n2 ...)
9203 List of columns that should be skipped.  If the table has a column with
9204 calculation marks, that column is automatically discarded as well.
9205 Please note that the translator function sees the table @emph{after} the
9206 removal of these columns, the function never knows that there have been
9207 additional columns.
9208 @end table
9210 @noindent
9211 The one problem remaining is how to keep the source table in the buffer
9212 without disturbing the normal workings of the file, for example during
9213 compilation of a C file or processing of a La@TeX{} file.  There are a
9214 number of different solutions:
9216 @itemize @bullet
9217 @item
9218 The table could be placed in a block comment if that is supported by the
9219 language.  For example, in C mode you could wrap the table between
9220 @samp{/*} and @samp{*/} lines.
9221 @item
9222 Sometimes it is possible to put the table after some kind of @i{END}
9223 statement, for example @samp{\bye} in TeX and @samp{\end@{document@}}
9224 in La@TeX{}.
9225 @item
9226 You can just comment the table line by line whenever you want to process
9227 the file, and uncomment it whenever you need to edit the table.  This
9228 only sounds tedious - the command @kbd{M-x orgtbl-toggle-comment} does
9229 make this comment-toggling very easy, in particular if you bind it to a
9230 key.
9231 @end itemize
9233 @node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
9234 @subsection A LaTeX example of radio tables
9235 @cindex LaTeX, and Orgtbl mode
9237 The best way to wrap the source table in La@TeX{} is to use the
9238 @code{comment} environment provided by @file{comment.sty}.  It has to be
9239 activated by placing @code{\usepackage@{comment@}} into the document
9240 header.  Orgtbl mode can insert a radio table skeleton@footnote{By
9241 default this works only for La@TeX{}, HTML, and Texinfo.  Configure the
9242 variable @code{orgtbl-radio-tables} to install templates for other
9243 modes.}  with the command @kbd{M-x orgtbl-insert-radio-table}.  You will
9244 be prompted for a table name, lets say we use @samp{salesfigures}.  You
9245 will then get the following template:
9247 @cindex #+ORGTBL: SEND
9248 @example
9249 % BEGIN RECEIVE ORGTBL salesfigures
9250 % END RECEIVE ORGTBL salesfigures
9251 \begin@{comment@}
9252 #+ORGTBL: SEND salesfigures orgtbl-to-latex
9253 | | |
9254 \end@{comment@}
9255 @end example
9257 @noindent
9258 The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
9259 @code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
9260 into the receiver location with name @code{salesfigures}.  You may now
9261 fill in the table, feel free to use the spreadsheet features@footnote{If
9262 the @samp{#+TBLFM} line contains an odd number of dollar characters,
9263 this may cause problems with font-lock in LaTeX mode.  As shown in the
9264 example you can fix this by adding an extra line inside the
9265 @code{comment} environment that is used to balance the dollar
9266 expressions.  If you are using AUCTeX with the font-latex library, a
9267 much better solution is to add the @code{comment} environment to the
9268 variable @code{LaTeX-verbatim-environments}.}:
9270 @example
9271 % BEGIN RECEIVE ORGTBL salesfigures
9272 % END RECEIVE ORGTBL salesfigures
9273 \begin@{comment@}
9274 #+ORGTBL: SEND salesfigures orgtbl-to-latex
9275 | Month | Days | Nr sold | per day |
9276 |-------+------+---------+---------|
9277 | Jan   |   23 |      55 |     2.4 |
9278 | Feb   |   21 |      16 |     0.8 |
9279 | March |   22 |     278 |    12.6 |
9280 #+TBLFM: $4=$3/$2;%.1f
9281 % $ (optional extra dollar to keep font-lock happy, see footnote)
9282 \end@{comment@}
9283 @end example
9285 @noindent
9286 When you are done, press @kbd{C-c C-c} in the table to get the converted
9287 table inserted between the two marker lines.
9289 Now lets assume you want to make the table header by hand, because you
9290 want to control how columns are aligned etc.  In this case we make sure
9291 that the table translator does skip the first 2 lines of the source
9292 table, and tell the command to work as a @i{splice}, i.e. to not produce
9293 header and footer commands of the target table:
9295 @example
9296 \begin@{tabular@}@{lrrr@}
9297 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
9298 % BEGIN RECEIVE ORGTBL salesfigures
9299 % END RECEIVE ORGTBL salesfigures
9300 \end@{tabular@}
9302 \begin@{comment@}
9303 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
9304 | Month | Days | Nr sold | per day |
9305 |-------+------+---------+---------|
9306 | Jan   |   23 |      55 |     2.4 |
9307 | Feb   |   21 |      16 |     0.8 |
9308 | March |   22 |     278 |    12.6 |
9309 #+TBLFM: $4=$3/$2;%.1f
9310 \end@{comment@}
9311 @end example
9313 The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
9314 Orgtbl mode.  It uses a @code{tabular} environment to typeset the table
9315 and marks horizontal lines with @code{\hline}.  Furthermore, it
9316 interprets the following parameters (see also @ref{Translator functions}):
9318 @table @code
9319 @item :splice nil/t
9320 When set to t, return only table body lines, don't wrap them into a
9321 tabular environment.  Default is nil.
9323 @item :fmt fmt
9324 A format to be used to wrap each field, should contain @code{%s} for the
9325 original field value.  For example, to wrap each field value in dollars,
9326 you could use @code{:fmt "$%s$"}.  This may also be a property list with
9327 column numbers and formats. for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
9328 A function of one argument can be used in place of the strings; the
9329 function must return a formatted string.
9331 @item :efmt efmt
9332 Use this format to print numbers with exponentials.  The format should
9333 have @code{%s} twice for inserting mantissa and exponent, for example
9334 @code{"%s\\times10^@{%s@}"}.  The default is @code{"%s\\,(%s)"}.  This
9335 may also be a property list with column numbers and formats, for example
9336 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}.  After
9337 @code{efmt} has been applied to a value, @code{fmt} will also be
9338 applied.  Similar to @code{fmt}, functions of two arguments can be
9339 supplied instead of strings.
9340 @end table
9342 @node Translator functions, Radio lists, A LaTeX example, Tables in arbitrary syntax
9343 @subsection Translator functions
9344 @cindex HTML, and Orgtbl mode
9345 @cindex translator function
9347 Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
9348 (comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
9349 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
9350 Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
9351 code that produces tables during HTML export.}, these all use a generic
9352 translator, @code{orgtbl-to-generic}.  For example, @code{orgtbl-to-latex}
9353 itself is a very short function that computes the column definitions for the
9354 @code{tabular} environment, defines a few field and line separators and then
9355 hands over to the generic translator.  Here is the entire code:
9357 @lisp
9358 @group
9359 (defun orgtbl-to-latex (table params)
9360   "Convert the Orgtbl mode TABLE to LaTeX."
9361   (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
9362                                org-table-last-alignment ""))
9363          (params2
9364           (list
9365            :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
9366            :tend "\\end@{tabular@}"
9367            :lstart "" :lend " \\\\" :sep " & "
9368            :efmt "%s\\,(%s)" :hline "\\hline")))
9369     (orgtbl-to-generic table (org-combine-plists params2 params))))
9370 @end group
9371 @end lisp
9373 As you can see, the properties passed into the function (variable
9374 @var{PARAMS}) are combined with the ones newly defined in the function
9375 (variable @var{PARAMS2}).  The ones passed into the function (i.e. the
9376 ones set by the @samp{ORGTBL SEND} line) take precedence.  So if you
9377 would like to use the La@TeX{} translator, but wanted the line endings to
9378 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
9379 overrule the default with
9381 @example
9382 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
9383 @end example
9385 For a new language, you can either write your own converter function in
9386 analogy with the La@TeX{} translator, or you can use the generic function
9387 directly.  For example, if you have a language where a table is started
9388 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
9389 started with @samp{!BL!}, ended with @samp{!EL!} and where the field
9390 separator is a TAB, you could call the generic translator like this (on
9391 a single line!):
9393 @example
9394 #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
9395                               :lstart "!BL! " :lend " !EL!" :sep "\t"
9396 @end example
9398 @noindent
9399 Please check the documentation string of the function
9400 @code{orgtbl-to-generic} for a full list of parameters understood by
9401 that function and remember that you can pass each of them into
9402 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
9403 using the generic function.
9405 Of course you can also write a completely new function doing complicated
9406 things the generic translator cannot do.  A translator function takes
9407 two arguments.  The first argument is the table, a list of lines, each
9408 line either the symbol @code{hline} or a list of fields.  The second
9409 argument is the property list containing all parameters specified in the
9410 @samp{#+ORGTBL: SEND} line.  The function must return a single string
9411 containing the formatted table.  If you write a generally useful
9412 translator, please post it on @code{emacs-orgmode@@gnu.org} so that
9413 others can benefit from your work.
9415 @node  Radio lists,  , Translator functions, Tables in arbitrary syntax
9416 @subsection Radio lists
9417 @cindex radio lists
9418 @cindex org-list-insert-radio-list
9420 Sending and receiving radio lists works exactly the same way than
9421 sending and receiving radio tables (@pxref{Radio tables}) @footnote{You
9422 need to load the @code{org-export-latex.el} package to use radio lists
9423 since the relevant code is there for now.}.  As for radio tables, you
9424 can insert radio lists templates in HTML, La@TeX{} and Texinfo modes by
9425 calling @code{org-list-insert-radio-list}.
9427 Here are the differences with radio tables:
9429 @itemize @minus
9430 @item
9431 Use @code{ORGLST} instead of @code{ORGTBL}.
9432 @item
9433 The available translation functions for radio lists don't take
9434 parameters.
9435 @item
9436 `C-c C-c' will work when pressed on the first item of the list.
9437 @end itemize
9439 Here is a La@TeX{} example.  Let's say that you have this in your
9440 La@TeX{} file:
9442 @example
9443 % BEGIN RECEIVE ORGLST to-buy
9444 % END RECEIVE ORGLST to-buy
9445 \begin@{comment@}
9446 #+ORGLIST: SEND to-buy orgtbl-to-latex
9447 - a new house
9448 - a new computer
9449   + a new keyboard
9450   + a new mouse
9451 - a new life
9452 \end@{comment@}
9453 @end example
9455 Pressing `C-c C-c' on @code{a new house} and will insert the converted
9456 La@TeX{} list between the two marker lines.
9458 @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
9459 @section Dynamic blocks
9460 @cindex dynamic blocks
9462 Org documents can contain @emph{dynamic blocks}.  These are
9463 specially marked regions that are updated by some user-written function.
9464 A good example for such a block is the clock table inserted by the
9465 command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
9467 Dynamic block are enclosed by a BEGIN-END structure that assigns a name
9468 to the block and can also specify parameters for the function producing
9469 the content of the block.
9471 #+BEGIN:dynamic block
9472 @example
9473 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
9475 #+END:
9476 @end example
9478 Dynamic blocks are updated with the following commands
9480 @table @kbd
9481 @kindex C-c C-x C-u
9482 @item C-c C-x C-u
9483 Update dynamic block at point.
9484 @kindex C-u C-c C-x C-u
9485 @item C-u C-c C-x C-u
9486 Update all dynamic blocks in the current file.
9487 @end table
9489 Updating a dynamic block means to remove all the text between BEGIN and
9490 END, parse the BEGIN line for parameters and then call the specific
9491 writer function for this block to insert the new content.  If you want
9492 to use the original content in the writer function, you can use the
9493 extra parameter @code{:content}.
9495 For a block with name @code{myblock}, the writer function is
9496 @code{org-dblock-write:myblock} with as only parameter a property list
9497 with the parameters given in the begin line.  Here is a trivial example
9498 of a block that keeps track of when the block update function was last
9499 run:
9501 @example
9502 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
9504 #+END:
9505 @end example
9507 @noindent
9508 The corresponding block writer function could look like this:
9510 @lisp
9511 (defun org-dblock-write:block-update-time (params)
9512    (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
9513      (insert "Last block update at: "
9514              (format-time-string fmt (current-time)))))
9515 @end lisp
9517 If you want to make sure that all dynamic blocks are always up-to-date,
9518 you could add the function @code{org-update-all-dblocks} to a hook, for
9519 example @code{before-save-hook}.  @code{org-update-all-dblocks} is
9520 written in a way that is does nothing in buffers that are not in
9521 @code{org-mode}.
9523 @node Special agenda views, Using the property API, Dynamic blocks, Hacking
9524 @section Special agenda views
9525 @cindex agenda views, user-defined
9527 Org provides a special hook that can be used to narrow down the
9528 selection made by any of the agenda views.  You may specify a function
9529 that is used at each match to verify if the match should indeed be part
9530 of the agenda view, and if not, how much should be skipped.
9532 Let's say you want to produce a list of projects that contain a WAITING
9533 tag anywhere in the project tree.  Let's further assume that you have
9534 marked all tree headings that define a project with the TODO keyword
9535 PROJECT.  In this case you would run a TODO search for the keyword
9536 PROJECT, but skip the match unless there is a WAITING tag anywhere in
9537 the subtree belonging to the project line.
9539 To achieve this, you must write a function that searches the subtree for
9540 the tag.  If the tag is found, the function must return @code{nil} to
9541 indicate that this match should not be skipped.  If there is no such
9542 tag, return the location of the end of the subtree, to indicate that
9543 search should continue from there.
9545 @lisp
9546 (defun my-skip-unless-waiting ()
9547   "Skip trees that are not waiting"
9548   (let ((subtree-end (save-excursion (org-end-of-subtree t))))
9549     (if (re-search-forward ":waiting:" subtree-end t)
9550         nil          ; tag found, do not skip
9551       subtree-end))) ; tag not found, continue after end of subtree
9552 @end lisp
9554 Now you may use this function in an agenda custom command, for example
9555 like this:
9557 @lisp
9558 (org-add-agenda-custom-command
9559  '("b" todo "PROJECT"
9560    ((org-agenda-skip-function 'my-skip-unless-waiting)
9561     (org-agenda-overriding-header "Projects waiting for something: "))))
9562 @end lisp
9564 Note that this also binds @code{org-agenda-overriding-header} to get a
9565 meaningful header in the agenda view.
9567 A general way to create custom searches is to base them on a search for
9568 entries with a certain level limit.  If you want to study all entries with
9569 your custom search function, simply do a search for @samp{LEVEL>0}, and then
9570 use @code{org-agenda-skip-function} to select the entries you really want to
9571 have.
9573 You may also put a Lisp form into @code{org-agenda-skip-function}.  In
9574 particular, you may use the functions @code{org-agenda-skip-entry-if}
9575 and @code{org-agenda-skip-subtree-if} in this form, for example:
9577 @table @code
9578 @item '(org-agenda-skip-entry-if 'scheduled)
9579 Skip current entry if it has been scheduled.
9580 @item '(org-agenda-skip-entry-if 'notscheduled)
9581 Skip current entry if it has not been scheduled.
9582 @item '(org-agenda-skip-entry-if 'deadline)
9583 Skip current entry if it has a deadline.
9584 @item '(org-agenda-skip-entry-if 'scheduled 'deadline)
9585 Skip current entry if it has a deadline, or if it is scheduled.
9586 @item '(org-agenda-skip-entry 'regexp "regular expression")
9587 Skip current entry if the regular expression matches in the entry.
9588 @item '(org-agenda-skip-entry 'notregexp "regular expression")
9589 Skip current entry unless the regular expression matches.
9590 @item '(org-agenda-skip-subtree-if 'regexp "regular expression")
9591 Same as above, but check and skip the entire subtree.
9592 @end table
9594 Therefore we could also have written the search for WAITING projects
9595 like this, even without defining a special function:
9597 @lisp
9598 (org-add-agenda-custom-command
9599  '("b" todo "PROJECT"
9600    ((org-agenda-skip-function '(org-agenda-skip-subtree-if
9601                                 'regexp ":waiting:"))
9602     (org-agenda-overriding-header "Projects waiting for something: "))))
9603 @end lisp
9605 @node Using the property API, Using the mapping API, Special agenda views, Hacking
9606 @section Using the property API
9607 @cindex API, for properties
9608 @cindex properties, API
9610 Here is a description of the functions that can be used to work with
9611 properties.
9613 @defun org-entry-properties &optional pom which
9614 Get all properties of the entry at point-or-marker POM.
9615 This includes the TODO keyword, the tags, time strings for deadline,
9616 scheduled, and clocking, and any additional properties defined in the
9617 entry.  The return value is an alist, keys may occur multiple times
9618 if the property key was used several times.
9619 POM may also be nil, in which case the current entry is used.
9620 If WHICH is nil or `all', get all properties.  If WHICH is
9621 `special' or `standard', only get that subclass.
9622 @end defun
9623 @defun org-entry-get pom property &optional inherit
9624 Get value of PROPERTY for entry at point-or-marker POM.  By default,
9625 this only looks at properties defined locally in the entry.  If INHERIT
9626 is non-nil and the entry does not have the property, then also check
9627 higher levels of the hierarchy.  If INHERIT is the symbol
9628 @code{selective}, use inheritance if and only if the setting of
9629 @code{org-use-property-inheritance} selects PROPERTY for inheritance.
9630 @end defun
9632 @defun org-entry-delete pom property
9633 Delete the property PROPERTY from entry at point-or-marker POM.
9634 @end defun
9636 @defun org-entry-put pom property value
9637 Set PROPERTY to VALUE for entry at point-or-marker POM.
9638 @end defun
9640 @defun org-buffer-property-keys &optional include-specials
9641 Get all property keys in the current buffer.
9642 @end defun
9644 @defun org-insert-property-drawer
9645 Insert a property drawer at point.
9646 @end defun
9648 @defun org-entry-put-multivalued-property pom property &rest values
9649 Set PROPERTY at point-or-marker POM to VALUES.  VALUES should be a list of
9650 strings.  They will be concatenated, with spaces as separators.
9651 @end defun
9653 @defun org-entry-get-multivalued-property pom property
9654 Treat the value of the property PROPERTY as a whitespace-separated list of
9655 values and return the values as a list of strings.
9656 @end defun
9658 @defun org-entry-add-to-multivalued-property pom property value
9659 Treat the value of the property PROPERTY as a whitespace-separated list of
9660 values and make sure that VALUE is in this list.
9661 @end defun
9663 @defun org-entry-remove-from-multivalued-property pom property value
9664 Treat the value of the property PROPERTY as a whitespace-separated list of
9665 values and make sure that VALUE is @emph{not} in this list.
9666 @end defun
9668 @defun org-entry-member-in-multivalued-property pom property value
9669 Treat the value of the property PROPERTY as a whitespace-separated list of
9670 values and check if VALUE is in this list.
9671 @end defun
9673 @node Using the mapping API,  , Using the property API, Hacking
9674 @section Using the mapping API
9675 @cindex API, for mapping
9676 @cindex mapping entries, API
9678 Org has sophisticated mapping capabilities to find all entries satisfying
9679 certain criteria.  Internally, this functionality is used to produce agenda
9680 views, but there is also an API that can be used to execute arbitrary
9681 functions for each or selected entries.  The main entry point for this API
9682 is: 
9684 @defun org-map-entries func &optional match scope &rest skip
9685 Call FUNC at each headline selected by MATCH in SCOPE.
9687 FUNC is a function or a lisp form.  The function will be called without
9688 arguments, with the cursor positioned at the beginning of the headline.
9689 The return values of all calls to the function will be collected and
9690 returned as a list.
9692 MATCH is a tags/property/todo match as it is used in the agenda match view.
9693 Only headlines that are matched by this query will be considered during
9694 the iteration.  When MATCH is nil or t, all headlines will be
9695 visited by the iteration.
9697 SCOPE determines the scope of this command.  It can be any of:
9699 @example
9700 nil     @r{the current buffer, respecting the restriction if any}
9701 tree    @r{the subtree started with the entry at point}
9702 file    @r{the current buffer, without restriction}
9703 file-with-archives
9704         @r{the current buffer, and any archives associated with it}
9705 agenda  @r{all agenda files}
9706 agenda-with-archives
9707         @r{all agenda files with any archive files associated with them}
9708 (file1 file2 ...)
9709         @r{if this is a list, all files in the list will be scanned}
9710 @end example
9712 The remaining args are treated as settings for the skipping facilities of
9713 the scanner.  The following items can be given here:
9715 @example
9716 archive   @r{skip trees with the archive tag}
9717 comment   @r{skip trees with the COMMENT keyword}
9718 function or Lisp form
9719           @r{will be used as value for @code{org-agenda-skip-function},}
9720           @r{so whenever the the function returns t, FUNC}
9721           @r{will not be called for that entry and search will}
9722           @r{continue from the point where the function leaves it}
9723 @end example
9724 @end defun
9726 The function given to that mapping routine can really do anything you like.
9727 It can uce the property API (@pxref{Using the property API}) to gather more
9728 information about the entry, or in order to change metadate in the entry.
9729 Here are a couple of functions that might be handy:
9731 @defun org-todo &optional arg
9732 Change the TODO state of the entry, see the docstring of the functions for
9733 the many possible values for the argument ARG.
9734 @end defun
9736 @defun org-priority &optional action
9737 Change the priority of the entry, see the docstring of this function for the
9738 possible values for ACTION.
9739 @end defun
9741 @defun org-toggle-tag tag &optional onoff
9742 Toggle the tag TAG in the current entry.  Setting ONOFF to either @code{on}
9743 or @code{off} will not toggle tag, but ensure that it is either on or off.
9744 @end defun
9746 @defun org-promote
9747 Promote the current entry.
9748 @end defun
9750 @defun org-demote
9751 Demote the current entry.
9752 @end defun
9754 Here is a simple example that will turn all entries in the current file with
9755 a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
9756 Entries in comment trees and in archive trees will be ignored.
9758 @lisp
9759 (org-map-entries
9760    '(org-todo "UPCOMING")
9761    "+TOMORROW" 'file 'archive 'comment)
9762 @end lisp
9764 The following example counts the number of entries with TODO keyword
9765 @code{WAITING}, in all agenda files.
9767 @lisp
9768 (length (org-map-entries t "/+WAITING" nil 'agenda))
9769 @end lisp
9771 @node History and Acknowledgments, Main Index, Hacking, Top
9772 @appendix History and Acknowledgments
9773 @cindex acknowledgments
9774 @cindex history
9775 @cindex thanks
9777 Org was borne in 2003, out of frustration over the user interface
9778 of the Emacs Outline mode.  I was trying to organize my notes and
9779 projects, and using Emacs seemed to be the natural way to go.  However,
9780 having to remember eleven different commands with two or three keys per
9781 command, only to hide and show parts of the outline tree, that seemed
9782 entirely unacceptable to me.  Also, when using outlines to take notes, I
9783 constantly want to restructure the tree, organizing it parallel to my
9784 thoughts and plans.  @emph{Visibility cycling} and @emph{structure
9785 editing} were originally implemented in the package
9786 @file{outline-magic.el}, but quickly moved to the more general
9787 @file{org.el}.  As this environment became comfortable for project
9788 planning, the next step was adding @emph{TODO entries}, basic @emph{time
9789 stamps}, and @emph{table support}.  These areas highlight the two main
9790 goals that Org still has today: To create a new, outline-based,
9791 plain text mode with innovative and intuitive editing features, and to
9792 incorporate project planning functionality directly into a notes file.
9794 A special thanks goes to @i{Bastien Guerry} who has not only writen a large
9795 number of extensions to Org (most of them integrated into the core by now),
9796 but has also helped the development and maintenance of Org so much that he
9797 should be considered co-author of this package.
9799 Since the first release, literally thousands of emails to me or on
9800 @code{emacs-orgmode@@gnu.org} have provided a constant stream of bug
9801 reports, feedback, new ideas, and sometimes patches and add-on code.
9802 Many thanks to everyone who has helped to improve this package.  I am
9803 trying to keep here a list of the people who had significant influence
9804 in shaping one or more aspects of Org.  The list may not be
9805 complete, if I have forgotten someone, please accept my apologies and
9806 let me know.
9808 @itemize @bullet
9810 @item
9811 @i{Russel Adams} came up with the idea for drawers.
9812 @item
9813 @i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
9814 @item
9815 @i{Christophe Bataillon} created the great unicorn logo that we use on the
9816 Org-mode website.
9817 @item
9818 @i{Alex Bochannek} provided a patch for rounding time stamps.
9819 @item
9820 @i{Charles Cave}'s suggestion sparked the implementation of templates
9821 for Remember.
9822 @item
9823 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
9824 specified time.
9825 @item
9826 @i{Gregory Chernov} patched support for lisp forms into table
9827 calculations and improved XEmacs compatibility, in particular by porting
9828 @file{nouline.el} to XEmacs.
9829 @item
9830 @i{Sacha Chua} suggested to copy some linking code from Planner.
9831 @item
9832 @i{Eddward DeVilla} proposed and tested checkbox statistics.  He also
9833 came up with the idea of properties, and that there should be an API for
9834 them.
9835 @item
9836 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
9837 inspired some of the early development, including HTML export.  He also
9838 asked for a way to narrow wide table columns.
9839 @item
9840 @i{Christian Egli} converted the documentation into Texinfo format,
9841 patched CSS formatting into the HTML exporter, and inspired the agenda.
9842 @item
9843 @i{David Emery} provided a patch for custom CSS support in exported
9844 HTML agendas.
9845 @item
9846 @i{Nic Ferrier} contributed mailcap and XOXO support.
9847 @item
9848 @i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
9849 @item
9850 @i{John Foerch} figured out how to make incremental search show context
9851 around a match in a hidden outline tree.
9852 @item
9853 @i{Niels Giesen} had the idea to automatically archive DONE trees.
9854 @item
9855 @i{Bastien Guerry} wrote the La@TeX{} exporter and @file{org-bibtex.el}, and
9856 has been prolific with patches, ideas, and bug reports.
9857 @item
9858 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
9859 @item
9860 @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
9861 task state change logging, and the clocktable.  His clear explanations have
9862 been critical when we started to adopt the GIT version control system.
9863 @item
9864 @i{Manuel Hermenegildo} has contributed various ideas, small fixed and
9865 patches.
9866 @item
9867 @i{Phil Jackson} wrote @file{org-irc.el}.
9868 @item
9869 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
9870 folded entries, and column view for properties.
9871 @item
9872 @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
9873 @item
9874 @i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it.  He also
9875 provided frequent feedback and some patches.
9876 @item
9877 @i{Jason F. McBrayer} suggested agenda export to CSV format.
9878 @item
9879 @i{Max Mikhanosha} came up with the idea of refiling.
9880 @item
9881 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
9882 basis.
9883 @item
9884 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
9885 happy.
9886 @item
9887 @i{Rick Moynihan} proposed to allow multiple TODO sequences in a file
9888 and to be able to quickly restrict the agenda to a subtree.
9889 @item
9890 @i{Todd Neal} provided patches for links to Info files and elisp forms.
9891 @item
9892 @i{Tim O'Callaghan} suggested in-file links, search options for general
9893 file links, and TAGS.
9894 @item
9895 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
9896 into Japanese.
9897 @item
9898 @i{Oliver Oppitz} suggested multi-state TODO items.
9899 @item
9900 @i{Scott Otterson} sparked the introduction of descriptive text for
9901 links, among other things.
9902 @item
9903 @i{Pete Phillips} helped during the development of the TAGS feature, and
9904 provided frequent feedback.
9905 @item
9906 @i{T.V. Raman} reported bugs and suggested improvements.
9907 @item
9908 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
9909 control.
9910 @item
9911 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
9912 @item
9913 @i{Sebastian Rose} wrote @file{org-info.js}, a Java script for displaying
9914 webpages derived from Org using an Info-like, or a folding interface with
9915 single key navigation.
9916 @item
9917 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
9918 conflict with @file{allout.el}.
9919 @item
9920 @i{Jason Riedy} generalized the send-receive mechanism for orgtbl tables with
9921 extensive patches.
9922 @item
9923 @i{Philip Rooke} created the Org reference card, provided lots
9924 of feedback, developed and applied standards to the Org documentation.
9925 @item
9926 @i{Christian Schlauer} proposed angular brackets around links, among
9927 other things.
9928 @item
9929 @i{Eric Schulte} wrote @file{org-plot.el}.
9930 @item
9931 Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
9932 @file{organizer-mode.el}.
9933 @item
9934 @i{Ilya Shlyakhter} proposed the Archive Sibling.
9935 @item
9936 @i{Daniel Sinder} came up with the idea of internal archiving by locking
9937 subtrees.
9938 @item
9939 @i{Dale Smith} proposed link abbreviations.
9940 @item
9941 @i{James TD Smith} has contributed a large number of patches for useful
9942 tweaks and features.
9943 @item
9944 @i{Adam Spiers} asked for global linking commands, inspired the link
9945 extension system, added support for mairix, and proposed the mapping API.
9946 @item
9947 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
9948 chapter about publishing.
9949 @item
9950 @i{J@"urgen Vollmer} contributed code generating the table of contents
9951 in HTML output.
9952 @item
9953 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
9954 keyword.
9955 @item
9956 @i{David Wainberg} suggested archiving, and improvements to the linking
9957 system.
9958 @item
9959 @i{John Wiegley} wrote @file{emacs-wiki.el}, @file{planner.el}, and
9960 @file{muse.el}, which have similar goals as Org.  Initially the
9961 development of Org was fully independent because I was not aware of the
9962 existence of these packages.  But with time I have accasionally looked
9963 at John's code and learned a lot from it.  John has also contributed a
9964 number of great ideas and patches directly to Org, including the attachment
9965 system (@file{org-attach.el}) and integration with Apple Mail
9966 (@file{org-mac-message.el}).
9967 @item
9968 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
9969 linking to Gnus.
9970 @item
9971 @i{Roland Winkler} requested additional key bindings to make Org
9972 work on a tty.
9973 @item
9974 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
9975 and contributed various ideas and code snippets.
9976 @end itemize
9979 @node Main Index, Key Index, History and Acknowledgments, Top
9980 @unnumbered The Main Index
9982 @printindex cp
9984 @node Key Index,  , Main Index, Top
9985 @unnumbered Key Index
9987 @printindex ky
9989 @bye
9991 @ignore
9992         arch-tag: 7893d1Fe-cc57-4d13-b5e5-f494a1CBC7ac
9993 @end ignore
9995 @c Local variables:
9996 @c ispell-local-dictionary: "en_US-w_accents"
9997 @c ispell-local-pdict: "./.aspell.org.pws"
9998 @c fill-column: 77
9999 @c End: